Determinate Nix 3.0

Hello! I’ve been watching the discussion, I think I’ll plug in my two cents.

Names

I think this question is a good place to start from:

I think the right suggestions have already been made in this thread. I’ll reiterate them. I believe it is in the interest of all parties that:

  1. NixOS Foundation (we now have a functioning SC and a new complete board) register a trademark, and make this a priority effort. I trust @grahamc not to interfere with this process, not to attempt registering a conflicting trademark ahead of Foundation, and not to attempt litigation.
  2. Determinate Systems rename Determinate Nix as to acknowledge the fact that it is an independent project, developed by an independent team on their own schedule. We can refer to many successful examples of projects that effectively reimplement what Nix does, make different choices about which features to include, and do not create conflict: Lix, TVix.
Flakes

A less obvious issue is Flakes. My opinion (someone unfamiliar with Nix codebase and development processes) is that it would be a mistake to stabilize them. I believe the best strategy wrto Flakes, despite the sunken cost, would be to call it a “make one to throw away” project. My understanding is Flakes have been a very important research project with many byproducts, closely intertwined with the work on hermetic evaluation, on CLI UX, and probably many other subjects. However, I believe Flakes as a feature are based on a misidentified problem, fail to address any fundamental issues, and fail to add value over e.g. npins. In particular, I had previously referred to @roberth’s description of Flakes as a “weak dependency injection system”, and I believe that DI was that fundamental problem that actually needed and needs solving, and which Flakes consider specifically a non-goal. I think should start phasing Flakes out. We should actively and broadly advertise Flakes as deprecated so as to hopefully alleviate some of the immense damage they have been causing to SEO and to the Documentation effort. Honestly, I think Determinate Systems might benefit from doing the same and starting over with a new name.

Some alternative or compromise strategies to ponder:

  • As suggested many times before, instead of just removing them, make flakes a separate CLI tool, developed independently in its own repository. If one were set on keeping flakes alive, I’d advise they make it a backend-agnostic tool, capable of using all major Nix-like solutions (Nix, Lix, TVix, Determinate Nix).
  • Regardless, the protectionist approach would be to include “Flakes” in the trademark policy, and to introduce the “Flakes” project and “Flakes” team concerned with developing and maintaining the Flakes specification.
  • A more radical approach that would leave many people wary of EEE strategies is to let DetSys have Flakes. Remove Flakes from Nix. Collect signatures to have the Foundation license (IANAL) Flakes to DetSys or assign the IP to DetSys in a way that would let them register a Flakes trademark, claim ownership of the project, and start maintaining The Specification. It was suggested DetSys may need a new name for “Determinate Nix”, I propose “flakes”.
20 Likes