Skip to content

Commit d218e50

Browse files
committed
handle review comments
1 parent 54164cf commit d218e50

1 file changed

Lines changed: 46 additions & 20 deletions

File tree

rfcs/0185-redistribute-redistributable.md

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ related-issues: https://github.com/NixOS/nixpkgs/issues/83884
1111
# Summary
1212
[summary]: #summary
1313

14-
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.
1515

1616
# Motivation
1717
[motivation]: #motivation
@@ -28,11 +28,36 @@ Especially when the software is still source-available even without being free s
2828
[design]: #detailed-design
2929

3030
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:
38+
- `amazonImage`
39+
- `amazonImageAutomaticSize`
40+
- `amazonImageZfs`
41+
- `iso_gnome`
42+
- `iso_minimal`
43+
- `iso_minimal_new_kernel`
44+
- `iso_minimal_new_kernel_no_zfs`
45+
- `iso_plasma5`
46+
- `iso_plasma6`
47+
- `sd_image`
48+
- `sd_image_new_kernel`
49+
- `sd_image_new_kernel_no_zfs`
3150

3251
# Examples and Interactions
3352
[examples-and-interactions]: #examples-and-interactions
3453

35-
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:
3661
- CUDA
3762
- DragonflyDB
3863
- MongoDB
@@ -44,8 +69,9 @@ With this change, Hydra will start building, among others:
4469
- Terraform
4570
- Unrar
4671
- Vagrant
72+
- NixOS tests that involve such software (eg. MongoDB or Nomad)
4773

48-
Hydra will keep not building, among others:
74+
And Hydra will keep not building, among others:
4975
- CompCert
5076
- DataBricks
5177
- Elasticsearch
@@ -55,34 +81,33 @@ Hydra will keep not building, among others:
5581
# Drawbacks
5682
[drawbacks]: #drawbacks
5783

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.
6089

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.
6392

6493
# Alternatives
6594
[alternatives]: #alternatives
6695

67-
### Having Hydra actually only build FOSS derivations, not even unfree redistributable firmware
96+
### Having Hydra actually only build FOSS derivations, not even unfree redistributable firmware
6897

6998
This would likely break many installation scenarios, but would bring us to a consistent ethical standpoint, though it's not mine.
7099

71-
### Keeping the statu quo
100+
### Keeping the status quo
72101

73102
This results in very long builds for lots of software, as exhibited by the number of years people have been complaining about it.
74103

75-
### Implementing this RFC
76-
77-
See above for the details
104+
### Having Hydra redistribute redistributable software, without verifying installation media
78105

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.
80107

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
83109

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.
86111

87112
### Building all software, including unfree non-redistributable software
88113

@@ -99,10 +124,11 @@ Recent exchanges have been happening in [this issue](https://github.com/NixOS/ni
99124
# Unresolved questions
100125
[unresolved]: #unresolved-questions
101126

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.
103130

104131
# Future work
105132
[future]: #future-work
106133

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.
134+
None.

0 commit comments

Comments
 (0)