23 July 2016

Why I'm leaving Pixi.js

3 Years Running

I’ve been working on Pixi.js, a JavaScript 2D renderer, for over 3 years now. In that time I’ve worked a lot of my free time to help build it into the most popular and widely used 2D web renderer.

Over that time I’ve worked with a lot of people. Helped a lot of people ship their project, won awards, sometimes even managing the project solo so Matt could grow his business GoodBoyDigital. I’ve strived to impress a high bar of quality for the code base, and make sure that I read every single one of the 1,758 issues and 980 pull requests. I started every morning by browsing the issue list and forums, commenting and answering every question I can and even fixing bugs when I had the time in between my day job.

Every. Single. Day. Until today.

Things changed

When people started to contribute to the project in earnest I was ecstatic. People passionate about the project contributing to a common goal. This is my dream, that the community would grow to a point where we could all own it as a whole. At first it was great, we were getting contributions all around from people wanting to help build the project or fix that annoying bug in their project.

But it seems like that age has ended. More recently, some others joined the project and it has become more and more toxic. The entitlement for us to drop everything and fix issues in the library, that I should merge PRs regardless of the quality of the code, that it takes too long to merge things, etc. Unfortunately my velocity dropped because I started on a new team in my day job, and my wife is starting a business. All things which take a great deal of my time.

The Toxicity

At first, the toxicity didn’t get to me. I put on a nice face, worked through it all, and kept building an amazing library. Soon though it started getting targeted directly at me, here are a few anonymized comments:

I actually have lazy updateTransform in (redacted), but I think that it will be refactored and merged only next year. I’m having problems merging even easiest things there - @englercj keeps finding even smallest mistakes in my architecture. I cannot merge it before it becomes ideal. … You can close this one, there is no hope

I want to move binaries in other repository anyway, and fighting with @GoodBoyDigital and @englercj about it.

Are you sure you know how JavaScript even works?

Seems like every time I question anything, or challenge assumptions I’m accused of holding up progress. I’m constantly blamed as the reason bugs aren’t fixed, and why features aren’t implemented.

Which is why I’ve decided to leave.

I’m Leaving

Unfortunately, if the community sentiment is that I am the reason things don’t get done. And it seems that there are a few vocal people who like to tell every new contributor on their first contribution how awful I am; I will step aside.

I have other projects to work on, and a different vision for what a rendering engine should be for the future anyway.

I want to thank everyone who worked with me on the project, especially Matt Groves and I wish the best for the future of Pixi.js.

If anyone is interested I’ll be experimenting with a new renderer I’ve code named “Fae”: https://github.com/englercj/fae. It is a pure ES6, WebGL-focused renderer. I also have some other projects I’d be willing to talk about as they get further along.

Thanks again everyone, good luck!