Skip to main content

Google Summer of Code 2015

Original Report: GSoC 2015

p5.js Windows Port by Guy de Bree, mentored by Sam Lavigne

For my Google Sumer of Code I developed a Windows port for the p5.js IDE, and fixed bugs for said editor. It’s now on the p5.js website! While it still has bugs, you can try it out on the downloads page. (source code)

New Kinect libraries openKinect and KinectPV2 by Thomas Sanchez Lengeling, mentored by Elie Zananiri
The goal of the project was to expand and update the existing Kinect libraries; OpenKinect-for-Processing and KinectPV2. The openKinect library now supports the new Kinect v2 for Mac and Windows and Kinect v1 for Windows and Linux. For the KinectPV2, functionalities include: skeleton tracking, face detection, process frame raw data, point cloud extraction and contour extraction. Source sode on github: OpenKinect-for-Processing and KinectPV2. 3.0 Update by Luca Damasco, mentored by Golan Levin
Prior to the start of the Google Summer of Code, Processing’s Python mode would not work at all with Processing 3.0 due to some extensive back-end changes. Fortunately, this summer saw the revitalization and updating of Python Mode! Users may now write Processing 3.0 Sketches using Python syntax in the new editor. Due to a few outstanding bugs, it has not yet been officially released, but feel free to try it out by building the Source on your own machine. In addition to once again making Python Mode functional, I have edited over 1,000 lines of reference code as well as ported nine new tutorials! Feel free to check them out and leave feedback!

Web IDE for p5.js by Jason Sigal, mentored by Daniel Shiffman
A browser-based code editor, designed specifically for the p5.js community. The project adapts the p5.js Desktop IDE (originally by Sam Lavigne, GSOC ’14) for the web, with inspiration/insight from Gene Kogan's p5 Sandbox. The goal is to make it easy to create, browse, share, and remix creative code sketches directly from the browser. Every project gets a unique URL and version control (through GitHub Gists). Logged-in users can access their previous sketches, and all users can access curated p5.js examples. Create an account and start sketching! Demo at

Raspberry Pi and armv7hf support by Gottfried Haider, mentored by Ben Fry
Gottfried worked on making Processing play well with the Raspberry Pi and similar ARM-powered microcomputers (to borrow a term used in the 1970s to describe various kits and designs built around affordable microprocessors, such as the Motorola 6800). Initial support got merged into processing.git in time for Processing 3.0. The upcoming 3.0.1 release will contain all remaining parts, such as the bits necessary for having working OpenGL graphics on the Pi (with some great help by the JOGL team). Part of the work also involved the creation of a new core library, Hardware I/O, that was made to provide access to the hardware peripherals, such as GPIO, I2C and SPI, that are generally made available on pin headers on such systems. The hope was that using those could be as simple and straightforward as it is on the Arduino platform today. To learn more: Notes about running Processing on ARM Linux and the Raspberry Pi & Raspberry Pi 2. A short (vertical!) video clip showing the GPIOs in action.

p5.SVG and p5.PDF by Zeno Zeng, mentored by Danne Woo
The main goal of p5.SVG is to provide a SVG runtime for p5.js, so that we can draw using p5’s powerful API in svg, save things to svg file and manipulating existing SVG file without rasterization. Source code on GitHub. As for p5.PDF, it’s a simple PDF export module for p5.js based on browser's print to pdf function. (source code)

internationalization of p5.js website & collection of sketches for the p5.js community statement video by Maya Man, mentored by Johanna Hedva
This summer, I worked primarily on two separate projects. First, I rebuilt the p5.js (currently built in php) using Node.js, Assemble, Grunt, Handlebars, & YAML to support internationalization (easy tranlations from English to foreign languages // button styling to be adjusted & tranlsations to be completed at upcoming translat-a-thons). Second, I collected and currated sketches contributed from people around the world to play in the background our p5.js community statement video. Check out the projects on my github (source code below)!

i18n site source code
community sketches source code

Contribution Manager UI upgrade by Akarshit Wal, mentored by Scott Murray
Contribution Manager is a tool which lets uers install/upgrade/remove various libraries and other contributions. The aim of the project was to change UI of the Contribution Manager and make it more user-friendly. Another small part of the project was to test all the libraries and their examples to check their compatibility with Processing 3.0 and collect data about what is missing in them.

RSyntaxTextArea integration and the REPL Mode by Joel Moniz, mentored by Manindra Moharana
The RSyntaxTextArea integration aimed at replacing the JEditTextArea, which is currently at the heart of the PDE editor, with the RSyntaxTextArea and the complementary AutoComplete code completion library to bring several new features to the table, such as code folding and documentation support and parameter tabbing during auto-completion. The REPL mode adds a Read-Evaluate-Print-Loop console to processing, enabling users to type in processing code, and to view the output of this code immediately. This mode also gives the PDE the ability to hot swap code, wherein the output corresponding to changes made in a running sketch can be viewed by simply saving the sketch, without restarting it. A detailed report of everything that was undertaken this summer can be found here.

p5bots by Sarah Groff-Palermo, mentored by Shawn van Every
p5bots combines a socket layer and a simplified API to enable users to interact with an Arduino (or other microprocessor) from within the browser. Use sensor data to drive a sketch; use a sketch to to affect the real world.

p5 WebGL Renderer by Karen Peng, mentored by Kevin Siwoff
A light-weight webGL renderer for p5.js. Over the summer, basic webGL APIs for p5.js are implemented. It enables you to create sketches under WebGL mode, while all the syntaxes remain consistent with p5 2D (default) mode. WebGL APIs includes: cameras, geometries, lights, materials, texture, etc. For more detail, references are documented. Get started with p5 webGL tutorial. Take a look at 3D examples.

Video and Audio streaming library by Nick Confrey, mentored by Dan Shiffman
Thanks to Andres Coulbri and Gottfried Haider for their exceptionally helpful code and examples. Thanks also to my mentor Dan Shiffman for direction and help throughout all the weeks. This project is broken up into roughly three useful parts. It originally focused on streaming media over the network, primarily video and audio streams, but evolved to include revamping Processing's video core video framework. I planned to write networking code in Java, but the project evolved to consist of learning and developing C to Java conversion through Java Native Interface and Java Native Access. Along the way I also picked up skills in video codecs, network packet payloading, and audio encoding. The first part of the project was modifications and extensions to the existing Processing network library. The second part was upgrading Processing's video capability to use GStreamer 1.0 instead of the depreciated GStreamer 0.10 which Processing was previously relying. Finally, the Processing community can access the most recent version of GStreamer, and with it, the most recent plugins. While the code itself is highly tailored towards videostreaming and video playback, the same JNI technique can be used to access the wealth of GStreamer resources, from CD ripping all the way to audio analysis. Processing users will now have much more power in the areas of video and audio. I have also left exposed a public static void pipelineLaunch(String pipe) function, which parses a GStreamer pipeline string and then launches and runs the pipeline. The third part of the project was creating a streaming library that allows Processing users to stream local videos and songs/audio files to other sketches and other computers.