microsoft / referencesource

Source from the Microsoft .NET Reference Source that represent a subset of the .NET Framework
https://referencesource.microsoft.com/
MIT License
3.16k stars 1.27k forks source link

License is unclear (both "MIT" and "All rights reserved" are mentioned) #55

Closed lemoinem closed 5 years ago

lemoinem commented 6 years ago

The LICENSE file both refer to MIT License. However, the README file reads: "The files in this repository are licensed with the MIT license unless otherwise specified in the file header."

And pretty much every file in the repo has the header: Copyright (c) Microsoft Corporation. All rights reserved.

Are these headers intended to fit the "otherwise specified in the file header" restriction?

In this case, the MIT License would be basically useless and none of the code could be used or modified.

If it's not the case, would it be possible to add an example of what "otherwise specified in the file header" means? If an example is not feasible, would it be possible to add a note mentioning this header in particular does not fit this restriction?

EDIT: I'm referring, in particular, to the All rights reserved. mention

akoeplinger commented 6 years ago

Copyright is not the same as a License (https://opensource.stackexchange.com/questions/297/whats-the-difference-between-copyright-and-licensing) so there's no contradiction here.

An example of a file with a different license would be this file which is licensed under Apache License, Version 2.0: https://github.com/Microsoft/referencesource/blob/4fe4349175f4c5091d972a7e56ea12012f1e7170/System.Core/Microsoft/Scripting/Utils/Action.cs#L1-L14

jakesays-old commented 6 years ago

Yeah I don't understand what the issue is. Licensing does not automatically give up copyright.

lemoinem commented 6 years ago

I understand the difference between Copyright and License, but thank you for the link, very interesting.

I'm confused about the "All rights reserved." mention. It seems to negate the rights granted by the MIT License.

In your example for Apache License, there is no "All rights reserved." mention in the file, because some rights are granted by Microsoft as part of the License.

However "All rights reserved." in the other files would imply that rights to copy, use, distribute, etc. are reserved by Microsoft (hence, not granted to anyone). Thereby negating the MIT License.

akoeplinger commented 6 years ago

This has a good explanation: https://opensource.stackexchange.com/questions/2121/mit-license-and-all-rights-reserved

jakesays-old commented 6 years ago

@lemoinem i believe the idea is the copyright owner maintains all their existing rights, and the right to change the license at any time. in other words, ms can continue to provide closed source products with it, etc.

lemoinem commented 6 years ago

Thanks to both of you for your answers. The second answer in the link @akoeplinger provided illustrates perfectly my understanding of it.

In the context of Copyright, All rights reserved does not add anything, as its the default Copyright position. As you clearly stated, Copyright assertion is distinct from License granting.

I understand "All right reserved" is there for historical reasons. However, in the context of licensing, it becomes important because it is the expression of a granting (or more precisely a denying) of rights and a license in its own right (albeit an extremely restrictive one).

And legally, although, IANAL, I've come to understand (the hard way) that the letter rather than the intent usually prevails...

Going by the letter, the README explicitly mentions that "The files in this repository are licensed with the MIT license unless otherwise specified in the file header." and most of the file headers explicitly mention "All rights reserved". Going through the motion, "All rights reserved" would be what takes precedence here...

If that's not the intent, I believe it should be mentioned.

MichaelKetting commented 5 years ago

@terrajobst since this issue still requires an official response, do you maybe have some insight you could share in regards to the licensing situation? In particular, my interest in the question stems from whether or not we're allowed to fork those parts of the .NET Full Framework that haven't been ported to .NET Core and are not on Microsoft's roadmap for doing so (e.g. ASP.NET Web Forms, WCF Server, etc)

Best regards, Michael

jakesays-old commented 5 years ago

@lemoinem I am aware of only two licenses used in the reference source - MIT and Apache, and the file headers are used to make the distinction. Have you found files that do not conform to this?

MichaelKetting commented 5 years ago

@jakesays I've picked two files, one from mscorlib and one from System.Web and they have the same basic license information, just different formatting. Neither one references MIT or Apache.

https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/Lazy.cs

Copyright (c) Microsoft Corporation. All rights reserved.

https://github.com/Microsoft/referencesource/blob/master/System.Web/UI/Page.cs

//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------

jakesays-old commented 5 years ago

@MichaelKetting Then those would by default be covered under the MIT license as stated in the readme.

MichaelKetting commented 5 years ago

@jakesays Maybe. My problem is, that I see the same caveat as @lemoinem does:

Going by the letter, the README explicitly mentions that "The files in this repository are licensed with the MIT license unless otherwise specified in the file header." and most of the file headers explicitly mention "All rights reserved". Going through the motion, "All rights reserved" would be what takes precedence here...

It's quite possible, and in fact, likely, that Microsoft intends for those files to be MIT licensed, but when you have to make far-reaching business descisions based on the available information, you just can't afford any such ambiguity. There is too much at stake when your assumptions turn out to be wrong and you have to scrap your entire application stack.

jakesays-old commented 5 years ago

@MichaelKetting I get what you're saying, but I don't see the ambiguity. Read me basically says "unless otherwise specified this repo is MIT". The fact that those files mention all rights reserved doesn't take away from that. I disagree with @lemoinem assertion that all rights reserved takes precedence. Microsoft cannot rescind the licence it has granted on the currently released code - they can only change the license on future releases. With the exception of files that explicitly declare a license other than MIT, the entire repo is MIT. So far the only explicitly mentioned license that I am aware of is Apache.

However I do realize this discussion is basically academic as neither of us are attorneys :)

MichaelKetting commented 5 years ago

@jakesays me too, regarding the attorney-stuff. That's why I'm hoping to get official word from Microsoft on this topic. Although, I have a (non-lawyer) colleague who did a deep dive into OSS-licenses, and he, too, is wary on this particular subject.

This discussion also the reason why OSS licenses usually recommend adding the specific licenseheader (or at least an abbreviated version with a refernece to the full license) to each file (where sensibly possible). It just removes any ambiguity and preserves the integrity of the license even when copying an individual file.

In the end, when you use OSS licensed code commercially, you have to trust in the integrity of the license or you expose yourself to potential and signitifcant risk for your business.

terrajobst commented 5 years ago

I've clarified the meaning in the README.

MichaelKetting commented 5 years ago

@terrajobst Thank you for spelling it out clearly. This helps a lot!

lemoinem commented 5 years ago

Thank you!