November 2023 Status Update

Posted by Russell Keith-Magee on 1 December 2023

November has been a month of focus on the code that enables us to run Python on iOS and Android - but there has still been some other high profile developments in other parts of BeeWare.

What we've done

  • PEP730, formalizing the introduction of iOS as a Tier 3 platform in CPython, has been submitted to the Python Steering Council for ratification.
  • One of the major topics covered by the discussion about PEP730 was the use of a deprecated compiler argument. This led to some re-examination of how CPython could be delivered on iOS without using that argument. As a result of that discussion, modifications to use CPython as a dynamically loaded framework have been prepared. Although the original focus of this work was iOS, the same change will be also used for macOS - which means BeeWare no longer needs to compile a macOS support package (although we will still be lightly re-packaging the official CPython installer).
  • We modified Toga's Image APIs so that Pillow images can be used as source data.
  • We switched CI testing of Android apps to use a Linux machine. This wasn't previously possible, because Github didn't expose the necessary permissions in their Linux images; however, now that is possible, our Android tests run up to 5 times faster, and are less likely to be held up in CI because of availability of macOS testing machines.
  • We corrected an issue on macOS where an OS-level setting controlling the use of tabs could cause test failures in the Toga test suite.
  • There have been some extended discussions and draft PRs related to Toga's Application base class, and the addition of support for status icons. These PRs are still in active development, but they will open up some interesting possibilities for Toga apps when they are completed.
  • Briefcase, Toga and Rubicon ObjC were all modified to use PEP621 metadata, removing the need for setup.cfg, setup.py, and MANIFEST.in files. As part of this change, we wrote a new setuptools plugin to allow for dependencies to be dynamically defined.
  • We modified Briefcase so that answers to the new project wizard and values for configuration settings when running commands can be overridden at the command line. This is mostly useful for testing purposes - it's now possible to generate a project and build it against a local template or support package build without needing to modify a pyproject.toml file or override input handling.
  • We refactored the new project wizard so that support for GUI toolkits is generated by an extensible plugin. Although we still ship with support for Toga, PySide, Pygame and PPB, this support is provided through a public interface, allowing other GUI toolkits to provide Briefcase with toolkit-specific modifications to the new project.
  • We switched the default Android skin used by Briefcase from the Pixel 3a device skin to the Pixel 7 skin. This is an entirely cosmetic change, but it does mean that screenshots will use a device that looks a little more modern.
  • We've made significant progress on the modifications to Chaquopy to support CPython 3.12. This support will hopefully be released at the same time as the upcoming Android Studio "Hedgehog" release.
  • We've made significant progress on running CPython's unit test suite on iOS in a CI configuration.

What's next?

We won't see as much progress as normal in December as a result of the end-of-year holidays. However, before we sign off for the year, we're hoping to start looking at OptionContainer on mobile platforms, and possibly start looking at Camera API support.

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:

  1. Update the Toga testbed test suite to use Pixel 7 Pro device sizes
  2. Filter out a message generated after Xcode updates
  3. Add the ability to configure the ABIs built by an Android project
  4. Rationalise the application of adhoc signing on macOS
  5. Add support for custom PyPI repositories
  6. Document how to debug an application in popular IDEs
  7. Correctly handle incomplete project deletions
  8. Add an option to select the Android base image when creating new emulators
  9. Print notarisation log failures when building macOS apps

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.

October 2023 Status Update

Posted by Russell Keith-Magee on 1 November 2023

In October, we've (finally!) reached a major milestone - but there's still lots of work to be done!

What we've done

What's next?

Now that we've finally finished the widget audit, we can finally release Toga 0.4, and start using the foundation that we've spent the last 12 months building.

In November, we'll start the work of upstreaming iOS patches to CPython core. The PEP we've drafted is nearing a form where it can be submitted to the Steering Council for approval, but the drafting process has raised a couple of technical issues that need to be investigated. However, while we wait for formal acceptance of the PEP, we will continue working on building continuous integration for our iOS CPython builds, and begin preparing patches that can be merged into CPython.

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:

  1. Filter out a message generated after Xcode updates
  2. Add the ability to configure the ABIs built by an Android project
  3. Rationalise the application of adhoc signing on macOS
  4. Provide an option to override app settings from the command line
  5. Add support for custom PyPI repositories
  6. Document how to debug an application in popular IDEs
  7. Correctly handle incomplete project deletions
  8. Add an option to select the Android base image when creating new emulators

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.

2023Q4 Roadmap

Posted by Russell Keith-Magee on 3 October 2023

As 2023 rolls to a close, BeeWare is more stable than ever, and is progressing well. However, there's still lots of work to be done. As always, this roadmap should be read as a guide to what we aim to focus on over the coming quarter, rather than a hard commitment of features that will be made available on a specific deadline.

Q3 progress

During Q3, Toga testing continued to be a major focus area. We've completed testing on macOS, GTK and Linux; and testing on Windows and Android is nearing completion. Along the way, we've resolved dozens of bugs, discovered (and resolved) dozens more, and we've been able to eliminate a bunch of inconsistencies in naming and usage between widgets. We've also substantially improved the API documentation for widgets.

As noted in our monthly status reports, progress has been slower than expected because of the large number of edge cases and platform inconsistencies that we've found along the way. We're still a couple of weeks away from completing this work; but once it's all completed, we'll be able to publish a new version of Toga.

This quarter, we've also resolved a major known limitation on iOS - binary module packaging. We are now able to confirm that BeeWare is able to produce apps with dynamically loaded binary modules that the iOS App Store will accept through their review process. In the process of resolving this limitation, we've started developing a Forge for mobile packages, significantly improving the tooling for building binary wheels for iOS.

Q4 priorities

Our Q4 goals are:

  • Finalize Toga's test suite. For real this time - we'll have 100% branch coverage on every line of Toga's core, and on the macOS, Windows, GTK, Android and iOS backends. Once we've released a version of Toga that includes all these fixes, we'll be able to publish a plan for the road to 1.0.
  • Python 3.12 support. We're expecting Python 3.12.0 to drop any day. We've already done some preliminary work on Python 3.12 support, but we'll need to finalise that work once the final release is available.
  • Start upstreaming iOS and Android support to CPython. This quarter, we'll begin the process of upstreaming the patches for iOS and Android support that we've been maintaining to CPython core, and developing the CI infrastructure to run CPython's full test suite on iOS and Android. The eventual goal is for iOS and Android to be Tier 3 supported platforms in Python 3.13. This will take a while to finalise, but we've got around 8 months until the feature freeze for Python 3.13, so we're confident we can make this happen. We're attending the CPython Core Team sprint this month to kick start this effort.
  • OptionContainer widget for iOS and Android. One of the big gaps identified during the Toga audit was the lack of content navigation widgets on iOS and Android. This quarter, we're going to start addressing this gap, adding an OptionContainer widget. This widget already exists for macOS, GTK and Windows, so we have an API design - we just need to find a way to make this API work on mobile platforms.
  • Image Capture. We're finally going to start addressing device hardware capabilities. We're going to start with image capture - the ability to select an image from either the photo library, or take an image with the camera, and have that image available to Python code. As well as implementing this API, we're going to need to tackle permission handling in Briefcase so that apps can declare that they need access to the camera in a cross-platform way.

Longer term goals

Over the last 18 months, a major focus has been ensuring that the tools we have are stable, tested, and fit for purpose. Looking forward, we'll be able to build on this foundation, adding more widgets (especially for app content navigation), and filling out notable gaps in widget platform support (such as Tree and Table widgets on mobile). We'll also start building out hardware support APIs (such as geolocation and accelerometers).

However, in addition to adding new features, we're going to start drawing attention to the features we already have. The Toga audit has enabled us to revise our API documentation, but API documentation is only a small part of the overall documentation story. Now that we have a stable base to work with, we're going to start improving our tutorials and HowTo documentation, lowering the barrier to entry for new developers.

Summary

Toga and Briefcase are more stable than ever, and we've addressed all the major technical challenges that existed when full-time work on BeeWare started early last year. Now we can begin the work of building on the foundation that we've established, ensuring that everyone in the Python community can build native applications for their devices.

September 2023 Status Update

Posted by Russell Keith-Magee on 30 September 2023

September has been a month of slow, but significant progress.

What we've done

  • We've resolved the issues around the iOS App Store rejecting BeeWare apps - and, by way of proof, we've updated our demo app, Travel Tips. We've also updated the Android version of the app.
  • We've completely reworked the tooling for building binary packages for iOS. Mobile Forge is our new project for maintaining iOS binary builds. It provides a much more robust environment for performing cross-compilation, making use of crossenv, rather than bespoke site package overrides. Getting crossenv working has also required us to do a deep audit of the various ways that Python reflects describes the platform it is running on, from the obvious ones like the platform and sys modules, down to sysconfig and the tags that are used by pip to determine wheel compatibility.
  • We've completed an initial port of the iOS patches to Python 3.12.0rc3. We're still hunting some edge cases, but initial signs are promising that we'll be in a position to do a near "zero day" release of Python 3.12 support for iOS.
  • For Android, we've re-enabled Fortran support in the package build system, and used it to upgrade SciPy.
  • We were anticipating that would would complete the Toga Audit this month; however, that unfortunately hasn't happened. We've hit a bunch of complications with getting fonts and canvas support working on Windows and Android, and the process of getting those platforms working has revealed some inconsistencies in macOS, iOS and GTK font handling. However, we have completed the audit of DetailedList and Font, and the audit of Canvas is almost complete.
  • We decoupled the Winforms event loop from the main form in a Toga app. This doesn't have any immediate impact on existing Toga apps - but it means we're now in a position to have windowless apps, such as system tray apps.
  • We completed the fixes needed to support Briefcase on Python 3.12.
  • We made some significant improvements to subprocess encoding handling. This should significantly improve the user experience of Windows users, and users from non-English speaking countries.
  • We formally downgraded our support for AppImage to "Best effort". AppImage has proven increasingly difficult to work with as a format; now that we have native system packages and Flatpak as options, the effort needed to maintain AppImage support is better spent elsewhere. We'll still merge fixes to AppImage support if a PR is provided, but we're no longer actively fixing bugs, or running AppImage configurations in CI.
  • We added filters to Xcode output to hide ignorable warnings. Xcode builds have always been a little noisy; the new Xcode 15 release added even more noise. The filter means that these warnings will no longer distract from successful build output.

What's next?

Unfortunately, we didn't complete the Toga audit in September as we anticipated. As mentioned, we hit a number of complications and inconsistencies in font handling, especially in the Canvas widget, which slowed progress. We'll keep working on this audit in October; and once we're done, we'll make a release a new version of Toga. This release will include a number of backwards-incompatible changes identified as part of the audit, so be prepared for a bumpier-than-usual upgrade process.

Once the audit is complete, we'll also be looking at a technical limitation that the widget audit has revealed on Android. A number of Toga's Android widgets aren't as fully featured as they could be, due to the fact that accessing the full API would require subclassing a Java base class. This is an area where Chaquopy has some limitations; so we're going to try and address these limitations.

We'll also begin the work of upstreaming patches to CPython core. We've been invited to attend the CPython Core Team Sprint this month, which will be great opportunity to lay out the roadmap for formal iOS and Android support in CPython 3.13. This will also involve working on improving the CI infrastructure for building Android and iOS packages.

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:

  1. Filter out a message generated after Xcode updates
  2. Add the ability to configure the ABIs built by an Android project
  3. Rationalise the application of adhoc signing on macOS
  4. Provide an option to override app settings from the command line
  5. Add support for custom PyPI repositories
  6. Document how to debug an application in popular IDEs
  7. Correctly handle incomplete project deletions
  8. Add an option to select the Android base image when creating new emulators

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.

August 2023 Status Update

Posted by Russell Keith-Magee on 1 September 2023

August has seen an important milestone reached in our Toga work, and some exciting new features.

What we've done

  • We attended PyCon AU 2023, and presented a new talk about the fundamentals of building GUI apps in Python; the video of this presentation is already online. At the sprints, 8 new contributors earned their challenge coins, for a range of small and large fixes.
  • The Toga Audit is complete on macOS, iOS and GTK! The last pieces were the audit of Window and App; with those PRs (and some others that are outstanding), we have 100% code coverage for Toga's codebase. Windows and Android are catching up rapidly - we've completed the audit of OptionContainer, Table, and Tree, as well as a major revamp of how layouts are calculated, which ensures that minimum window sizes are enforced, and layouts on High DPI displays are correct.
  • We added a Texual backend for Toga. This means the same Toga application will now run on 3 desktop platforms, 2 mobile platforms, as a single page web app, and in a terminal window. As with the web backend, there's still a lot of work to fill out all the widgets, but we've got enough in place to run the BeeWare tutorial app and the first 2 Toga tutorial steps.
  • We improved the architecture and word size checks that Briefcase performs when building apps. This effectively adds support for 32-bit x86 and ARM platforms; we're limited in our ability to perform automatic tests to verify these platforms work as advertised, and upstream tooling isn't always up to the task (for example, Linuxdeploy doesn't support ARM at any word size) - but Briefcase now performs much more robust checks, and will make a best effort when support should exist.
  • We added support for openSUSE (and other SUSE-derived distributions) to Briefcase.
  • We updated the version of the Android command line tools that Briefcase uses.
  • We resolved a long standing issue with the use of Objective C blocks on M1 hardware.

What's next?

Based on current progress, it seems highly likely that the Toga audit will be complete on Windows and Android by the end of September. This will bring the Toga audit to completion, providing a very stable foundation for future work on Toga. It also means you can expect a new Toga release in the coming month, incorporating the myriad bug fixes and improvements that the audit has revealed. This release will include a number of backwards-incompatible changes identified as part of the audit, so be prepared for a bumpier-than-usual upgrade process.

So - what comes after the audit? Firstly, we'll be looking into iOS App Store submission - we've been made aware that although Briefcase apps work fine on both device and simulator, the App Store has been rejecting apps because of an internal layout issue. We have already begun work on this, and thanks to a contribution from the community, we have a very strong foundation for this work. We'll also start looking at Python 3.12 support, and making preparations for upstreaming our iOS patches into CPython core.

We'll also be looking at a technical limitation that the widget audit has revealed on Android. A number of Toga's Android widgets aren't as fully featured as they could be, due to the fact that accessing the full API would require subclassing a Java base class. This is an area where Chaquopy has some limitations; so we're going to try and address these limitations.

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:

  1. Filter out a message generated after Xcode updates
  2. Add the ability to configure the ABIs built by an Android project
  3. Rationalise the application of adhoc signing on macOS
  4. Provide an option to override app settings from the command line
  5. Add support for custom PyPI repositories
  6. Document how to debug an application in popular IDEs
  7. 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.

July 2023 Status Update

Posted by Russell Keith-Magee on 1 August 2023

The year rolls on, and so does progress on BeeWare!

What we've done

What's next?

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:

  1. Filter out a message generated after Xcode updates
  2. Add the ability to configure the ABIs built by an Android project
  3. Rationalise the application of adhoc signing on macOS
  4. Provide an option to override app settings from the command line
  5. Add support for custom PyPI repositories
  6. Document how to debug an application in popular IDEs
  7. Switch Toga's Winforms backend to use native Winforms imports
  8. 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.

2023Q3 Roadmap

Posted by Russell Keith-Magee on 4 July 2023

2023 is halfway done, and BeeWare continues to make steady progress. As always, this roadmap should be read as a guide to what we aim to focus on over the coming quarter, rather than a hard commitment of features that will be made available on a specific deadline.

Q2 progress

As with Q1, our focus in Q2 was on Toga testing. This has been a mammoth project; but it's finally nearing completion. All but 2 widgets (Canvas and DetailedList) have 100% branch coverage on macOS, iOS and GTK, while Android and Windows are only 5 more widgets behind (ScrollContainer, SplitContainer, OptionContainer, Table and Tree). Along the way, we've identified and resolved lots of inconsistencies in widget APIs, and resolved countless bugs. We've also fully documented every widget, ported the test suite to Pytest, and added type annotations in the code (mostly for documentation purposes, rather than formal validation). We've also completed testing and coverage of a lot of the non-widget functionality that wasn’t strictly planned for this quarter - features like Images, Icons, Validators, application paths, and colors; plus a lot of tests (and bugfixes) in the core widget layout. We've also got the start of some tooling that can be used to test the Web backend.

Unfortunately, we haven't been able to do any substantial Toga planning. Once Toga's code is at 100% testing coverage, we'll be in a much better place to develop those plans. We also haven't been able to add any native cross-platform hardware support.

Q3 priorities

Our Q3 goals are:

  • Finalize Toga's test suite. By the end of Q3, we should have 100% branch coverage on every line of Toga's core, and on the macOS, Windows, GTK, Android and iOS backends.
  • iOS Binary packaging We've been made aware that Apple is rejecting Briefcase packaged iOS apps from the iOS App Store because of a package layout issue associated with binary modules. This is a very high priority to fix.
  • Kotlin upgrades The upcoming Android Studio release is switching to Kotlin as its preferred language for new Gradle configuration files; we need to upgrade Chaquopy's tooling to support this.
  • Add full support for Java inheritance In the process of building Toga's test suite, it's become clear that a number of features can only be implemented by subclassing Java base classes. Chaquopy's ability to subclass is currently limited; to unlock all the features of Android, we need to resolve this limitation.

Longer term goals

Our longer term goals are also largely unchanged. Toga 1.0 remains an important goal; once we're at 100% test coverage, we will be in much better place to provide estimates about Toga 1.0. Upstreaming is an area where we have some good news - as a result of discussions at Pycon US, we've received support for raising iOS and Android to the status of Tier 3 supported platforms in CPython, with the initial goal of having this in place for Python 3.13. You should expect to see movement on upstreaming towards the end of this year, and early next year. A forge for mobile packages is also remains an important goal; the completion of upstreaming work will make the goal of building a forge much more viable.

Summary

At the end of Q2 2023, Toga's testing journey is nearing completion... but there's still lots of work to be done. However, the groundwork that we've been doing over the last 6 months has put us in a very strong position to develop Toga and the rest of the BeeWare ecosystem going forward.

June 2023 Status Update

Posted by Russell Keith-Magee on 30 June 2023

We're half way through the year! Work on the widget audit is almost complete; but that's not all we've been working on.

What's next?

The widget testing audit has been a mammoth project, but the end is very nearly in sight. There's only 2 widgets (Canvas and DetailedList) that haven't seen any testing to date; plus there's some non-widget features (like dialogs, fonts, windows, and basic App functionality) that still require testing. Once those tests are complete, we'll be moving on to dealing with some iOS and Android deployment issues that have been accumulating while we focused on Toga.

We'll also be at EuroPython 2023 from July 17-23. We're presenting on Thursday; and we'll be there for the full duration of the sprints. See you in Prague!

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:

  1. Filter out a message generated after Xcode updates
  2. Add the ability to configure the ABIs built by an Android project
  3. Rationalise the application of adhoc signing on macOS
  4. Detect a failure when trying to install on an Android device that is too old
  5. Use the on-device clock to filter Android device logs
  6. Add an APK packaging target for Android
  7. 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.

May 2023 Status Update

Posted by Russell Keith-Magee on 1 June 2023

May has been another month of steady progress - mostly on widget testing, but also in some other key areas of the project.

What we've done

What's next?

June will be another month with a focus on GUI test coverage. We're still hoping that this work will be complete by the end of June - we're averaging 1-2 widgets a week, and we have 8 widgets remaining; however, every widget is throwing up unique challenges (and revealing deep bugs - sometimes in the underlying GUI frameworks), so it's possible the audit work may need to continue into July.

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:

  1. Filter out a message generated after Xcode updates
  2. Add the ability to configure the ABIs built by an Android project
  3. Add support for the ANDROID_HOME environment variable
  4. Rationalise the application of adhoc signing on macOS
  5. Detect a failure when trying to install on an Android device that is too old
  6. Use the on-device clock to filter Android device logs
  7. Add an APK packaging target for Android
  8. 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.

April 2023 Status Update

Posted by Russell Keith-Magee on 1 May 2023

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.

What's next?

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:

  1. Modify the handling of app signing options
  2. Filter out a message generated after Xcode updates
  3. Add the ability to configure the ABIs built by an Android project
  4. Add support for the ANDROID_HOME environment variable
  5. Rationalise the application of adhoc signing on macOS
  6. Detect a failure when trying to install on an Android device that is too old
  7. Use the on-device clock to filter Android device logs
  8. Add an APK packaging target for Android
  9. 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.