2024Q3 Roadmap

Posted by Russell Keith-Magee on 2 July 2024

We're halfway through the year, and BeeWare has seen another quarter of significant 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

The biggest news for the quarter is that iOS is now officially a Tier 3 supported platform in CPython. All the patches required for iOS compatibility have been landed, and a buildbot is in place; as of 3.13.0b1, CPython will build for iOS without any patching. Android support is close behind; the only missing piece is the buildbot.

We made some major improvements to the BeeWare tutorial, adding sections on customization of the packaged app, and handling permissions for apps. We were able to use these changes as part of a well-received tutorial at PyCon US. We also ran a very successful booth and sprint at PyCon US.

We also completed a lot of improvements in Briefcase and Toga, expanding the types of apps that can be supported. Briefcase can now package console apps; and Toga now has an official API for apps that don't have menu bars, background apps, and apps that aren't governed by the lifecycle of a single "main" window. These have been the subject of long-standing feature requests (some of them almost as old as Toga itself), so it's great to be able to finally address these limitations.

The one area where we weren't able to make an progress was in packaging for mobile platforms. However, we did have some very productive discussions at PyCon US, so we're confident we'll be able to make good progress on this in the coming quarter.

Q3 priorities

The highest priority for Q3 is to get ready for the Python 3.13 release in early October. This involves finalising the work on the Android buildbot so that Android is officially Tier 3; preparing Briefcase and the Python builds that BeeWare supports to be ready for the 3.13 release; and doing as much work as we can on the packaging ecosystem so that package maintainers can publish wheels for iOS and Android.

We'll also be attending Kiwi PyCon in August, and attending the Python Core Team summit in September.

Longer term goals

Getting the Python ecosystem to support iOS and Android is requires a lot more than just adding patches to CPython and some related tools. There will be a lot of education and support work required to help the community adopt iOS and Android; and there is certain to be ongoing maintenance as Python and the platforms evolve. There are also many ways that Python mobile support could be made even better, including the publication of official iOS and Android binaries, and potentially getting to Tier 2 (or even Tier 1) support.

There's also a lot of work that can be done to Toga to make iOS and Android compelling platforms to develop for. Toga is still missing some key widgets to support navigation and data organization; and even when these widgets exist, there will be a need for documentation and examples to demonstrate how to build apps for these platforms. We anticipate we'll be looking at these towards the end of the year. We also anticipate that we'll start looking more seriously at Toga's web backend, attempting to bring it to a level of support comparable to the desktop and mobile platforms.

Summary

It's been another busy quarter with a lot of progress, but as always, there's still plenty to do. Completing official support for iOS and Android means the foundational work needed to support mobile platforms will be complete; we can then focus on what we - and the community - build on that foundation.

June 2024 Status update

Posted by Russell Keith-Magee on 1 July 2024

In June, BeeWare made a lot of progress, landing lots of new features - many of which have been the subject of requests and discussions for a long time.

What we've done

What's next?

Work on Toga's App interface isn't quite finished - we're expecting to finalise the Document API in the near future. Once that work is complete, our focus will be the mobile Python binary packaging ecosystem. The work we've done so far this year has led to CPython 3.13 formally supporting iOS and Android as Tier 3 supported platforms; the next step is ensuring that the rest of the community can build iOS and Android packages. This will involve improvements to tools like pip, cibuildwheel, meson-python and more. We expect that this work will take most of the rest of the quarter to release; but there should be some initial signs of progress by the end of the month.

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. Add an option to select the Android base image when creating new emulators
  8. Add an API to entirely replace the style of a widget
  9. Correct the handling of quotation marks in Android 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.

May 2024 Status Update

Posted by Russell Keith-Magee on 3 June 2024

BeeWare activity in May was dominated by preparing for and attending PyCon US in Pittsburgh. That event generated a lot of activity in the BeeWare project - but we've also added some other significant improvements.

What we've done

What's next?

In June, we're expecting to see progress in three main areas.

Firstly, we'll be finalising the work on packaging console applications. We expect to see a Briefcase release by mid month that will incorporate this, and all the other improvements that have landed over the last month.

Secondly, we'll be working on the APIs for the Toga App and Window classes. We've already done a lot of prototyping work in this area; once this work is complete, Toga should have support for apps without a menubar in their main window, support for status bar apps without a main window, vastly improved abilities to customise standard menu items, and a stable API for document-based apps.

Thirdly, we'll start looking at the broader CPython binary packaging ecosystem. The work we've done so far this year has led to CPython 3.13 formally supporting iOS and Android as Tier 3 supported platforms; the next step is ensuring that the rest of the community can build iOS and Android packages. This will involve improvements to tools like pip, cibuildwheel, meson-python and more. We expect that this work will take much longer than a month to complete, but we hope to be able to share some progress in 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. 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. Add an API to entirely replace the style of a widget

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 2024 Status Update

Posted by Russell Keith-Magee on 1 May 2024

This month has seen BeeWare reach one major milestone, almost reach a second, as well as landing several smaller improvements.

What we've done

What's next?

The bulk of May will be taken up by preparing for and attending PyCon US. We're presenting a talk and a tutorial; we're also presenting at the Language Summit, we will have a booth in the community section of the Expo Hall, and we'll be there for the first 3 days of the sprints. If you're coming to Pittsburgh and you'd like to attend that tutorial session, ticket sales are open!. We're also hoping that we'll be able to wrap up the work on Android support in CPython, and start work on supporting command line applications in Briefcase.

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
  10. Add an API to replace a child of a widget
  11. Add an API to entirely replace the style of a widget
  12. Add the ability to define content when creating a window

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.

2024Q2 Roadmap

Posted by Russell Keith-Magee on 3 April 2024

Q1 2024 has seen some major progress - but as always, there's still plenty of work to do. 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.

Q1 progress

The first quarter of 2024 has seen significant progress towards getting iOS and Android to Tier 3 supported status in CPython. PEP 738 has been formally accepted by the CPython steering committee, and the vast majority of the changes needed to support iOS and Android have either been merged, or received substantial review from the CPython core team.

We've also made progress on a number of long standing feature requests in Toga. We've added an OptionContainer for Android, so tab-based UIs can be used on all platforms. We've added a MapView widget that works on all desktop and mobile platforms. We've also added the start of hardware APIs, including Camera and Geolocation APIs.

Q2 priorities

Our Q2 goals are:

  • Get iOS and Android to Tier 3 supported status. We expect to finish upstreaming the patches we have for CPython early in the quarter. However, Tier 3 status also requires CI infrastructure to verify that the platforms are stable. In Q2, we will commission buildbots so that CPython's CI is able to verify the ongoing stability of iOS and Android as a platform.
  • Extend the BeeWare tutorial. The BeeWare tutorial provides a good introduction to using Briefcase and Toga, but there are a number of common support questions that aren't covered by the tutorial, and some features that we've added since the tutorial last saw significant edits. We're going to revisit the tutorial, adding some extra steps to cover these new features and common issues.
  • Attend PyCon US 2024 We're presenting a tutorial and a talk; we will have a booth in the community section; we'll be there for the full duration of the sprints; and we're also expecting to attend the language summit. It's going to be a busy 2 weeks - we hope we see you there!
  • Start working on packaging for mobile platforms. PEP 730 and PEP 738 cover the core of CPython itself, but Python is much more than just the core interpreter and standard library. There's also the ecosystem of third-party libraries, many of which have binary components. In this quarter, we're going to start looking at the changes that are needed to make it easy for the community to start packaging wheels for iOS and Android.
  • Modify the App class to support other types of apps. This includes adding an API for a "Simple App" that doesn't have a menu bar, finalising the API for document-based apps, and providing an API for system tray apps.

Longer term goals

Completing PEP 730 and 738 is a major milestone - but there's still a lot of work to be done. It will take a lot of time and community education before iOS and Android binary packages are widely available. We intend to do whatever we can to support the community, ranging from documentation, to tooling support, to submitting patches to upstream packages.

One of the ways to accelerate this transition will be to make iOS and Android compelling platforms to support. This means adding more capabilities to Toga, so that there aren't any capability gaps for a user writing an app. It also means writing more documentation and tutorials so that common app development tasks are well explained.

Summary

This month marks 2 years since full-time work began on BeeWare; and 10 years since the first commits on the project. We've come a long way in that time - from a collection of cobbled-together proof of concept demonstrators to a fully tested GUI platform, with equally tested deployment tooling, and official support in CPython itself. The future for Python as a GUI development platform on desktop and mobile has never looked better, and we're excited to see what the coming years will bring.

March 2024 Status Update

Posted by Russell Keith-Magee on 2 April 2024

This month, we have less to report by raw feature count - but the changes we have made represent extremely significant progress.

What we've done

What's next?

In April, we're hoping to wrap up the work on iOS and Android patches for CPython, and add buildbots for those platforms. With the buildbots in place, iOS and Android will officially be Tier 3 supported CPython platforms. We also plan to revisit the BeeWare tutorial, adding some more steps in preparation for a tutorial presentation at PyCon US in May. If you're coming to Pittsburgh and you'd like to attend that tutorial session, ticket sales are open!

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
  10. Add an API to replace a child of a widget
  11. Add an API to entirely replace the style of a widget
  12. Add the ability to define content when creating a window

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.

February 2024 Status Update

Posted by Russell Keith-Magee on 29 February 2024

February may be the shortest month, but that doesn't mean we've got any less progress to report!

What we've done

What's next?

In March, we will continue to focus on iOS and Android patches for CPython; if all goes extremely well, the bulk of patches should be upstream (or at least submitted for review) by the end of the month. While we're waiting for CPython patches to be reviewed, we'll be adding geolocation APIs to Toga.

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
  10. Add an API to replace a child of a widget
  11. Add an API to entirely replace the style of a widget
  12. Add the ability to define content when creating a window

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.

January 2024 Status Update

Posted by Russell Keith-Magee on 1 February 2024

January has seen some long awaited and high profile features added to BeeWare.

What we've done

What's next?

In February, we'll be focusing on the iOS and Android patches to CPython, and the finalisation of PEP 738. While we're waiting for CPython patches to be reviewed, we'll be looking into geolocation and mapping functionality.

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
  10. Add an API to replace a child of a widget
  11. Add an API to entirely replace the style of a widget
  12. Add the ability to define content when creating a window

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.

2024Q1 Roadmap

Posted by Russell Keith-Magee on 10 January 2024

It's the start of a new year, which means it's time to cast our minds forward to what BeeWare will bring in the coming year. 2023 saw some major milestones in stability and features; in 2024, we're going to build on that foundation. 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.

Q4 progress

During the last quarter of 2024, we finally finished our audit and testing of Toga. We now have 100% branch coverage on every line of Toga's core, and on the macOS, Windows, GTK, Android and iOS backends. We published Toga 0.4, incorporating all these changes - but it also meant that we were able to start adding new features to Toga, including an OptionContainer widget on iOS, and a draft of a Camera API for iOS and macOS. Toga's new test framework has made adding these new features must easier - for example, we were able to very rapidly identify (and resolve) gaps in functionality in the new iOS OptionContainer widget by running the existing test suite on a new implementation. We expect that this testing foundation will continue to serve us well as we add more features in the coming year.

The other major development for the quarter was the start of the upstreaming process for Python on mobile platforms. PEP730, proposing the addition of iOS to the Tier 3 supported list of CPython core, has been ratified by the steering council; and PEP738, proposing the same for Android, is in draft form. The first patch contributing towards iOS support has already landed.

Q1 priorities

Our Q1 goals are:

  • Complete upstreaming iOS and Android support patches to CPython core. We will finalise PEP738 and submit it for ratification; and we'll continue upstreaming the iOS and Android patches that we've been maintaining independently. This work has a hard deadline of May 7, as that is when Python 3.13.0b1 is planned, which is the feature cutoff for Python 3.13 development, so making sure we hit that deadline will be our main priority.
  • Add OptionContainer for Android. The implementation on iOS was relatively straightforward; we have no reason to believe that the Android implementation will be any more complicated.
  • Complete the implementation of the Camera API. We have a draft PR implementing a Camera API on macOS and iOS; we'll extend this API to Android, and complete the work on Briefcase that is needed to add support for permissions.
  • Add an API for geolocation, and a Map widget. Geolocation is another major hardware features that is common on phones; we need to write a cross-platform layer for that hardware, plus add a native mapping widget to show off this capability.

Longer term goals

For the remainder of this year, you can expect to see three major themes in BeeWare development.

Firstly, we're going to continue to work upstreaming the work BeeWare has done in the mobile space into the wider CPython community. Once iOS and Android have been incorporated into CPython core, the focus will move to the packaging ecosystem. This means adding official support to upload iOS and Android packages to PyPI, and making it easy for third party projects to incorporate iOS and Android builds into their release processes.

Secondly, we'll be increasing our efforts in education and training. BeeWare has a tutorial that we're extremely proud of - but there are many things we could add to that tutorial, and there are plenty of "How To" and topic guides that could be written for those who have finished the tutorial and want to try more advanced ideas.

Thirdly, we'll continue to expand the capabilities of Toga. There are a handful of high profile widgets and capabilities that have been patiently waiting for us to have a stable platform to build on, and the spare capacity to implement them - features like a Radio Button widget, Trees and Tables on mobile platforms, a cross-platform Settings API, and cross-platform cloud file access.

Summary

2024 promises to be a very exciting year for BeeWare. For the last 2 years, we've been focused on consolidating and stabilizing existing features. That work is coming to a close, which will allow us to turn our attention to building new features that show off the stable foundation we've built, and to providing the resources that will allow more users to try BeeWare for themselves.

December 2023 Status Update

Posted by Russell Keith-Magee on 31 December 2023

December has been a short month due to end-of-year holidays, but BeeWare has still made some important progress.

What we've done

What's next?

When we return from the end-of-year break, we'll be back into developing Toga. In the near future, you should see an OptionContainer on Android, and permission support in Briefcase; once that work is wrapped, we'll start looking at more more hardware APIs and missing widgets. You should also start to see more patches land in CPython to support iOS, and the finalisation of PEP 738.

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
  10. Add an API to replace a child of a widget
  11. Add an API to entirely replace the style of a widget
  12. Add the ability to define content when creating a window

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.

RSS Feed

Archive