Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upPick a license #45
Pick a license #45
Comments
|
There's a lot of cross-pollination between rust and servo so probably MIT everywhere is easiest. |
|
Let's not do this without consultation. We would prefer a license with a patent clause that we know works with prospective partners. I'll start a mail thread. /be |
|
There could be a big benefit to using the MIT license as this would be the only browser available under a permissive license (WebKit is LGPL, Gecko is MPL, others proprietary). Even without debating the benefits of permissive licensing, there is a benefit to having different licensing than existing browsers to fill a different need and attract new users. |
|
MPL is weak copyleft, file-wise only. This has not been an impediment in practice, and it has helped notably in some cases where we'd lose valuable work to private forks. MPL2 simplifies the MPL and fixes license interop. There's possibly some patent magic words in ASL2 that make it more desirable to some commercial outfits, but we're working on this. I do not see either "license differentiation" or "uniform permissiveness" as goods. The license is a tool, a means to an end. One end could be widest possible use (including fragmentation into private/commercial forks). Another could be give-back by file a la MPL. Another would be having the right patent words. We should choose deliberately and not just go for MIT to be same as Rust, or to be more permissive than other engines -- including Gecko, which is permissive enough in practice. /be |
|
I agree with kripken, and would in fact be hesitant to use even a layout engine distributed under a "weakly" copyleft license like the MPL in any of my projects, to say nothing of compatibility problems between copyleft licenses. I do not find Gecko "permissive enough in practice", and many others feel the same way. I think the MIT/X11 License is an excellent choice. |
|
@apotheon Rust itself is planning to move from MIT to Apache License v2, due to the issue of protection from patents. Presumably that's now the other major contender for Servo's license, alongside MPL2. I'd also be interested to hear why you'd be hesitant to include weakly-copyleft code in any of your projects; MPL2 is (afaict) specifically designed to be used with proprietary projects, with its file-level licensing allowing it to be easily embedded and used alongside closed-source files as long as you make available any changes to the licensed files themselves. |
|
Also, MPL2 is compatible with GPL/LGPL, so I would like to hear of concrete problems of the "to say nothing of compatibility problems between copyleft licenses" kind. /be |
|
The Apache License 2.0 is a pretty crummy license in general, and is not as permissive as people like to think. Apart from just general complexity, it also suffers from bookkeeping and project organization clauses, though I don't mind patent clauses at all. The only actually copyfree license I know that comes with a patent grant is the COIL, which is not the most widely used license in the world, though I'd use it if someone insisted on a patent clause just to avoid the restrictiveness of the ASL2. I'm hesitant to use weakly copyleft licensed code in any of my projects mostly because of the increased compliance overhead involved in dealing with those licenses, the limitations it might impose on the more widespread use and distribution of my project because other people might avoid a partially copyleft project, and the general issues with license complexity that apply to all the popular copyleft licenses. I strictly stick to copyfree licenses for my own code, and copyleft licenses can make things difficult if I want to actually extend someone else's code when combining it with a project of mine (and I dislike throwing code into the black hole of copyleft licensing anyway). My dislike for copyleft licenses -- weak or strong -- has nothing to do with any desire to use others' code in commercial proprietary projects; I try to avoid contributing code to them, too, except on the rare occasion someone pays me a premium for transfer of copyright on contract work (and part of the reason for the premium they have to pay is that I prefer to discourage clients from keeping code I write closed). As for the question about compatibility between copyleft licenses, the fact the MPL is friendly with the GPL is a matter of a specific exception being made. The MPL is not compatible with other copyleft licenses besides those maintained by GNU/FSF. edit: license name superseded |
|
I also hear that the likely plan for Rust is not switching to AL2, but dual-licensing MIT/X11 + AL2 -- which isn't a bad idea, if you feel like you absolutely must have the Apache License 2.0 for some reason. If contributors are required to disjunctively dual license contributions that way, you get both the patent clause and the copyfree licensing option for downstream users. |
|
Rust relicensing is mostly complete, so it's time to start getting Servo sorted out. Here is the minimum I intend to do:
As far as sub-repos this is what I plan: Classify each repo Servo uses as either servo-oriented, rust-oriented, or 3rd-party-oriented. servo projects (currently servo, servo-gfx at least) will use the Servo license, Rust projects will use the Rust license, 3rd-party projects and their bindings will use their own license. Currently there are 29 sub-repositories and most are bindings that I would classify as 3rd-party. Servo projects will be set up like Servo, Rusty projects like Rust. Bindings to external libraries I will add a LICENSE file with the original library license, though I expect my licensing vigilance to wane the further I get away from core Servo code. We've discussed adding an exception to Servo's license to allow code to be relicensed in the event it gets included in Rust, but if everybody agrees to license Rust projects and Servo projects differently then maybe we don't need those exceptions. We can be forward-thinking and do our prototyping of standard library features in subrepos that already carry the right license. Also, all Servo code is still written by MoCo employees and that will probably remain true for the next year at least. I think I prefer to avoid tacking on our own language to the license (though I made a big deal about it earlier). For the heck of it, here is how I would classify (and license) our current subrepos: 3rd-party (other license) src/libcss (remotes/mozilla-servo/master) Rust (MIT/ASL2) license src/rust-cocoa (remotes/origin/HEAD) Servo license src/rust-css (remotes/origin/HEAD) The only one I might prefer the Servo license for is rust-css. This is a generic library for parsing and selector matching. It is currently a wrapper around libcss, but it is intended to be rewritten completely in Rust someday. |
|
Why MPL, exactly? |
|
Has any progress been made on this front? I'm curious. |
|
@steveklabnik No progress. |
|
I'd love to see Servo go with a license that's A. OSI approved, B. reasonably well known and widely adopted, so that it's implications are well understood, and C. fairly permissive. IMO, the ASLv2 would be a pretty good choice, as would the new BSD license, or the MIT license. The MPL isn't bad per-se, but I feel like it's a license that not a lot of people understand really well, so I would not put it real high on the list personally. Anyway, anything but the CPAL, or the AGPL or some obscure license that's only used by like 2 other projects in the world... :-) |
|
+1 for extra overhead when including work with more complex licenses than MIT/BSD like apotheon mentions. It's often a one-way road when including work with a less permissive license which can feel a bit unfair and is often explained in the media "the wrong way" (like "Apache OpenOffice (AL2) won't allow inclusion of LibreOffice code (LGPLv3)"). In light of Mozilla's "Doing good is part of our code" I would suggest the shortest, simplest and most permissive license possible, that will add the least (no) overhead to those that include this code. @apotheon Never heard of this Tesla or COIL license before but it looks really interesting as a MIT alternative with patent clause. From https://www.wikivs.com/wiki/Apache_License_vs_COIL#Comparison:
|
|
I've started on this. In all servo repositories that are not simply forks of an upstream project I have done one of two things: In some projects I've added a LICENSE file containing the text of the MPL2. The main repository, rust-azure, rust-cairo, rust-css, rust-mozjs are licensed this way, either because their upstreams are MPL or because they are core parts of servo. To the remaining repositories without preexisting licenses I've added a COPYING file containing the following text.
Plus the LICENSE-APACHE and LICENSE-MIT files. This is the same licensing as Rust. Next I'll contact non-moco contributors to all repos and get them to send me an email explicitly licensing their code under the relevant terms. Then I will add a tidy script to our build process that verifies that all source files have the proper header, then add all the missing headers. |
|
So . . . dual-licensed MIT/X11 License and Apache License 2.0. I find this encouraging (mostly because of the MIT/X11 License option). Thanks for your efforts, brson. |
|
@apotheon Only some parts of servo are MIT/APL2. The engine itself, the code in the main repo is MPL2. |
|
Oh, crap. Well . . . good luck, I guess. I'll have to find what I need elsewhere. |
Add some tests for the named property getter on the document object.
Migrate apk-builder from old_io to new io
Implement copyTexImage2D, copyTexSubImage2D and texSubImage2D Implement copyTexImage2D, copyTexSubImage2D and texSubImage2D and add rules to the `.gitignore` for vim users. Let me know if I missed anything! Blocked by: servo/gleam#80 <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/webrender_traits/45) <!-- Reviewable:end -->
# This is the 1st commit message: Don't access the reflector when dropping a Promise (fixes servo#18651) The reflector may be dead already. # This is the commit message servo#2: Run automated test for memory report charter. # This is the commit message servo#3: Run memory charting test on CI. # This is the commit message servo#4: Move the TravisCI test to the quick group. # This is the commit message servo#5: Add timeout pref to the mozilla/worklets wpt tests # This is the commit message servo#6: Added .ini for test_paint_worklet_timeout.html # This is the commit message servo#7: Update the in-tree status of WPT syncing. # This is the commit message servo#8: refactor(window): reference winit where applicable - relates with servo#20299 # This is the commit message servo#9: Update mozangle to 0.1.6. # This is the commit message servo#10: Update to handle WebRender API changes Items now only take a clipping rectangle instead of a LocalClip. # This is the commit message servo#11: Update WR (local clip API change, texture cache optimizations). # This is the commit message servo#12: Update the MULTIPROCESS static when changing default options # This is the commit message servo#13: Add Windows support to the --nightly | -n flag. # This is the commit message servo#14: build(cargo): enable webrender capture feature # This is the commit message servo#15: feat(windowevent): expose CaptureWebRender event # This is the commit message servo#16: feat(window): bind hotkey to trigger capture event # This is the commit message servo#17: Avoid using WPT test runner to update the test manifest. # This is the commit message servo#18: Use typed coordinates. We use Size2D and Point2D across compositing, constellation and script, losing the type of pixels we use (DevicePixel, DeviceIndepententPixel or CSSPixel) along the way, which might lead to bugs like window.outerHeight not taking into account the page zoom (using DeviceIndepententPixel instead of CSSPixel). # This is the commit message servo#19: alias some euclid types # This is the commit message servo#20: remove WindowMethods::size() # This is the commit message servo#21: Remove update-manifest argument that is no longer valid. # This is the commit message servo#22: Update web-platform-tests to revision e87f38097902e16348d4e17f4fe3bc2d0112bff1 # This is the commit message servo#23: Add icon to servo.exe # This is the commit message servo#24: Use mozjs 0.3 fork without Heap::new # This is the commit message servo#25: Root JS object members in dictionaries # This is the commit message servo#26: Root `any` members in dictionaries # This is the commit message servo#27: Add key/value iterable HTML benchmark # This is the commit message servo#28: Fix tabs # This is the commit message servo#29: Use upstream mozjs 0.3 # This is the commit message servo#30: Update WR (radial gradient optimizations). # This is the commit message servo#31: CounterBound::Integer made to store an Integer # This is the commit message servo#32: style: Remove unsound Atom From implementations. Fixes servo#20158 # This is the commit message servo#33: style: Cleanup @-moz-document parsing a bit. MozReview-Commit-ID: 7vd0BLAqM0v Bug: 1446470 Reviewed-by: xidorn # This is the commit message servo#34: style: Allow @-moz-document url-prefix() on content. MozReview-Commit-ID: zaT41fpsDT Bug: 1446470 Reviewed-by: xidorn # This is the commit message servo#35: style: Add another pref to control the url-prefix hack. MozReview-Commit-ID: D4qL0oO69Uh Bug: 1446470 Reviewed-by: xidorn # This is the commit message servo#36: style: Update bindings. # This is the commit message servo#37: Update web-platform-tests to revision 790e6601ee8b4b412b6ad9f6fde466b7ccb9cb7e # This is the commit message servo#38: style: Better Shadow DOM assertions. Bug: 1445682 Reviewed-by: xidorn Differential Revision: https://phabricator.services.mozilla.com/D748 # This is the commit message servo#39: Support memory report logs with interleaved non-report output, added automated tests # This is the commit message servo#40: Update WR revision. # This is the commit message servo#41: Add Servo_Property_IsShorthand to geckolib/glue.rs # This is the commit message servo#42: Re-expose webrender debugger feature in components/servo Update ws in debugger to 0.7.3 Update lockfile # This is the commit message servo#43: Update web-platform-tests to revision 3ec34e5a2c8cbeeb7fad521cce0daf923b272a92 # This is the commit message servo#44: Make `type` argument as optional and ignore it in open method # This is the commit message servo#45: Update steps with new spec # This is the commit message servo#46: Make type-argument.window.js test as pass # This is the commit message servo#47: Simplify GetTexParameter # This is the commit message servo#48: Simplify VertexAttribOffset # This is the commit message servo#49: Simplify BufferParameter # This is the commit message servo#50: Simplify GetShaderPrecisionFormat # This is the commit message servo#51: Update web-platform-tests to revision 3a8328470d53c4501e31cec2775c4d33821c2275 # This is the commit message servo#52: Mouse position from glutin is DevicePixel # This is the commit message servo#53: Update servo-websocket to 0.21 # This is the commit message servo#54: Bump ipc-channel and bincode This required bumping uuid too which unfortunately duplicated rand. # This is the commit message servo#55: Remove our dependency on the gcc crate # This is the commit message servo#56: Blobs support typed arrays now # This is the commit message servo#57: Bump parking_lot to 0.5 # This is the commit message servo#58: initial shot at initial steps # This is the commit message servo#59: Second shot at initial steps # This is the commit message servo#60: Progress on initial steps # This is the commit message servo#61: initial shot at initial steps
Servo still does not claim to be distributed under any license. There are probably only two options, MIT (the Rust license) and MPL.
We do have an OFL licensed font in the repo.