[Nix-dev] Re: Libre Software Meeting talk about NixOS

Jeff Johnson n3npq at mac.com
Sun Jul 11 03:10:46 CEST 2010


On Jul 10, 2010, at 7:22 PM, Jeff Johnson wrote:

> 
> But the killer design flaw for --rollback is _STILL_ general scriptlet side-effects,
> which are highly non-trivial to reliably invert generally. But the class of
> debhelper-like scripts (~55 scripts, avg length ~3 lines, see Joey Hess's
> measurements, this is just what I recall) can be modeled/simulated and made reliable
> using a DSL as in Mancoosi WP3.
> 

One last note ...

In my experience, the single biggest flaw in package scriptlets is typoes.

Typoes are plain and simply human error. Nothing to do
with side-effects or functional approaches with "purity"
or anything else more interesting.

Just dumb stoopid typoes from package monkeys and imperfect QA process
from build mommas to detect before release.

So the real "fix" (and the solution is implicit though hardly obvious) in both deb-helpers as
well as Mancoosi WP3 with a DSL is that the scripts will come from a common,
well maintained and tested location, not from "in the wild" package content.

And as I learn more about the innards of Nix and Nixos (which I
think is quite elegantly engineered and implemented), I'm seeing
essentially the same thing
	Humans make mistakes.

This is what I read into several of the threads here, that the scripts
used from within NixOS and executed (by the spiffy stdenv build recipe)
break sometimes. All that's different in RPM from NixOS is lack of discipline and
a laissez faire
	Have it your own way!

(aside)
I've seen >1Mb scripts in *.rpm packages included in my private
	Packaging Hall of SHame
There are easier ways by, say, invoking your 1Mb script by name, instead
of from a database store.

No matter what: A "functional" approach as in NixOS is a cleaner abstraction
and will scale far better than the explicit state machines as in RPM and DPKG
(and most other package managers).

JMHO, YMMV.

73 de Jeff



More information about the nix-dev mailing list