Making p5.js
They want us to think technology is a black box. Accept the terms of service. You can’t know what’s inside. You can’t modify it. You certainly can’t make your own.
We didn’t believe it so we made p5.js. Making p5.js meant starting with deep uncertainty and many questions. Becoming comfortable with not knowing, with making mistakes, with always being in a process of learning. Following each question until it led us to many more.
How do you get started with something new when you’re scared?
How do we ask for help?
How do we think about making a tool?
Which users do we prioritize?
What assumptions are we making about them?
How do we organize our code?
Can we value every type and size of contribution?
When do we trade performance of our tool for legibility of the source code?
How do we elevate the role of documentation?
How can we teach people to use the tool?
Which language are they speaking?
Which words are we choosing to use?
How do we make decisions with a large group of people?
Can we make space for many different people to lead?
How do we acknowledge the endless amount of emotional labor required?
How do we support each other?
We were artists, designers, coders, writers, organizers, teachers, students, beginners. We were contributors. We could see that our open-source project had so many more needs than just code. We needed people to write tutorials and documentation and website text. To answer questions on the forum and respond to issues on GitHub and answer emails. To create curricula and examples and livestreams. To reinterpret the project in other languages and cultural contexts. To test and build out web accessibility for disabled users. To work with local communities to organize workshops, meetups, exhibitions, community spaces, community days. To share code and ideas through their artwork. To organize contributor conferences and draft the p5.js community statement. To work through conflicts and different opinions. We needed people who could recognize the time this work requires, and the need to pause sometimes.
No tool is neutral, each is built with the beliefs and biases of its creators. We were making a tool for creative expression, so it felt especially urgent to have a wide diversity of perspectives contributing to its making. We were constantly thinking about community, and the barriers to entry. How do we welcome someone? How do we keep updating our understanding of access?
Who is being cut out by the “getting started” tutorial that’s too confusing, by the tone of communication online, by the use of English language, by the lack of a computer or internet connection, by not seeing people that look like them hold roles in this community, by content that is inaccessible to disabled people, by not having the financial means to volunteer time?
We felt the uncomfortable contradictions of trying to make this project within a capitalist framework as we dealt with the realities of a lack of time and resources. We got things wrong and got hurt and got burnt out. We reminded ourselves: It’s always an option to throw our laptops into the ocean and bow out, but we have chosen not to. Making with p5.js was believing you could make things with other people. We could keep trying, iterating. We were building on decades of trying and learning from teachers in other communities. Processing, School for Poetic Computation, openFrameworks, Design By Numbers, Arduino, Wiring, three.js, POWRPLNT, Afrotectopia, PyLadies, Design Justice Network, and many others.
But we also wanted this to be a project where you could bow out. As much as we prioritized making it easy to enter the project, we wanted it to be just as easy to exit. To open space for others, and open space for yourself to do new things. To be a part of the community even after you’ve signed off.
We began rotating the project lead. We held an open call process where we asked how this position could support learning for the lead as well as the community. Could the community provide collective mentorship? Moira took over, and then passed it on to evelyn and Qianqian. They have each brought new questions to p5.js, stewarding it on a path forward from the 1.0 release that explicitly centers access in every new feature.
Through the years working on p5.js, I realized I am much more comfortable writing we instead of I. Because every part of this project feels like something I learned from someone else. A million little gifts from different people merged into a library and a community. Yet there were also moments where I felt alone and unsure, and I know many others felt this, too. p5 is remembering you have other people you can ask to work through the questions with you. We set our own terms. p5 is everything we learn from each other when we make ourselves open.
— Lauren Lee McCarthy