You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make Hydra build and provide all redistributable software.
14
+
Make Hydra build and provide all redistributable software, while making sure installation methods stay as fully free as today.
15
15
16
16
# Motivation
17
17
[motivation]: #motivation
@@ -28,11 +28,36 @@ Especially when the software is still source-available even without being free s
28
28
[design]: #detailed-design
29
29
30
30
Hydra will build all packages with licenses for which `redistributable = true`.
31
+
It will still fail evaluation if the ISO image build or the Amazon AMIs were to contain unfree software.
32
+
33
+
This will be done by evaluating Nixpkgs twice in `release.nix`.
34
+
Once with `allowUnfree = false` like today, plus once with `allowlistedLicenses = builtins.filter (l: l.redistributable) lib.licenses`.
35
+
Then, most of the jobs will be taken from the allowlisted nixpkgs, while only the builds destined for installation will be taken from the no-unfree nixpkgs.
36
+
37
+
The list of jobs destined for installation, that cannot contain unfree software is:
With this change, Hydra will start building, among others:
54
+
With these changes, here is what would happen as things currently stand.
55
+
This is not meant to be indicative of what should happen or not, but indicative of what would happen.
56
+
Each package's individual `license` field setup is left to its maintainers, and nixpkgs governance should conflict arise.
57
+
This RFC does not mean to indicate that it is right or wrong, and is not the right place to discuss changes to this field.
58
+
Should one have disagreements on any specific package in this list, please bring that up to that package's maintainers.
59
+
60
+
With this in mind, Hydra will start building, among others:
36
61
- CUDA
37
62
- DragonflyDB
38
63
- MongoDB
@@ -44,8 +69,9 @@ With this change, Hydra will start building, among others:
44
69
- Terraform
45
70
- Unrar
46
71
- Vagrant
72
+
- NixOS tests that involve such software (eg. MongoDB or Nomad)
47
73
48
-
Hydra will keep not building, among others:
74
+
And Hydra will keep not building, among others:
49
75
- CompCert
50
76
- DataBricks
51
77
- Elasticsearch
@@ -55,34 +81,33 @@ Hydra will keep not building, among others:
55
81
# Drawbacks
56
82
[drawbacks]: #drawbacks
57
83
58
-
The only previously listed drawback is that NixOS could end up including unfree software in the ISO image without noticing.
59
-
However, as there is already unfree firmware, this fight is already half-lost.
84
+
The main risk is that NixOS could end up including unfree software in an installation image if:
85
+
1. we forgot to add it to the list of no-allowed-unfree jobs, and
86
+
2. a maintainer did actually add unfree software to that build.
87
+
88
+
This seems exceedingly unlikely, making this change basically risk-free.
60
89
61
-
Also, adding unfree software to the ISO image would still require a NixOS maintainer to actually add it there.
62
-
The only benefit we currently get out of not building unfree redistributable software, is that the hydra builds for the ISO would fail if someone were to make a mistake.
90
+
The only remaining drawback is that Hydra would have to evaluate Nixpkgs twice, thus adding to eval times.
91
+
However, the second eval (with no-unfree) should be reasonably small and not actually evaluate all packages, as it is only used for installation media.
63
92
64
93
# Alternatives
65
94
[alternatives]: #alternatives
66
95
67
-
### Having Hydra actually only build FOSSderivations, not even unfree redistributable firmware
96
+
### Having Hydra actually only build FOSSderivations, not even unfree redistributable firmware
68
97
69
98
This would likely break many installation scenarios, but would bring us to a consistent ethical standpoint, though it's not mine.
70
99
71
-
### Keeping the statu quo
100
+
### Keeping the status quo
72
101
73
102
This results in very long builds for lots of software, as exhibited by the number of years people have been complaining about it.
74
103
75
-
### Implementing this RFC
76
-
77
-
See above for the details
104
+
### Having Hydra redistribute redistributable software, without verifying installation media
78
105
79
-
### Implementing this RFC, plus adding a check on Hydra to validate no unfree software enters the ISO image
106
+
This would be slightly simpler to implement, but would not have the benefit of being 100% sure our installation media are free.
80
107
81
-
This would likely be harder to implement.
82
-
It could be a job override, that would make hydra allow unfree redistributable software for all jobs except for the ISO image, which would only allow unfree redistributable firmware.
108
+
### Having Hydra redistribute redistributable software, with a check for the installation media
83
109
84
-
The drawback of this alternative is that it would be more effort to implement, especially as manpower around Hydra is very scarce and limited.
85
-
However, it would solve the only previously listed drawback.
110
+
This is the current RFC.
86
111
87
112
### Building all software, including unfree non-redistributable software
88
113
@@ -99,10 +124,11 @@ Recent exchanges have been happening in [this issue](https://github.com/NixOS/ni
99
124
# Unresolved questions
100
125
[unresolved]: #unresolved-questions
101
126
102
-
None.
127
+
Is the list of installation methods correct?
128
+
I took it from my personal history as well as the NixOS website, but there may be others.
129
+
Also, I may have the wrong job name, as I tried to guess the correct job name from the various links.
103
130
104
131
# Future work
105
132
[future]: #future-work
106
133
107
-
If this RFC lands as-is, future work could be around adding the check on hydra listed in the alternatives section.
108
-
This would validate that no unfree redistributable software enters the ISO image.
0 commit comments