p5: Google Summer of Code progress report

python processing gsoc p5

What was the project about?

The main goal of the project was to create a Python library based on Processing. While Processing’s emphasis on teaching programming in a visual context does make it easier for beginners, the fact that it’s based on Java often makes it look needlessly complex to most beginners. The main motivation behind creating p5 was to leverage Python’s readability and Processing’s emphasis on coding in a visual context to make programming easier to teach.

The Python mode for Processing was also created for similar reasons, however, since Python mode was based on Jython, it limited the ways people could use Python. This was another motivation for creating p5, we wanted a library that used the Processing API while at the same time giving people access to Python’s large ecosystem of libraries.

Goals for the GSOC

We were able to meet most of our goals for the summer of code period. These included:

We had initially planned on adding support for displaying text and images, but unfortunately weren’t able to do so in the GSOC period. Before week 8 of the coding period, our code was using immediate mode rendering and our sketches would slow down under load. Instead of implementing new features like image support and text support we decided to address the optimizing issue first and re-wrote the rendering code to use retained mode rendering and use numpy for all internal computations.

What needs to be done?

Even though we met most of our goals for the GSOC period, p5 is far from being complete. Before we start adding more features, we would like to fix issues #9 and #10 first. Right now, p5 is practically useless on computers running Mac OS. Most sketches stop refreshing after drawing a couple of frames. Since I do most of the development work on a linux machine, I haven’t been able to debug this properly. We would really appreciate help from mac users who are willing to test things out for us and help us debug this.

Our end goal is to implement the full Processing API in Python, however, we would like to focus on the following features in the next couple of months: