Main

Node.js: The Documentary | An origin story

Back in 2008, most people thought of JavaScript as just a client-side language. But when Google's V8 appeared, young developer Ryan Dahl made the connection between non-blocking servers, V8, and JavaScript. It was by combining these key elements that he was able to create the now hugely popular Node.js. What young Ryan Dahl probably didn't expect was how much forking drama would follow. Join us as we delve into the origins of Node.js, meet some of its earliest contributors and explore the complicated dynamics between corporations using open source technologies and the dedicated community members who fuel their progress. Featuring interviews with Ryan Dahl (creator of Node.js), Isaac Schlueter (creator of npm) and more. Check out the home for untold developer stories around open source, careers and all the other cool stuff developers are doing at cult.honeypot.io. Honeypot is a developer-focused job platform, on a mission to get developers great jobs. Wanna see what we're all about? Visit honeypot.io to find a job you love. To learn more about Honeypot: https://bit.ly/3TH1PEe Follow the cast: Bert Belder: https://twitter.com/piscisaureus Isaac Schlueter: https://twitter.com/izs Mikeal Rogers: https://twitter.com/mikeal Myles Borins: https://twitter.com/MylesBorins Ryan Dahl: https://tinyclouds.org/ Scott Hammond: https://twitter.com/Scott_Hammond Follow us: Twitter: https://twitter.com/honeypotio Facebook: https://www.facebook.com/Honeypotio/ LinkedIn: https://www.linkedin.com/company/honeypotio/ Instagram: https://www.instagram.com/honeypot.cult/ 00:00-04:50 Ryan Dahl and the beginning of Node.js 04:50-09:44 Isaac Schlueter and the creation of npm 09:44-13:10 Node.js getting traction 13:10-14:27 Maintaining projects in 2009 14:27-17:38 Corporate sponsorship and growth 17:38-18:45 Bert Belder's DB migration 18:45-22:37 First phase at Joyent 22:37-25:00 Joyent buying Node.js trademarks 25:00-29:58 Node.js working on Windows, libuv 29:58-34:11 Ryan leaving, Isaac takes over 34:11-36:23 Myles Borins' art project 36:23-39:42 Changes in the team 39:42-49:40 Releases slowing down and Node Forward 49:49-53:32 io.js fork 53:32-59:20 Mending the fork and Foundation 59:20-1:00:40 Afterthoughts 1:00:40-01:02:07 Ryan Dahl and the impact of Node.js 01:02:07-01:02:48 Credits

Honeypot

2 days ago

[Music] Ryan is the creator of Node.js and  Deno and he's a software engineer with a background in mathematics. So, Ryan,  welcome to the stage. [Applause] Hello, uh good morning everyone. Node is quite  old at this point uh maybe 13-14 years old. My original goal with Node was to force  developers to easily build optimal servers by forcing them to only use async IO. This is  really standard these days, essentially any platform is making use of non-blocking  IO, but in 2008, this was not the cas
e. I was a graduate student in math, in Upstate  New York. I was studying for a PhD. Although I like the work of it it's not really  doing anything practical, you know, my professors would say like: "Someday maybe  theoretical physicists might use this work" and it's just like yeah that's that's kind of  not good enough like I don't know I wanted to be be doing something that is more related  to what humans are doing. I dropped out and I moved randomly to South America and found  my way into pro
gramming by way of Craigslist. I was working on like a snowboard marketing  website for some snowboarding company. It's not like the sort of thing that is like  one's life purpose or anything so I pretty quickly moved into more abstract problems,  right, you start at the snowboard website, you realize we should implement this on Ruby on  Rails, you start thinking about Ruby on Rails, why is that slow, maybe we should be implementing  something else. And you know pretty soon you're working on Ngi
nx modules, lower level technology,  and the web stack. So I think I kind of found my place within that. [Music] What brought me to  Germany was a girl named Lisa who also traveled with me to South America. She was my girlfriend,  I met her in Upstate New York. She was there on an exchange program and she had to go back to  Cologne to finish her graduate studies. And me you know not knowing what I'm doing, having  dropped out of grad school, went with her and ended up living in Cologne for 2 yea
rs or so. It  was great because Cologne is cheap, you know, I paid like $400 a month for my room and it provided  kind of a lot of space to be able to think about things and work on different projects and yeah I  think it was a really enjoyable part of my 20s, just kind of sitting in Cologne, thinking about  programming topics. I'm Lars Bak, I'm V8 Tech lead and I'm all the way from Aarhus, Denmark  to present V8. Around the time that Chrome and V8 came out I was thinking about those sort of  pr
oblems: how JavaScript relates to non-blocking servers and you know this new JavaScript runtime  had just come out and so really kind of thinking about the right things at the right time. I  was very excited about building websites but very quickly realized that these websites were  pretty slow. In 2009, like interactive websites and stuff were basically non-existent. There was  different bits of software that could do this in different domains and I was certainly building  on the ideas of other
people but I think Node was the first system to really make this kind  of widely available and accessible to people. [Music] I started working on it in  Cologne. I built the first version there, like basically stopped everything I was doing and worked on it from like February to  October basically fulltime. [Music] Around the time that Node was first  released, I was working at Yahoo and getting kind of frustrated that I  had to be context switching between PHP and JavaScript. PHP on the back-e
nd  JavaScript on the front-end so I thought: it's a programming language, why don't  we just have JavaScript on the server? And there was a handful of people all trying  to kind of make that work. Kevin Dangoor and Kris Kowal and a handful of others started this  Server.js group that were trying to come up with a specification for all these new server side  JS platforms that people were trying to build. Node sort of came out of left field a little  bit in terms of that space. I think Ryan kind
of picked JavaScript not because he was particularly  attached to JavaScript it just was a good fit. I realized that I needed some sort of high level  language if I was you know if I was actually going to get real users using this. And I looked around  and I spent some time with Python and I spent some time with Lua and I spent some time with Haskell  and I think around January of 2009, I was sitting with my friend and I just had this idea like oh  [ __ ] JavaScript! JavaScript like [ __ ]! it w
as like so perfectly clear at that moment that  like oh my God, this is the language. He had a particular kind of IO paradigm that he wanted  to push and JavaScript was kind of this perfect storm of like large community of developers,  there's a lot of really good runtimes for the language and it has no IO paradigms already,  right, if you try to do that in Ruby or Perl or Python or whatever, you know, you're sort of  fighting this uphill battle because all the existing code is using this older
kind of more  synchronous approach to IO. I think it was Node 0.0.2 I first came across and was like oh this is  neat and I tried to build it. It didn't build on my Mac so I was like well this is obviously broken  and not going to become anything so whatever. Matt and I had this idea that we were going to write a  game on server side JS, kind of to see what this stack can do and actually use it for a proper  project. I gave this talk at Yahoo about server side JS. I'd built this little tic-tac-t
oe  multiplayer game with a coworker of mine. So here we go, we've got two different web browsers.  Somebody came up after the tech talk and was like hey have you checked out Node and I was like yeah  I tried it, it didn't really work it seems kind of I don't know seems kind of niche. He was like  well you should give it another try it's actually really cool. So I did I went back and checked it  out. At that point it was like version 0.0.6. It did build on my machine. I played with it and  I was
like oh this is way better, this is the way to do it, like this actually feels much more  like a JavaScript platform. [Music] Slowly but surely there were more and more people that  just kind of appeared and Isaac Schlueter came along and built this npm system, this node  package manager. There was a really small group of people maybe a dozens but not hundreds on  a mailing list and an IRC Channel, you know, people would share things they'd be like hey I  wrote this new library, that's like a c
onnector for such and such database, or it does this or  that thing, parses email addresses, I don't know, whatever, check it out, let me know what you  think. And to use it you have to download it from GitHub and then you need to copy this other  project into this place for its dependency. Then you need to run "make" and then copy this file  over to here here and yada, yada, yada. This is a pain in the ass. I wrote a message to the mailing  list and was like: I think Node needs a package manage
r. Here's kind of what I think it should  look like or how it should work. So that was npm. It started out as essentially a bash script that  I just called from a Node program. There was very little cleverness to it and it copied a lot of  paradigms and a lot of approaches from Yinst, which is the package manager that Yahoo  used internally for development. The thing that Yahoo did was, any developer can publish  whatever they want into the internal registry and you're supposed to just be publis
hing  versions of your packages all the time like when you're in dev mode. And then you kind  of like you move it into production when you ship your application or whatever. I  kind of built npm with that idea in mind of anybody should be able to publish anything,  there's like no barriers to entry there. Mostly because I did not want to be in the loop,  you know, if somebody wanted to publish a package it should just be like yeah you go  do that and I don't want to know about it. Yeah and that'
s been pretty effective since I  think, people people took to it pretty quickly. At that point I kind of had this initial version  that I took to Berlin and showed off at I think the first JSConf EU. Uh I'm going to talk about  Node uh so briefly uh so Node is uh a server side JS platform. Uh it's built on Google's V8.  I'm super nervous in there because I have been preparing for this forever and this was like my  one chance to show people and like really felt a lot of pressure to make sure it w
ent okay. What I  want to make is a non-blocking infrastructure so that you can make very highly concurrent servers  and you don't need to know about it. We're going to abstract all of the difficult non-blocking  event loop, you don't need to know about that, it's just going to be callbacks. You know, I'm  just some random person kind of showing up there, but I was like very prepared with this demo.  I had like been preparing it for weeks in advance and you know everybody's presenting  their toy
projects but I mean this was like a very serious toy project that I was working  on. Now I have a demo for you. I wrote an IRC server in Node. Like a chat server that people in  the audience could connect to and like it's all written in JavaScript. And like in 2009 this  was like a mindblowing sort of development, like oh wow you can build this in JavaScript  and like we're all connecting and chatting with this in real time. Yay! I'm so glad that  demo worked because it was like very you know w
ho knows like the Wi-Fi could have gone  out right, I mean, it's 2009 like things were not working properly. But thankfully  that went really well and that really kind of jump started the Node project right, a lot of  people saw that talk and and got involved in it. [Music] In 2009, I was actually mostly  writing python but also wrote a little bit of JavaScript because I was working at  Mozilla at the time. A friend of mine who ran a conference JSConf had this great talk  about this project Node
.js, he was talking about it a lot and so I was like okay I should  check that out, you know, I write JavaScript, I have a lot of these kinds of problems, I should  go look into it. And I asked on Twitter: hey has anybody written a proxy in this yet? You know  it's like a week old or something like probably not but nobody had actually written an HTTP proxy  in it and that seemed to be like the first thing you would want to really do in it. And I'd spent  like probably about four years working on
a Python proxy that was very as optimized as you can make  a proxy in Python. I was very convinced and still I'm pretty convinced that that's about as fast  as you can get it. And so I was like okay I'll maybe try for a weekend and maybe a few weekends,  it'll be a fun little side project. In like 3 or 4 hours I had a a proxy, it worked pretty well,  I benchmarked it next to my Python proxy and my Python proxy was like not even close. Like it  was just it was just killing it and this was after
the project had been out for a week so you  know where is it going to go from there, what am I even doing spending my time writing Python so  I kind of told everybody at Mozilla, like I'm not not going to write Python anymore I'm going  to write this. And I was employed as a Python programmer so that went over about as well as you  might expect but I was just done wasting my time. Back then there weren't these established channels  for programmers really, like there wasn't Slack, there wasn't Di
scord. GitHub was super primitive.  People would email me patches, I would apply them. There was no continuous integration back then,  I would run the tests manually on all of the operating systems for every patch, like I was the  CI system, which you know these these days just seems ridiculous. But there was no infrastructure  for that. I didn't know Ryan prior to Node. I assumed that he was German because on the IRC  Channel like he mentioned being in Germany you know. It's like Ryan Dahl, lik
e that's a pretty  German-ish sounding name and I had seen him in the IRC Channel speaking in German. I was at the time  trying to kind of beat the drum for this spec that the Common.js group was pushing forward and after  that like this guy comes up to me and was like hi and I was like oh hi and he was like I'm Ryan,  I was like nice to meet you Ryan he's like: Ryan Dahl from Node I'm like oh oh like your English  is really good, he was like well I grew up in San Diego so it should be. [Music]
When I was still in  Cologne, shortly after this JSConf presentation, I got approached by a number of companies that  were like: hey we would like to do something with Node. I flew out to San Francisco and met with  with a couple of them and was basically looking for a way to fund this this project. I mean it  was very clear I should keep working on this, like I knew I was on to something but I could  not continue doing this out of my own pocket, right, I needed somebody to pay for this. And  ye
ah Joyent basically had the best proposition. This is the computer that we founded the Joyent  cloud on. They were building a hosting provider and they would like Node to work on this hosting  provider and you know make it so that they can run Node applications there, and I thought that  was a good use case for Node and and kind of the incentives were correctly aligned. Joyent had been  a hosting company for a pretty long time but most of their kind of marketing and their business  and their off
erings were really targeting more enterprise stuff. They weren't really well known  among the sort of demographic of like hobbyist hackers who were getting involved in Node. I think  people more or less trusted Ryan and they didn't really know who Joyent was and they were just  like cool it's got sponsorship now, like Ryan's gonna keep working on it, that's great. I moved  out to San Francisco and started work with them, you know, basically continuing to work on  Node full-time. I think there wa
s some idea that I would also work on Joyent's software at  the time and I was perfectly fine with that, I was interested in in you know servers and  hosting technology and that sort of stuff, but like I mean by the time I joined like Node was  even more popular and every month that went by, I mean it was just really clear that this  thing was was taking off in a serious way and I ended up not doing anything at  Joyent other than than working on Node. I think Ryan definitely was surprised that 
Node got so popular so fast or maybe not surprised I mean, I think he thought  it was going to be a popular thing, like that was why he chose JavaScript was  so that it would be popular. But at the same time like there's a big difference between..  You can know something rationally and still be surprised by what it's like, right.  And I think Ryan definitely was somewhat surprised by what it's like to run a huge  you know world-renowned open source project. [Music] I was working at a startup whe
re we did  automation for construction companies and yeah there were some complicated computations we  had to do that we would write for the front end, so that we could like people show people quickly  what their total would be, and then for security reasons we would have to replicate that in  the back end and write all that in a different programming language. So yeah I was already  looking for a solution here and you know you're thinking about okay how can I translate JavaScript  to PHP like i
t's like a little bit much to do when you're the only engineer on a big project. We  also needed to do a big database migration and if you write lots of database statements and you  try to do them one by one that would just take forever. In order to get that database migration  done what I did is I took Node.js, did a whole bunch of stuff in parallel, and that actually  allowed us to get it done overnight. And yeah at that point I was hooked, I mean I knew that  was going to be the the future of
programming. [Music] I was considering getting a job  with this company that wanted to do like some Node hosting stuff, so I mentioned  this to Ryan and he was like no no no no no don't do that. Joyent just hired me, they're  making a big bet on Node. Like you belong here, like you should come join this team and work on  Node. And I was like oh that's way better yeah, that's a much better choice. It was like me and  him, we were in some office building in downtown San Francisco. I would come in
and and sit at  my desk and answer emails and merge patches and you know basically did that for for quite a  while. We were doing the same things that we were doing when it was me in my apartment and him in  Germany on an IRC channel but we were in person. Yeah and so that was kind of the first phase  of things at Joyent. Node is changing, okay, it's a living creature and with that comes some  blood, some pain, and your necessity to compile it. In the like 0.0-0.1 kind of versions of Node,  Rya
n was extremely cavalier about just like: well I broke all the Node programs, pushed a  new version and now this you know, all the API changed. He had this plan where you know he would  do an 0.2 release and then 0.3 would be unstable and then 0.4 would be stable and in between these  two releases you could do breaking changes. And he would keep doing these breaking changes until  1.0 and that would be the only time that he wouldn't guarantee a breaking change. The first  time one of these actua
lly lands it's just the rename of a module, renaming sys to util, and  it's an easy enough thing not to break, right, like you could just return that module, it's like  one line somewhere, who cares. But like you know he wanted to rename the module so he's going to  break everybody. People freaked the [ __ ] out, nobody could understand why that opinion was worth  breaking their software. There is different uh uh maturity levels to projects and when things are  young you move fast and you break
things and you just make it the way that it needs to work. The  first npm where you could actually install stuff came out around the same time as node 0.0.8, it  like didn't work on the next release of Node and so they like had to update everything and then  you know there was kind of this back and forth like as we were like seesawing towards getting  stuff to a usable state that a community could actually grow on. What else is there before we  get to something that we want to call 1.0? There's
not a totally laid out road map for 1.0 because  it's in the distant future, we'll focus on 0.6, reworking the plumbing and then revisit that  question. There were certainly periods where Node was starting to have many users and I  would be like: we've made a mistake here, we're going to do this, I'm just going to shut  off the lights for everybody and like you know paint the room and then turn the lights  back on and everybody's like oh [ __ ]. I think it's just kind of at the cusp of one  of t
hese maturity levels where like, you know, things were still being changed in earnest. And  that definitely held back the growth to some extent in those early days but I think it was  actually really the right choice because to be honest I mean once it got really popular things  got a lot harder, like now you had to be much more careful. [Music] A year or so into working  there, Joyent approached me and and was like: hey we want to buy this project from you and of  course it's like okay well was
it even mean to buy it from me. I mean it's an open source project.  But you know essentially they they wanted to manage the project, own the trademark, own the  website and use this to promote their company. We did this deal and I walked away not completely  poor from this so I felt pretty good about it. I think it kind of happened a little bit under the  radar over the course of a couple of years. There was somebody who raised some question on the  Node mailing list like if Joyent acquired No
de like what does this mean for Node and like what  if Joyent turns evil this and that like fear fear fear. And my response was like: what's the big  deal, there's a pattern for this in open source, like the code is MIT licensed. If Joyent turns  evil like all they bought was a name and we can take this code and put a new name on it. Like even  if they're not evil even if they're just annoying. I have a potentially impertinent question, I read  the trademark policy and I was really curious to kn
ow is there going to be some conservancy or is  there going to be some organization that's going to sort of shepherd that out in the future? Um no  I think Joy's going to keep shepherding this and uh pushing it forward. In the end the software  is very very open source and uh so hopefully uh that will prevent any sort of problems. Joyant  hasn't done anything to deserve any ill will, um they've done a great job. I mean just another  thing this is not this is not a conference for a logo right, th
is is a conference about a  piece of software, that's why we're here, that's still MIT licensed and it will be forever.  At the time most of us really brushed it, me included, really brushed it off. Because  one when you're writing the software and they need you to write the software, you're not  worried that they think that they own something we didn't think that the switching cost would  actually get as difficult as it would become. Node at the time only ran on Mac OS and Linux  but me and the
other engineers working in this startup were all using Windows. So you know  we could in theory at least deploy it to our servers but we were not able to develop with it.  I was like oh why why don't I go fix this. That kind of got a life of its own. Now it turned out  that that actually doing that on Windows is very complicated, mostly because the way windows  works is very different from what MacOS and Linux how they approach asynchronous IO. That  seems like maybe a little bit strange nowada
ys because asynchronous IO is everywhere but yeah at  the time it was just not. And so I got involved, I got sort of a first pro protype off the  ground that wasn't very fast or very good, you know. At the time all discussions around this  happened on the mailing list and I went on there and I described more or less how I would approach  it. That's when my first contact with Ryan was established. I think he said like okay well yeah  show that it can be done. Um and so yeah that's how I got into
all this. This was like more than  a year undertaking where we essentially like you know if if Node is a building like we basically  put it onto forklifts like lifted it up, moved it 50m, and then kind of set it down on a new  foundation. It was extremely difficult. Today is not about Node but something that underlies Node,  which is called libuv. Libuv ultimately was Ryan's idea. So like before, Node 0.4. was using another  library called libev. And libev is basically a wrapper around a functio
n called select. And  there's other variants of that, select is very old and it's almost on every operating system but  it's very slow as well, so it's basically unusable if you want to make a runtime that runs stuff  fast and you know is very scalable. But libev was really built around that primitive. So what  I did is kind of like try to um yeah uh fake it, make libev work on Windows anyway and that only  went so far. Then the next step, what I did, is just you know don't use libev, like you k
now  libev was only used on MacOS and Linux but on Windows Node.js would basically have a completely  separate implementation. Ryan didn't like that because it made made the code for Node.js very  complicated, I think that is a very reasonable position. And so his idea was okay let's just  write our own library that is like libev as much as possible but exposes an abstraction that works  for all operating systems. The way we started working on it is basically I took the code that  I had written
for Node.js and I put it on sort of the Windows side of libuv. And he took libev and  wrote some like wrapper around it and that would become sort of the initial version of the Linux  and MacOS version of libev. Once that was done, we had hired some more people like Ben Noordhuis  in particular who said: I can actually do this a lot better and like make it more maintainable  and more efficient. And so then he wrote rewrote that part essentially but yeah it was like Ryan  who took the initiative
and like we worked very closely to get the first design out of the door.  That was a super successful project. These days Node runs fantastic on Windows. I don't think  it's really a accomplishment that is celebrated or even known about that much but it was a massive  undertaking, you know, it's essentially invisible to users. They just use it on Windows right, but  I think that that ultimately has had a lot of effect on the how much people have been able to  utilize it. This wild like knock on
consequence of Node being really good on Windows, because  Bert and Ben made it really good on Windows, is that when StackOverflow became like the  place for everyone to answer every question about programming, a lot of Node questions ended  up on StackOverflow and when the .NET community was starting to think like maybe we shouldn't  use .NET anymore for web backend stuff, they started looking at Node.js and they found that  it was really good on Windows. And so they ended up adopting it and cr
eating this whole community  on StackOverflow that we had no idea about. Like at a certain point I realized that some of the  answers on StackOverflow are kind of wrong and maybe we should take an interest in this, so  I wrote a little bot where every time someone would ask a Node.js question on StackOverflow  it put it into IRC. It floods the channel. Like immediately all the project contributors  are like turn this off, what are you thinking, this is too much stuff. Because they had just  alre
ady created the largest answering community about our software problems and that wouldn't have  happened if it wasn't good on Windows. [Music] For a long time, growing the community meant  making Node itself better. Like fixing bugs and fixing performance and making sure that you  know it compiles on Window, it runs on Windows. Um those were our bottlenecks for a while but  now actually it's running pretty well. Ryan you know basically said: hey like I'm you know  I've been doing this for like o
ver 3 years now, this is the first project I've ever worked on that  lasted more than 6 months, this is not natural for me. I'm over it, like I'm kind of burnt out on  this, also like the money that he was getting from Joyent he had fully invested into. And I  mean at that point I was already kind of like doing our weekly builds and we had a core team  who had commit access and had some kind of like you know designated areas of responsibility. Yeah  and he was like Joyent owns the project, they
want a Joyent employee to be like their you know the  lead developer who's got like you know the final like gatekeeper say on what goes into a release,  you're already doing that job, do you want to just keep doing that job because I'm going to leave.  And I was like oh alright. I think it ultimately just came down to a business decision of, you  know, where should I put my effort. This company has bought it from me, they're going to manage it,  you know, I've explicitly given up control of it,
I've been paid so, you know, it seems to be going  well. I think my my job was done at that point. He basically went off and kind of became a  professional hipster for a while. I moved out here to New York. I didn't have a job  for a long time. I basically went back to my preferred mode of operation, which is hanging  out in Starbucks and programming on projects. I started just sort of being the you know the main  person who was in charge of the Node project. It was a lot more challenging, I mea
n, it was  a much harder job than what I'd been doing. I didn't have the same level of like moral  authority when it came to Node that Ryan did, right. I wasn't its original inventor. Yeah  I had built a couple of really big parts of it but there was also a lot of things that  I didn't understand as well as Ryan had and really had to rely on the rest of the the core  devs on the team. When Ryan left I was like: this is actually kind of perfect because now  you set a precedent that like you work
on the thing that you're into and then you just hand  it off and then we can just have these like and it's just kind of obvious. When he gave it  to Isaac nobody was like why did Isaac get it, like you know he wrote he made npm, that's why  he gets it, like he was doing all of the releases already. But like you know in that transition  and even after for some people just seeing it transition from one Joyent employee to another,  even with Isaac, some of them didn't have the same relationship wit
h the project anymore.  And I think that it just made a lot of stuff more difficult with some of those contributors  and so even while Isaac was running the project, relationships got stretched very thin. Joyent  really had put the word out that like Joyent's the Node company and we're real and Isaac's the  leader of Node and like believe what he says and follow his direction, which was kind of.. I mean  it helped I think from a community point of view to just sort of cement that like Node is st
ill  alive, like don't worry even though Ryan left. But also it had this kind of weird effect of sort of  casting me as like the Joyent guy, you know, like the corporate shill. And I definitely encountered  some like negative perception as a result of that. [Music] I've been using node since 0.6, which  would have been, I want to say either late 2011 or early 2012. I was in art school in Toronto at  the Ontario College of Art and Design. I was doing a lot of like site-based installation work. I
was  particularly interested in building this kind of like large didactic installation. I had this goal  that like people could just walk into the space and open their phone and control the installation.  And I was pretty adamant that I didn't want people to have to go into like a walled garden eco system  and install a native app. And I definitely didn't want to like have to learn Objective C or Java  to like do this one little thing, I wanted to do it with web technologies. I found this protoc
ol  called Open Sound Control, which is heavily used within music software and artist software for kind  of getting different softwares to communicate. And I found a tutorial on how to do it with PHP, that  didn't work, I found a tutorial on how to do it with Python and that didn't work. Then I found a  tutorial on how to do it with Node.js, that also didn't work, but I knew just enough JavaScript  that I was able to debug it and get it to work. And in about like 15 or 20 minutes I had a  protot
ype and I was just like oh my God. That was kind of for me like the wow moment. Like we talk  about like time to wow or time to productivity in product as far as like getting people running  and I think that is one of like the real magics of Node.js. It gives you all of these like really  powerful capabilities that like historically were maybe reserved for like systems programmers or  like you know the people who understood C. But all of a sudden with like a bit of JavaScript I  could like send
network packets across a room. I pushed for you know hiring another Node  developer because it was just too much. I was doing the weekly releases, there was  a constant steady stream of like various marketing legal whatever whatever type of things  that I had to interface with Joyent about and then there was also just running the project. So we  hired TJ Fontaine. Great background, you know, doing a lot of like build tooling type stuff,  which had gotten really ridiculous right. Like the early l
ike scripts to build and deploy Node, Ryan  had used, were really simple right. They just like built a tarball of the code and they uploaded it  somewhere and then you could download it, the end. And then we started doing like pre-built binaries  for different operating systems and stuff and so for that you had to either like cross compile  or have a VM running and just these like these scripts for doing these builds had gotten really  really ludicrous. And so we brought TJ Fontaine in and his f
irst job was like make all of that  just like put it in like Jenkins or something, right, put it in some kind of CI system so  we don't have to touch it. My passion and my motivation was largely spent in open source  projects in my spare time so when I had the opportunity to work at Joyent, I was incredibly  excited by the fact I was going to work full-time on open source. It wasn't just any open source  project it was my new crush Node.js. [Music] I left Joyent not because I was like burnt  out
on Node but because I really needed to go fix npm. In the time that I'd been running the  Node project I was really not doing anything with npm. Like it was coasting along more or less  on autopilot. So I more or less left Joyent kind of in a hurry to go deal with that and  I don't feel great about this, I don't know what I would have done differently or what I  could have done differently but I definitely did just sort of like rush out the door, toss the  keys to TJ, like have fun, don't let N
ode die. He was left without a ton of guidance in terms  of like how to run this project in a way that's effective. I remember talking to folks at Joyent  and saying like I know TJ, he's a nice guy, I don't have any problem with him taking over the  project, but like you really need to message this like it's a project thing and not a Joyent  thing. This person did not become the BDFL because he had shown great vision. He became  the BDFL because he you know already worked at Joyent on Node.js re
lated stuff and so you  know they needed someone. That's a very tough position to be in and not a very effective  choice if you want to steer an open source project in the right direction. Some people left  right away like I mean it was it was like that, they were gone. And then you know TJ is trying  to hold together this project with less people. Who wants to be involved now, right, like  you've been shedding contributors and now it's your company's project that you're  pming like a company pr
oject. Who wants to show up and be your free labor, you know,  so he was put in this impossible position. [Music] Releases kind of ended up slowing down,  there was a bunch of conflicts about like what's going to get in and what's  not. What I had heard from people, at least people's impression, was that Joyent  had built this whole cloud using Node.js, which is extremely impressive for the time at  which they did it, but upgrading certain things like V8 or making changes to certain interfaces 
that perhaps were necessary for the growth of the platform or the needs of the community  potentially broke like this giant cloud that they had built. So there was this huge conflict  where like for them to be good stewards of the platform for themselves was in conflict with  Joyent being stewards for the broader community. So my understanding is they stopped accepting  community contributions, they weren't open to things like updating V8. Node was starting  to show its age, it didn't have the l
anguage features that people wanted to use. Node.js is  a a great thing and I would bet the company on it but I would not bet the company on Joyent. I  see Joyent doing some stuff, which is amateurish, maybe a little childish, um so I I would fork it  and I would then give that back to the community. [Music] I had taken a break from core for a while  and was doing more community stuff. I started to hear from people that there was going to be a  fork and I was like oh okay um I probably know who
would be doing that, maybe I should just  reach out to all the people that like might do that. And what I figured out was that like  there wasn't going to be a fork there was going to be three forks. Because not only were people  kind of like upset with Joyent, they were also not really talking to each other, like a lot of  relationships had just broken apart. And what I decided to do at that time was just you know at  least make it one fork. You had a project that didn't start as corporately st
ewarded, it started  as open source with the BDFL, it got purchased, it got turned into a corporately stewarded project  but that was ambiguous and slowly over time it drifted into the point where the corporation was  driving the road map but that was not aligned with the expectations of the community. So the  community was like okay well like [ __ ] you, right, like we're going to like go do our thing.  I run Node conf, and we use that as an opportunity since so many people are going to be in t
he  Bay Area to have a get together after that conference. And this is you know a collection  of a bunch of contributors that are upset, some of their employers, some of the startups  that literally built their entire business around Node. It's not a group of people that get  along with each other necessarily. Because what happens with the BDFL model is that you have all  these people, who've been putting years into this project and they have to fight with one person to  get all their stuff in a
nd eventually they start fighting with each other too. We were all now  in a group together like solving this problem that we had with Joyent. When we walk away from  that meeting, we have 3 weeks. We set a timer and we say that we're going to have 3 weeks and  all the contributors are going to figure out what we kind of want to see and you can just  tell us if you're willing to do that or not, and we can like have a conversation, move  on from there. But like let's let's set a date that we'll d
o something. So we create  this private repository called Node Forward. Basically every core committer on the project or  core contributor to the project joined this Node Forward group but TJ refused um abstained from it,  or was prohibited by Joyent, I don't know, but he didn't join. The idea there was just to kind of  like have some discussions right because we came to Joyent, we said Node needs open governance and  they said what does that mean and we said good question, we'll get right back,
we'll get back  to you on that let's go figure that out. [Music] We put together this offer that in  hindsight is a dream for Joyent, we would just operate the project under this  governance model and if Joyent ever decided, they could just pull it away and we would have to  you know go home right, like we'd have to just go and create something else or call it something  else at that point. And they just didn't engage, they didn't participate at all um and when  the 3 week mark came up they rem
oved two contributors without talking to anybody  and then they put out a blog post. [Music] So we were like oh okay so they told us to  go [ __ ] ourselves, we're going to go. That week though, they get a new CEO and so everyone  around this is like preparing for us to just go off and fork but now all of the companies and  all of the corporate representation is like: let us try to negotiate with this new  guy, this new guy turns out to be like a totally reasonable guy, like we really  think tha
t we can negotiate with him, and they're not wrong Scott Hammond's a totally  reasonable guy. I knew that there was some angst in the community. The team at Joyent had.. We  talked about that before I came in and I knew that Node was an important project to Joyent and I  knew that Node was a very important project in the whole to the much broader developer community. So  I spent a lot of time when I first got to Joyent, meeting with a lot of the key stakeholders  in the project. He reached out t
o me and like set up a time for us to like chat and  kind of get to know each other. He was just kind of like learning the space. We set up uh  I forget we called it a leadership council or community council or something, where I wanted  to bring in some of the key stakeholders from each of the different facets to really vet  the issues and come to a consensus on what Node should be going forward. So they created  an advisory board, the Joyent Node advisory board, and they were like: we're doing
this to  listen to the community. And then we told them a lot of things that they didn't do and we're like  you're not listening to us. Oh we're definitely listening. We were working on new features but  like this release just you know wasn't being made. It's just dragging on and on and we keep arriving  back at the same things. And the contributors now, they have a governance policy that they  like, they're in a private repository where we now have more people contributing to  it than the proj
ect has ever had consistently, already in private. Essentially what I tried  to do is just um codify a lot of the stuff that we've talked about in terms of governance  and a contribution policy and scope it just to this kind of Node Forward repo. The core devs who  had been working on this right they were like: oh cool like this is a place where I can actually  go and send a bug fix and it will get landed. It's not going to end up in a Node release yet but  like at least I can just get it off my
to-do list whereas all these patches I keep sending  to Joyent Node like they're just sitting there pending forever and they're not happening, so  there was a lot of frustration around that. TJ's not working on this project but the main  code going into even the Node.js project is Fedor and Trevor porting stuff out of this private  repository into the public project so everybody's just getting annoyed with this situation and we  just go let's make it public but let's not like do a big thing abo
ut it. Let's not rub it in  their face, like we want to just like stop with the annoyance of it being private. That leads to  like you know me getting phone calls that are you know insinuating that I'm going to be sued for  trademark infringement. It was something that was called Node, that was clearly competing with  Node, and it was in the same space you know in the same uh market category as Node and so therefore  it's a copyright violation and they would sue over it. And we're like there are
tens of thousands  of forks of Node that are all called Node and they're all in the same space as Node and they're  all different from Node. This is how GitHub works, like this doesn't make any sense and they're like  ahuh cool story we're going to sue. Funny thing about trademark law is if you don't enforce your  trademark rights then you actually don't get to enforce your trademark rights and I told them that  we had full intent to pursue our trademark rights around Node and Node.js. We don't
really want  to like cause a bunch of drama or a big scene about it, what we really want to do is just  prove out that like this contribution model where the contributors have more control over the  project works. I understood why they wanted to do it. In the end, I disagreed with what they were  doing. I was concerned that we were going to lose the big users. The feedback that I was getting  from that community was that this is a disaster, that if Node Forward goes ahead as a separate  group t
hey would have to rethink whether they were willing to make a bet and a commitment on Node  as a platform on a going forward basis for them. So they wanted a healthy singular community,  they didn't want this fractured community, so I was very concerned from that. And that these  were also the organizations that we're going to depend on for providing additional technical  contributions and financial contributions. I flipped it back to private. I'm like you guys  are great, I love you, call me wh
en you wanna fork. And so Fedor replied: okay I forked it,  I called it io.js, it's right here, let's go. We were at some family's house and just had  this like big Thanksgiving dinner. And I start getting pinged by like reporters. And  everybody's like what are you doing like oh my God like how could you do this, like this is  such a like such an underhanded move to do this over a holiday weekend. And I was just like I have  literally no idea what you're talking about. And the reporters were pi
nging me like: would you  like to comment on io.js and I was like io.js who? Uh I've never heard of this thing and then  I go back and I look look at the mailing lists, I look at the like comments that Fedor  had posted on GitHub, and he was just, like Wednesday, he was just like: hey what  do you think about io.js, should we just like rename and then open source it again, and  somebody else was like yeah I don't know, I think that'd be fine. And then like 6 hours go  by, and nobody's responded,
and he was like okay well cool I'm doing it. And then he did.  Thursday, you know, Thanksgiving morning, everybody in the US wakes up and sees that  there's this new io.js thing, that's a fork of Node. From my perspective at the time, it seemed  like Joyent wasn't being a good steward for Node.js and people were pissed and they were  taking destiny into their own hands. And that seemed you know like very reasonable to me, it  was collective action, that was cool. Literally everybody working on
io.js had previously been  working on Node. It was the same team, it was the same people, it was the same codebase. We were  even preferring to just keep calling it Node, our ideal would have been if Joyent were pulling  those changes and implementing those things. Did it seem like a big drama to you? I mean there  was like some debate about it but yeah to us it just seemed like okay well like I guess we'll  take matters into our into our own hands. That's the beauty of Open Source you can fork
things.  Um and I think if you were to talk to people at Joyent at the time, I think they would probably  agree with me. It frustrated me and disappointed me when the when the io.js fork did come out.  I was frustrated, I was pretty pissed off, uh I was disappointed. The community sentiment was  immediate and profound. Everybody was like sweet, Node has stalled, io.js is the  new hotness, I'm on io.js now. [Music] That's kind of the thing that's  interesting about open source, I think. It is tha
t like instability and chaos actually makes  it stronger. On the other hand that instability is really dangerous for companies that are trying  to you know extract value because it becomes very slippery and brittle. And so you know like that  whole thing of like: oh why are you rocking the boat by changing the name and forking it. It's  like well because I don't mind a rocking boat, I'm a dolphin, like it's all good, the more  waves the better. You're the one with the problem because you're the
one in a boat. Um  I don't know if that analogy makes a lot of sense but um... Our first release had you know  a modern V8 engine in it and a bunch of features that everybody's been wanting forever. So we had a  lot to talk about that developers wanted to hear. But Joyent was very upset because, and  I don't think that we appreciated this enough at the time, but this is property  and so it's an asset on their books. And so to them it was always like we had  taken something from them and all we h
ad done from our perspective was like not  do free labor for them. Like actually take the work that we were doing and do it  as a community the way that we want. So this is uh mostly for Scott but what are  your two cents on the io.js fork. Yeah great. First. Yeah great great question uh I thought  they would come earlier. We want to make sure that we have a governance model around the project  that allows for uh a truly uh you community-driven progress around what the road map is and the  techn
ical direction, the technical decision, so making sure that the project is run in  a true consensus model you know and not one that uh represents the special interests of any  organization, not even Joyent. Io.js did end up being this really big shot across the bow as far  as like getting Joyent to realize that what they had in Node was actually at risk right. That  like if they continue to really like dig in their heels and refuse to move and refuse to  budge on on going to a Foundation they we
re going to left be left holding an empty bag.  What are kind of your uh priorities for 2015, what are you guys working on that you're  excited about? We're working with a group of organizations for a foundation for Node.js. We  concluded that for our interest we didn't need to be the steward of Node but we needed Node as a  project to be unified and successful and have very broad adoption, broad contribution. So we  needed a healthy and vibrant Node going forward. The biggest sort of change on
the immediate  horizon is certainly Node going to a foundation, which Joyent announced yesterday. And  you know that's not the end of the road, that's the beginning of a different road, with  tons of work um so a lot of us have been very involved in this. IBM throws James Snell at both  projects and says contribute to both, evaluate the governance models, tell us what you think. So in  January of 2015, I was given two directives by my manager and the first thing that she asked me to  do, was fig
ure out how to help. IBM is a user of Node. The second directive was figure out how to  bring Node and io.js back together. And he comes back and he says well you know io.js has this  you know consensus seeking model and here's the governance policy and here's the release policy  and here's where they're thinking about that and Node doesn't really have a policy or governance  policy or any of this. At that point the Linux Foundation says hey Mikeal uh can you solve this  governance problem for u
s. At that point we can bring it to a vote in io.js and what what could  happen is that we could move the whole io.js org to the Foundation and continue io.js releases  while we're trying to merge and converge to another repository. Then we kind of put it to  the project and we said like hey like what do you think? There were a lot of people that came  out of the woodwork to be like don't do it man. There was a lot of consternation about what Node  Forward was trying to do and what the io.js for
k did, but we took some of those ideas from that  group and folded them into how the project was going to be run going forward. There was a lot  of good thought put into a bunch of that stuff, so why not. Scott had a job to do, he did  it in a way that I think actually ended up being a pretty positive outcome for the Node  community. Are you glad you hit the fork button are you in favor of reconciliation with node?  Uh hm I probably don't have a special opinion as long as we can ship the release
s regularly.  I'm pretty impressed with the activity that we have a Node Foundation and impressed with  the stuff that the guys prepared for us to reconcile. So I'm very optimistic. We never  had some kind of hardcore disagreement with the other project other than governance. So if  we can get our governance and be Node again, we are fully happy. Do we want to go back around  and do the vote thing on this or what? The limited scope of this proposal is something I can agree  with so plus one for
me. Um I'm in favor. Plus one. Plus one. Plus one enough. Plus one for me  as well. So that's plus one all around. Uh okay yeah! We announced it and rolled it out and moved  forward and that's all that's the happy ending. [Music] I mean at the end of the day, essentially  everything that was in io.js is what became Node in the Node Foundation. There was like a little  bit of work that had gone into Node 0.12 that somewhat conflicted with the stuff that was in  io.js version one or two whatever i
t was up to, and so there was like a little bit of technical  work to just sort of figure out how to merge those things back together. But then I think  the next version of Node was like Node 4.0, which was the merger of io.js and Joyent Node.  There was this question of whether this foundation thing would just bring us back to the way things  were before. Where it took two years to get from 0.10 to 0.12. Obviously that is not, that has  not happened. Every io.js release is considered a proper N
ode release at this point. So we were  at io.js 1.0 in January, we also released node 0.12 in January. We had io.js 2.0 in May,  io.js 3.0 in August, Node 4.0 in September, and Node 5.0 in October. During that same period  of time, we launched the foundation, developed a new open governance model, based on what io.js had  pioneered. There's so much [ __ ] drama, right, around like this one especially around like this  one thing in this one period. It really masked the fact that, like the whole t
ime, people were having  a very good time. Like it was actually very fun to work on the software and to build things in the  community. It did spur like definitely a lot of new contributors, like the the core team whatever  grew, but yeah I think like you know and that's something that I learned later in life yeah it's  difficult to set direction also when you have open governance. That's the thing like stories in real  life don't start and end. It's like they start midway and they they don't en
d they keep going.  And you could do a you know a sequel of this documentary talking all about the ins and outs of  the Node Foundation, I'm sure there's plenty of stories to be told there. The most positive part  of this whole story is like, despite any of the challenges, despite any of the personal conflict,  despite any of the like corporate posturing, like Node is still strong. It's still doing major  releases, it's still making significant changes, it's still shifting its culture. I ran the
Node.js  Foundation for a few years and joined a long line of people that played some leadership role in  Node and then left and handed it off the people who are more interested in solving that problem  now and that's what keeps the project alive. [Music] Like all bits of infrastructure it's hard to measure the impact  of these things. But you know this is some bit of machinery that is operating essentially behind  every website right. Almost all websites use Node in in some respect. It might b
e a little  technical or difficult to put your finger on where exactly this is having an impact. Is  it you know when you're on Notion and you make a comment and and it pops up immediately?  And then there's a little dot dot dot when somebody's typing. That's probably going through  Node somewhere so you know it's very diffuse. What is very rewarding is building  something that you know people are using and that is being built on and  hopefully changing the world in some sense. [Music] Thousands
of developers find jobs across Europe  using Honeypot. If you're up for a new challenge in one of these European  cities, sign up at honeypot.io. If you want to see more tech documentaries, then  subscribe so you don't miss the next one. [Music]

Comments

@learnwithtosin461

Honeypot the Netflix of Developers.

@pierreyves.lebrun

I was planning to go watch Dune 2 at the theatre this evening but this has higher priority now :D

@jomoju

30 minutes of history, 20 minutes of corporate drama. This is the best movie ever

@scottcorgan

node.js changed my professional life. will always be thankful

@UliTroyo

I love that Honeypot’s documentaries are so good that everyone wants one about their fondest dev tech.

@palbijewar6070

Node.js gave me a career. No matter what new tech tools I learn, I'll forever be grate full and still amazed about node.js and its capabilities.✨

@Kane0123

I have zero no knowledge or intention of starting to use JavaScript or Node. But only a pleb wouldn’t love the celebration of people coming together to do cool stuff… awesome video

@robertm26

The first time I used Node, I opened a support case with AWS to report that my Lambda function code was not advancing past the callback line. The support guy must have chuckled, but he sent me some links to learn async programming, and I was hooked. Fantastic documentary!

@abhishekdas2512

Node.js has helped me earn my bread, open up a new world of possibilities for me. Thank you Ryan.

@8Trails50

I have a lot to thank for Ryan + all the contributors to Node. When I was studying in college, the main programming language was Java and basically just built toy apps that wouldn't really teach students anything. I wanted to build something for myself and I started learning Node. That learning ended up landing my first job. I am now 7+ years in the industry, but it all started from Node.js

@matsrygaard2127

These honeypot documentaries are truly an amazing contribution to human culture - a part of it that touches so many, but so seldom treated with the love it deserves. A big thank you to the honeypot team from a kitchen in Stockholm!

@NotSoTechie

Node.Js change the history of developers ❤

@MunzirSuliman

Lets have a Rust documentary! 😇😍

@muhammadvidi9082

able to use node made me land my first job ever..forever gratitude towards this software and the history behind it..thankyou so much!

@vectoralphaAI

I LOVED the Ruby on Rails documentary and the React JS Documentary. This is going to be awesome. PLEASE, PLEASE!! make one on Django also one day. I would love to see a documentary on the Django framework.

@ovflowd

As someone part of the Node project.... This has been, a journey exciting to watch and to be part of.

@maddgaming1857

Same here love from India 😢 guies your documentaries always make me feel blessed like this is what I love the raw review from original contributers I feel like the guy who made node and like I love you guys honeypot amazing documentaries which shows the struggle of passionate developers like us who fought for their passion❤

@josemaenzo

I came back from the future and I really love your documentary about Deno.

@GoatNews

Really would love a jQuery Documentary with version 4 going to be released soon ...

@MadalinIgnisca

When can we expect a Go documentary?