January has seen some long awaited and high profile features added to BeeWare.
What we've done
- PEP 738, formalizing the introduction of Android as a Tier 3 platform in CPython, has been formally accepted as a draft. We're now revising the draft following community feedback, in anticipation of submitting the PEP for formal approval in the near future.
- We added a cross-platform Camera API to Toga. This API has been implemented for iOS and macOS; the implementation for Android is in final review.
- We added an OptionContainer widget for Android. This now means that OptionContainer is available on every desktop and mobile platform.
- We added the ability to define a button with an Icon. In addition, we've added some major clarifications to the documentation about the difference between an Icon and an Image.
- We reworked the way that widget IDs are handled. This change was required due to a bug caused by the interaction of Python's garbage collector and the widget registry that prevented the re-use of widget IDs in some situations. The new implementation means that the widget registry behaves a lot more like a browser's DOM - a widget can only be discovered by ID when it is actually part of a widget layout.
- We added Briefcase support for Python 3.12 on Android.
- We added a mechanism for defining app permissions in your Briefcase project.
- We added the ability for Android projects to declare the native Android libraries that they depend on.
- We've been polishing the CPython patches necessary to support iOS and Android, in anticipation of submitting these patches upstream. To follow progress on this work, subscribe to the CPython tickets for iOS support and Android support.
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:
- Update the Toga testbed test suite to use Pixel 7 Pro device sizes
- Filter out a message generated after Xcode updates
- Add the ability to configure the ABIs built by an Android project
- Rationalise the application of adhoc signing on macOS
- Add support for custom PyPI repositories
- Document how to debug an application in popular IDEs
- Correctly handle incomplete project deletions
- Add an option to select the Android base image when creating new emulators
- Print notarisation log failures when building macOS apps
- Add an API to replace a child of a widget
- Add an API to entirely replace the style of a widget
- 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.