2018 Google Summer of Code Grand Wrap-Up Post
This summer was the Processing Foundation’s seventh year participating in Google Summer of Code. As always, it was as productive as it was fun meeting new students and expanding our community. We received an impressive 112 applications, a significant increase from previous years, and were able to offer 16 positions.
For the past few weeks, we’ve been posting long-form articles written by selected students, detailing their work. This article includes summaries of all the projects, with relevant links. The projects this year covered a wide range, from a total overhaul of the Processing Sound library, to help with the public release of the p5.js web editor, to the development of an app to help teachers and students collaborate on STEM education.
Our mentors included longtime contributors to our software, members of our Board, and current fellows and fellowship alumni. Their expertise was essential to GSoC being a success and deepening the connections and sharing of knowledge which is so important to making open source sustainable. The mentors were Alice Chung, Andres Colubri, Casey Reas, Cassie Tarakajian, Daniel Shiffman, Elie Zananiri, Evelyn Masso, Gottfried Haider, Jason Sigal, Jesus Duran, Kate Hollenbach, Lee Tusman, Manindra Moharana, Rupak Das, Saber Khan, Sara Di Bartolomeo, and Stalgia Grigg.
p5 (Python): Cross platform support, image support, and more
Student: Abhik Pal
Mentor: Manindra Moharana
For this year’s Google Summer of Code, we continued our work on a native Python port of p5 from last year. Our main goals were to fix the cross-platform issues and further extend the API coverage. The cross-platform issues were solved by moving the main rendering backend to VisPy. We also extended the API by adding support for a custom Shape class (similar to PShape in Processing), image support, and experimental text support. In addition to working on the actual code, we also revised the documentation and ported over some examples and tutorials from Processing.
Android Debugger: Processing -Android
Student: Manav Jain
Mentors: Andres Colubri and Rupak Das
A Debugger for the Android mode in the Processing Development Environment (PDE) was implemented. To implement the debugger, Java Debug Interface (JDI) was used. Features like putting a breakpoint, Step into, Step over, and Continue in the debugger were Implemented. Now programmers can debug Android applications written in PDE directly from the PDE.
Implementing missing WebGL primitives in p5.js
Student: Adil Rabbani
Mentor: Stalgia Grigg
The project involved implementing missing WebGL primitives: arc, point, bezierVertex, curveVertex, quadraticVertex, and text in p5.js.
PS. text wasn’t implemented by me due to time constraints. It was implemented by another contributor to p5.js, and reviewed afterward by me and my mentors.
Processing Sound 2.0
Student: Kevin Stadler
Mentor: Casey Reas
Kevin Stadler successfully undertook a complete rewrite of Processing’s Sound library. While his fully backwards-compatible re-implementation based on a Java synthesis engine greatly improved Processing Sound support for platforms such as Android and Raspberry Pi, the library’s example sketches also received a complete overhaul, with an eye on making library usage even easier for beginners.
AR Renderer: Processing -Android
Student: Syam Sundar K
Mentors: Andres Colubri & Jesus Duran
An ARcore Renderer was created which focuses on creating Augmented Reality applications using Processing — Android, that will be able to render 3D Objects onto the Real World scene using Processing code in realtime. In addition, some sample applications were created to demonstrate the potential outcome of the library. Currently the Library is in testing stage —it’s merged under the “ar” branch of the Processing-Android Repo and will soon make it to the master branch.
Processing for Pi website and tutorials
Student: Maksim Surguy
Mentor: Gottfried Haider
The result of this project is a website and a set of highly detailed tutorials for working with Processing on Raspberry Pi single board computers. There are two parts of this project that go hand-in-hand:
- Custom Website powered by Hugo static site generator
- Tutorial content with text, images, diagrams, code, and video
The website aims to provide guidance for people that want to use Processing with sensors, buttons, cameras, and other connected devices. It also serves as a platform for future tutorials and contributions.
Student: Jithin KS
Mentor: Saber Khan
The project involved development of a webapp called Dynamic Learning, which is an online platform where STEM teachers and creative coders can collaborate to create lessons that include interactive visualizations created in p5.js. The main goal of this year’s GSoC was to lay down a foundational structure for the app on which future developments could be made and which can be used to obtain feedback from teachers for further improvements.
Development Environment: Beginner/New User Experience Features
Student: Jae Hyun
Mentor: Elie Zananiri
The project involved developing two contributed Tools for New/Beginner users. The Getting Started Tool consists of several frames that give new users a short tour of the PDE, since the current splash page doesn’t contain any information on how to use the PDE. The Reference Tool provides a built-in reference feature and eliminates the need for users to open up a browser to find a Processing Reference. It supports a search function, not only by the reference names but also by descriptions and examples of references that may contain the search text.
A Platform for algorithmic composition on p5.js-sound
Student Name: Chan Jun Shern
Mentor: Jason Sigal
My project this summer had the goal of making p5.js-sound a friendly platform for algorithmic music composition tasks.
In line with this objective, work for the project involved building up features, fixing bugs, adding documentation, and producing examples of p5.js sketches related to algorithmic composition.
To encourage the use of these features and resources we’ve built for algorithmic composition, the project culminates in an online tutorial that walks through a number of examples and best practices for algorithmic composition on p5.js-sound.
Improvements to I/O methods for p5.js
Student: Tanvi Kumar
Mentor: Alice M. Chung
My project this summer revolved around improving the I/O methods of p5.js. Resolving existing issues in I/O, and testing methods and various file types on different browsers was a major part of my work. A system to issue a warning to the user when very large files are loaded was added. I was also able to successfully improve examples, add documentation, and make additions to p5.dom.js.
GLSL Editor for Processing
Student: Izza Tariq
Mentor: Andres Colubri
I developed a code-based (GLSL) shader editing tool for the Processing Development Environment (PDE) that updates the PDE sketch display window in real-time without having to compile the code repeatedly. The tool opens as a separate window consisting of a text editor on the left and a rendered display on the right. Existing shaders are automatically loaded in the editor on startup. Default shaders are loaded if no shader exists in the sketch folder. Shader code is saved to shader files in the sketch folder in real-time as well. Almost all of the goals of the project were met, except for the naming conflict between some of Shdr and PDE’s default shader uniform variables. Due to this issue the tool’s own rendered display does not get updated.
Student: Liang Tang
Mentor: Cassie Tarakajian
My project for this summer was to integrate a new console to p5.js web editor. The two main tasks that I focused on were:
- Improve the original console in p5.js web editor. I implemented the following features to the console:
a) Folding/unfolding of console logged objects,
b) Repeated console logs are not duplicated (but displayed with a number displaying times logged),
c) Support the presentation of different data formats;
2. Make the console interactive.
Improvements to WebGL mode in p5.js
Student Name: Aidan Nelson
Mentor: Kate Hollenbach
This summer, I worked with my mentor to implement a number of ease-of-use improvements to p5.js’ WebGL (3D) mode. These changes aimed to allow a beginner coder to visualize and understand 3D space. Specifically, it is now possible to turn on a “debugMode” that helps orient users in space. There are more options for controlling the camera view interactively with the mouse (orbitControl), and camera functionality has been reorganized into an object with an expanded API. I hope this helps beginner coders feel more comfortable working in 3D with p5.js!
Student: Elgin-Skye McLaren
Mentor: Evelyn Masso
For my GSOC project, I created a new interactive hello.p5js video trailer and website to welcome new users to the p5 community. I wrote the script and gathered video content and sketches from community volunteers. I built the new website using tools including NodeJS, Browserify, and Plyr. The site features multilingual captions, interactive sketches, and adapts to different screen sizes/devices. I’m currently working with my mentor to launch the revised site.
APDE Beta Push
Student: William Smith
Mentor: Sara Di Bartolomeo
APDE (Android Processing Development Environment) is a fully functional IDE for creating Processing sketches on Android devices, but was in need of improvements to keep it up-to-date with the desktop version of Processing and to improve its accessibility to new users.
Test strategy for maintaining and updating mobile
functionality of p5.js
Student: Sithe Ncube
Mentor: Lee Tusman
The main goal of the project was to design a test strategy and extensively test and update the p5.js mobile functionality so that compatibility issues can be tracked easily with updates to the library and mobile platforms. A lot of the project involved performing visual tests on various devices both real and virtual.
Part of this project included a testing event in the form of a creative coding workshop in Port Elizabeth, South Africa, that will allow users to learn and test the mobile functionality of p5.js, as well as possibly catch further issues on unfamiliar devices.