-
-
Notifications
You must be signed in to change notification settings - Fork 15k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
{segger-jlink,nrfconnect,nrf-command-line-tools}: drop #353880
base: master
Are you sure you want to change the base?
Conversation
This is a proprietary package that depends on the vulnerability‐ridden Qt 4, and was removed along with Qt 4 in 2022. It was re‐added at the beginning of the year, but upstream is unwilling to upgrade their Qt version and as it is proprietary software we have no way to patch it on our end. I think that it would be best not to ship this in 24.11. While it’s clearly useful software, we made the deliberate decision to remove Qt 4 seven years after it reached end of life, and since this software is seemingly doomed to eternal `knownVulnerabilities` I think that it does not meet our standards for inclusion. This would be better maintained in a third‐party repository, as suggested by the maintainer in <NixOS#214195 (comment)>. This reverts commit d5fd263.
04630e0
to
c084f36
Compare
Please, stop removing these incredibly useful tools. |
I do not agree on the removal (yet). The QT4 "vulnerability" is opt-in, the user has to specify
Which, in my opinion, is an adequate safeguard. The Segger JLink tools and those which depend on it are industry-standard tools and required by engineers around the globe to do their job. I stand by my comment in #214195 (comment) , "It would be nice for NixOS to evolve from a project for ambitions hobbyists into a system which supports real-world software.". Ideally, we would get Segger to upgrade their stack to a newer version of QT. Also, re: headless versions - even the core JLinkExe needs QT4 to display a license prompt window. |
I agree that they’re useful, but all software in the tree poses a maintenance burden and a potential risk to users, and we have to consider those factors as well; keeping around software with CVEs from 2009 and upstreams that don’t care about that isn’t conducive to maintaining a healthy and cohesive package set. If upstream update to a supported Qt that would be great and I’d happy to see the package return. In the meantime, I have no desire to stop people using this software, but I think a third‐party repository is the best way to handle the situation; Nix makes it easy to package and use out‐of‐tree software even if it doesn’t meet Nixpkgs standards for whatever reason.
The |
My info might be outdated, the author of the headless variants is @h7x4 . They might also comment on this approach. |
What maintenance burden? @StarGate01 has done a great job of maintaining these packages. More energy seems to spent trying to remove this useful set of programs than letting maintenance of them falling to the people wanting to do the work. I like NixOS, but this is exactly the sort of thing that pushes me away from it. |
In an ideal world, that’d be how it works. In practice, however, any package unavoidably places burdens upon the Nixpkgs maintainers:
The benefit of a third‐party repository is that it’s clear where responsibility for dealing with upstream Nixpkgs changes lies and it’s clear where users should go for support, and it avoids giving the impression that we as a project can support Qt 4 software and might accept more of it, when we decided explicitly to remove it and everything using it after it had been end‐of‐life for seven years. In general, we are pretty permissive about our package inclusion standards, but we already don’t have enough resources to adequately maintain the package set we have, and we have to draw a line somewhere; packages that rely on end‐of‐life versions of libraries that are subject to severe known security vulnerabilities and have no clear path away from that state are one of the lines we draw. When that overlaps with software that is important and useful, distributing the effort and making it clear what’s official is the recourse we have. The usual disadvantages of moving things out‐of‐tree like losing automatic cached binary builds don’t apply here, since we don’t build non‐free and insecure packages anyway. That said, I’d certainly like to hear about the headless variant, since if it would be possible to keep the CLI tools in‐tree and only the things that actually depend on Qt 4 need moving out that would be better all around. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shipping 24.11 with Qt 4 of all things would be terrible. As mentioned on Matrix, Nixpkgs should not be expected to maintain software from upstreams that are clearly uninterested in shipping an up-to-date product.
I do believe separating this into a third-party repository would not only be a net positive for NixOS, but also to users of this package, as the current UX requires you to allow unfree and insecure packages, which is not something direct consumers of Nixpkgs should need to do.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The other files in this directory should also be deleted.
I would like to note that NixOS would never prevent you from using this sort of software; it'd be trivial to add a flake or simply pull in a third-party derivation as a tarball. Nixpkgs, on the other hand, should have a bare minimum entry bar for packages, and packages that actively implement security vulnerabilities shouldn't make the cut - the top-level is supposed to be a curated package set, after all. It's also important to remember that every other distribution has a much more restrictive set of rules for acceptable packages. The fact that this existed for so long in Nixpkgs while other distributions would have deleted it is quite alarming. |
Hello, thanks for bringing this up. Sorry about all the surprise backlash 😅 I'm also a bit conflicted about dropping these packages. While it is using QT4 with ugly CVEs, I do believe we are doing an okay enough job at both warning the user about the potential risks and at maintaining the package. This piece of software is probably used by tens of thousands of developers every day at this point, even more so in CI. Removing it would lose a significant selling point of nixpkgs/NixOS for the entirety of the embedded ecosystem. A lot of people depend on this being available to get their work done, and NixOS would be a no-go if the package is not available. With the added complexity and discoverability issues that comes with out-of-tree packaging, not to mention having to trust the owner of the repo, I think it would be a dealbreaker for many new people that are still just considering NixOS. I'm happy to make the warnings even more severe and annoying for both for users and nixpkgs developers. Maybe also make a big capital comment telling people not to go include QT4 packages for any reason, and note why it's a special exception. But I do not think the lessened security risk and maintenance cost that comes with the removal outweighs the amount of people who use this package on a daily basis.
I realize maintenance isn't as easy as "if the people in the maintainer list upgrades it every once in a while, it should be fine!", but the package currently has enough maintainers that at least one of us should be able to address any concerns in PRs that might affect the package. The ownership issue is prevalent in the entirety of nixpkgs, and I don't think it's fair to drop the package on this basis. The package is not particularly more expensive in terms of maintenance cost compared to any other package, especially with active maintainers.
Do you mind if I ask about this? When the package was re-added I was under the impression that the package fully met nixpkgs standards just by being properly marked as insecure and proprietary. If we are to disallow insecure software to exist within the tree, I really think it should be added to https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#quick-start-to-adding-a-package or somewhere else visible. Possibly even remove the possibility of marking a package as insecure in favor of dropping it, to ensure no more people make the same misunderstanding.
Please don't use such an inflammatory tone. Discussion is not sustainable with strong negative emotions. |
The ideal solution is to do the exact opposite: users should have as little trouble as possible installing the packages they need, but Nixpkgs forces unfree and insecure packages to have gates, thus making a third-party repo with these warnings disabled an appealing option, despite the lower discoverability. It could also be argued that Nixpkgs' discoverability isn't as good as it's claimed to be, considering this package was left alone for months before someone noticed that it contains Qt 4. There are plenty of packages in the tree that are just forgotten. |
This comment was marked as duplicate.
This comment was marked as duplicate.
This doesn't make much sense to me. I value discoverability over ease of use. This ideal solution is just as subjectively ideal as the current implementation. We would also still need to do something in the third-party repo to ensure the user explicitly accepts the license, as the user needs to be aware of it before downloading the software.
Several people already knew the package existed, but deemed it acceptable. I don't think it's an issues with discoverability in this case, rather with guideline clarity. |
Fair enough! My main fear is that including "UX exceptions" such as SEGGER software in Nixpkgs could cause users to get the wrong idea of how Nixpkgs should be used. New users would be more inclined to enable broken or vulnerable software system-wide if they saw that there is actively maintained software gated behind the warnings, thus rendering them useless. |
I can see where you're coming from. As I mentioned earlier, I would be happy to try to work out some warnings for nixpkgs developers not to copy from this example, as well as more severe warnings for the user regarding both legality and security issues. I can't really think of anything better than eval warnings and comments in the file for now, but I'm open for ideas. An update to the README regarding insecure packages would be good as well. The current system for accepting the license is also not really optimal. The reason behind the license-check-in-config thing is that unlike many other pieces of proprietary software that lets you accept the license when you boot the program, this requires you to read and accept the license before you download the program. We could have used the |
This is a proprietary package that depends on the vulnerability‐ridden Qt 4, and was removed along with Qt 4 in 2022. It was re‐added at the beginning of the year, but upstream is unwilling to upgrade their Qt version and as it is proprietary software we have no way to patch it on our end.
I think that it would be best not to ship this in 24.11. While it’s clearly useful software, we made the deliberate decision to remove Qt 4 seven years after it reached end of life, and since this software is seemingly doomed to eternal
knownVulnerabilities
I think that it does not meet our standards for inclusion. This would be better maintained in a third‐party repository, as suggested by the maintainer in #214195 (comment).Reverts: #255185
See: #214195 (comment)
Things done
nix.conf
? (See Nix manual)sandbox = relaxed
sandbox = true
nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"
. Note: all changes have to be committed, also see nixpkgs-review usage./result/bin/
)Add a 👍 reaction to pull requests you find important.