The best place to start with any open source contribution is with something that fits your knowledge, experience, and area of interest.

Before you begin

Before you start contributing, it can help to get a feel for the project as a whole. If you haven't already done the BeeWare Tutorial, start there. This will give you exposure to the most important BeeWare tools, so you can see how they all fit together.

Once you've completed that tutorial, you'll be ready to pick something to work on. If you had any problems doing the tutorial - if you hit a bug, or if the language used to describe a step wasn't clear - that's a great place to start! If you can turn your experience into an improvement in the tutorial, the next person who does the turorial won't hit the same problem.

However, if your tutorial experience was completely smooth (and we hope it was!), here are some ideas for where to get involved, depending on your skills and interests.

Python programming

Briefcase

If you'd like to contribute to a tool that has a clearly defined problem statement, but needs bugs squashed and features added, Briefcase may be the project for you. Briefcase is a tool for packaging a Python project as a standalone GUI application. It takes a pyproject.toml configuration file, and uses that configuration data to generate installers or distributable application bundles.

The Briefcase issue tracker has a collection of feature suggestions (and a smaller number of bugs). If this is your first time contributing, look for one of the tickets labelled first-timers-only - these are issues that have been specifically picked for first time contributors because they should be relatively straightforward to implement. You may also find it helpful to filter the tickets for the platform you actually use for development - it will be difficult to fix a Linux bug if you don't have a Linux machine to use for testing!

Pick a ticket, leave a comment that you're looking into the problem, and try to develop a pull request implementing a fix!

Colosseum

If you like the idea of a very well specified, but complex problem, Colosseum is a good place to contribute. Colosseum is a pure-Python, browser implementation of the CSS layout algorithm. BeeWare uses it to lay out widgets on the screen of an application. The CSS specification has an extensive test suite; Colosseum needs to pass all those tests.

The Colosseum documentation has a contribution guide to walk you through your first Colosseum contribution.

GUI programming

If you've got experience with a native widget library - Cocoa on macOS, GTK+ on Linux, Windows Forms, or the native iOS or Android libraries, you may be able to help with Toga. Toga is a cross platform widget toolkit - it provides a common interface for user interface elements like buttons and trees.

Toga has a range of interfaces already defined; however, the implementation of those interfaces isn't complete across all platforms. Pick a widget, and implement that widget for your platform of choice!

Even if you don't know a native widget library, you may still be able to help with Toga. Writing new widgets is a lot less complicated than it may seem. Every platform has documentation for how to use their native APIs, and the process of translating that platform documentation from another langauge (e.g., Objective C or C#) is a relatively straightforward process. The existing code should give you some pointers of how this can be done, and the BeeWare team is happy to help if you need it. Jump on the BeeWare Gitter channel and we'll do whatever we can to help!

If you're not up for transforming code from one language to another - there's alwasy the test suite. Toga's core library also has a test suite, but the coverage of that test suite isn't very good. Pick a widget interface, and see if you can write a test for it!

Documentation

Good documentation is essential for any successful project. We know that Toga and Briefcase both need significant improvements to their documentation. You've done the tutorial; now take a look at the documentation for Toga and Briefcase and see if you can find a way to improve the tutorials, references and topics guides that are there.

Tutorials

One of the best ways to contribute is to make sure our introductory and tutorial documentation is rock solid. Pick a project of interest from the BeeWare suite, and try to follow the getting started guide and tutorial. If you can't find the getting started guide - then that's the first thing to report!

As you work through the tutorial, take note of anything that doesn't make sense, or doesn't work. Then open a bug report for those problems.

Windows

If you're a Windows user, BeeWare can definitely use your help. The core team all use Linux and macOS in their daily development, and as a result, it's really easy for Windows incompatibilities to slip in. This is almost always due to an oversight. Identifying - and maybe even fixing - problems with running BeeWare tools on Windows is an immense help.

Languages

Do you speak a language other than English? At present, the core team are all native speakers of English. Providing translations of documentation, or completely new tutorials or guides in your native language is a great way to contribute. Pick a project that already has documentation and translate that text. Alternatively, start from scratch and write a completely new tutorial.

If you speak a language with a non-latin character set (e.g., Russian or Chinese), or a language with a right-to-left script (e.g., Hebrew or Arabic) you'll be able to point out all the places where we've assumed simple ASCII encoding or left-to-right conventions. Pick any of the active BeeWare projects, and try to use it with using your native language. If you hit any problems, report those problems as bugs; if you are feeling particularly adventurous, see if you can work out how to fix the bug, too.

Practical usage

One of the best ways for us to determine where our gaps are - in both documentation and APIs - is for people to actually use BeeWare to build something. So, if none of the ideas so far sound interesting, why not try something of your own? Use the BeeWare suite to build that app you've always wanted - a desktop visualization of a data source, or a mobile application to track your activities - whatever it is, try to build it.

We can almost guarantee that you'll hit problems. BeeWare is a still a very young project. But the problems you hit will give us a great indication of what needs to be tackled. It will indicate what widgets we need, and what documentation needs to be improved. So, as you hit problems building your own app, log issues with the BeeWare projects that caused problems. This will enable us to identify what we need to improve - and, it might even be a source of inspiration for you to contribute!