The year rolls on, and so does progress on BeeWare!
What we've done
- We attended EuroPython 2023, presenting on Briefcase, attending the WASM summit, and running a very successful 2 day sprint.
- We've completed the audit of all Toga widgets on macOS, iOS and GTK! We've also completed the audit of ScrollContainer and SplitContainer on Windows and Android.
- We've added support for Docker Desktop and rootless Docker on Linux.
- We've added the ability to get detailed logs from the tools used by Briefcase to build apps.
- We've corrected some warnings generated by pip when installing Python packages on Linux.
- We've added support for generating APKs as an output format for Android.
- We've improved error reporting when an application can't start on Android due to the device being too old, or the Android device clock isn't in sync with the developer's laptop.
- We added __repr__ and __str__ implementations for Objective C structures like NSRect, NSRange, NSPoint and more.
- We formally dropped support for Python 3.7 in Toga.
- We improved error handling when an app doesn't define a main window as part of it's startup.
- Type annotations in Toga have been significantly improved. We've been adding type annotations as part of the widget audit, but some types (such as callbacks) weren't as specific as they could have been. We're now using Protocols to define some of the more complex types in Toga.
- We added an ActivityIndicator and Divider widget implementation in the Web backend.
The widget testing audit is now complete on macOS, iOS and GTK. An audit of App and Window functionality is all that stands in the way of 100% test coverage on those three platforms; it seems likely we'll get there by the end of this month. Android and Windows coverage is close behind, but might take a little longer.
Part of the reason for this delay is that we need to address an important change in the most recent release of Android Studio. Over the last few years, the Android ecosystem has been in the process of migrating its build system from Groovy to Kotlin; Android Studio Giraffe makes Kotlin the default for new projects, so we need to make sure we're compatible with that change. The widget audit has also highlighted that we need to improve our handling of subclass inheritance in Java; we're hoping to make some changes that will enable us to fill in a few more gaps in widget API coverage on Android.
We'll also be at PyCon AU 2023 from August 18-22. We're presenting on Saturday; and we'll be there for the full duration of the sprints. See you in Tarntanya/Adelaide!
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:
- 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
- Provide an option to override app settings from the command line
- Add support for custom PyPI repositories
- Document how to debug an application in popular IDEs
- Switch Toga's Winforms backend to use native Winforms imports
- Switch Toga's Android backend to use native Chaquopy syntax
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.