 Hi everyone, my name is Liz Fardy, I work as developer relations here at NodeSRS. Hey y'all, I'm Adrienne Estrada, I am the VP of Engineering at NodeSRS. And today we're going to talk about behind the scenes of NodeSRS Node.js distributions. The agenda for today, we're going to talk about an introduction then a little bit of history of how NodeSRS got involved in this project, the process of how a new release is created in the Node.js site and also in the NodeSRS site, the nuts and bolts involved and some of the technology used to support this project, some very interesting facts, some recent research supports and traffic picks when there is a new release and how you can get involved and conclusions at the end. NodeSRS Node.js binary distributions maintains the availability and allows the usage of Node.js in the entire Linux community. If you're installing Node.js in production in a Linux platform, there is a big chance that you're using NodeSRS Node.js binary distribution. A binary distribution is a software package containing executable binaries or programs that are ready to be executed. In this case, it will be Node and NPM compiled executables. But now you will be wondering why is this important? Well, NodeSRS Node.js binary distributions was downloaded over 50 million times worldwide last year. There is 50 million times people have been able to use, learn, interact with Node.js thanks to this project. Just last month, it was downloaded seven million times and basically millions of applications and web pages are using it. Because of its availability, it has proven over the years to be the best source of installation and extensive use of Node.js packages in Linux, allowing the expansion of its use in the market. Okay, so you may be wondering what kind of distributions are supported. So right now we have these slides, as you can see. We support major Debian, Wound 2 Red Hat centers of federal releases, and many different distributions based on those. As you can see, you know, the list can't go really, really long, but we are always trying to add more there. We are going to see later in the talk how we, you know, how this process works. Also, if you are using code as infrastructure, the major recipes or formulas or plugins that includes, you know, Node.js installation usually work using Node.js, Node.js binary distributions. So you are using these Ansible, Chef, Perpetual, Sol, you are already using Node.js, Node.js binary distributions. EPU Linux is recommended that you use Node.js installer. That's what the NPM documentation says. Also what the Node.js official documentation says. So it's proven to be the best source of installing these packages. Okay, let's talk a little bit about the history of this project, how Node.js actually got involved. So here are some important milestones for a project. Everything started with Grizzly. He was actually supporting a PPA for Wound 2, 2014. He was the main source of Node.js for Wound 2, and basically he joined forces with Node.js in 2014 to create this project. So initially, we started supporting Debian and Wound 2 in Node.js 12, 0.12, I mean. And we were also supporting 0.10, really early version. And a couple of months later, we started supporting Red Hat Enterprise Linux, CentOS, Fedora, Oracle Linux and Amazon Linux, which is Linux Enterprise distributions. Later, we created a script to make the process to install easier, because you have to manually add the PPA, now everything is automated. And later, when I.O.J.S. was born, we immediately started supporting and supporting the fork that lead to create the foundation. And later, we did the same with every LTS and stable releases that Node.js project has been releasing. And in 2018, we started delivering Node.js in snap packages, which is a competitive format with multiple Linux distributions that you can use. And since then, we have been expanding support for many compatible Linux distributions. Now, let's talk about the process of how a new release is created. There are two processing balls when releasing a new version of Node. First comes from the Node project itself and the second one from the Node.js distribution for the Linux operating system. So, it's useful to understand how the release lines work. All the releases are scheduled and planned in advance. There are three stages on a version of Node, the current, LTS, and the end of life. Current is the most recent Node.js release line. In the graph, it's colored in green, as we can see here. And this phase lasts for six months from April to October. LTS is an acronym for long-term support and is applied to release lines that will be supported and maintained by the Node.js project for an extensive period of time. LTS divides into active and maintaining. Active is the blue, as we can see here. And maintaining is the gray. Active is the one that lasts for 18 months. And maintenance is a release line that is the end of life. The end of life are versions that are not going to longer be maintained and will not be patched with systems or bots or any non-security vulnerability. When a version breach at end of life is very advisable to upgrade. The whole process lasts for three years. Also, there is three types of releases. The major release that are for incompatible APA changes from version to version. Major release can also include changes that will normally be included, minor or patched release. Then we have minor release. There is include backwards, compatible functionality changes. And the patch release include non-breaking bug fixes and security patches. So every new LTE is a major release. This is the process for the Node project style. Now agent will explain how the release happens if you know to a size. Okay. So let's really understand how Node.js version is created, right? So every time a new version is released, so everything starts from Node.js lack. So we already have an integration that notifies us in the special channel that is a new version available. So that means we have to get to work and during the new version. For that, we have some automation in place that makes our life easier, right? So we have a bot, our infrastructure bot is called control tower. It's something we use internally for all everything in our infrastructure. So control tower allows us to run a single comment to generate the new version. So that will communicate with pipeline with different pipelines that we have in AWS called pipeline. And that will use AWS called build to actually do the building of the package and all the packaging, right? It would generate all the different binaries we need to, all the different packages that we need to distribute, Debian, RPM, and other formats. And then after build those, it will push to Amazon history bucket. From there, we have a CDN that will serve for, you know, all these packages for everybody in the world. So that's who it works actually. It's a semi automated process with a lot of automation involved. Okay, now let's see some very interesting statistics involved in this project. The total downloads of the binary distributions last year, 2019, was over 50 million times. And the total downloads from this year from January to May is 27 million. This graph is the download by month in terabyte. One terabyte is equal to 1024 gigabytes. In January that last year, it was the 44 terabytes of binary distributions. There is a lot of data. There is a very clear rise in Tennessee of downloads. And this year, the downloads are even greater. In just one year, the increase was about 85% of downloads. And in April, as we can see here, it hit the peak of 100 terabytes downloads. Again, this is like a lot of data. And we expect this number to keep increasing in the future as the node project itself expands. Okay, now we are going to analyze the numbers by version. So this is very important. Let's take a look. This was 2019, right? So as you can see, there is people still already getting really old versions, like zero point something, and before, right? Same as B6, which was deprecated, obviously. And carbon was still in place last year. A lot of people, most people actually is getting that version. Then we have 9 and 10. 10 is pretty good, stronger. And a few people, this actually is 11, 12, and 13. It was launched. Now let's go to analyze the current status. So this is the 2020. And, you know, as you can see, still all people using B8 versions that are already deprecated. But the good news is most people using 10, which is supported. And 12, which is the latest LTS that we are actually supporting. And some adventurous people using 13 and 14. It's really good. If you want to try this thing, some production is really good. We are, you know, these are stable versions, but we always recommend to use the latest LTS in production. Now let's see where those downloads are happening in the world and where people are consuming NodeJ as the most. The top five countries consuming NodeJ's binary distributions are the US, Germany, France, Ireland, and the Netherlands, followed by UK, China, and Canada. Many countries in South America are also consuming binary, as well as Russia and Australia. The only African country on the list is South Africa. Let's hope more countries keep using this. Okay. So here we have some recent distros that we started supporting. So as related to Linus Partis and the latest Linus Min, Boss, Pures, Trisco, and as you can see, many compatible distributions. We are always expanding this list. We are always looking to add more distributions and you can request support if you want. Later, we are going to find out. So it's possible to see a peak on the day of the release of NodeJS, as we can see in this image. On June 3rd this year, it was a release and it reached 750 megabytes per second downloads. So every time there's a new release in NodeJS, there is a peak on downloads and binary distributions. So here we are going to talk a little bit about how deprecating versions work. So these projects offer two kinds of deprecations. So the first one is when a NodeJS version bridge end of line. So end of line means you are not going to receive any security updates or any bug patch in the future. So we always recommend that you stay in the current supported version. One thing that is important to note here is that we do not remove the old packages. So even if you are using a pretty old version of NodeJS, you can still keep using NodeJS binary distributions. But the other process is when a latest distribution goes online. So basically your Linux distribution, your operating system is no longer receiving any security updates or support. So that means we always recommend keeping a proper untainted version of your operating system. So still we do not remove the old packages. So even if you are using a really old Linux distribution, then you will get support to get those NodeJS packages. Okay, but even if you are using a pretty old version, we try to warn you, right? So please update your NodeJS or you will see this thing when you are installing the NodeJS version that you are trying to install. So we present this deprecation warning and we make you wait 20 seconds so you can read the message and realize that maybe you should be updating your NodeJS version. So as we can see, there is a lot of people that are using versions that are no longer supported. Actually, last year there was about 5 million downloads of NodeJS versions that were no longer supported. And we want to launch a campaign that is upgrade your NodeJS version. So here is what we have for the future. So we are going to start supporting flat pack packages. It's a new way to distribute packages for different Linux distributions. Actually, it's a very good idea. So we are going to start supporting this format. Also, we are going to work to support Suicide Enterprise, which is a major Linux distribution that is no longer covered by NodeJS distributions, but we are going to work to get that done. And as usual, we are going to continue to expand the compatible distributions support. So if you want to have a distribution supported, you can go directly to the project and Liz is going to explain how to get involved. So how can you get involved in this project? There are many ways to contribute. First, you can go to this link. This is the repository of where the project is host, and it comes with an issue, command an issue, or a full request, and it's mostly related supporting new distributions to upgraded distributions or to create and update the scripts to download a certain distribution. Another way is to keep updated the documentation. If a new version over distribution changes, it should be updated on the docs as well. Once you submit an issue or a full request, suggestions could be made to keep compatible with the rest of distributions, and submissions are always welcome. If you collaborate with this project for a few months, you can ask and you can be included in this repo as a collaborator. Some conclusions. Using NodeSRS NodeJS distribution is the best and most recommended way to style NodeJS in Linux for productions environments. NodeSRS has been able to deliver NodeJS fresh to your Linux system via your package manager within hours or even minutes, not days or weeks of the formal release by the NodeJS project in many convenient forms. And that's our repeat multiple times. NodeSRS continues expanding support for new packages, formats, and distributions. This is really important because we want to support more people using Linux to have NodeJS in production. Also, we are looking for more community involvement in the project, so the majority of our scripts are open source, and as you can see, there's a lot of activity in the repo that we just mentioned. So please come join us and be part of this big effort to support multiple different distributions in production environments for NodeJS. Thanks for watching our talk. We hope you enjoy it. I hope with this talk you can understand the magnitude of this project and you're willing to collaborate. Also, these are some of the NodeSRS channels so you can follow us. Okay, thank you very much for attending this talk. As you can see, there is a big effort from the NodeSRS to actually bring NodeJS in production in Linux distributions, so help us to reach more people and support more use cases. In NodeSRS, we really care about the NodeJS community, and we created a new platform dedicated to NodeJS content, news, and updates in one place. This is divided into four sections, video, blogs, NodeJS binary, which is the talk we just did, and community, where we're going to celebrate key people in the NodeJS ecosystem. You're welcome to explore, read, and be part of this project. Thank you. Thank you very much. See you in the next one. Bye.