> Umm, this is kinda the point that I was making, you were the one who
> suggested to write that "regular users" should use this feature, so I
> explained that you can't differentiate between regular and advanced
> users to you need to treat all users equally and just document the
> feature in a clear and straightforward way.

Apparently we never disagreed.  We just failed to communicate our
notions properly. =)

One thing to note is that some functionality is genuinely unsafe, but
sometimes still useful to users doing less obvious, experimental or
innovative things.  There is nothing wrong with adding big warning signs
to the documentation in the form of:  "This is an unsafe operation that
can violate assumptions X and Y.  Make sure you understand how to apply
it safely before use!".

Sometimes there are use cases that the developers simply did not
anticipate.  This is actually quite common.  For example the `--set`
flag to `nix-env` should definitely be documented, because it is both
safe and useful when you do more with environments than managing
user-specific package sets.

If you follow this line of thought to its conclusion, then the set of
interfaces is really a union of safe (assumptions-preserving) and unsafe
(potentially assumptions-violating) interfaces.  The notion of an
"internal" interface is informal and more often than not ill-defined.  I
believe that all interfaces should be fully exposed and documented, but
the unsafe ones should carry a warning sign along with the rules you
need to follow to preserve the assumptions, i.e. how to use unsafe
interfaces safely.

Attachment: signature.asc
Description: PGP signature

_______________________________________________
nix-dev mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-dev

Reply via email to