[Nix-dev] how does NixOS ensure focus?

Ertugrul Söylemez ertesx at gmx.de
Mon Jul 28 04:56:36 CEST 2014


Hi there hasufell,

NixOS works quite differently.

Let me explain the technical part first.

Whenever you install NixOS, you're really forking it, and your
installation becomes your own distribution.  You can then choose to
merge some or all changes in the official NixOS channel into yours
(you might call this "upgrading").  That also works the other way
around.  Contributing to NixOS really means that you make a change to
your own distribution and send a patch or pull-request.  So unlike other
distributions we do not actually have "contributors" or "maintainers"
in the traditional sense.  As far as I can tell, this model is unique.

The concept extends from packaging to application development,
deployment and host management.  When you want to deploy a service, you
write a NixOS module.  This is still in your own fork.  When the module
is useful to others, you send a patch or PR, and everybody else
benefits from it.  In any case you do not depend on anyone in the NixOS
community, you do not have to gain any sort of status before you can
get to work.  And if your changes are not merged, you don't lose
anything.  I made my first contribution within about a week of
installing NixOS for the first time.  I made the change and sent a PR.

Now to the community structure:

There are official committers to the Nixpkgs repository.  We do not
have something like an election process.  We have forks, and people
just implement ideas.  When others agree with them, they can help with
development.  It's just a fork after all.  Then the official committers
can choose to merge the changes, if they agree with them.  If they
don't, the project isn't doomed, but can simply continue as a separate
fork, and smaller changes can still be exchanged.  I don't think this
happened in practice yet, but when it does, nothing bad happens.

In particular if you want to make a distribution based on NixOS,
neither do you have to start from scratch, nor do you have to give up
the upstream Nixpkgs.  You would just maintain a Nixpkgs fork with your
own customisations.  NixOS users can even merge your customisations
without "switching to your distribution" or giving up Nixpkgs.  And
when they're unhappy, they can remove your changes again.

In conclusion, our development methodology is very different, so a
comparison to Gentoo is difficult or even unfair.  My personal opinion
is that this is a great model.  It gives me freedom and independence and
makes it easy for me to contribute and influence the direction NixOS is
taking -- not by talking, but by doing stuff.  The decentralised nature
of our development process allows a small community like ours to be
very productive.  Forks and branches are not seen as fragmentation, but
rather as addons everybody can use.

In fact to be honest, after well over 13 years of Linux usage, I never
contributed to other distributions, simply because I couldn't be
bothered to gain any kind of social status before I'm allowed to do
so.  Expanding on your story, when I have an idea that I consider
great, I just want to do it.  I don't want others to get in my way.  No
elections, no discussions.  It's my idea and I want to figure out in a
practical setting whether it works.  And when it does, I want a short
and easy path from my implementation to the official repository.  NixOS
makes this possible.

After half a century we have mostly figured out how to develop software
productively, using decentralised methods, forks, branches, merges,
etc.  Compared to this almost all distributions still use stone-age
methodologies.  NixOS is a step into the right direction, not only
regarding packaging, development and deployment, but also community
structure.

All that said, welcome to our community. =)


Greets,
Ertugrul


On Mon, 28 Jul 2014 01:55:01 +0000
hasufell <hasufell at gentoo.org> wrote:

> I'm a gentoo dev since 2 years and have come across the NixOS project
> recently which looks quite revolutionary.
> 
> However, since I'v seen a lot of things gone wrong in distros (primarily
> gentoo), I am curious if you have a concept for ensuring that NixOS
> stays focussed.
> 
> That may sound weird, because you probably know what you want right now,
> but from my limited experience that may change drastically depending on
> your political, organizational and collaboration model.
> 
> I'm not entirely sure myself what the right way here is or if you even
> think that focus is needed.
> 
> However here are some thoughts about it that crossed my mind.
> 
> A lot of projects (some successfully) ensure focus by limiting the
> number of core developers to the absolute minimum, which means
> decision-making is pretty easy. At the same time they open up the gates
> for random collaboration. This implies a well designed review workflow
> with very responsive and active developers for this to function
> properly, otherwise people will give up on overcomplicated contribution
> procedures/channels and do their own thing.
> I'd pretty much say that the linux kernel runs this model successfully,
> although reasons for this are probably a bit more complicated.
> 
> Gentoo here is almost the complete opposite with >200 core developers
> and it is rapidly losing focus and consistency every year. Decision
> making is a cumbersome process, there are too many diverging ideas,
> although we have a "council" to settle global issues (doesn't work very
> well). That in turn leads to less people caring about global issues and
> new ideas or about fixing non-trivial fundamental problems.
> There is also no enforced internal review workflow. People want to "get
> things done" and avoid unnecessary reviews. That is dangerous and has
> led to serious problems in the past.
> At the same time, a lot of our contribution channels have failed and are
> too complicated. Because the number of random contributors is
> decreasing, we add more core developers to the team, causing even more
> internal problems.
> 
> I almost think that a centralized distribution model is doomed to fail.
> That does not only include the workflow with review platforms, DVCS
> tools etc., but also the political and organizational structure.
> 
> I don't see much information about these points on your website (only
> technical stuff). What are your solutions to the mentioned issue, if
> any? How do you ensure focus and collaboration at the same time?
> _______________________________________________
> nix-dev mailing list
> nix-dev at lists.science.uu.nl
> http://lists.science.uu.nl/mailman/listinfo/nix-dev


-- 
Ertugrul Söylemez <ertesx at gmx.de>


More information about the nix-dev mailing list