What project or projects do you maintain and what was your motivation for creating those projects and releasing them as open source software?
Until recently, the biggest two projects my time went to was BabelJS and React Native. I didn’t create those projects, however, I joined them shortly after conception. The main motivation has been – like most other projects I work on – is to improve the developer experience and make programming accessible. BabelJS does that by providing a toolset for building language tooling like compilers, minifiers, code analyzers etc. And React Native does that by taking something that is notoriously hard to start with – namely, mobile development – and making it as easy as opening up index.html and hacking on HTML and JS code.
How has the project evolved since you first got involved or first released it?
BabelJS evolved from solving a very specific problem – namely compiling ES6 to ES5 – to a more general tool that allows us to solve a class of problems – namely, language tooling.
React Native continued to evolve the developer experience and added more platforms and more functionality along the way. Also, what is really exciting is what the community has built around the core project. You have startups like ExponentJS and Deco building tools that make React Native development even easier and more effective. And projects like Microsoft’s Code Push bring continues deployment to mobile.
How do you spend your time on those projects? (i.e. Developing, managing the community, triaging issues, etc.)
Most of my time spent in fixing issues, debugging and writing coded, and occasionally thinking and planning for future versions of the software. And I’m not much of community person myself, there are people who do it much better than I do.
How would you describe the community around projects you participate in? What are your favorite and least favorite aspects?
When I deal with support and triaging issues I get super frustrated. People often treat OSS developers as if they’re treating waiters that messed up their order – with such entitlement. However, I often find a handful of passionate people that I enjoy working with and it’s amazing how fast can things move when you have the right kind of team.
What keeps you involved in those projects? Do you have long-term plans for maintaining your involvement?
Building a startup is all time-consuming. I don’t see myself going back to OSS for sometime. What kept me involved in the past is finding a job that aligns my and my employers interests with the open source projects and also maintaining a utilitarian view of the work that I’m doing. I find the idealist view – e.g. “I do it just because I’m passionate and I want to help people” – to be unsustainable. I wrote similar thoughts in a post entitled The Stoic of Open Source.
What is the most important thing someone submitting an issue or patch should know?
Include as much information as you can reasonably think is needed to triage the issue but not more. Being either long winded or short on information means that you’re waisting the maintainers time.
What’s your development environment right now?
- Computer: Macbook
- Editor: Emacs
- Stack: Node, React/Redux, Golang
What was your first development environment? Do you miss anything from it?
VB6. I miss the ready-made environment ready for creation. There is so much setting up that you need to do these days before getting started. When I was responsible for the React Native packager/cli I tried to make as much decisions for the user as possible (while also making it possible to change the defaults). Now things like Create React App does a good job at that too.
Where do you see the open source software community headed?
I think the JS OSS community continues to build amazing things. I compare how much custom infrastructure and tooling I had to write when I started at my first startup (employee #1 at Codeacdemy in 2011) vs how we hit the ground running with Repl.it and already released our first major product a few months after incorporating.
That being said, I wish more successful startups exist in the B2D space. Open source is great for a lot of things, but it lacks when it comes to the developer experience (DX). It goes back to the Cathedral vs Bazar issue (top down vs bottom down design) but I think it doesn’t have to be so black and white. I think there exists a middle ground where you have pockets of the Bazar that are custom designed to provide a perfect DX.