Closed Bug 1155181 Opened 5 years ago Closed 5 years ago

Servo source code licensing policy

Categories

(mozilla.org :: Licensing, task)

x86
macOS
task
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: larsberg, Assigned: gerv)

References

()

Details

Servo is a new web engine that we are building, similar to Gecko.
- Source code in Servo itself is MPLv2
- Source code in any submodules / separate code repositories that we create is Apache v2 / MIT dual license

Our questions are:
1) Are these the right license choices for Servo and for our submodules?
2) What are the permissible licenses for any additional submodules from the community that we link into Servo? Rust (which Servo is written in) statically links all code, if that makes any difference (it does not have a mature dynamic linking story today).

Currently, we can see Rust code that we are using with the licenses: Apache-2.0, CC0-1.0, MIT, and MIT/Apache-2.0. There are also some C codebases that we statically link in that we have not yet assessed the license of.

Thanks!
> - Source code in any submodules / separate code repositories that we create is Apache v2 / MIT dual license

Not always. Some are MPL2, some are just MIT. But that’s only because we’re unclear on what it *should* be.

(Apache 2 / MIT dual license is what Rust does.)
Before I answer your questions, help me with a few of my own:

* When new code is written, how is it decided whether it is part of "Servo itself" or placed in a separate repo/submodule?

* Can you give me some examples of submodules that you use, and what they do? 

* How much of the code in a) Servo itself, and b) the submodules you use was written by Mozilla employees?

* Does Servo yet have any equivalent of about:license?

* Do you have specific goals with your licensing, in terms of things you want people to be able to do, or not do?

Gerv
1) Code is generally placed into a submodule if it could be reused independently. We have done this not just for things like Rust wrappers for Cocoa libraries (https://github.com/servo/rust-cocoa) but also for core components such as our HTML parser (https://github.com/servo/html5ever).

2) Along with those two examples, there are a total of 84 submodules that Servo depends on today, which are all listed in the file https://github.com/servo/servo/blob/master/components/servo/Cargo.lock. Each of the [[package]] sections where there is also a `source` attribute represents an external submodule.

3) A little over half of the commits to Servo are by Mozilla employees. The breakdown for submodules varies from nearly 100% Mozilla employees to nearly nothing by Mozilla employees

4) We do not yet have an equivalent of about:license.

5) I believe that our goals with our licensing are:
  a) Protect Servo the browser in a manner similar to Gecko to enable building strong partnerships
  b) Maximize reuse and especially contributions in submodules where we do not need additional "leverage" from the MPL. e.g.

I have CC'd dherman for additional feedback on #5, as I know he has strong opinions there.
The right license choice depends on your goals. Mozillians are not of one mind about the right approach to licensing - so when you say "maximise reuse and contributions", you will find different people advocating different approaches to doing that. Some say liberal licensing maximises reuse; others says some form of copyleft encourages comunity and sharing, and maximises contributions.

Anyway, if Gecko is taken as a model, then code _we_ write should all be MPLed, even if we import third party code under Apache, BSD or the like. If code could one day become part of Rust, it would make sense for it to be under the Rust dual license.

The major permissible licenses for code linked into Servo would be: MIT, BSD, Apache, and MPL 2. For anything else, ask.

Gerv
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.