[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [kDev] Bruce Perens replies - suggests modified BSD...



I sent a response to Daniel, but he asked me to send one to the list, so I'll send essentially the same thing here.

It's also given me a chance to think things through a little more. I know this is a critical area for many of us, and feelings as well as business needs are deeply affected by it.

On Wed Jun  2 08:11:15 2004, Daniel Harris wrote:
Begin forwarded message:
From: Bruce Perens


This does not require that you join some GPL vs. BSD argument. The BSD license without the advertising clause is GPL-compatible, and is chosen for strategic reasons of your project.

I would caution you that proprietary forks of your product are likely, and this may dissuade volunteer coders who will start to see themselves as unpaid employees of the folks making the proprietary fork. But the Apache project seems to be able to live with this.


The above two paragraphs are, in my opinion, incompatible.

The Kendra project only remains worthwhile if all deployments are fully interoperable. Proprietary forks will almost certainly drift - this hasn't happened with the Apache project on the face of it, but looking closer you'll note that while the forks of Apache remain true to the HTTP/1.1 specifications (et al), different forks operate with different plugins - it's impossible to run Websphere applications on 'stock' Apache, for instance.

This isn't a problem for Apache, in reality, but that's largely because:

a) Different forks loading each others special stuff isn't an issue, it's expected.

b) Different forks all support the same module loading API, for instance, so all Apache modules all work with everyone's fork. This is because of inertia, largely, and the fact it's a proven API that works. Writing a new one is both worthless and difficult.

c) Different forks all support the same protocols, because Apache is essentially a pure server - it provides no end-user client, thus has to speak the protocols both accurately and pragmatically.

Some of this applies to Kendra's output, but not all, and especially not (c), which is crucial.


1. Protect developers and Kendra from being sued because what we created or help create screws up someone's business - so we have no implied warranty.

On the one hand, all open source licenses I've looked at include a warranty limited as far as is possible within the law. On the other hand, certainly under UK law, even gifts have an automatic warranty to an extent.

I suspect that the distributor would have liability, and would have to 'sue up the chain', as it were, for a developer to get sued themselves, and I also suspect it'd be extremely difficult.

But it's a point to look into, if it worries you.


2. Protect from people coming along and saying "hey, you guys stole my code" - so clarification of ownership.

The BSD license includes this, as do any open source licenses. Moreover, copyright law itself stipulates this to a large degree. (The GPL is actually rather more explicit.) Moral rights make the issue even more complex.


3. Let people do anything they want with the code. No legal restrictions what so ever.

This is not actually covered by any open source license, which may surprise some.

The reason is that terms describing usage, with the exception of curiosities such as public performance of the work, are outside the scope of copyright law.

'Commercial' software licenses are, in fact, not a license as such, but a contract. In general, they rarely contain a license (although the 'redistributable binaries' bit of development suites constitutes a copyright license), but contract law is a fearsome beast, and in general requires an exchange of some kind to make the contract binding, which doesn't happen with open source.

Hence OSS licenses are restricted to specifying copyright terms, which don't cover usage at all.

[Re]distribution of the original work and derived works is the only thing covered, and it's worth noting that what, exactly, constitutes a derived work in software is pretty vague in places.


4. Not having to choose sides in the GPL/BSD battle. Is it just me? After speaking to both "sides" I get the feeling that if I were to choose either the GPL or BSD then I'd instantly be seen to reject the other. Or is it that I've just been speaking to hardliners?


The question you need to answer is twofold:

- What license[s] should you distribute the original code under?
- What license[s] are you prepared to accept for contributions?

Bruce made the suggestion that since the BSD is GPL-compatible that this somehow side-steps these issues, but it doesn't. The BSD is indeed GPL-compatible - meaning that you can redistribute BSD licensed code under the GPL legally - but the GPL is not BSD compatible.

We - the people on this list - can certainly help you answer both questions, but ultimately, you're the copyright holder, and you may license your copyright under any scheme you like, and as many of them as you like.

There's also the question for contributors:

- What license[s] are you prepared to license under?

This is a personal or company choice.

From a corporate perspective, I've always considered that the GPL makes most sense for larger projects, since it prevents anyone else from leap-frogging you - building on your work, but not allowing you to benefit as well. The GPL works well for informal consortia, too, since no member gains an advantage over the others.

From a personal perspective, the situation is very much less clear - not that it's clear to begin with - but personal choice makes up a larger proportion of the decision-making process. Some people simply prefer BSD licensing.

Of course, Bruce's comments above the the BSD is GPL-compatible also means that if you licensed Kendra's output entirely under the GPL, you could accept contributions legally that were licensed under the BSD.

Conversely, one could take a BSD-licensed codebase, add a small amount of GPL-licensed software, and the result is a work which can only be distributed under the GPL - so it's worth noting that under a BSD license, a proprietary fork is not the only possibility.


If I have a license with a warranty disclaimer, a copyright notice but no requirement for the license to be attached to modified/redistributed works is this, in fact, public domain? Anything wrong with that in terms of protection points 1 and 2?


Public domain is a specific legal term, essentially indicating that there is no copyright on a work. This contravenes 2 totally, and certainly doesn't make 1 any better - it probably makes it worse in some parts of the world.


Would licensing under a dual or triple license (GPL/BSD/?) help point 4?


Dual licensing is, I think, pointless.

The use of dual-licensing models is generally that you license under GPL, or something similar, which essentially enforces open source, and also under a proprietary license (or contract) for proprietary uses. It's a demonstrably working method of generating a profit.

Dual licensing in this way for Kendra would simply mean that Kendra could make a profit - given it's a non-profit, I'm not sure that's the idea.

Dual licensing between BSD and GPL is especially pointless.

The real problem is that you actually cannot dual-license as such. All you can do is offer more than one way of distributing the code. But for the act of distribution itself, there's only one license in effect, and that cannot be changed retrospectively - if I download a dual-licensed Kendra under the GPL, I cannot then redistribute it under the BSD, as that contravenes the license I used.

The dual license you suggested is so pointless because in the case of the BSD/GPL, I *can* download a copy under the BSD license, and apply a GPL license to it anyway, since the BSD license says, in effect, that I can redistribute under any terms I like. I might, at a pinch, have to add in a token change to make it a derived work, but I don't think I even need to do that.

But, all that aside, I do think multiple licenses may be the answer here - just not in the same way.

The overall design of the Kendra software will have several distinct blocks. Some of these blocks we can consider 'Core' - stuff like, I dunno, catalogue aggregation, data exchange, etc. There's lots of these areas. To me, this sort of code is probably best done under the GPL, with various exceptions. It ensures that the core code of Kendra remains a level playing field for all those concerned, and ensures a high degree of commonality.

Additionally to this, there's be numerous APIs, plugin layers, and all sorts of things bolted onto this. For an obvious example, there'd be a storage interface.

Supposing Kendra licensed a reference database storage plugin under the BSD license. It'd mean that binary-only storage interfaces could legally be developed. Some people may well write GPL licensed plugins based on the reference code as well - that's okay, too. Personal choice.

But it keeps the core stuff - that which allows the plugins to all work everywhere - common and open, prevents the proprietary forks Bruce Perens mentioned, while still allowing closed-source involvement and highly liberal licensing for the non-core stuff.

The scope for possible proprietary exploitation is huge - management interfaces, reporting systems, all sorts of things. If they need the available APIs extended to support them, they have to do it through the GPL'd core - and that means two things:

1) The GPL'd core's APIs will get richer, for the benefit of all the developers.

2) The APIs will generally have to remain backwards compatible, since various different parties will be relying on them. In the case where they *have* to change for some reason (Like bad design), then there'll have to be a reasonable consensus for them to do so, and how.

As I said above, this will need a specific exception as an addendum to the license terms - typically, this might be 'GPL, but linking with otherwise GPL-incompatible software is allowed' - there's a whole bunch of information on the FSF site about this.

Dave.