This means it is possible to write web applications 100% in Python - so those new to web development don't need to learn multiple languages to develop web apps.
Before you start
This tutorial is also going to focus on code contributions. If your interests/skills are elsewhere (e.g., testing, documentation), let me know, and I can make some other suggestions.
Before you make your first contribution, take Batavia for a spin. The instructions in the getting started guide should be enough to get going. If you get stuck, let me know and I’ll help you out. And if you get stuck, that will also point to your first contribution - work out what instructions would have made you not get stuck, and contribute an update to the README.
Your first contribution
Once you’ve got Batavia working, you’ll be ready to make your first code contribution. The contribution guide will guide you through the process of setting up your development environment. Work through that guide until you can run the Batavia test suite - once you've been able to run the test suite without any failures, you're ready to add some new code to the Batavia codebase.
If you then look at tests/datatypes/test_str.py, you’ll see the tests for this behaviour. We’ve already written a test suite that tries to perform every operation on every data type. However, all of the names listed in that file are the examples that are known to fail (because the implementation doesn’t exist yet). The tests work by writing a short program that implements one mathematical operation, running the program under normal Python, and then running it again under Batavia. The test passes when the two executions produce identical output.
So - your first open source contribution: Pick a test that is currently listed in the test_str.py test file (e.g., test_multiply_float is the test of multiplying a string by a float), and modify the implementation of Str until you get the same output from CPython program as you do from the Batavia version of the same program. This includes error messages - if CPython raises a TypeError for a particular operation (e.g., “foo” * 3.1415), then so should Batavia - and the error message should be the same too, right down to the punctuation.
Before you start work, visit ticket #46 and register which function you're working on - that way we won't end up with 2 people working on the same one.
Once you've written your implementation, run the tests. If you get an “unexpected success” from the test suite, and you don’t get any failures, you’ve done it! Delete the line from the test_str.py file corresponding to the test you’ve fixed (because the test is no longer expected to fail), and submit a pull request!
Then break out a celebratory beverage of your choice! You’re an open source contributor!
Best of luck - and I can’t wait to see your first contribution!
If you have any difficulties with this tutorial, or there's anything you don't understand, don't forget - we're here to help you. Get in touch and we'll help you out, whether it's giving a better explanation of what is required, helping to debug a difficult problem, or pointing you towards tutorials for background that you may require.