Skip to content

Instantly share code, notes, and snippets.

@freakboy3742
Last active March 17, 2017 22:53
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save freakboy3742/c1ca45089e157d2a168fb82cdd7cb015 to your computer and use it in GitHub Desktop.
Save freakboy3742/c1ca45089e157d2a168fb82cdd7cb015 to your computer and use it in GitHub Desktop.
Things you could do

Here’s a couple of suggestions for ways you can contribute, based on what you’ve said about your experience:

  1. Don’t worry about your lack of Java experience, and just have a go! I know it may seem weird to be writing Java to help a Python project, but the Java experience you require to make the contributions on isn’t that advanced - in most cases, there will be similar code nearby that you can use as a starting point. Plus, learning more than one programming language is good for your brain - you start to see how other languages solve the same problems.

  2. A relatively simple task that requires Python skills is to audit all the Python data types (list, tuple, string, and so on), and flesh out the tests and definitions for the methods on those types. For example, you can call “my_string.upper()” to convert a string to upper case - is that method implemented in Java? If not, put an empty stub function in the java file (or even just a comment that says “definition of upper() goes here”. Do a full audit of all the methods that are available on all types so we know what needs to be done.

  3. Once (2) is done, you can start writing the tests for all those methods. So - write the unit test that verifies that my_string.upper() works as you’d expect. Right now, it will fail; but once the method is implemented, that test should start to pass.

  4. If that’s too intimidating, you can step back a bit and write Python code that interacts with Java. For example, VOC currently doesn’t have any support for Python’s “lambda” keyword (see ticket #347). You can see this in practice by looking at “visit_Lambda()” in voc/python/ast.py, and see that the method currently raises a “NotImplemented” error. This is a little bit more complicated that idea (1) and will require you to get familiar with Python and Java Bytecode and, compare with the way Functions are currently rolled out. It’s definitely a big project that will test your abilities, but I’m happy to provide pointers along the way.

  5. If implementing Lambda doesn’t interest you, you can look at any other method in voc/python/ast.py that is currently raising NotImplemented, and provide that implementation.

  6. You can look outside VOC itself to a related project like Ouroboros. Ouroboros is a Pure Python implementation of the Python standard library. Many parts of CPython are written in C; we need a version written in pure Python. So - the task here is to pick a module in the Python standard library that is written in C, and provide a implementation in Python. This will be a big chunk of work, but you can tackle it in lots of little bits - implementing one method at a time.

  7. You could look well outside VOC, to another project like Toga. Toga is a cross-platform widget toolkit; but it’s all Python, rather than requiring chunks of other languages. There’s a lot that can be done here - writing test suites, implementing widgets for different platforms… if this sounds of interest, I can help narrow down a project that might be interesting.

I hope that gives you some ideas for places to start - if you need any help narrowing down this list any further, let me know either by email or in the gitter chat room.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment