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
Tweet

More Decks by Tracy Hinds

Other Decks in Technology

Transcript

  1. (It takes a global village to grow a community)
    new Node.js,
    who dis?

    View Slide

  2. (It takes a global village to grow a community)
    new Node.js,
    who dis?
    Tracy Hinds
    Node.js Foundation
    Education Community Manager

    View Slide

  3. 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.

    View Slide

  4. 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.

    View Slide

  5. 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.

    View Slide

  6. 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.

    View Slide

  7. 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.

    View Slide

  8. 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.

    View Slide

  9. 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.

    View Slide

  10. 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?

    View Slide

  11. It’s over 1000 contributors to date.

    View Slide

  12. GoDaddy
    IBM
    PayPal
    RedHat
    Joyent
    It’s 27 corporate members and many more individuals.

    View Slide

  13. learnyounode
    Stream-adventure
    how to npm
    It’s 171 chapters of NodeSchool around the world.

    View Slide

  14. Johnny-five
    tessel 2
    sumobots!
    It’s NodeBots, with the countless international nodebots day events that happen annually and the meetups popping
    up globally.

    View Slide

  15. It’s NodeTogether, welcoming a more diverse set of beginners to Node.js in more than 7 international workshops
    for 2016.

    View Slide

  16. 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.

    View Slide

  17. 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.

    View Slide

  18. 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

    View Slide

  19. TSC
    Node.js Foundation
    Board
    Ecosystem
    Exec
    s
    Linux Foundation
    *probably inaccurate
    CTC
    WG
    WG
    WG
    WG
    WG
    How we do that

    View Slide

  20. 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.

    View Slide

  21. 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

    View Slide

  22. 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

    View Slide

  23. 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.

    View Slide

  24. 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.

    View Slide

  25. 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).

    View Slide

  26. 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

    View Slide

  27. 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.

    View Slide

  28. 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.

    View Slide

  29. MUCHAS GRACIAS!

    View Slide