GSoC/GCI Archive
Google Summer of Code 2015

The Processing Foundation

License: GNU Library or "Lesser" General Public License (LGPL)

Web Page:

Mailing List:

The Processing Foundation was founded in 2012 with the two-fold mission to promote software literacy within the visual arts, and visual literacy within technology-related fields. Our primary goal is to empower people of all interests and backgrounds to learn how to program, so as to facilitate a sophisticated way of thinking about and creating media at a time when such knowledge is crucial. We do this by developing and distributing a group of related software projects, which includes Processing (Java), p5.js (Javascript), and (Python).

We serve a growing community of artists, designers, educators, programmers, engineers, and anyone in between who has an inclination toward both the arts and technology. Core to our belief is that learning how to program is a process of learning how to think, rather than acquiring a certain skillset, so that this knowledge may be applied to any number of fields, from creating artworks to imagining new technologies. We view Processing as a means to bridge seemingly disparate disciplines, providing platforms for collaboration between communities that might not otherwise have had access to each other. We also envision Processing as a new tool for both artists and technologists to use in their work, as a medium and as a context. We see ourselves situated at the place of convergence between the arts and technology, facilitating the pursuit and literacy of both.


  • An Expanded and Robust p5 Sound By building on the existing p5 sound library, I intend to create a more capable and intuitive sound library for all users. Through incorporation of the Tone.js library and a set of predesigned sounds, p5 will be better suited for use in the creation of multimedia web applications. In keeping with the Processing philosophy, all work will be thoroughly documented with well commented examples and tutorials.
  • Creativity in Code: Accounting for Diversity throughout Development p5.js is designed for people from various backgrounds and skill-levels all to use. With this idea in mind, it is important that proper resources are provided for those interested in learning to code and use the JavaScript library. This summer, I would like to demonstrate the features of p5.js and what any individual can do with their programming knowledge by coding various examples that would be accessible to all on p5.js’s website.
  • Enhancements in Processing’s Android mode This project aims at enhancing Processing for Android. The specific goals include implementing the video library; adding sensors, location and networking APIs; and fixing/implementing some specific issues listed on Github.
  • Expanding Kinect v2 libraries in processing The processing community uses extensively the Kinect for interactive applications, art installations and scientific research. The only library that supports the Kinect v2 is the KinectPV2. I propose adding new functionalities and bug corrections to the library. However, the library only works on Windows. Therefore, I proposed to update openKinect to be able to work with the Kinect via libfreenect2 and as well extend Kinect on web applications, enabling easy use of the Kinect across all OS.
  • Increasing p5.js Accessibility This project will make p5.js a more accessible tool for students and new-to-code artists. I will develop tools for the p5.js webpage that will help p5.js reach a greater audience and minimize the pain points inherent in translating the philosophy of Processing to the web.
  • Javadoc view mode and Shader Editor tool This project aims to implement the following two objectives. A mode for javadoc/reference view on mouse hover over a method or a class. Whenever the cursor is above a method or a class , the relevant javadoc of that method/class will be displayed as a tool-tip. A tool for writing of shaders in the Processing itself. This tool can be used to write glsl programs within processing itself.
  • Making networking easier for average Processing users My name is Nick Confrey, and Processing sparked my love of programming. I am excited to return to where I began, see how far I've come, and help an amazing organization. My idea extends the Processing Network library. I believe that linking computers together over the network and exchanging text, images or sound is a tremendously exciting possibility for new coders, but also very daunting. I aim to extend this excitement to everyone through an easily accessible Network library.
  • p5.js IDE Improvement and Porting the p5.js flavor of Processing is designed to provide an easy environment for novice programmers, designers and artists to develop for the web. I want to work on improving the p5.js editor in two capacities: Fixing known issues with the current version of the p5.js editor (currently in Mac-only alpha), and by developing Windows and Linux versions the editor so that a larger number of aspiring digital artists and programmers will have reliable, easy access to p5.js through its IDE.
  • p5.sensors I would like to create a p5.js library for interacting with hardware input streams via node.js. I anticipate focusing on streams from Tessel and Arduino in particular but generalizing enough to work with other inputs. This project would include not just the library itself, but also creating tutorials, examples and other documentation. Should this project not take the entire summer, I would spend the rest of my time working to help augment existing tutorials and examples.
  • PDF/SVG support for p5.js Add PDF and SVG support for p5.js.
  • Python Mode Integration with Processing 3.0 Processing is not a single programming language, but rather, an arts-oriented approach to coding in a variety of languages, including Java, JavaScript, and Python. Unfortunately, its pedagogically valuable Python Mode has been obsolesced by major structural changes to Processing's underlying implementation. I propose to update Python Mode so that it is fully compatible with the new Processing 3.0 codebase and IDE. Following this, I will revise and refresh its error-handling and documentation.
  • Raspberry Pi and armv7hf support Port Processing run on the Raspberry Pi and other ARMv6, ARMv7 devices, such as the BeagleBone Black. Implement an Arduino-like library to allow access to on-board peripherals. Create educational resources to help educators successfully use Processing on the Raspberry Pi in the classroom. Package Processing for upstreaming. (Details in below)
  • Replacing JEditTextArea with RSyntaxTextArea and designing a new REPL Mode This project aims to update the JEditTextArea, currently at the heart of the Editor, with the RSyntaxTextArea and the AutoComplete code completion library, which would together bring several new features to the table, such as code folding, documentation support and parameter assistance, in such a way as to ensure backward compatibility with existing tools and modes. It also aims to complete a new REPL Mode for processing, on which I began work as a warm-up task during GSoC 2014.
  • Sketch - Browser Based IDE for p5.js Sketch is a browser-based IDE for p5.js. Developed in conjunction with p5's new desktop platform, Sketch begins with the set of carefully-designed constraints that inform Processing's IDE, and reimagines these for the web. Sketch will have a strong emphasis on sharing, utilizing Git/GitHub as its version control system. Sketch will be a place for the Processing community to share resources, an entry-point for learning web development, and a vibrant hub spotlighting the best in creative code.