I'm not sure if this is possible or not, but I thought I'd open an issue to track the discussion.
Twitter Bootstrap is distributed under the Apache license, which is not compatible with the GPLv2. Since we're not actually committing the code to Drupal.org repositories, I'm not sure why compatibility with the GPL is a requirement.
Anyways, here's some related links:
Project page: http://twitter.github.com/bootstrap/
Download links: https://github.com/twitter/bootstrap/tarball/* or https://github.com/twitter/bootstrap/zipball/*
I also have an issue open in the Github issue tracker for the project for getting Bootstrap released under an additional license that might be more compatible with our packaging system: https://github.com/twitter/bootstrap/issues/2054
Of particular interest are Crell's comments on that thread.
Comments
Comment #1
redndahead commentedIt's released under the apache 2.0 license which is compatible with the gpl.
The reason why it has to be compatible with the gpl is because these licenses are distribution licenses and while we don't host it by packaging it we are distributing the software and have to worry about the license.
Comment #2
cweagansWait, no.
As I said in the issue body, the Apache license is compatible only with version 3 of the GPL (according to the link off of the Whitelist project homepage: http://www.gnu.org/licenses/license-list.html#apache2). That's the entire basis for that Github issue's existence: we need bootstrap available under a different license to be able to package it on Drupal.org.
Comment #3
redndahead commentedSo we are v2 or later. I guess the question is are we re-licensing all the software that is in the distribution package as gpl v2 or later? Or are they keeping their respective licenses? If we are re-licensing then I think we should re-license the distributions as gpl v3 or later. This would solve the incompatibilities.
Comment #4
cweagansIf Twitter grants Drupal.org contributors a license that is compatible with our packaging system, would that be sufficient?
Comment #5
greggles@cweagans #4 - absolutely. They'd have to grant it to anyone (since downloaders of drupal.org tarballs are not necessarily "drupal.org contributors").
@redndahead - makes sense, but I don't think we are likely to start saying "this tarball is GPLv3 based on the combination of software in it")
Comment #6
redndahead commented@greggles I'm not sure why we shouldn't. The reason we ask for gplv2 in code is because we haven't relicensed core yet. I don't think there is any legal/technical/spiritual reason why someone would object to making the distribution gpl v3 or later. Technically it's already gpl v3.
I'm willing to start a new issue on this. Where would be the best place to start it?
Comment #7
gregglesThere are also no plans to relicense core to remove support for gplv2 - http://drupal.org/licensing/faq#q12
The concern I have is that there may be a 3rd party library that is only gplv2 and then something like this that is only gplv3 and if we add them both to the whitelist people could make a package that has incompatible licenses. So, yes, "core + twitter bootstrap" is fine. But "core + twitter bootstrap + something else" could create a problem. I don't know where the best place is for this discussion.
Comment #8
cweagansIsn't it just a distribution license though? Wouldn't we be the only ones that need a special license? I wish they'd just dual license it and call it good, but they seem pretty resistant to that.
Comment #9
redndahead commentedI have started an issue here. #1449452: Give installation profiles/distributions GPLv3+ license as option for packaged downloads
Comment #10
geerlingguy commentedMarking as postponed until there's some movement on #1449452: Give installation profiles/distributions GPLv3+ license as option for packaged downloads.
Comment #11
cthiebault commentedAny news about adding Twitter Bootstrap to whitelist?
I need it for a distribution with a theme based on http://drupal.org/project/bootstrap...
Comment #12
cweagansNope. Still can't do it. Bootstrap is still only licensed under the Apache license, so we cannot include it until either Bootstrap's license changes or we do #1449452: Give installation profiles/distributions GPLv3+ license as option for packaged downloads
Comment #13
mpotter commentedI sure wish this issue would be addressed. We need Bootstrap for the Open Atrium 2 project as well.
Comment #14
cweagansFeel free to address it. There's a relicensing issue in the Twitter Bootstrap issue queue. Start here: https://github.com/twitter/bootstrap/issues/2054#issuecomment-15421838
There are a few remaining tasks. There's a link in that comment to the form responses. The form responses spreadsheet has the raw data from the Google form, and the second page lists all contributors and their response.
The big task it to go through the remaining data in the form responses sheet (I stopped at line 135 or so) and put that data into the second sheet. When everyone is a YES, then we can move forward with relicensing Bootstrap, thereby unblocking this issue.
I think there's only been one or two people to say no, so another task would be to reach out to those people and clarify what exactly they don't like about the MIT license and see if you can change their mind. If that's not possible, then go through the repository and see what they've contributed. If it's insubstantial, submit a pull request to roll it back to unblock the relicensing issue.
I don't have time to spend on the relicensing project right now, so you'll likely beat me to it.
Comment #15
pirog commentedDon't have a ton of time but am willing to help resolve this issue. Any movement since last post? Any suggestions on path of least resistance? Looks like some headway was made on #1449452: Give installation profiles/distributions GPLv3+ license as option for packaged downloads but has recently stalled.
@mpotter, what did you guys end up doing for OA2?
Comment #16
cweagansNope. Haven't had time. Feel free to run with it. I'll give you edit access to the contributor spreadsheet if you need it.
Comment #17
cweagansI'm just going to throw this out there: 1339452 is probably not going to happen in the foreseeable future, as it's going to require mass community consensus in terms of the relicensing.
Path of least resistance is to get Bootstrap to relicense, as the maintainer has already said that's a good path forward.
Comment #18
gstein commentedPer my comments in https://github.com/twbs/bootstrap/issues/2054, the idea that ALv2 is somehow incompatible with GPLv2 is very arguable. Eben stated that nearly a decade ago, contrary to all discussion with people at the Apache Software Foundation. The ASF believes they are compatible. Eben/FSF say otherwise.
There should be no problem including Bootstrap as ALv2 into Drupal. If you believe there is a problem, then I'd be curious why you hold that belief (beyond "the FSF website says so").
(see the Bootstrap issue for additional info)
Comment #19
cweagansThe FSF website says so because that what their lawyers recommended. Our lawyers have reviewed the licenses and the FSF information and have agreed.
Whether or not there is actually a problem isn't the point to debate. The point is that there's legal uncertainty around whether or not there could be problems, so our lawyers have deemed it in our interest to protect us from any potential legal issues by helping us create this policy.
It's a CYA thing.
We're not willing to risk the security of the Drupal community over potential licensing issues, which is why we have this policy.
I don't know how many other ways this can be said. In any case, changing this policy is OT in this issue (and in the Github issue, for that matter).
Comment #20
mpotter commentedpirog: For OA2 we ended up referencing Bootstrap via an external CDN in the theme's template.php:
drupal_add_js('netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/js/bootstrap.min.js', 'external');
I really dislike needing to do this (adding a hardcoded external dependency) but at least in this regard we are in no way "distributing" Bootstrap with Drupal+OA2. I don't have time to deal with licensing issues either, so hopefully others in the field (Drupal and/or Bootstrap) will resolve this someday.
Comment #21
kreynen commentedCongrats @cweagans! 2+ years later, It looks like future releases of Bootstrap will be dual licensed as APL2 and MIT.
https://github.com/twbs/bootstrap/issues/2054
https://github.com/twbs/bootstrap/pull/9994#issuecomment-25754638
https://github.com/twbs/bootstrap/pull/11105
Comment #22
socialnicheguru commentedhow is this done with http://drupal.org/project/twitter_bootstrap_ui?
could that module be used as an alternative for developers to include bootstrap on their own?
The use case is what happens when you are on a website and you loose internet access. While content might not be visible, you shouldn't loose your UI. Many elements just won't work.
Comment #23
btopro commented#22 is unrelated.
https://github.com/twbs/bootstrap now appears to have the MIT license added as of a month ago. As this is a pretty major package for d.o. to have access to w/ the popularity of bootstrap I'm not going to push this ahead but definitely +1'ing adding it to the packaging white-list.
Comment #24
kreynen commentedOn https://github.com/twbs/bootstrap it still says...
Posted https://github.com/twbs/bootstrap/issues/11487 to confirm
Comment #25
btopro commentedmy assessment was less it saying it's going to be MIT and more the license that's packaged
https://github.com/twbs/bootstrap/releases/tag/v3.0.2 comes with LICENSE-MIT and https://github.com/twbs/bootstrap/commit/dd5c8a53eec70ea84bc89235e2a4cd0... has the commit that made this change (a month ago).
Comment #26
kreynen commentedIt would have been a lot less confusing if they didn't commit the MIT license until 3.1 or excluded from the 3.0.2 download, but I'm assuming that was done to prepare for the change as part of the "By contributing your code, you agree to dual-license your contribution" clause they added with the same commit.
Unless someone with authority to speak for the project says otherwise in a response to https://github.com/twbs/bootstrap/issues/11487 or the license in the header of https://github.com/twbs/bootstrap/blob/master/dist/js/bootstrap.js changes, I think we should assume this is still Apache v.2 until the 3.1 release.
Comment #27
kreynen commentedhttps://github.com/twbs/bootstrap/issues/11487
Comment #28
lightsurge commentedIt looks like this has happened earlier than expected.
At least, I can find no reference to the Apache 2 license in the readme or the javascript:
https://github.com/twbs/bootstrap/blob/master/dist/js/bootstrap.js#L10
Comment #29
lightsurge commentedIndeed it has https://github.com/twbs/bootstrap/issues/2054#issuecomment-30894685
Comment #30
kreynen commentedThis is getting really close, but there still isn't a packaged release that can be whitelisted. We could whitelist https://github.com/twbs/bootstrap, but then developers could pull any release. I think most developers could be trusted to only pull the MIT licensed master, but we already have copies of the Apache 2.0 in contrib and don't seem to have any structure to get non-GPLv2+ or GPLv2 compatible code removed once it's been committed.
#2175005: [META] Changes are required before it will be safe to assume code from Drupal.org's git repo is really GPLv2+ or GPLv2 compatible
Until we can remove an Apache 2.0 licensed version of Bootstrap quickly or Boostrap releases a stable, packaged release we can whitelist from a URL like https://github.com/twbs/bootstrap/releases/download/v3.1..., whitelisting the git path now is only going make a bad situation worse.
Unless there is a way to prevent pulling the old Apache 2.0 files with a regular expressions, I think we're still waiting on a release and will only be able to whitelist release > that 3.1.
Comment #31
redndahead commentedWe can't prevent everything. I would probably wait until the stable release comes out and then whitelist the normal way. You certainly don't want to work with whitelisting 3.1 then 3.2 etc. And I don't think the extra regex work is worth it.
Comment #32
lightsurge commentedProbably missing something here, but isn't 'master' likely to stay MIT now?
https://raw.github.com/twbs/bootstrap/master/dist/js/bootstrap.js
Know there's a chance it could change again, but it doesn't seem that big a risk?
I would've thought it'd make sense to have the development branch(es) of a library like this available for installations, for use in development branches of distributions etc. on drupal.org
As I say, I might well be missing something here though. And not in any rush, think 3.1 could be here anytime soon.
Comment #33
kreynen commentedThe issue isn't the Bootstrap license changing, but developers taking advantage of a regular expression that is too flexible to grab the 3.0.3 release instead of the soon-to-be released 3.1.0 release. We'd normally just whitelist ^(git|https)://github\.com/twbs/bootstrap/.+$
That would allow you to use either of these in their .make...
libraries[bootsrap][download][type] = git
libraries[bootsrap][download][url] = "git://github.com/twbs/bootstrap.git"
libraries[bootsrap][download][revision] = af5cebf76bac01177c9307adb2d38c896ce6f04e
libraries[bootsrap][download][branch] = master
libraries[bootsrap][download][url] = https://github.com/twbs/bootstrap/archive/master.zip
Both of those would be fine, but you could also add..
libraries[bootsrap][download][type] = git
libraries[bootsrap][download][url] = "git://github.com/twbs/bootstrap.git"
libraries[bootsrap][download][revision] = 3887f540b978d593f433bfef15888bc2d103de72
libraries[bootsrap][download][url] = https://github.com/twbs/bootstrap/releases/download/v3.0.3/bootstrap-3.0...
That would get you the older Apache 2.0 version.
But @lightsurge, is correct that the regex for the raw link would work because it can be limited to only the master.
Adding ^https://raw\.github\.com/twbs/bootstrap/master/.+$ would allow a developer to package https://raw.github.com/twbs/bootstrap/master/dist/js/bootstrap.js, but not be commit tag like https://raw.github.com/twbs/bootstrap/3887f540b978d593f433bfef15888bc2d1....
The downside of the raw links is every file has to be downloaded individually and the directory structure recreated, but it's a start. I added https://drupal.org/node/2175973 so developers who want to get started packaging this can. Changing the status to "needs work". As soon as there is an actual release, we'll whitelist that as well.
Comment #34
redndahead commentedI think we are fine to use the generic whitelist. If you can come up with a regex that will allow 3.1+ then that would be fine too, but certainly not whitelist 3.1 then whitelist 3.1.1 etc.
Comment #35
hswong3i commentedhttp://blog.getbootstrap.com/2014/01/30/bootstrap-3-1-0-released/
Shall whitelist now update as below?
Comment #36
kreynen commentedI updated https://drupal.org/node/2175973 to include any 3.1.x or 3.2.x release in addition to the raw.github.com expression that was already allowed (that allowed any file in the master branch directly like https://raw.github.com/twbs/bootstrap/master/js/modal.js).
Because 3.1.x changes more than just the license, anyone using Bootstrap is likely going to need to update their project before including the 3.1.x release. Whitelisting future 3.2.x should allow this entry to work for several years. After 3.2, it would probably be safe to allow any Bootstrap release since there would be very little incentive to using an older, Apache 2.0 licensed release.
Of course complying w/ these strict GPLv2 policies makes Drupal less competitive with other CMSes. Joomla already includes the Apache 2.0 version of Bootstrap in their core 3.x release...
https://github.com/joomla/joomla-cms/blob/staging/media/jui/js/bootstrap.js
... yet the Joomla project is still distributed w/ a GPLv2 or later license.
WordPress has allowed any license that's GPLv2 or later (meaning licenses compatible with GPLv3) to be included in plugins...
http://make.wordpress.org/core/2012/04/30/the-plugin-directorys-licensin...
This gives WordPress developers the flexibility to include more libraries than Drupal developers as well as fonts using several font specific FLOSS licenses (SIL Open Font License, GPLv2 w/ font exception, Ubuntu Font License, etc) and Creative Commons v4 licensed images and content.
I'm glad this specific issue is finally resolved for the developers trying to play by the rules, but unless something is actually going to be done with the Apache 2 licensed versions of Bootstrap already in Drupal's git repo and being distributed from Drupal.org, this just seems like a waste of everyone's time.
Comment #37
hswong3i commentedThank you for the fix (finally, after 2 years...), so now can include Bootstrap code officially and legally.
On the other hand, I can't agree more about "this just seems like a waste of everyone's time"... IMHO, applying GPLv2+ in Drupal is not the ONLY reason for encourage people for contribution. Now a day, people just hope to contribute, and don't really care about licensing anymore...
Now a day, Drupal.org GPLv2+ ONLY policy no longer a catalyst for encourage contribution, but just discouraging the adoption and integration of latest FOSS community progress...
Comment #39
hswong3i commentedSorry kreynen the regex is not really works...
See drustack 7.x-26.68 build message:
Please consider to update it from:
To:
Comment #40
geerlingguy commentedI updated it to accept any version beginning with
v3.[1-9], instead of checking 3.1.x or 3.2.x specifically. Tested with 3.1.1, 3.1.0, and 3.2.1, should be working.Comment #41
kreynen commentedhttps://github.com/twbs/bootstrap/releases/tag/v3.0.1 and everything < 3.1 is still apache2.
Comment #42
geerlingguy commentedThe regex above should work fine; it only allows 3.1 and greater, at least according to http://regexpal.com/