April was dominated by preparation and attendance at PyCon US 2023 - but we've seen some good progress over the month.
What we've done
PyCon US saw a lot of BeeWare activity:
- We presented 2 talks at PyCon US - one on Briefcase, and one on the state of Android support on Python. Videos of these talks should appear on the PyCon US Youtube channel in the near future.
- We presented at the Language Summit, where we received provisional approval to push for iOS and Android to become Tier 3 supported platforms in CPython 3.13.
- We presented at the Packaging Summit, providing the needs of packaging from a mobile perspective.
- We had a booth in the community section of the conference show floor.
- We ran a successful sprint where we handed out over a dozen Challenge Coins. Many of the improvements listed in this status update come from community contributions, and we have a backlog of other PRs we're still working on.
- We donated an leather Briefcase to the PyLadies Auction, raising US$800!.
In non-PyCon activity:
- We added the ability to code sign Windows release artefacts.
- We added a new distribution format for Windows apps - simple ZIP archives.
- We modified Briefcase to support PEP621 metadata standards. Briefcase predates the definition of PEP621, but there's a lot of overlap in what PEP621 defines and what Briefcase defines, so it makes sense for Briefcase to adhere to the common standard. In future, we expect to see more convergence with PEP621 standards.
- We landed major updates to Briefcase's AppImage and Flatpak backends. They now use Indygreg's Standalone Python; this significantly speeds up Flatpak builds, should be more stable on AppImage, allows us to switch to manylinux base images - and it reduces the number of projects that BeeWare is responsible for maintaining.
- We got 2 more widgets to 100% GUI test coverage. One of these is the base widget, so we're now able to guarantee basic functionality across all widgets.
- We migrated Toga's web backend to use the Shoelace web components framework. This is a much better match for Toga than Bootstrap was, as it is primarily focussed on rendering widgets, rather than HTML layout. We only have a handful of widgets ported over at this point - but the process of implementing widgets is relatively straightforward, so if you have web skills and are looking for a way to contribute, this would be a great place to get involved.
- We added support for cursor visibility, full screen mode and determining the current window on Windows.
- We added an API for catching a 'confirm' action on TextInput widgets.
- We added support for FreeBSD in Toga.
- We made a number of significant improvements to the Tox configurations to improve reliability, work around a bugs in the release of pip 23.1, speed up and parallelise test execution, enforce spelling and external linking in documentation, and to make easier to obtain coverage reports.
In May, we'll be continuing our push for GUI test coverage. Our current aim is to have complete widget coverage by the end of June.
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:
- Modify the handling of app signing options
- Filter out a message generated after Xcode updates
- Add the ability to configure the ABIs built by an Android project
- Add support for the ANDROID_HOME environment variable
- Rationalise the application of adhoc signing on macOS
- Detect a failure when trying to install on an Android device that is too old
- Use the on-device clock to filter Android device logs
- Add an APK packaging target for Android
- Provide an option to override app settings from the command line
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.