[Nix-dev] Re: Separating Free/non-free package

Ludovic Courtès ludo at gnu.org
Mon Sep 21 14:53:55 CEST 2009


Hi,

Michael Raskin <7c6f434c at mail.ru> writes:

> Ludovic Courtès wrote:
>>>> I want to be able to automatically distinguish between free [0] and
>>>> non-free software,
>>> Here we have the first difference. I find your opinion too
>>> black-and-white. I mostly consider world grey-and-gray.
>> Let’s separate mechanism from policy.  I want to choose a policy of
>> installing only free software.  A mechanism is needed to allow it, which
>> is the only focus of the message that started this thread.
>
> Yes, but your mechanism should better be useful for someone else.

Like who?  For what?

I’m under the impression that you’re not interested in software freedom.
Am I right?

>> There’s no such thing as “half-free software”, to me.
>
> There are lots of border cases.

No.  90% of the time, it’s easy to tell whether a package provides the 4
freedoms.  Luckily, many people have already studied at length the
remaining 10%, so we can build on their work.

>>> So, what solutions do we see?
>>>
>>> 1. Splitting files
>>> 3. top-level/licenses.nix
>> I don’t think whether a package is free can be determined automatically
>> by looking at its license.  We could devise a “license calculus” for
>> common licenses, but it wouldn’t work with custom licenses.
>
> There are license features. Can you redistribute the package, can you
> distribute binaries of modified build etc.

Free software licenses have, by definition, at least the 4 “features”
described in the definition.  I’m not interested in software that has
less than 4, and it doesn’t matter to me if it has “extra features”.

Also, there may be additional restrictions not defined in the license,
such as trademarks policy, that affect each of these features (e.g.,
Firefox).

Overall I think a license calculus is a huge amount of work, and the
work of lawyers more than that of hackers.

My original intention in this thread was much less ambitious, and also
much more practical, as it’s already been done several times.

> 2) for every verified package, put the following in the licenses.txt:
>   packageName = {
>     fourFreedoms = true; /* or false */
>   }

Sounds good to me!  I’d rather call the attribute ‘libre’ or ‘free’,
with a pointer to the definition of the term, but other than that that’s
fine with me.

Seems promising.  :-)

> What I don't like in your approach (1):
> 1. The change is intrusive.
> 2. You put off describing the border as precisely as possible.

You mean the border between “free” and “non-free”?  As I said, I want to
stick to the 4 freedoms, and building on others’ work in “suspicious
cases”.  If a conflict arises that’s not clearly covered by the various
sources I cited earlier, I’m happy to discuss it.  But I expect it to be
very rare.

> 3. All the intrusive change doesn't allow others to build upon for their
> needs.

I don’t understand this sentence.

> 4. You already admit that you are going to slightly change the semantics
> of what you do anyway while designing a hard-to-extend system.

Which semantics?  What’s “what you do”?

Anyway, I *think* we’re getting very close to a consensus with what you
suggested above, so thank you for taking the time to debate!  :-)

Ludo’.




More information about the nix-dev mailing list