[rb-general] be excellent to each other (Re: Heading toward functional compilation by adding hidden inputs?)
infinity0 at debian.org
Tue Jan 24 15:38:00 CET 2017
> On Mon, Jan 23, 2017 at 10:02:00PM +0000, Ximin Luo wrote:
>> talk is cheap, show me the code
> 2 things came to my mind here:
> a.) we are having a *discussion* here, so talk is the *default* here.
> b.) I found the reply unneccessarily rude. It might have been (more) ok in an
> IRC/chat discussion, but please be more considerate when sending mails.
> I *really* don't think *we* want such discussion style to be
> acceptable here.
I can apologise for the tone, but it was in response to a pattern that I'm seeing more often than I'd like on this mailing list, a pattern which I think is unconstructive and unhelpful.
Several of the messages here have been preachy messages more suited to a media show or propaganda, rather than technical discussions. This makes it very hard and frustrating working in here, and makes me more want to remain on the alioth reproducible-builds mailing list.
When people make these sorts of vague preachy messages, especially if it is in a thread that I started about a very concrete topic, I don't feel that I am being talked to, rather being talked at. The opportunity is just another advertisement platform for them.
This does not help solve any real issues, it only attracts attention from the outside onto the talkers, the people that can say the nicest sounding words. But the people who do the actual work and solve the actual problems, get no attention nor respect. As you might have guessed, I really detest these sorts of social dynamics. I am not blaming specific people, it is more the pattern of behaviour, including how the audience chooses to behave.
"Functional compilation" is one of the phrases which abused quite a lot here, and this abuse contributes to many many erroneous statements from further outside, on the topic of reproducible builds.
Of course, functional compilation will result in reproducible builds. However, functional compilation is not the only way to achieve reproducible builds. In other words, FC implies RB but RB does not imply FC.
Therefore, FC is harder to achieve than RB, and nobody not even Nix or Guix are doing this today. All the hype you hear about "functional compilation", it truly is meaningless hype. For us to have true FC, you would begin by rewriting all compilers using a pure functional programming language, then rewriting all buildsystems, etc etc etc. Pure as in, Haskell without the IO monad except at the boundaries of your program, this level of pure. BTW, I actually do know how to do this stuff (in theory), so it's frankly insulting to get a lecture about this from people complaining that I'm not doing BUILD_PATH_PREFIX_MAP right or whatever.
What is actually being done by us, Nix, Guix, etc, is as Ludovic says: "build processes are modeled as pure functions, and we arrange for the technicalities to closely match the model". To unravel the techy semantics, this means Nix and Guix are as imperative as Debian are, the pure functions are actually a little bit impure, they just have a more simplified model of what "software in general" does. Guess what, simplified models are less likely to apply to larger numbers of programs or use cases.
The other stuff, describing the system config as a unified immutable data structure and being able to replicate / reproducing this, would be closer to being "true pure". This part is impressive, I'm not disputing that. But it's a very long way to extrapolate from this to then describe the entire system as pure, to the point where one feels one can lecture other systems about not being "pure".
More information about the rb-general