2024Q2 Roadmap

Posted by Russell Keith-Magee on 3 April 2024

Q1 2024 has seen some major progress - but as always, there's still plenty of work to do. As always, this roadmap should be read as a guide to what we aim to focus on over the coming quarter, rather than a hard commitment of features that will be made available on a specific deadline.

Q1 progress

The first quarter of 2024 has seen significant progress towards getting iOS and Android to Tier 3 supported status in CPython. PEP 738 has been formally accepted by the CPython steering committee, and the vast majority of the changes needed to support iOS and Android have either been merged, or received substantial review from the CPython core team.

We've also made progress on a number of long standing feature requests in Toga. We've added an OptionContainer for Android, so tab-based UIs can be used on all platforms. We've added a MapView widget that works on all desktop and mobile platforms. We've also added the start of hardware APIs, including Camera and Geolocation APIs.

Q2 priorities

Our Q2 goals are:

  • Get iOS and Android to Tier 3 supported status. We expect to finish upstreaming the patches we have for CPython early in the quarter. However, Tier 3 status also requires CI infrastructure to verify that the platforms are stable. In Q2, we will commission buildbots so that CPython's CI is able to verify the ongoing stability of iOS and Android as a platform.
  • Extend the BeeWare tutorial. The BeeWare tutorial provides a good introduction to using Briefcase and Toga, but there are a number of common support questions that aren't covered by the tutorial, and some features that we've added since the tutorial last saw significant edits. We're going to revisit the tutorial, adding some extra steps to cover these new features and common issues.
  • Attend PyCon US 2024 We're presenting a tutorial and a talk; we will have a booth in the community section; we'll be there for the full duration of the sprints; and we're also expecting to attend the language summit. It's going to be a busy 2 weeks - we hope we see you there!
  • Start working on packaging for mobile platforms. PEP 730 and PEP 738 cover the core of CPython itself, but Python is much more than just the core interpreter and standard library. There's also the ecosystem of third-party libraries, many of which have binary components. In this quarter, we're going to start looking at the changes that are needed to make it easy for the community to start packaging wheels for iOS and Android.
  • Modify the App class to support other types of apps. This includes adding an API for a "Simple App" that doesn't have a menu bar, finalising the API for document-based apps, and providing an API for system tray apps.

Longer term goals

Completing PEP 730 and 738 is a major milestone - but there's still a lot of work to be done. It will take a lot of time and community education before iOS and Android binary packages are widely available. We intend to do whatever we can to support the community, ranging from documentation, to tooling support, to submitting patches to upstream packages.

One of the ways to accelerate this transition will be to make iOS and Android compelling platforms to support. This means adding more capabilities to Toga, so that there aren't any capability gaps for a user writing an app. It also means writing more documentation and tutorials so that common app development tasks are well explained.

Summary

This month marks 2 years since full-time work began on BeeWare; and 10 years since the first commits on the project. We've come a long way in that time - from a collection of cobbled-together proof of concept demonstrators to a fully tested GUI platform, with equally tested deployment tooling, and official support in CPython itself. The future for Python as a GUI development platform on desktop and mobile has never looked better, and we're excited to see what the coming years will bring.

March 2024 Status Update

Posted by Russell Keith-Magee on 2 April 2024

This month, we have less to report by raw feature count - but the changes we have made represent extremely significant progress.

What we've done

What's next?

In April, we're hoping to wrap up the work on iOS and Android patches for CPython, and add buildbots for those platforms. With the buildbots in place, iOS and Android will officially be Tier 3 supported CPython platforms. We also plan to revisit the BeeWare tutorial, adding some more steps in preparation for a tutorial presentation at PyCon US in May. If you're coming to Pittsburgh and you'd like to attend that tutorial session, ticket sales are open!

Want to get involved?

Want to get involved? Here are some open issues that would be a great place to get started with contributing to a BeeWare project. They're all relatively minor changes, but would provide a big improvement to the lives of BeeWare users:

  1. Update the Toga testbed test suite to use Pixel 7 Pro device sizes
  2. Filter out a message generated after Xcode updates
  3. Add the ability to configure the ABIs built by an Android project
  4. Rationalise the application of adhoc signing on macOS
  5. Add support for custom PyPI repositories
  6. Document how to debug an application in popular IDEs
  7. Correctly handle incomplete project deletions
  8. Add an option to select the Android base image when creating new emulators
  9. Print notarisation log failures when building macOS apps
  10. Add an API to replace a child of a widget
  11. Add an API to entirely replace the style of a widget
  12. Add the ability to define content when creating a window

Pick one of these tickets, drop a comment on the ticket to let others know you're looking at it, and try your hand at a PR! We have a guide on setting up a Briefcase development environment; but if you need any additional assistance or guidance, you can ask on the ticket, or join us on the BeeWare Discord server.

February 2024 Status Update

Posted by Russell Keith-Magee on 29 February 2024

February may be the shortest month, but that doesn't mean we've got any less progress to report!

What we've done

What's next?

In March, we will continue to focus on iOS and Android patches for CPython; if all goes extremely well, the bulk of patches should be upstream (or at least submitted for review) by the end of the month. While we're waiting for CPython patches to be reviewed, we'll be adding geolocation APIs to Toga.

Want to get involved?

Want to get involved? Here are some open issues that would be a great place to get started with contributing to a BeeWare project. They're all relatively minor changes, but would provide a big improvement to the lives of BeeWare users:

  1. Update the Toga testbed test suite to use Pixel 7 Pro device sizes
  2. Filter out a message generated after Xcode updates
  3. Add the ability to configure the ABIs built by an Android project
  4. Rationalise the application of adhoc signing on macOS
  5. Add support for custom PyPI repositories
  6. Document how to debug an application in popular IDEs
  7. Correctly handle incomplete project deletions
  8. Add an option to select the Android base image when creating new emulators
  9. Print notarisation log failures when building macOS apps
  10. Add an API to replace a child of a widget
  11. Add an API to entirely replace the style of a widget
  12. Add the ability to define content when creating a window

Pick one of these tickets, drop a comment on the ticket to let others know you're looking at it, and try your hand at a PR! We have a guide on setting up a Briefcase development environment; but if you need any additional assistance or guidance, you can ask on the ticket, or join us on the BeeWare Discord server.

January 2024 Status Update

Posted by Russell Keith-Magee on 1 February 2024

January has seen some long awaited and high profile features added to BeeWare.

What we've done

What's next?

In February, we'll be focusing on the iOS and Android patches to CPython, and the finalisation of PEP 738. While we're waiting for CPython patches to be reviewed, we'll be looking into geolocation and mapping functionality.

Want to get involved?

Want to get involved? Here are some open issues that would be a great place to get started with contributing to a BeeWare project. They're all relatively minor changes, but would provide a big improvement to the lives of BeeWare users:

  1. Update the Toga testbed test suite to use Pixel 7 Pro device sizes
  2. Filter out a message generated after Xcode updates
  3. Add the ability to configure the ABIs built by an Android project
  4. Rationalise the application of adhoc signing on macOS
  5. Add support for custom PyPI repositories
  6. Document how to debug an application in popular IDEs
  7. Correctly handle incomplete project deletions
  8. Add an option to select the Android base image when creating new emulators
  9. Print notarisation log failures when building macOS apps
  10. Add an API to replace a child of a widget
  11. Add an API to entirely replace the style of a widget
  12. Add the ability to define content when creating a window

Pick one of these tickets, drop a comment on the ticket to let others know you're looking at it, and try your hand at a PR! We have a guide on setting up a Briefcase development environment; but if you need any additional assistance or guidance, you can ask on the ticket, or join us on the BeeWare Discord server.

2024Q1 Roadmap

Posted by Russell Keith-Magee on 10 January 2024

It's the start of a new year, which means it's time to cast our minds forward to what BeeWare will bring in the coming year. 2023 saw some major milestones in stability and features; in 2024, we're going to build on that foundation. As always, this roadmap should be read as a guide to what we aim to focus on over the coming quarter, rather than a hard commitment of features that will be made available on a specific deadline.

Q4 progress

During the last quarter of 2024, we finally finished our audit and testing of Toga. We now have 100% branch coverage on every line of Toga's core, and on the macOS, Windows, GTK, Android and iOS backends. We published Toga 0.4, incorporating all these changes - but it also meant that we were able to start adding new features to Toga, including an OptionContainer widget on iOS, and a draft of a Camera API for iOS and macOS. Toga's new test framework has made adding these new features must easier - for example, we were able to very rapidly identify (and resolve) gaps in functionality in the new iOS OptionContainer widget by running the existing test suite on a new implementation. We expect that this testing foundation will continue to serve us well as we add more features in the coming year.

The other major development for the quarter was the start of the upstreaming process for Python on mobile platforms. PEP730, proposing the addition of iOS to the Tier 3 supported list of CPython core, has been ratified by the steering council; and PEP738, proposing the same for Android, is in draft form. The first patch contributing towards iOS support has already landed.

Q1 priorities

Our Q1 goals are:

  • Complete upstreaming iOS and Android support patches to CPython core. We will finalise PEP738 and submit it for ratification; and we'll continue upstreaming the iOS and Android patches that we've been maintaining independently. This work has a hard deadline of May 7, as that is when Python 3.13.0b1 is planned, which is the feature cutoff for Python 3.13 development, so making sure we hit that deadline will be our main priority.
  • Add OptionContainer for Android. The implementation on iOS was relatively straightforward; we have no reason to believe that the Android implementation will be any more complicated.
  • Complete the implementation of the Camera API. We have a draft PR implementing a Camera API on macOS and iOS; we'll extend this API to Android, and complete the work on Briefcase that is needed to add support for permissions.
  • Add an API for geolocation, and a Map widget. Geolocation is another major hardware features that is common on phones; we need to write a cross-platform layer for that hardware, plus add a native mapping widget to show off this capability.

Longer term goals

For the remainder of this year, you can expect to see three major themes in BeeWare development.

Firstly, we're going to continue to work upstreaming the work BeeWare has done in the mobile space into the wider CPython community. Once iOS and Android have been incorporated into CPython core, the focus will move to the packaging ecosystem. This means adding official support to upload iOS and Android packages to PyPI, and making it easy for third party projects to incorporate iOS and Android builds into their release processes.

Secondly, we'll be increasing our efforts in education and training. BeeWare has a tutorial that we're extremely proud of - but there are many things we could add to that tutorial, and there are plenty of "How To" and topic guides that could be written for those who have finished the tutorial and want to try more advanced ideas.

Thirdly, we'll continue to expand the capabilities of Toga. There are a handful of high profile widgets and capabilities that have been patiently waiting for us to have a stable platform to build on, and the spare capacity to implement them - features like a Radio Button widget, Trees and Tables on mobile platforms, a cross-platform Settings API, and cross-platform cloud file access.

Summary

2024 promises to be a very exciting year for BeeWare. For the last 2 years, we've been focused on consolidating and stabilizing existing features. That work is coming to a close, which will allow us to turn our attention to building new features that show off the stable foundation we've built, and to providing the resources that will allow more users to try BeeWare for themselves.

December 2023 Status Update

Posted by Russell Keith-Magee on 31 December 2023

December has been a short month due to end-of-year holidays, but BeeWare has still made some important progress.

What we've done

What's next?

When we return from the end-of-year break, we'll be back into developing Toga. In the near future, you should see an OptionContainer on Android, and permission support in Briefcase; once that work is wrapped, we'll start looking at more more hardware APIs and missing widgets. You should also start to see more patches land in CPython to support iOS, and the finalisation of PEP 738.

Want to get involved?

Want to get involved? Here are some open issues that would be a great place to get started with contributing to a BeeWare project. They're all relatively minor changes, but would provide a big improvement to the lives of BeeWare users:

  1. Update the Toga testbed test suite to use Pixel 7 Pro device sizes
  2. Filter out a message generated after Xcode updates
  3. Add the ability to configure the ABIs built by an Android project
  4. Rationalise the application of adhoc signing on macOS
  5. Add support for custom PyPI repositories
  6. Document how to debug an application in popular IDEs
  7. Correctly handle incomplete project deletions
  8. Add an option to select the Android base image when creating new emulators
  9. Print notarisation log failures when building macOS apps
  10. Add an API to replace a child of a widget
  11. Add an API to entirely replace the style of a widget
  12. Add the ability to define content when creating a window

Pick one of these tickets, drop a comment on the ticket to let others know you're looking at it, and try your hand at a PR! We have a guide on setting up a Briefcase development environment; but if you need any additional assistance or guidance, you can ask on the ticket, or join us on the BeeWare Discord server.

November 2023 Status Update

Posted by Russell Keith-Magee on 1 December 2023

November has been a month of focus on the code that enables us to run Python on iOS and Android - but there has still been some other high profile developments in other parts of BeeWare.

What we've done

  • PEP730, formalizing the introduction of iOS as a Tier 3 platform in CPython, has been submitted to the Python Steering Council for ratification.
  • One of the major topics covered by the discussion about PEP730 was the use of a deprecated compiler argument. This led to some re-examination of how CPython could be delivered on iOS without using that argument. As a result of that discussion, modifications to use CPython as a dynamically loaded framework have been prepared. Although the original focus of this work was iOS, the same change will be also used for macOS - which means BeeWare no longer needs to compile a macOS support package (although we will still be lightly re-packaging the official CPython installer).
  • We modified Toga's Image APIs so that Pillow images can be used as source data.
  • We switched CI testing of Android apps to use a Linux machine. This wasn't previously possible, because Github didn't expose the necessary permissions in their Linux images; however, now that is possible, our Android tests run up to 5 times faster, and are less likely to be held up in CI because of availability of macOS testing machines.
  • We corrected an issue on macOS where an OS-level setting controlling the use of tabs could cause test failures in the Toga test suite.
  • There have been some extended discussions and draft PRs related to Toga's Application base class, and the addition of support for status icons. These PRs are still in active development, but they will open up some interesting possibilities for Toga apps when they are completed.
  • Briefcase, Toga and Rubicon ObjC were all modified to use PEP621 metadata, removing the need for setup.cfg, setup.py, and MANIFEST.in files. As part of this change, we wrote a new setuptools plugin to allow for dependencies to be dynamically defined.
  • We modified Briefcase so that answers to the new project wizard and values for configuration settings when running commands can be overridden at the command line. This is mostly useful for testing purposes - it's now possible to generate a project and build it against a local template or support package build without needing to modify a pyproject.toml file or override input handling.
  • We refactored the new project wizard so that support for GUI toolkits is generated by an extensible plugin. Although we still ship with support for Toga, PySide, Pygame and PPB, this support is provided through a public interface, allowing other GUI toolkits to provide Briefcase with toolkit-specific modifications to the new project.
  • We switched the default Android skin used by Briefcase from the Pixel 3a device skin to the Pixel 7 skin. This is an entirely cosmetic change, but it does mean that screenshots will use a device that looks a little more modern.
  • We've made significant progress on the modifications to Chaquopy to support CPython 3.12. This support will hopefully be released at the same time as the upcoming Android Studio "Hedgehog" release.
  • We've made significant progress on running CPython's unit test suite on iOS in a CI configuration.

What's next?

We won't see as much progress as normal in December as a result of the end-of-year holidays. However, before we sign off for the year, we're hoping to start looking at OptionContainer on mobile platforms, and possibly start looking at Camera API support.

Want to get involved?

Want to get involved? Here are some open issues that would be a great place to get started with contributing to a BeeWare project. They're all relatively minor changes, but would provide a big improvement to the lives of BeeWare users:

  1. Update the Toga testbed test suite to use Pixel 7 Pro device sizes
  2. Filter out a message generated after Xcode updates
  3. Add the ability to configure the ABIs built by an Android project
  4. Rationalise the application of adhoc signing on macOS
  5. Add support for custom PyPI repositories
  6. Document how to debug an application in popular IDEs
  7. Correctly handle incomplete project deletions
  8. Add an option to select the Android base image when creating new emulators
  9. Print notarisation log failures when building macOS apps

Pick one of these tickets, drop a comment on the ticket to let others know you're looking at it, and try your hand at a PR! We have a guide on setting up a Briefcase development environment; but if you need any additional assistance or guidance, you can ask on the ticket, or join us on the BeeWare Discord server.

October 2023 Status Update

Posted by Russell Keith-Magee on 1 November 2023

In October, we've (finally!) reached a major milestone - but there's still lots of work to be done!

What we've done

What's next?

Now that we've finally finished the widget audit, we can finally release Toga 0.4, and start using the foundation that we've spent the last 12 months building.

In November, we'll start the work of upstreaming iOS patches to CPython core. The PEP we've drafted is nearing a form where it can be submitted to the Steering Council for approval, but the drafting process has raised a couple of technical issues that need to be investigated. However, while we wait for formal acceptance of the PEP, we will continue working on building continuous integration for our iOS CPython builds, and begin preparing patches that can be merged into CPython.

Want to get involved?

Want to get involved? Here are some open issues that would be a great place to get started with contributing to a BeeWare project. They're all relatively minor changes, but would provide a big improvement to the lives of BeeWare users:

  1. Filter out a message generated after Xcode updates
  2. Add the ability to configure the ABIs built by an Android project
  3. Rationalise the application of adhoc signing on macOS
  4. Provide an option to override app settings from the command line
  5. Add support for custom PyPI repositories
  6. Document how to debug an application in popular IDEs
  7. Correctly handle incomplete project deletions
  8. Add an option to select the Android base image when creating new emulators

Pick one of these tickets, drop a comment on the ticket to let others know you're looking at it, and try your hand at a PR! We have a guide on setting up a Briefcase development environment; but if you need any additional assistance or guidance, you can ask on the ticket, or join us on the BeeWare Discord server.

2023Q4 Roadmap

Posted by Russell Keith-Magee on 3 October 2023

As 2023 rolls to a close, BeeWare is more stable than ever, and is progressing well. However, there's still lots of work to be done. As always, this roadmap should be read as a guide to what we aim to focus on over the coming quarter, rather than a hard commitment of features that will be made available on a specific deadline.

Q3 progress

During Q3, Toga testing continued to be a major focus area. We've completed testing on macOS, GTK and Linux; and testing on Windows and Android is nearing completion. Along the way, we've resolved dozens of bugs, discovered (and resolved) dozens more, and we've been able to eliminate a bunch of inconsistencies in naming and usage between widgets. We've also substantially improved the API documentation for widgets.

As noted in our monthly status reports, progress has been slower than expected because of the large number of edge cases and platform inconsistencies that we've found along the way. We're still a couple of weeks away from completing this work; but once it's all completed, we'll be able to publish a new version of Toga.

This quarter, we've also resolved a major known limitation on iOS - binary module packaging. We are now able to confirm that BeeWare is able to produce apps with dynamically loaded binary modules that the iOS App Store will accept through their review process. In the process of resolving this limitation, we've started developing a Forge for mobile packages, significantly improving the tooling for building binary wheels for iOS.

Q4 priorities

Our Q4 goals are:

  • Finalize Toga's test suite. For real this time - we'll have 100% branch coverage on every line of Toga's core, and on the macOS, Windows, GTK, Android and iOS backends. Once we've released a version of Toga that includes all these fixes, we'll be able to publish a plan for the road to 1.0.
  • Python 3.12 support. We're expecting Python 3.12.0 to drop any day. We've already done some preliminary work on Python 3.12 support, but we'll need to finalise that work once the final release is available.
  • Start upstreaming iOS and Android support to CPython. This quarter, we'll begin the process of upstreaming the patches for iOS and Android support that we've been maintaining to CPython core, and developing the CI infrastructure to run CPython's full test suite on iOS and Android. The eventual goal is for iOS and Android to be Tier 3 supported platforms in Python 3.13. This will take a while to finalise, but we've got around 8 months until the feature freeze for Python 3.13, so we're confident we can make this happen. We're attending the CPython Core Team sprint this month to kick start this effort.
  • OptionContainer widget for iOS and Android. One of the big gaps identified during the Toga audit was the lack of content navigation widgets on iOS and Android. This quarter, we're going to start addressing this gap, adding an OptionContainer widget. This widget already exists for macOS, GTK and Windows, so we have an API design - we just need to find a way to make this API work on mobile platforms.
  • Image Capture. We're finally going to start addressing device hardware capabilities. We're going to start with image capture - the ability to select an image from either the photo library, or take an image with the camera, and have that image available to Python code. As well as implementing this API, we're going to need to tackle permission handling in Briefcase so that apps can declare that they need access to the camera in a cross-platform way.

Longer term goals

Over the last 18 months, a major focus has been ensuring that the tools we have are stable, tested, and fit for purpose. Looking forward, we'll be able to build on this foundation, adding more widgets (especially for app content navigation), and filling out notable gaps in widget platform support (such as Tree and Table widgets on mobile). We'll also start building out hardware support APIs (such as geolocation and accelerometers).

However, in addition to adding new features, we're going to start drawing attention to the features we already have. The Toga audit has enabled us to revise our API documentation, but API documentation is only a small part of the overall documentation story. Now that we have a stable base to work with, we're going to start improving our tutorials and HowTo documentation, lowering the barrier to entry for new developers.

Summary

Toga and Briefcase are more stable than ever, and we've addressed all the major technical challenges that existed when full-time work on BeeWare started early last year. Now we can begin the work of building on the foundation that we've established, ensuring that everyone in the Python community can build native applications for their devices.

September 2023 Status Update

Posted by Russell Keith-Magee on 30 September 2023

September has been a month of slow, but significant progress.

What we've done

  • We've resolved the issues around the iOS App Store rejecting BeeWare apps - and, by way of proof, we've updated our demo app, Travel Tips. We've also updated the Android version of the app.
  • We've completely reworked the tooling for building binary packages for iOS. Mobile Forge is our new project for maintaining iOS binary builds. It provides a much more robust environment for performing cross-compilation, making use of crossenv, rather than bespoke site package overrides. Getting crossenv working has also required us to do a deep audit of the various ways that Python reflects describes the platform it is running on, from the obvious ones like the platform and sys modules, down to sysconfig and the tags that are used by pip to determine wheel compatibility.
  • We've completed an initial port of the iOS patches to Python 3.12.0rc3. We're still hunting some edge cases, but initial signs are promising that we'll be in a position to do a near "zero day" release of Python 3.12 support for iOS.
  • For Android, we've re-enabled Fortran support in the package build system, and used it to upgrade SciPy.
  • We were anticipating that would would complete the Toga Audit this month; however, that unfortunately hasn't happened. We've hit a bunch of complications with getting fonts and canvas support working on Windows and Android, and the process of getting those platforms working has revealed some inconsistencies in macOS, iOS and GTK font handling. However, we have completed the audit of DetailedList and Font, and the audit of Canvas is almost complete.
  • We decoupled the Winforms event loop from the main form in a Toga app. This doesn't have any immediate impact on existing Toga apps - but it means we're now in a position to have windowless apps, such as system tray apps.
  • We completed the fixes needed to support Briefcase on Python 3.12.
  • We made some significant improvements to subprocess encoding handling. This should significantly improve the user experience of Windows users, and users from non-English speaking countries.
  • We formally downgraded our support for AppImage to "Best effort". AppImage has proven increasingly difficult to work with as a format; now that we have native system packages and Flatpak as options, the effort needed to maintain AppImage support is better spent elsewhere. We'll still merge fixes to AppImage support if a PR is provided, but we're no longer actively fixing bugs, or running AppImage configurations in CI.
  • We added filters to Xcode output to hide ignorable warnings. Xcode builds have always been a little noisy; the new Xcode 15 release added even more noise. The filter means that these warnings will no longer distract from successful build output.

What's next?

Unfortunately, we didn't complete the Toga audit in September as we anticipated. As mentioned, we hit a number of complications and inconsistencies in font handling, especially in the Canvas widget, which slowed progress. We'll keep working on this audit in October; and once we're done, we'll make a release a new version of Toga. This release will include a number of backwards-incompatible changes identified as part of the audit, so be prepared for a bumpier-than-usual upgrade process.

Once the audit is complete, we'll also be looking at a technical limitation that the widget audit has revealed on Android. A number of Toga's Android widgets aren't as fully featured as they could be, due to the fact that accessing the full API would require subclassing a Java base class. This is an area where Chaquopy has some limitations; so we're going to try and address these limitations.

We'll also begin the work of upstreaming patches to CPython core. We've been invited to attend the CPython Core Team Sprint this month, which will be great opportunity to lay out the roadmap for formal iOS and Android support in CPython 3.13. This will also involve working on improving the CI infrastructure for building Android and iOS packages.

Want to get involved?

Want to get involved? Here are some open issues that would be a great place to get started with contributing to a BeeWare project. They're all relatively minor changes, but would provide a big improvement to the lives of BeeWare users:

  1. Filter out a message generated after Xcode updates
  2. Add the ability to configure the ABIs built by an Android project
  3. Rationalise the application of adhoc signing on macOS
  4. Provide an option to override app settings from the command line
  5. Add support for custom PyPI repositories
  6. Document how to debug an application in popular IDEs
  7. Correctly handle incomplete project deletions
  8. Add an option to select the Android base image when creating new emulators

Pick one of these tickets, drop a comment on the ticket to let others know you're looking at it, and try your hand at a PR! We have a guide on setting up a Briefcase development environment; but if you need any additional assistance or guidance, you can ask on the ticket, or join us on the BeeWare Discord server.