Full disclosure: some of my code is in there, so I'm not an unbiased source.
Full disclosure: some of my code is in there, so I'm not an unbiased source.
s5msft commented 3 hours ago
@cjwl We're on it and definitely want to make this right. As a bit of background, (some of) our source code was originally C++ based (marked up to act like Objective-C). We then ran that source through a tool to generate "real" Objective-C code.
In any case, we're going through Foundation right now and will absolutely make this right.
They seem pretty serious about me, and honestly, their acknowledged mistake is pretty understandable. They also have loads of money that people could sue them for, so I'm sure they don't want to risk themselves either.They also got the copyright headers wrong when trying to fix Cocotron's stripped copyrights:
https://github.com/Microsoft/WinObjC/issues/35#issuecomment-...
I would expect better of Microsoft -- especially from a company that supported Oracle when suing Google over Android's copying of an API (which included an incidentally small number of actually-copied source). [1]
[1] http://www.infoworld.com/article/2613305/patents/microsoft--...
I have no idea how MS is going to rectify this.
1. Buy the rights from the original owners (if you are the owner, you can re - license your code under a different license).
2. MS can reimplement from scratch the problematic pieces of code.
3. MS can hire someone to write these missing pieces for them.
If I'm the writer of a GPL'd piece of software can I just decide to make it MIT one day?
What happens if I die tomorrow, could that code still be relicensed eventually?
What happens when there is no clear owner?
Other examples include MySQL, which was dual-licensed GPL and commercial, and KDE/Qt which also had a dual-licensing (and then a re-licensing).
If all contributors also accept to transfer copyright/ownership up-front, re-licensing is easier.
I'm guessing re-licensing after death would require waiting whatever period (70+ years?) for copyright to expire.
This stuff is relatively simple at its core. Copyright says, "You may not redistribute this work without permission from the copyright holder." An open source license says, "I grant you permission to redistribute this work, as long as you follow these conditions." Relicensing is just a matter of making another statement like that with different conditions.
If you die tomorrow, then the copyright transfers to your heirs, who could then do all the stuff you used to be able to do.
If there's no clear owner, then life becomes interesting. If there once was a clear owner who released the stuff with a license, that license is still valid, but relicensing isn't possible unless someone can demonstrate that they're the owner. If there was never a clear owner then you can't really use the stuff, although if you're brave you could proceed under the theory that if nobody claims ownership there is nobody to sue you.
Note to Microsoft: I will be happy to write you a new ObjC runtime if you'd like, at my usual rates.
I don't know offhand if their license would be suitable for Microsoft's purposes.
It's also kind of weird they're using OpenSSL instead of Microsoft's SChannel. Usually Microsoft are pretty good at only giving you one way to hang yourself in the security department - I'm a big fan of SSPI, even if the API is occasionally unwieldy. (And as soon as I wrote that, I remembered CryptoAPI vs CNG...)
Note that the commenting individual is the founder of the company acquired by Microsoft that provided this code.
For example, could I write program Foo.c (using CDDL license), which uses GPL'ed Bar.c and MIT'ed Dad.c (both unmodified)?
In some cases, such as with WinObjC, reverting to the most restrictive license makes the work unsuited for its intended purpose.
However, many copyleft OSS licenses have clauses that are genuinely incompatible with both other copyleft licenses, and less-liberal OSS licenses -- in such cases it's impossible to legally combine code under the licenses.
In your example, the CDDL and the GPL have incompatible copyleft restrictions; your resulting program wouldn't be distributable under the provided licenses.
A more common incompatibility example is that of the OpenSSL license and the GPL; GNU maintains a fairly complete list of incompatibile licenses here: http://www.gnu.org/licenses/license-list.en.html#GPLIncompat...
The GPL can basically not coexist with any other license, though lots of licenses (though perhaps fewer than the FSF claims, especially for GPLv2 and previous) allow code to be relicensed under the GPL (which is different from the code coexisting.)
The reverse is emphatically not true, GPL code generally cannot be relicensed (downstream; the copyright owner can do whatever they want) to another license, except newer GPL versions if the optional "or any later version" clause is included with the GPL.
Anybody who's terribly interested in all of this will probably enjoy reading the GPL FAQ, especially this bit:
http://www.gnu.org/licenses/gpl-faq.en.html#WhatIsCompatible
IANAL, YMMV, HTH, WTFBBQ, ETC.
By default, all code is copyrighted and effectively proprietary. Open-source licenses are one way to grant permission to copy them. Fancy contracts with expensive lawyers are another way. You can only do what the licenses way you can do, and in particular, the GPL says that you may not apply "additional restrictions" and the CDDL has some clauses that the GPL doesn't. So there is no way to satisfy both licenses with regards to redistribution.
You can negotiate for a different license. (This seems to be what MS did with objfw.)
Some would even claim that CDDL was designed solely to ensure ZFS could not be integrated with linux.