What Does “Open Source” Even Mean?

p5.js edition

This interview is part of an ongoing investigation into what open source even is. My previous interview with Mozilla engineer Eitan Isaacson covered the open source origin story and the politics of patents.

This time, I talk with Lauren McCarthy, creator of p5.js — an open source Javascript library for artists and designers — about the affordances of open source for building community. She’s an artist based in Los Angeles and Brooklyn, and Assistant Professor at UCLA Design Media Arts.

Jen: You’re an artist and you wrote p5.js. How did you end up there?

Lauren: Yeah, how did I end up there? After grad school, I started thinking about all the tools I use as an artist who works with software. I was wondering if there was some way I could give back, but it was really hard to figure out how to get involved with projects. A lot of times, the communities felt closed or like everyone knew each other. It was frustrating because there was this growing awareness in the software world of, “Oh, we might want some diversity here. We don’t want this to be a place where women and people of color feel like there’s no one like them.” And I’m thinking: “How can you say that when here I am, I’m a woman, and nobody will throw me a bone?” Not that I’m so great, but just that there need to be inroads.

I knew Casey Reas from grad school and was talking about this with him, and he proposed that I work on Processing [an open source coding sketchbook for artists]. He was like, “What? You wanna work on open source? Okay, yeah, we got a project!”

When I really didn’t know what I was doing, it was just: do something that is more than nothing. And then do something more. And it just kept growing.

The Processing Foundation was just launching their fellowship program and it was still really undefined, but they knew they wanted to involve other people for a set period of time to work on something specific. I was just getting into Javascript at the time, and they asked if I wanted to think about what Processing would look like in Javascript. To be honest, I didn’t really have any idea what they were talking about. I remember a call with Ben [Fry] and Casey and Dan [Shiffman] where I was trying to take notes and, at the end of it, I realized: uh, I don’t understand the assignment.

But it just sort of developed from there. Casey was really good at making deadlines, which, when you have a really big project, can be useful. When I really didn’t know what I was doing, it was just: do something that is more than nothing. And then do something more. And it just kept growing.

We started teaching it at RISD [Rhode Island School of Design] in 2013, which was way before it was ready. But Processing had a long history of that. They would have a workshop scheduled and a lot of development would have to happen in advance of teaching. It was: “We’re teaching tomorrow; we really need to get this part working. Loops are working, but the next lesson is on Text so we have to get that working.”

It was really similar when we started teaching p5 at RISD, and it’s still like that when you’re teaching at ITP [Interactive Telecommunications Program]. That’s unique; a lot of software projects are not like that.They get really tested and ready and feature-complete and only then are they put out in the world.

p5.js illustration of flocking from https://p5js.org/examples/simulate-flocking.html

J: The phrase “open source” is everywhere now. Can you tell me more about your sense of the phrase back then? And whether it’s shifted as p5 has become a larger project?

L: My first thinking about the phrase “open source” was when I was a grad student. I’d heard it before, and it was sort of buzzy. I was doing this project where people could use a wiki to script parts of my life. When I talked about the project I would say: “I’m open sourcing my life.”

At some point Casey said to me, “I think you should be careful in using that phrase. I don’t think you’re open sourcing your life; maybe you’re crowd-sourcing your life or opening your life.” So it was by chance that I ended up researching open source. And even then, what I learned was the Wikipedia definition. I understood technically how it worked, but not what it might mean to me.

I became more interested in it a few years later when I started using openFrameworks a lot and getting to know some of that community — not just how open source projects work, but how they work in the creative coding space or when there are artists involved.

My work with p5 had to be open source from the beginning because Processing is open source. I didn’t even really think about what that meant and, for a while, it didn’t matter; p5 was just me working on a repo on GitHub. Then, at some point, I connected with Evelyn Eastmond, and the two of us were working on this project, and a few other people started giving input or adding code. That was maybe my first firsthand experience of open source. I mean, open source doesn’t necessarily mean there are going to be contributions back — it just means the code is open and people can do what they want with it and different licenses have different restrictions. But a lot of times with open source projects, people take the code, modify it, and then feel inspired to contribute that back. So that was my first time getting to see that happen, which was cool.

J: I’m thinking about some of the p5 meetings I’ve been to and my own process of getting involved with the project. I knew pretty much nothing when I started, which makes me wonder what that on-boarding process is like on your end.

How do you have the capacity to grow the p5 contributor base? Even though you want everyone to feel like they can and should contribute, how do you actually build people’s skills and a community? I think p5 does that and it’s incredible to experience, but I don’t really know how it happens.

L: A lot of it came from watching myself have to do this. When I started making this toolkit, I had just read my first book on Javascript, so when I wanted to implement things, I had to look up how to do it, try something, and revise later as necessary. I also had never worked on a project this big before.

There’s just this spirit of teaching, of no question is too dumb or too inconvenient for someone to answer.

I remember when I was working with Evelyn, she was part of this web consultancy called Bocoup in Boston. At one point, she said the people there were willing to spend a day helping us, so we went in showed our code to one of the people there. He looked through it and made some suggestions like: don’t put all 10,000 lines of code in one file; it’s much more manageable to break your code into multiple files and then build them together; decide between using tabs or spaces. And he introduced us to some tools for making projects of that scale.

Looking back, I think about what that code must have looked like to a pro. But I didn’t know enough to know that I should feel embarrassed, and he didn’t make me feel that way at all. Having those moments of other people showing me something and giving me space to learn was powerful. And then I would go research, you know, how do you use Grunt? How do you decide how to separate things?

And we had this contributor’s conference at Carnegie Mellon. Up to that point, I’d been saying, “Yeah, anyone can be involved, you don’t have to have a lot of coding expertise, this is really important to me.” We had people sign up to come and that’s when I was really wondering: is this true, what I’ve been saying? There are gonna be 40 people who show up, and it’s not like I can sit with each of them, one at a time.

But people came together, and it just sort of worked. As soon as one person got it, they could teach their neighbor. We had some rules specifically for that week like: you can listen to music, but everyone should be open to just stopping what they’re doing at any point if someone has a question. And usually this is not the most efficient way to work, but for this week, this is how it’ll work because the most important thing is to get everyone on board here.

So there’s just this spirit of teaching, of no question is too dumb or too inconvenient for someone to answer.

J: I was just looking at the p5 Community Statement and part of it says: “We are not code snobs, we insist on actively engaging with requests for feedback regardless of their complexity, we welcome newcomers and prioritize the education of others.”

L: Yeah, for me, this community aspect, this really trying to have inclusivity and accessibility and diversity as core values has been a foundational piece of it. I wanna see, if instead of just talking about this and how we wish this were true, what happens if we actually try it. Is it possible? Can it be a viable example or model? I’ve been trying to lead with that.

The community statement came out of the contributor’s conference, actually, and it was kind of interesting because the idea was that we were there to work on p5. For a lot of people that meant writing code, but for some people it meant doing other things. We tried to make sure all the different ways of contributing were equally valued and were given space or resources for what they needed.

I wanna see, if instead of just talking about this and how we wish this were true, what happens if we actually try it. Is it possible? Can it be a viable example or model?

One of the things we did is we started with a panel on diversity and open source and the arts. We did this the first night, before anything really, which was — you know, there were so many things we could have done: we could have gone over a checklist of all the code that needed to get written. I think it was surprising for some people, especially people that were expecting to have more of a hacker, heads-down event. But it set a good tone. The second day, we split up into groups and were working on different things, but we had one moment where we made everyone put their computers down and come together to brainstorm ideas for this community statement and code of conduct. To say: there’s not just one specific group that’s drafting this, and they do it, and the rest of us code; actually, everyone needs to stop and be a part of this for a second.

J: Even if there was — not resistance, but surprised-ness from more traditional — I don’t even know if that’s the right word — more “coder” people — were they receptive? Was there tension? How did you think that process was perceived?

L: There wasn’t tension. I think everyone who came was already such a down person, but there was some questioning from people — mostly people who had longer backgrounds in the space. It just felt unexpected or new to them.

Professor Golan Levin, who hosted the event, asked me good questions that pushed me to think about why I was making the decisions I was. One of the things we discussed was whether to call this a ‘code sprint’. I said, “Yeah, it’s going to be intense and people will work hard, but…” I Googled the phrase “code sprint” and saw the results. It’s all these white guys with headphones in.

Google Image results for “code sprint”

I was like, “See, this is not the space I’m going for. I want intensity and hard work, but some of these words and phrases already have associations.” Instead, we called it a “contributor’s conference”.

So it wasn’t pushback I got from anyone as much as: “Oh, this feels different.” Which made sense. I thought it should feel kind of different.

J: My last question has to do with the sustainability of open source projects. A few months ago, you tweeted, “How do you make a volunteer based open source project sustainable? Is it even possible?”

What have you found?

L: Well, I got a lot of good responses like: “Yes, it’s possible, just don’t have a social life” or “I’ll let you know when I’m done crying in the corner.” It’s a really big challenge and I don’t really know what the answer is, but I would like to find one.

You know, you were mentioning in your previous interview this slightly jaded view that goes: “Oh, we thought open source software would save us and now this is the backbone of all these capitalist corporations who are running the servers underneath!” I’d say that happens, to some extent, because that’s a way to make the open source model sustainable. You have companies with income and they are able to pay to support the underlying infrastructure.

If you don’t want to do that, you rely a lot on the energy of the people involved and how you make that happen. I’ve seen a lot of projects where, at some point, people run out of energy or they want to focus on something else and the project fizzles out or becomes something different. I’m really interested in finding a model that works. Kyle McDonald, who was the former community manager of openFrameworks, suggested one idea that I’ve really liked: having more of a rotating person in charge, like a term of service…

J: A different kind of ‘term of service’ though, right? 😏

L: Ha, right. And “service” also sounds not quite right. The ideal would be something where it feels really special to get to lead a project for a few years and then pick the next person that can take over. That would be one model where the energy can stay fresh and people could bring new ideas to it.

That’s one reason the Processing Foundation exists. Processing has been around for something like 15 years now? Which is just awe-inspiring, and I can’t even wrap my head around it. But a few years ago I think they were really having a lot of these questions, and they made the Foundation as a structure toward making the work sustainable and to create space to explore new possibilities for it. This structure has also allowed us to have fellowships and speaker event and do other initiatives that support social justice oriented goals.

Another step we’re trying in January is a membership program, which is where either an individual or a studio or an educational institution could purchase a membership, which is basically a donation for a year. There are no “members-only benefits” but you get the sense of knowing that you are an even more integral part of these projects that we’re doing.

Sustainability means not just preserving the sanity of the people in charge, but also extending the opportunity to work on the project

The hope is to set up a system where people say, “I value that thing. I’m going to make an annual donation,” and targeting, not so much the students who are just learning the tool, but maybe people who start to value it after a few years, like schools that are using it as a core part of their curriculum. ITP is kind of a special case because they put so much energy into development themselves, but there are places where it’s just software they get that they like to use, whereas they’re paying a lot to companies like Adobe for proprietary software, which is way more limiting in some ways.

The other piece is that this kind of open source depends on volunteer contributions and people’s energy, which means that, economically, anyone who can’t afford to just volunteer free time can’t even be a part of it. That’s automatically cutting out a section of people who could be involved in the design and development of the tools.

For me, sustainability means not just preserving the sanity of the people in charge, but also extending the opportunity to work on it to people who would love to be part of the project if we could provide a means of access.


This interview has been edited for length and clarity.