Node.js is 7 years old now. Let’s take a look at how it came to be, how the fork/conflict was great for us, how the Node.js Foundation(what the heck IS the foundation?) is a large collaboration to grow and maintain the health of the project, and how flawed we are in all of these efforts(spoiler alert: it’s how we become better). Let’s talk about how we are fixing it even though other communities look to us as examples, and how every facet of the project has to step up in order to make all of these changes a success.
(It takes a global village to grow a community)
(It takes a global village to grow a community)
Education Community Manager
Node.js is 7 years old now and the Foundation just hit it’s first birthday.We’re going to take a look at how Node came to be, how the fork/conflict was
great for us(trust me!), how the Node.js Foundation(what the heck IS the foundation?) is a large collaboration to grow and maintain the health of the
project, and how flawed we are in all of these efforts(recognizing this is how we become better). I’ll share how we are improving many parts of the project
even though other communities look to us as a model(that’s a thing I learned that is real and very interesting), and how every facet of the project has to
step up in order to make all of these changes a success.
Back when I first started programming, I was enjoying my code community like nothing else. I was in Portland, Oregon. There was a new meetup started every week. People were
chomping at the bit for the latest and greatest technology and happy to share it with others. So when I found a group was starting that I had been keenly interested in starting myself--I
offered support. Well, I emailed and messaged those I knew who were forming the group. No response. Hrm. Message on meetup. No response. After sharing how excited I was to help
out(I had been recommended to do so by a mentor--that a newbie may have a hard time starting a group themselves), I thought I'd have it in the bag. After all, who turns down help?
They did. I attended all the meetups and helped out peripherally. In fact, it took me insisting on there needing to be a familiar face at the weekly hacktime in order to be added allowed
to help. So I was there pretty much every weekend that year except when away at conferences.
full-time. My mentor was encouraging me. “I want to Node! I write JS every day!” The energy was incredible. The attendees were inviting, so friendly.
As I do, I followed up with the organizers about how many great things we had to look forward to as a group, and Ben asked if I'd be interested in helping organize. You mean someone actually wants me to
help? Yes. Yes I will. I ran with it. I helped make sure there were speakers. I attended and announced the meetups. I worked up the courage to give my first conference talk at NodePDX, an annual
to participate in. This was all because BEN ASKED. He asked. Do you know what feels more welcoming to a new programmer than to be asked to help in some capacity? Nothing. That's the answer.
The power of asking for help and making space(or getting barriers out of the way) for those who have the energy and enthusiasm to help, that’s the power of Node.js and its community. That’s the story and
legacy we have to nurture.
all front-end folks who use tooling such as npm(that’s close to 5 million people) https://twitter.com/ag_dubs/status/740292552369152001 which relies on Node.js(and vice-versa). So do
folks who use WordPress(See: “Wordpress runs 4.5% of the entire internet.”)
There are important open source, technological, and community lessons to be learned here. We saw an exciting project that a lot of people had invested their work into on the brink of
real trouble. Two years ago, our global project was down to FOUR Node.js core maintainers. This doesn’t address all of the incredible work that was happening in the community,
keeping the excitement alive in learning Node.js and consuming it, but we only had 4 maintainers to our core code. Let’s take a look at how this played out, and how it was repaired to
make Node.js stronger.
There’s this idea that our ability(or stalled ability) to get things done as individuals working towards a larger goal, such as maintaining and improving the Node.js project, is community
capacity. This is our ability to help promote or sustain the well-being of the community and its components, which includes individuals, informal groups, organizations, social interactions,
and the codebase we all rely on.
What I’d like to introduce next is the tyranny of structurelessness.
A lack of heavy organization and process early on was pretty integral to node.js code and community events happening. Many declared the lack of structure a way to keep contributors
from being bogged down in process and approval. The fallacy here is that lack of organization/structure is not structureless. Implicit structure grew from friendships, accidental elitism,
and good-intentioned defensiveness to protect the quality of the codebase. We couldn’t fool ourselves into thinking that Node.js would continue to grow without having some structure
in place. We started growing heavy by the burden of our own booming project and development slowed to a crawl.
Node.js with Joyent iojs
Node.js during the fork
Then a contributor decided to take a path of least resistance, with the support of some really motivated peers. The fork(dunh dunh dunh)(not really).
January 2015, iojs v1.0 is released
io.js aimed to provide faster and predictable release cycles. It merged in the latest language, API and performance improvements to V8 and updated libuv and other base libraries.
Contributors aimed to continue development of io.js under an "open governance model" as opposed to corporate stewardship.
Around this time, Rod Vagg’s open open source policy paved the way for a much friendlier model to getting contributions merged and becoming a collaborator in open source projects.
Individuals making significant and valuable contributions are given commit-access to a project to contribute as they see fit.
February, the very next month — Joyent, the corporate steward of Node and then owner of the Node.js IP, announces formation of the Node.js Foundation at Node Summit.(that was
quick!) But.... foundation formation is not a quick process. Joyent had been working with the community through the meeting of an advisory board for several months to alleviate
pressure from the community around governance. By March, the Foundation By-law drafts are being circulated. But this is an interesting mix of companies and community. It takes until
May for the io.js Technical Committee to vote to enter the Node.js Foundation and merge with node.js.
In June, we see the official launch of the Node.js Foundation with founding corporate members followed by the Board of Directors being established the next month. The first ever
Node.js Collaborator Summit, joining many of the collaborators(back from the fork) in one place.
The result of these months of tough conversations, diplomacy, and pull requests was the release of Node.js v4.0 in September 2015. The convergence!
Er, What’s the point? What was the power of this convergence? It combined the stability of corporate support with the much more in-the-community technical decisions being made
liberally(freed a bit from processes or the elite few with commit bit, yes?)
In the Node.js project now, thanks in very large part to the fork, the new contributors account for ~50% of all contributors per month. Those growing numbers mean we move towards a
mature project. It means being able to have more people contributing to issues filed long ago and features in roadmaps we’ve only been dreaming of getting accomplished because the
contributors we did have prior were stretched so thin. Here we’re growing a healthy community capacity!
What is Node now?
It’s over 1000 contributors to date.
It’s 27 corporate members and many more individuals.
how to npm
It’s 171 chapters of NodeSchool around the world.
It’s NodeBots, with the countless international nodebots day events that happen annually and the meetups popping
It’s NodeTogether, welcoming a more diverse set of beginners to Node.js in more than 7 international workshops
This is how you contribute
to Node.js Core!
Step 2: make a friend
Step 1: grab some coffee
It’s NodeToDo and Code&Learn, seeing over 40 PRs in one session and teaching folks how to contribute to Node.js
Core for the first time.
It’s the thousands of meetups and conferences happening around the world where people get excited and nerd out
on Node.js. It is parts of the world that many of us aren’t connected to or don’t stay up late/get up early enough to
The Node.js Foundation exists to increase the adoption
of Node.js and increase participation in the Node.js
•Maintaining the health of the core Node.js project
•Fostering and encouraging a healthy Node.js open
•Fostering and encouraging a healthy commercial
ecosystem of training, products and services for
How does this Foundation work, work?
Foundation Mission Statement(directly from the ByLaws)
The Node.js Foundation exists to increase the adoption of Node.js and increase participation in the Node.js project.
This goal is achieved by:
• Maintaining the health of the core Node.js project
• Fostering and encouraging a healthy Node.js open source ecosystem
• Fostering and encouraging a healthy commercial ecosystem of training, products and services for Node.js
How we do that
How the Technical Steering Committee helps with this(refer to that as TSC)
• Answerable to the Board via a Technical Steering Committee (TSC)
• Managed by an Open Governance process, which IS independent of the Board, that empowers individuals and companies invested in the project
• Independently manages execution strategy for “maintaining the health of the core Node.js project"
• Shares responsibility with the Executives for proposing and managing how we foster and encourage a healthy Node.js open source ecosystem,(which requires Board collaboration)
• It is where the technical execution of the Foundation’s activities takes place
• This is the single Technical Team for execution of all technical strategy.
How the Board helps with this(what do Boards DO)
• $$$ Ultimate responsibility for the activities of the Foundation and the expenditure of its funds(So managing money)
• Representation on the board is built of financial donors (member companies), the Technical Team via a seat for a TSC nominee, and the Node.js user community via elected Individual
Member board seats(2 currently)
• Maintain focus on the goal of the Foundation, which is to increase the adoption of Node.js and increase participation in the Node.js project
• Delegates all business execution to the Executives(explain this in a sec), requiring approval of strategy and budget
• Delegates a shared responsibility for the Node.js open source ecosystem to the Technical Team and Executive, requiring approval of strategy
How the execs(Mikeal and I, Marketing, PR, Events) help with this
• We are responsible for the expenditure of Foundation funds in accordance with the broad wishes of the Board and budgetary approval
• Assisted by the Linux Foundation, using shared resources in order to maximise availability and minimise cost
• Paid staff of the Foundation, including, but not limited to, the Community Manager, Education Community Manager and part-time PR, Events, and Marketing resources
• Serves as a resource for the Technical Team as required, including for the use of Foundation funds for technical purposes
• Shares responsibility with the Technical Team for proposing and managing execution strategy for “fostering and encouraging a healthy Node.js open source ecosystem” and requires
Board approval for any such strategy
How the community/ecosystem helps with this Write the packages!
• Contribute to the project
• Demonstrate the new ways to push the boundaries of what it can do
• Teach and learn, to create a more vibrant space of Node devs
• Share the battlehardened lessons that help improve the Node project
And all of this is done by the added parts working together to be greater than the whole.
¡Chispas de colores!
In order to do that, it means we are all collaborating and need to feel the agency and safety to contribute. We have millions of people in the Node.js community who are essentially
unfamiliar coworkers, that we’ll meet in the halls of GitHub, that we’ve had very little if any prior interactions with. We are humans, mind you, and can have very different motivations.
This can add up to an energy tense environment that we must tread thoughtfully in with care and respect.
We as community members drive the values forward of the Node.js project through the ways we interact in person and online. We are a global community with colliding cultures and
belief systems. Ultimately, we’re interacting because we’re all trying to get our jobs or passions accomplished. It’s that simple. But NONE of this is easy.
Be mindful of that the next time you type up a pull request, or a GitHub comment, or a tweet. The care you put into your work is very likely the same passion that someone else had for
Why am I explaining this?
We need help. So much help. It benefits us all. And it’s also awesome to get to celebrate where we are so far.
To say we feel grateful is not to say that everything in our great, it just means we are aware of our blessings.
I get asked a lot about how one can become a contributor.
YOU CAN CONTRIBUTE TO NODE!!!
To join the Node.js organization on GitHub,
folks are added after they've had a PR merged into one of the repos under the Node.js org. You can also be added by participating in one of the many working groups and following
their contribution guidelines. Generally, the participation must be within any of these groups that full under the organization in order to be added. There's been some documentation on
this for various groups here and here as examples, but feel free to let us know if you have any other questions!
The Foundation oversees the health of the project, but all technical actions are overseen by the Technical Steering Committee(TSC) in the repos themselves(meaning we don't have
authority over them and can't grant you that membership ourselves, only answer questions about it).
And just in case you want to figure out what interests you,
LIST THE WG ON A SLIDE and initiatives
Intl(internationalization and localization)
So that user group in Oregon? It’s grown a bit. Those organizers have gone on to work at npm, New Relic, Node.js Foundation, and Apple. Many of our attendees were finally able to
get jobs writing Node.js as part of their dayjobs. This is one story. There are so many more. It’s been repeated across the world over. I’ve sat on conference talk panels where everyone
on it including myself were encouraged early on by participating in NodeBots. We ran our first International NodeBots day PDX with 5 weeks prep and had a 75 person attendance with
arduino kits in every hand and sponsors to boot. We got people excited about hacking hardware with JS in a time where people didn’t know that was possible. We ran countless
NodeSchools, talk nights, and hacknights. People joked about me cat-herding the organizers of PDXNode. It could be stressful. It was always fun. I wouldn't be here if it weren't for Ben
asking for my help. I wouldn’t have this job. If someone hadn’t given me the space to help.
Sometimes I forget who I am. I am not someone who has been programming for 10+ years. I have not been deeply embedded in a coder community since its inception. That doesn’t
mean there’s no value in my contributions or you getting started in participating. I will work on these projects because I'm excited for them and think they should exist. I will execute
them with care and awareness. If they falter? It is surely a lesson learned. If they succeed? Then we'll celebrate together.
I look forward to growing the community that was so welcoming to me. I hope I can provide the same warm
Southern welcome to y’all that Ben afforded to me. It takes a global village to support this community project.