Russell Keith-Magee
Dr Russell Keith-Magee is the founder of the BeeWare project, a project developing GUI tools and libraries to support the development of Python software on desktop and mobile platforms. He joined the Django core team in 2006, and was the President of the Django Software Foundation for 5 years. He joined the CPython core team in 2024. He is a frequent speaker at Python and Django conferences around the globe, sharing his experience as a FLOSS developer, community maintainer, and (unsuccessful) startup founder. In his day job, he is a Principal Engineer at Anaconda, working on BeeWare in the OSS team.
Sessions
All code needs a user interface. That might be an API, or a web page - but these days, many users will expect an app that they can install on their laptop, or on their phone. But how do you build a native application in Python? And do you need to build a different version of your app the app for every device and operating system you want to support?
In this hands-on tutorial, you'll lean how you can use the BeeWare suite of tools to build a graphical user interface for your code, and deploy that code as a desktop app, and as a mobile app - all from a single Python codebase. You'll learn how to integrate third-party libraries like NumPy into your app, and how to customize the appearance of your packaged app. You'll also learn how you can access device hardware (such as cameras an accelerometers) in your app's code.
No experience with mobile or desktop app development is required; a basic familiarity with Python is all you need. By the end of the tutorial, you'll have an app running on your own phone, written entirely by you, using nothing but Python.
Important instructions for attendees
In order to ensure that you have a smooth tutorial experience, there's a couple of preparatory steps you can do ahead of time. It's really important you follow these steps before you arrive. Some of them involve very large downloads (tens of gigabytes). The conference WiFi won't be able to support everyone performing those downloads at once; and because of licensing restrictions, we can't distribute the software on site using a USB drive.
If you're on Windows, you'll need to install a stable version of Python 3.9 or newer (i.e., no alpha or beta releases). It doesn't matter if you use an install from a python.org installer, a Windows Store install, or a Conda install - as long as you have Python 3.9 installed and on your path. It's also important that it is NOT a uv install. I know uv is the "new hotness" - however, uv has some limitations when it comes to cross-platform app development, so we'd strongly recommend you obtain Python from another source.
If you're on macOS, you'll need to install:
- A stable version of Python 3.9 or newer (i.e., no alpha or beta releases). As with Windows, a python.org install, a homebrew install, or a Conda install should all be OK; a uv install will be a problem.
- An up-to-date macOS version. macOS 15 (Sequoia) is preferred; macOS 14 (Sonoma) should work; older versions may work, but you're likely to experience some problems. It doesn't matter if you're on x86-64 or Apple Silicon - but your operating system must be up to date.
- An up-to-date version of Xcode - 16.4 is the most recent version
- The iOS developer kit for Xcode. This may be installed automatically by Xcode. To check that this is installed, start Xcode, then select Settings from the "Xcode" menu, select the "Components" tab, and ensure that a recent iOS developer kit (18.5 is the most recent) is listed on the available components. If it says "8.83GB on disk" or similar, it's available; if there's a GET button, press that button.
If you're on Linux, ensure you have all system updates applied; then visit this URL:
https://beeware.org/t/linux-deps
and follow the instructions for your chosen platform. On Linux, you must use the system-provided Python - if you have Conda or any other source of Python installed (like uv, or deadsnakes on Ubuntu), you'll need to know how to disable that Python for the purposes of the tutorial.
Again - it's really important that you follow these steps before you arrive on site. Hotel and conference WiFi is not friendly to multi-gigabyte downloads at the best of times, and it definitely doesn't play well with a room full of people all doing the same multi-gigabyte download at the same time.
All code needs a user interface. That might be an API, or a web page - but these days, many users will expect an app that they can install on their laptop, or on their phone. But how do you build a native application in Python? And do you need to build a different version of your app the app for every device and operating system you want to support?
In this hands-on tutorial, you'll lean how you can use the BeeWare suite of tools to build a graphical user interface for your code, and deploy that code as a desktop app, and as a mobile app - all from a single Python codebase. You'll learn how to integrate third-party libraries like NumPy into your app, and how to customize the appearance of your packaged app. You'll also learn how you can access device hardware (such as cameras an accelerometers) in your app's code.
No experience with mobile or desktop app development is required; a basic familiarity with Python is all you need. By the end of the tutorial, you'll have an app running on your own phone, written entirely by you, using nothing but Python.
Important instructions for attendees
In order to ensure that you have a smooth tutorial experience, there's a couple of preparatory steps you can do ahead of time. It's really important you follow these steps before you arrive. Some of them involve very large downloads (tens of gigabytes). The conference WiFi won't be able to support everyone performing those downloads at once; and because of licensing restrictions, we can't distribute the software on site using a USB drive.
If you're on Windows, you'll need to install a stable version of Python 3.9 or newer (i.e., no alpha or beta releases). It doesn't matter if you use an install from a python.org installer, a Windows Store install, or a Conda install - as long as you have Python 3.9 installed and on your path. It's also important that it is NOT a uv install. I know uv is the "new hotness" - however, uv has some limitations when it comes to cross-platform app development, so we'd strongly recommend you obtain Python from another source.
If you're on macOS, you'll need to install:
- A stable version of Python 3.9 or newer (i.e., no alpha or beta releases). As with Windows, a python.org install, a homebrew install, or a Conda install should all be OK; a uv install will be a problem.
- An up-to-date macOS version. macOS 15 (Sequoia) is preferred; macOS 14 (Sonoma) should work; older versions may work, but you're likely to experience some problems. It doesn't matter if you're on x86-64 or Apple Silicon - but your operating system must be up to date.
- An up-to-date version of Xcode - 16.4 is the most recent version
- The iOS developer kit for Xcode. This may be installed automatically by Xcode. To check that this is installed, start Xcode, then select Settings from the "Xcode" menu, select the "Components" tab, and ensure that a recent iOS developer kit (18.5 is the most recent) is listed on the available components. If it says "8.83GB on disk" or similar, it's available; if there's a GET button, press that button.
If you're on Linux, ensure you have all system updates applied; then visit this URL:
https://beeware.org/t/linux-deps
and follow the instructions for your chosen platform. On Linux, you must use the system-provided Python - if you have Conda or any other source of Python installed (like uv, or deadsnakes on Ubuntu), you'll need to know how to disable that Python for the purposes of the tutorial.
Again - it's really important that you follow these steps before you arrive on site. Hotel and conference WiFi is not friendly to multi-gigabyte downloads at the best of times, and it definitely doesn't play well with a room full of people all doing the same multi-gigabyte download at the same time.
If you need to build a user interface for your Python code, many guides will tell you that your only options are to use the command line, or wrap your code in a web interface. However, there is another option - building a native GUI interface. In fact for some use cases, a GUI app may be your only option.
In this talk, you'll learn how to build and run a graphical user interface (GUI) that can run on your desktop, on your phone, or in a browser. You'll learn how you can use the BeeWare suite of tools to bootstrap a new GUI project, develop a GUI interface, and deploy that app to multiple desktop and mobile platforms, without making any code changes. You'll learn how to access device hardware like GPS and cameras; and you'll learn how to distribute your application - including all runtimes and third-party libraries - to others. Lastly, you'll get a brief introduction to how you can access native platform APIs that don't have a Python API.