This repository has been archived by the owner on Jun 26, 2024. It is now read-only.
Staying up-to-date #35
Labels
brainstorm
Not yet implementable (e.g. design phase or blocked)
enhancement
New feature or request
ux
Ensures a good time when using the product
workflow/update
Notifying updates for programs in list of dependencies
I'm writing this far ahead of the "good time to start implementing". Partly because I would like for ideas to simmer for a while before we go forth, and also because this can get quite complicated.
I think the responsible thing to do is for the project to also inform users that at least one of their dependencies has an update. Being so early in the product design phase, we have some time to think through and get this right.
As of today, the lockfile practically acts as "dependency pinning" mechanism — that is, a dependency will remain consistent since its addition until it was manually modified, in which we assume users to verify the new version before propagating the changes throughout the project. This behavior is a form of protection from "auto-update" where a new update may not have been verified yet, and turns out to be an malicious update (one form of "Supply Chain Attack", as the cool kids say).
Pinning dependencies, however, isn't a complete solution to the whole class of vulnerabilities in supply chain attacks. For example, staying behind updates might mean that the project is not addressing Common Vulnerability and Exposures (CVEs) which may exist in older versions of a program.
How should we assist projects in staying up-to-date, safely?
I think we should worry about two things: how can we make it easy and how can we encourage good hygiene.
In making it easy, we can do some version ceiling limit declarations, i.e. "stay within a major version of a release line", often seen in a programming language dependency manager like Ruby's Bundler or Python's PIP. In theory, this can be implemented reasonably by assuming semantic versioning and doing comparisons. However, it feels reckless to do so when an update turns out to be a malicious one.
If and when we have features around "updates", what should / can we do to roll it out more responsibly? Some ideas:
UAParser.js
, but not so much fromnode-ipc
. This also somewhat depends on Verifying signatures #15.The text was updated successfully, but these errors were encountered: