Upgrade to Pro — share decks privately, control downloads, hide ads and more …

new Node.js, who dis?

Tracy Hinds
October 08, 2016

new Node.js, who dis?

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.

Tracy Hinds

October 08, 2016

More Decks by Tracy Hinds

Other Decks in Technology


  1. (It takes a global village to grow a community) new

    Node.js, who dis? Tracy Hinds Node.js Foundation Education Community Manager
  2. JIFASNIF! JavaScript is fun and so Node.js is fun. 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.
  3. 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.
  4. But then! I attended the inaugural PDXNode meetup. Merlyn Albery-Speyer

    and Ben Acker had announced the event to be hosted at Walmart Labs. And I went. I had just started writing JavaScript at work 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 conference in the PNW. I went on to run JavaScript conferences as a hobby while working full time as an engineer. I shared with attendees the fun times we were having and how Node is an awesome space 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. Nothing. 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.
  5. How does Node.js fit into the larger JavaScript landscape? Node.js

    is a platform. It’s a set of APIs for JavaScript to do things that JS was never designed to do. Without having to context switch, it can lower the barrier to learning to write full stack. Why should JavaScripters or other language programmers care if they aren’t currently writing it? Changes in Node.js affect 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.
  6. Core Node.js pre-iojs Ecosystem *probably inaccurate 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.
  7. Node.js with Joyent iojs Core WG WG WG Node.js during

    the fork *probably inaccurate 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.
  8. 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.
  9. 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?
  10. Johnny-five tessel 2 sumobots! It’s NodeBots, with the countless international

    nodebots day events that happen annually and the meetups popping up globally.
  11. It’s NodeTogether, welcoming a more diverse set of beginners to

    Node.js in more than 7 international workshops for 2016.
  12. 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.
  13. 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 collaborate with.
  14. The Node.js Foundation exists to increase the adoption of Node.js

    and increase participation in the Node.js project. •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 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
  15. 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.
  16. 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
  17. 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
  18. 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.
  19. SPRINKLES! Jimmies! ¡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 theirs.
  20. 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).
  21. TRACING WG WEBSITE WG Inclusivity WG Build wg And just

    in case you want to figure out what interests you, LIST THE WG ON A SLIDE and initiatives Website Streams Build Tracing i18n(translation) Evangelism Roadmap Docker Addon API Benchmarking Post-mortem Intl(internationalization and localization) HTTP Documentation Testing Inclusivity
  22. 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.
  23. helado leche AZucar 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.