What is Node.js?
Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine. It uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Its package ecosystem, npm, is the largest ecosystem of open source libraries in the world. You can read more about Node.js at the project website.
What is EPEL 7?
EPEL stands for Extra Packages for Enterprise Linux. EPEL is a Fedora Special Interest Group that maintains a high quality set of additional packages for Enterprise Linux systems. These systems include Red Hat Enterprise Linux (RHEL), CentOS, and Scientific Linux.
History of Node.js in EPEL 7
EPEL 7 was first released in 2014. Shortly after, the Node.js package in Fedora was cloned and produced for EPEL 7. At the time, the latest stable version was 0.10.x. EPEL included upstream bugfixes, security fixes and other backports regularly per update policies. For several years, EPEL provided a stable 0.10x platform to run Node.js applications on Enterprise Linux systems.
However, all good things must come to an end. The Node.js upstream has declared all support for the 0.10.x release series will conclude October 1st, 2016. After that, the Node.js SIG in Fedora would become solely responsible for bugfixes and security patches for any release shipping the 0.10.x release stream. After discussion, the SIG decided to perform a significant, breaking change and update EPEL 7 to the latest stable 6.x stream.
Why a breaking change?
The reasons for this decision were threefold. First, a project as large and prevalent as Node.js would be impossible to maintain. Users would suffer from slow updates, possibly with security implications.
Second, the EPEL SIG felt responsible to provide EPEL users with the latest platform for use with the newest available technology. The 6.x stream contains several years of advances and features since 0.10.x. In that time, Node.js has become a highly-successful infrastructure. It has support from hundreds of contributors and dozens of companies. Failing to provide these enhancements just because they include backwards-incompatible changes didn’t feel like the spirit of the Fedora Project.
Lastly, upstream has declared the new 6.x release stream a long-term stable release. This means upstream supports the current release for approximately 30 months of total life. This support will end on April 1st, 2019. Assuming the upstream maintains its currently-planned LTS schedule, EPEL 7 will probably begin another transition around October 2018 onto the Node.js 8.x LTS branch.
How this affects you
If you aren’t using Node.js 0.10.x today, of course this change won’t affect you at all. If you are using it on EPEL 7 today, you’ll likely experience a disruption soon. This is because Node.js 6.x, like 4.x and 0.12.x, is known to be backwards-incompatible with many packages designed for use with 0.10.x. As a result, applications built atop 0.10.x will likely malfunction once the update to 6.x lands and you apply it on your machines.
However, there’s some good news, too. Many developers have updated packages in the NPM ecosystem to work with the latest versions of Node.js. That means you can resolve many issues simply by upgrading to newer versions of those NPM libraries. Additionally, upstream has provided useful pages describing the breaking changes in each of the major releases.
Do you have applications that depend on Node.js? If so, it’s highly recommended that you try 6.x as soon as possible. This will help avoid disruption when the upgrade appears in the stable EPEL repositories. You can install 6.x packages today using the epel-testing repository with this command:
yum update --enablerepo=epel-testing nodejs
If you have questions or concerns about this upgrade, please direct them to the Node.js SIG mailing list.
Richard
So far so good for mineos (Minecraft server manager). I had been using the official downloads, extracting them in /opt and then adding symbolic links to /usr/local/bin. Nice to not have to do that anymore.
Pierre
I do like that also : download the nodes binaries in /opt and then change the path for all users via an entry in /etc/profile.d. This is not difficult and allows to stay up-to-date.
Tom Boutell
OK, so I didn’t see this coming. Rather than holler, I’m just going to ask if there is an RSS feed that should be in my life so that I am aware of BC breaks in EPEL in the future? Better yet, upcoming BC breaks for packages I actually have? Ideally without subscribing to a lot of other stuff… thanks.
Tom Boutell
OK, this update definitely jumped the gun. NodeJS doesn’t end-of-life 0.10.x until the end of this month, and LTS of 6.x doesn’t start until the start of next month.
Also 4.x is still supported and will be until mid-2018. It has fewer bc breaks. Why was the bigger bc break chosen right away?
Tom Boutell
Today we sorted through it and created oh-ten-bc, an npm module for patches to make 6.x a little more backwards compatible as a temporary measure. Contributions welcome.