Re: Reproducible, precompiled .o files: what say policy+gpl?
On Tue, Oct 19, 2004 at 01:47:34AM +0200, Wouter Verhelst wrote:
> The first section of the SC says that Debian will remain 100% Free
That is the title of that section.
If you bother to read it, you'll see "We will never make the system
require the use of a non-free component. "
> It does not say that the binary bits of Debian can be restored
> to something which will produce the exact same MD5 sum using only Free
This is a straw man argument.
> Since Wesley's software will be released under the GPL, it
> will clearly be Free Software, so there is no problem.
There is a problem if building that component requires the use
of a non-free compiler.
> The fact that Wesley wanted to build his package using non-free software
> does not really matter -- as long as it does build using Free software.
It doesn't matter if there is no difference in what is built.
Problems arise if there are differences between what the two compilers
build. For example, there might at some point be a bug which only shows
up under gcc.
> Heck, some developers might have installed icc and might be compiling
> their packages using that compiler instead of gcc; as long as their
> software does not use too many gcc-isms, you should not even notice so
> in the source. How would you tell that such a package is built using icc
> instead of gcc, other than by benchmarking?
 I hope no one is doing that.
 We probably wouldn't notice this issue until it creates problems.
> If you still insist, consider this: If I would know i386 assembler
> (which I don't), I could theoretically hand-optimize software before I
> upload it. Since I did hand-optimization, the resulting binary would no
> longer be built using only Free Software; it would also incorporate the
> fruit of my labour. Is the resulting binary now suddenly non-free -- or,
> at least, should it go to contrib instead of main? If so, why? If not,
> what's the difference between this example, and the question of
> icc-built software?
If you've hand optimized it, the hand optimized assembler becomes a part
of the sources.
This, of course, becomes a bit complicated to manage when the package
is compiled for a variety or architectures. But it's been done before,
for example in the kernel.
> > I'm interested in your reasons for making this assertion.
> > If your point is that it's possible build software whose source is
> > in main using compilers which are not in Main, I'd agree with you.
> > However, I don't see any reason to consider the resulting builds to be
> > a part of main.
> I don't see any reason why we should not consider the resulting builds
> to be part of main.
If you can guarentee that when the package built with icc is tested
that any bugs which would result from building using at least one free
compiler will be evident, and if you can guarantee that systems which
use icc-built software will continue to function if they use some free
compiler to build that software then the problem is more philosophical
That said, I don't see any viable way for you to provide any such
> I am fully aware that there are people who think that all non-free
> software should be banned from the face of the earth (Hi Richard!).
> However, the fact that some Free Software package is built using
> non-free Software, even though it could be built using only Free
> compilers, does not suddenly make the Free Software package non-free.
This is a straw man argument.
The issue isn't banning non-free software from the face of the earth.
The issue is that main is not supposed to depend on non-free software.
> What is 'Free Software' is defined differently by both Debian and the
> Free Software Foundation; however, GPL'ed source code which is built
> using a non-free compiler does not, in my view, fail any test of either
> of those definitions.
I don't have a problem with GPL'd source code.
I have a problem considering the resulting binaries as suitable candidates
> Policy and the Social Contract may not, and IMO do not, conflict.
And, frankly, I don't see how you can put together a package that builds
as per policy that builds using icc for main.
Either your build target doesn't do what a build target should do,
or your build-depends are inaccurate, or something of that nature.