Octokit.js: Why we're removing support for NodeJS v14 and v16 #44
Pinned
nickfloyd
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hey JavaScript friends,
We wanted to address a recent decision that we made regarding the discontinuation of support for NodeJS versions 14 and 16 because we consider this a “breaking change.”
While we understand that this may cause some initial disruption, it's important to explain the reasoning behind this change.
Why
Maintainability
We have to focus on ensuring this SDK's maintainability is as high as possible for everyone. This means significant roadblocks happen (see the comments about ESM below) due to trying to maintain old things. We should be rigorous and intentional with the frameworks and tools we actively use.
End-of-Life Considerations
NodeJS v14 reached its end of life in April 2023, and v16’s support will end on September 2023, according to NodeJS's official Long-Term Support (LTS) schedule. As the NodeJS team no longer maintains v14 (and soon v16 - note the EOL date on v16 was moved forward by 7 months), any security vulnerabilities or discovered bugs will not be patched after EOL. We must move away from these outdated versions for the SDK's security and stability.
Staying Up-to-Date with the Latest Features
The newer versions of NodeJS, such as v18 and beyond, bring to the table a whole host of improvements, including performance enhancements, new JavaScript language features, and
API improvements.
For instance, NodeJS 18+ comes with a global
fetch
function. That allows us to remove the dependency on node-fetch, which has caused problems in the past.node-fetch
and other fetch implementations can still be passed as{ request: { fetch } }
argument for compatibility and low-level request lifecycle integrations (e.g. mocking)By supporting these latest versions, we can take full advantage of these capabilities to make our application faster, more reliable, and more feature-rich.
Resource Optimization
Maintaining backward compatibility with older versions of NodeJS requires significant resources, both in terms of developer time and computational overhead. By dropping support for outdated versions, we can focus our efforts on improving our application and leveraging the latest technologies, leading to a better overall user experience.
Encouraging Best Practices
Regular updates are a standard part of maintaining a healthy tech ecosystem. By discontinuing support for older versions, we encourage our users to remain up-to-date with their software installations, ensuring they can access the latest security patches, bug fixes, and features.
Going forward
Old versions of the SDKs
The goal is to address major issues (security, critical updates, and broken implementations) in older versions (SDKs that support the old versions of NodeJS) of the JavaScript SDKs by accepting maintenance patches.
Unless there is a vulnerability or critical issue, these will be prioritized at either "normal" or "low" simply due to team and resource constraints. We still want to open those lanes for improvements and fixes, but the community's needs will primarily drive those.
Future development
For the current version of the SDK and its modules, plugins, etc, we will continue to generate, update, improve, fix, and progress the source. Our sights are set on moving Octokit.js to support native ESM and removing the blockers that we are currently faced with by the current version not supporting ESM.
We understand that transitions like these may come with certain challenges. However, we want you to know that our team will be here to help you through this transition. We highly recommend updating your NodeJS installations to the current LTS version, v18, whenever possible.
We try to avoid breaking API changes in general without deprecating them first. If functionality stops working after the upgrade to a new octokit version, update to the latest version before the breaking release, address all deprecation warnings, and then upgrade again. Let us know if we miss a deprecation, and we will try to backport it.
Thank you for your understanding and cooperation. As always, we're committed to providing the best possible experience for our users and appreciate your continued support.
Thank you to @wolfy1339, @gr2m, and all the others for working so hard to move forward to the next generation of our JavaScript SDK.
References:
octokit/webhooks.js#849
https://github.com/orgs/octokit/discussions/40
https://github.com/orgs/octokit/discussions/21
Beta Was this translation helpful? Give feedback.
All reactions