June has been a busy month, with some big improvements to BeeWare's websites and documentation, and some major milestones reached in our work on mobile packaging.
What we've done
- cibuildwheel 3.0 has been released - including iOS support! As a result, we've been able to submit pull requests for lru-dict and Pillow, proposing the addition of iOS support. Work on adding Android support is still underway.
- An Emscripten CPython buildbot is now live! The buildbot is currently failing 2 tests; but having a buildbot at all is a major step towards restoring Tier-3 support, and will help detect regressions on Emscripten as a platform.
- We've started a big review of the structure of our documentation, with a view to resolving a number of inconsistencies between platforms. This review will also involve a visual refresh, making BeeWare docs have a style consistent with the homepage; and improvements to how the documentation for BeeWare's individual projects fit into the overall BeeWare website.
- We added iCloud detection to Briefcase. iCloud Drive synchronisation adds metadata to some folders that prevents signing infrastructure from working; this has been a recurring source of problems during tutorials.
- We massively improved file type associations for macOS. Briefcase previously supported macOS file associations, but expressed some very specific opinions on how files would be used. With these new improvements, it should be possible to support almost any macOS file type association requirements that an application might have.
- We modified Briefcase so it can package, sign and notarise applications that weren't built with Briefcase. We've spent a lot of time automating the processes for building installers, and for managing signing and notarization - and almost none of that work depends on using Briefcase to build the app being packaged. With these modifications, you can now point Briefcase at an app that was built with a different tool, and Briefcase will manage the packaging and signing that is required.
- We've started the process of upgrading Briefcase to use a newer version of WiX for Windows MSI packaging.
- We added a Slider widget to the Web backend.
- We added a DateInput widget to the iOS and macOS backends.
- We added a TimeInput widget to the iOS and macOS backends.
- We added an ActivityIndicator widget to the WinForms backend.
- We modified the handling of Toga app paths so that requesting a path guarantees that it exists. This is a significant improvement to user experience, as it's no longer necessary to "check and create" every time you access an app path.
- We resolved a long-standing instability in the macOS and iOS testbed app that caused intermittent failures in the WebView tests
- We added a new topic guide on managing file system access in Toga apps.
- We modified the handling of font specifications in Toga apps. You can now provide a list of fonts, as you would in CSS, and the first available font in that list will be used.
- We corrected a number of issues with document-based apps. This was detected while upgrading Podium, BeeWare's slide presentation tool, to use a recent version of Toga.
- Our Curtin students delivered their mid-year report - including plans for the work they're intending to complete in the second half of the year.
- We completed the process of migrating BeeWare's core projects to use Ruff, rather than a combination of flake8, sort, pyupgrade, and more.
What's next?
With the public release of cibuildwheel 3.0, we've been able to start submitting pull requests upstream for projects to officially support iOS. In July, we'll continue that work, with the aim of having some official iOS wheels for major projects that aren't published by BeeWare. We'll also continue working on adding Android support to cibuildwheel, with the hope that it will be included in version 3.1.
We're also hoping to start the process of integrating the production of iOS and Android binary artefacts into Python releases. This will hopefully also involve integrating iOS and Android into CPython's pre-merge CI tooling, which will hopefully limit the incidence of changes that are landed into CPython that break iOS and Android.
We'll also be attending EuroPython, where we will be giving a tutorial, attending the WebAssembly summit, and running a BeeWare sprint. If you can make it to Prague in July, tickets are still available - we hope to see you there!
Want to get involved?
Want to get involved? We curate issues that should be approachable for first-time contributors to BeeWare. They're all relatively minor changes, but would provide a big improvement to the lives of BeeWare users:
- If you're interested in the tooling for deploying applications to various platforms, take a look at Briefcase
- Or, if you're interested in GUI widgets, take a look at Toga
These lists can also be filtered by platform - so you can find issues that are specific to your preferred operating system. 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.