March has been a month of slow but steady progress for BeeWare.
What we've done
- Progress on GUI testing in Toga is continuing. We now have 7 widgets fully tested, with another 2 in progress. As with last month's update, getting these tests passing has required wrestling a lot of fundamentals, in particular around the simulation of events such as mouse clicks. We're also discovering (and fixing) lots of corner cases in widget implementations that only surface when you're doing rigorous and repeatable testing.
- We've made some major changes to the way GTK widgets are rendered. This change significantly reduces the amount of re-rendering that is performed by GTK, as well as resolving a number of long standing issues related to resizing widgets.
- Thanks to some community contributions, we were were able to add support for focus events and text alignment on GTK's TextInput widget, and support for text alignment and fonts on GTK's NumberInput widget.
- We landed the implementation of a Linux system package backend for Briefcase, which can output DEB and RPM packages. Thanks to a community contribution, we were also able to add support for Arch packages
- We modified the locations where Briefcase outputs build artefacts. This removes some sources of bugs associated with tools not supporting spaces in filenames, and makes Briefcase's output consistent with other tools in the Python ecosystem.
- We made significant progress on modifying Briefcase's AppImage and Flatpak backends to use Indygreg's Standalone Python, rather than BeeWare's Linux support package. Standalone Python is becoming a de facto standard for pre-compiled Python builds (especially on Linux), so it makes sense for BeeWare to converge on this common standard. This change will also significantly speed 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're currently waiting on a fix to the linuxdeploy GTK plugin to be merged before we can land this change.
- Thanks to a community contribution, we added support for PyGame to Briefcase.
- We migrated BeeWare's CI to use the new System packaging backend on Linux. This means that CI is significantly faster, as building system packages requires a lot less processing than an AppImage.
- We released Travertino 0.2.0. Travertino is the library that underpins Toga's Pack layout algorithm. It's been several years since we last did a Travertino release, but some recent bug fixes warranted an update.
- We presented a tutorial at Everything Open 2023.
We also made a big change to our social media strategy: we started a Mastodon account. We've wound down our Twitter usage at the end of last year; going forward, you can get your bite size BeeWare updates from @email@example.com.
In terms of technical goals, April will continue our push for GUI test coverage. However, we're expecting progress to be a little slower, because of one big event - PyCon US. We'll have a booth in the community section of the conference floor; the core team are presenting 2 talks; we're presenting at the Language Summit; and we'll be at the sprints for the first 3 days. Preparing for these talks will take up a lot of our time in April, as will the event itself - so progress is likely to be a little slower than normal. If you're going to be there, come by the booth and say hi! If you'd like to help us to staff the booth - get in touch on Discord, on Mastodon, or email!
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 refresh the support package in a project
- Provide protection against creating projects with "semi-reserved" names
- Add the ability to configure the ABIs built by an Android project
- Add support for the ANDROID_HOME environment variable
- Improve validation of project names in the Briefcase wizard
- Rationalise the application of adhoc signing on macOS
- Correct the capture of log messages on the web backend
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.