Code Monkey home page Code Monkey logo

choosealicense.com's Introduction

ChooseALicense.com aims to provide accurate, non-judgmental, and understandable information about popular open source licenses in order to help people make informed decisions about the projects they start, maintain, contribute to, and use.

We catalog select open source licenses with a Jekyll collection (in _licenses). The catalog is used to render ChooseALicense.com and is regularly vendored into Licensee, which GitHub uses to provide a license chooser and license detection, a licenses API, and to display license descriptions and metadata.

Goals

  • Be accurate, non-judgmental, and understandable. Our goal is to help you find a license that meets your goals.
  • The homepage should have just enough to help most folks make a decision about what license to use for a project they contribute to.
  • For the rest, the site will contain additional information about licenses common to specific communities and situations.
  • Collaborate with and reinforce other licensing best practices and standards projects.
  • Not comprehensive. Seems like an odd goal, but there are a bajillion licenses out there. We're going to have to filter that down to a small list of those that matter.

Run it on your machine

Managing Dependencies

It may be the case that your system doesn't have the required dependencies. You will need cmake and make installed on your computer.

For MacOS, use Homebrew to update your dependencies (install Homebrew from https://brew.sh/):

brew install make cmake

For Linux/Ubuntu, use the apt-get tool to install the dependencies:

sudo apt-get install make cmake

Installing and Running the tool

git clone https://github.com/github/choosealicense.com.git --recursive
cd choosealicense.com
./script/bootstrap
./script/server

Open http://localhost:4000 in your favorite browser.

If you encounter any issues with the above steps, please refer to the official Jekyll documentation and this guide on running Jekyll as a non-superuser for more detailed installation instructions.

Adding a license

For information on adding a license, see the CONTRIBUTING file.

License metadata

Licenses sit in the /_licenses folder. Each license has YAML front matter describing the license's properties. The body of the file contains the text of the license in plain text. The available metadata fields are:

Required fields

  • title - The license full name specified by https://spdx.org/licenses/
  • spdx-id - Short identifier specified by https://spdx.org/licenses/
  • description - A human-readable description of the license
  • how - Instructions on how to implement the license
  • using - A map of 3 notable projects using the license with straightforward LICENSE files which serve as examples newcomers can follow and that can be detected by licensee in the form of project_name: license_file_url
  • permissions - Bulleted list of permission rules
  • conditions - Bulleted list of condition rules
  • limitations - Bulleted list of limitation rules

Optional fields

  • featured - Whether the license should be featured on the main page (defaults to false)
  • hidden - Whether the license is neither popular nor fills out the spectrum of licenses from strongly conditional to unconditional (defaults to true)
  • nickname - Customary short name if applicable (e.g, GPLv3)
  • note - Additional information about the licenses
  • redirect_from - Relative path(s) to redirect to the license from, to prevent breaking old URLs

Auto-populated fields

The licenses on choosealicense.com are regularly imported to GitHub.com to be used as the list of licenses available when creating a repository. When we create a repository, we will replace certain strings in the license with variables from the repository. These can be used to create accurate copyright notices. The available variables are:

Fields

  • fullname - The full name or username of the repository owner
  • login - The repository owner's username
  • email - The repository owner's primary email address
  • project - The repository name
  • description - The description of the repository
  • year - The current year
  • projecturl - The repository URL or other project website

License properties

The license properties (rules) are stored as a bulleted list within the licenses YAML front matter. Each rule has a name e.g., include-copyright, a human-readable label, e.g., Copyright inclusion, and a description Include the original copyright with the code. To add a new rule, simply add it to _data/rules.yml and reference it in the appropriate license.

Rules

Permissions

  • commercial-use - This software and derivatives may be used for commercial purposes.
  • modifications - This software may be modified.
  • distribution - This software may be distributed.
  • private-use - This software may be used and modified in private.
  • patent-use - This license provides an express grant of patent rights from contributors.

Conditions

  • include-copyright - A copy of the license and copyright notice must be included with the software.
  • include-copyright--source - A copy of the license and copyright notice must be included with the software in source form, but is not required for binaries.
  • document-changes - Changes made to the code must be documented.
  • disclose-source - Source code must be made available when the software is distributed.
  • network-use-disclose - Users who interact with the software via network are given the right to receive a copy of the source code.
  • same-license - Modifications must be released under the same license when distributing the software. In some cases a similar or related license may be used.
  • same-license--file - Modifications of existing files must be released under the same license when distributing the software. In some cases a similar or related license may be used.
  • same-license--library - Modifications must be released under the same license when distributing the software. In some cases a similar or related license may be used, or this condition may not apply to works that use the software as a library.

Limitations

  • trademark-use - This license explicitly states that it does NOT grant trademark rights, even though licenses without such a statement probably do not grant any implicit trademark rights.
  • liability - This license includes a limitation of liability.
  • patent-use - This license explicitly states that it does NOT grant any rights in the patents of contributors.
  • warranty - The license explicitly states that it does NOT provide any warranty.

License

The content of this project itself is licensed under the Creative Commons Attribution 3.0 Unported license, and the underlying source code used to format and display that content is licensed under the MIT license.

choosealicense.com's People

Contributors

afeld avatar benbalter avatar bkeepers avatar chahmedejaz avatar deadbaed avatar djelibeybi avatar dlecan avatar enyst avatar felipelube avatar haacked avatar iqandreas avatar j-sp avatar johanricher avatar juanfra684 avatar julianstirling avatar latticeladder avatar leofnan avatar matt40k avatar mattisg avatar mlinksva avatar narendasan avatar nytpu avatar peff avatar rickbot-dot avatar shogo82148 avatar sieversmartin avatar smathermather-cm avatar waldyrious avatar wking avatar xhmikosr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

choosealicense.com's Issues

Add "License Builder"

Just want to throw this out in case it is of interest.

The Creative Commons website has a license builder which offers a neat form-based procedure for picking a variation of the CC license.

Something similar here would be great for discovery and matching needs perfectly. The homepage of ChooseALicense helps with this a tiny bit (top grid) but only pushes MIT, Apache and GPL licenses, which kind of sucks. Only suggesting 4 licenses is a real bias that seems a little misplaced.

Provide API to obtain license data

It would be nice if you could provide a simple API to return the license data via JSON, or even just a standard URL structure that would allow us to obtain just the raw license. That is actually the reason why I created the following (before this project existed):

There is another project I maintain called BOSS which builds projects from templates, and supports pulling in the license content dynamically from the above repo. I'd like to change that to use 'ChooseALicense' however it doesn't appear there is any way to just get the raw license text.

Support for translations

It'd be nice if we could support translations for choosealicense.com. Several PRs have come in that translate the site, but they simply overwrite the English version 😱

We need a better approach.

The inelegant solution would be to have folders for each language that each pretty much contain the entire site translated to a language and then provide links on the main index to each.

A more elegant solution is to use Jekyll localization support (assuming there is such a thing) to do it. Or to build something ourselves.

License text differs (minor difference related to formating) from original

License, text, copied via clipboard differs (minor difference related to formating) from original, without good reason

here is original license:
curl http://www.gnu.org/licenses/gpl-3.0.txt|md5sum
d32239bcb673463ab874e80d47fae504 -

here is diff:

> 
4c5
<  Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>

---
>  Copyright (C) 2007 Free Software Foundation, Inc. {http://fsf.org/}
634,635c635,636
<     <one line to give the program's name and a brief idea of what it does.>
<     Copyright (C) <year>  <name of author>

---
>     {one line to give the program's name and a brief idea of what it does.}
>     Copyright (C) {year}  {name of author}
648c649
<     along with this program.  If not, see <http://www.gnu.org/licenses/>.

---
>     along with this program.  If not, see {http://www.gnu.org/licenses/}.
655c656
<     <program>  Copyright (C) <year>  <name of author>

---
>     [project]  Copyright (C) [year]  [fullname]
667c668
< <http://www.gnu.org/licenses/>.

---
> {http://www.gnu.org/licenses/}.
674c675,678
< <http://www.gnu.org/philosophy/why-not-lgpl.html>.

---
> {http://www.gnu.org/philosophy/why-not-lgpl.html}.
> 

Add links to additional resources

Not sure where it would be appropriate on the site to add these, but I think it would be helpful to add links to the Wikipedia pages for the Bern Convention (which makes copyright automatic) and Work For Hire (the situation where code you write for your job is actually copyrighted to your employer, and not you).

What if I don't care about attribution?

Your most "simple and permissive" license is an Attribution license. Sometimes we literally just want to contribute our work to the public domain, and don't even care about it being attributed back to us. E.g.: http://unlicense.org/

Personally I'd like it if we could promote non-attribution license for those who don't care, because if you want to build up a custom project of 20 or 30 different open works, it's can be cumbersome to include attributions for all of them.

Should the "additional disclaimer" of the 2-clause BSD license be included?

The FreeBSD license has an extra bit at the end not included in the site's version:

The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of the FreeBSD Project.

The Wikipedia article includes the disclaimer, but also brings out that some projects exclude it.

Should the disclaimer be included, or at least mentioned or the site?

Internationalization / i18n / multilingual site

Would love to see about baking in I18N support to choosealicense.com proper. See #67 and #62

We already have the bulk of the strings in a single file (_config.yml), so it should just be a matter of abstracting out some of our variables, as far as I can tell.

Would love to take this on starting in August if there's interest. Would be a great exercise to set a standard for Jekyll L10N, and can iterate on some of the lessons learned form https://github.com/CMSgov/healthcare.gov.

@parkr any interest?
@dhcole any insight / words of wisdom?

Add pros/cons of license components?

I would find it very helpful if we added a section describing some of the pros/cons of each license component. Or even just illustrative examples (e.g., this would likely require 20-40 extra hours of documentation work because it requires the developers to do x and y... OR ALSO this clause can discourage companies from adopting and building on your code because x). Some burdensome restrictions might seem fairly innocuous to an outsider not familiar with software development.

Phrasing "adds a restriction restricting" on front page

I think the wording "adds a restriction restricting" is ugly and adds more perceived complexity to GPL licenses. It is found in index.html at: "V3 is similar to V2, but adds a restriction restricting use in hardware that forbids software alterations.".

add FOSS exception to GPL

I believe that adding a FOSS exception to the GPL by default is a good idea, and should be added to the featured license.

This is a good example for such an exception. http://www.digirulesolutions.com/drupal/foss

See also these instructions by the FSF on the topic: http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs

Is there any good reason to use a vanilla GPL v2 without making it compatible with at least the Apache License 2.0, one of the other features licenses?

PS:
While a FOSS exception like the one used by drupal does change the scope and effect of the copyleft of the GPL (thanks gerv), a minimal exception to the GPL v2 could at least ensure compatibility with the Apache License 2. As I understand, the "patent termination and indemnification provisions" in the Apache License 2 that, while present in the GPL v3, are not present in the GPL v2 and the only reasons the GPL v2 is not compatible with the Apache License 2, while the GPL v3 is compatible.
http://www.apache.org/licenses/GPL-compatibility.html
Could this not be remedied with a minimal exception to the GPL v2 stating that if part of the derived work covered is licensed under the Apache License 2, the patent and indemnification provisions are ok and not considered forbidden restrictions?
Other than the hassle of writing such a restriction and getting the legalese right, is there any reason not to do this? It would be really nice if two of the featured licenses on choosealicense.com were not incompatible with each other, wouldn't it?

Readability of license texts

The contrast of text to background when displaying a license text should be improved.

The text itself has a slightly darker grey as the background.

For the interested visitor and reader the license text should have either a darker text colour or bolder/thicker letters.

BTW: Thanks for that service! Especially the overview of the different licenses is really helpful.

Set Line Width to 78 Characters

It is pretty common for text editors, and IDE's to default line wrapping to 78 characters. It can be annoying to have to modify every license because it breaks to 'early', messing with the format.

It would be appreciated to require that the content of all licenses not exceed 78 characters. I'll be more than happy to submit a pull request if this is something that will be accepted.

Distribution and original authors?

Saw this Quora question:

If i fork someone's repo on github licensed under mit license and make some changes, can i release it under my name?

and, at least in my reading, none of the tooltips say specifically yay or nay. Or does this fall under "Sublicensing"?

/cc @hoolio

Rule about military use

When choosing a licence you should know, that with the wrong license your software/project might be used to harm people or at least might help organisations that harm people.

Mix of software and content?

An example:

I teach a JS class and have all my materials in a repo - both written materials, assignments, etc., and functional code that makes the slide deck itself work. I want to "properly" open source the whole thing.

What is the best way to handle these cases? Creative Commons discourages use of its licenses for software, but the language of something like the MIT license sound very code-specific. Do I need to include one license code, one for non-code? Where is that line drawn? Are there any licenses that can cover all of it? While I'm sure it's impossible to give a general, definitive answer, some guidance in the FAQ might be helpful.

/cc @hoolio

Rephrase "Please consult a legal expert"?

As tweeted:

"Please consult a legal expert before adopting a software license for your project" in the footer feels like a bit of a cop out.

A disclaimer is fine, but "demystifying" licenses only to say you must talk to a mystic is a little silly.

Perhaps the footer could instead say something more along the lines of the "About" page disclaimer (maybe linked to the disclaimer):

"If you have questions or issues, it’s always best to consult a professional."

Page should warn about GPLv2 and GPLv3 incompatibilities

There is currently no indication on the page that GPLv2 and GPLv3 are not compatible. This is especially problematic because the only two versions of the license linked are GPLv2 only and GPLv3 but not "GPLv2 or a later version".

Collapse license families on the licenses page.

The original goal for the /licenses list was to group licenses into license families and not list every single one. For example, rather than an entry for BSD 2-clause and BSD 3 clause, we'd just have BSD and in the description we'd offer links to both of them.

However, the list of licenses in the /licenses folder populates the dropdown list on github.com. The label shown in the list comes from the title: field in the license front matter.

So we need different titles for github.com than we show in the /licenses page.

So I propose we add two new fields:

family-title:
hide-from-licenses-list: (true|false)

The logic is simple. If family-title: is specified, we use that. Otherwise we fallback to title:.

If hide-from-licenses-list is true, we do not list that license on the licenses page. It defaults to false.

In general, I don't like "negative" properties, but this invokes the least amount of change as we only need to hide the redundant licenses. I'm open to doing the extra work and making the property be positive: show-in-licenses: if we think that's better.

Example changes:

title: BSD 2-clause License
family-title: BSD
title: BSD 3-clause License
hide-from-licenses: true

Thoughts?

Better handling of angle brackets in licenses

The licenses we included are intended to be plain text. But since we render them on a website, we have issues with angle brackets. There are two cases we've seen for angle brackets.

  1. To denote a template.
copyright <your name> <year> <month>
  1. To denote a URL
for more info, visit <http://unlicense.org>

As of #53 we plan to manually replace angle brackets with square brackets. The problem we've encountered is that these licenses templates are the same one we use in .com when you pick a license and they are dropped as-is into a repository without the benefit of Jekyll processing.

So what I propose we consider, if possible:

  1. License templates have the license in exactly the original plain text format.
  2. When rendering to the web, replace angle brackets with < and >
  3. Unless the contents start with "http:" or "https:" in which case we render it as a link. The copy and paste mechanism should still get the original text.

I have a feeling the inclusion of the angle brackets in the source might be a problem for Jekyll though, is that right @benbalter?

AGPL does have patent grant

The licenses page lists "Patent grant" under GPLv2, LGPL*, and GPLv3.

However it doesn't list "Patent grant" under AGPL/Affero GPL. But looking at the licence text it looks like the AGPL does in fact include a patent grant like the other GPL licences.

Page Display Issue

I was viewing the license list in my Web browser when I found a bug. To reproduce the bug, do the following:

  1. Scroll down to the “LGPL” section.
  2. Click on “LGPL v3”
  3. Click on “LGPL v2.1”
  4. Watch as the text below the buttons vanishes. See attached screenshot.

display bug

Nothing short of a page reload will make the text reappear. I’m using Safari 7.0 on OS X 10.9.0.

Include a "wizard"

The description "Like a Choose Your Own Adventure site" isn't really accurate unless a wizard-like workflow is established to guide users through several choices, reaching the final result. A good example of such a wizard is the one from WikiMatrix.

Nothing complex or fancy is needed to implement this. A simple tree of hyperlinked pages would do, similar to John Cowan's FLOSS license selection wizard.

Sublicensing warning inappropriate for GPLv3

There's a warning about sublicensing being forbidden for GPLv3 & v2 (and Affero). While this is technically correct, I think a warning is inappropriate as the risk to the license user is minimal.

Clause 10 explains that, instead of you sublicensing the original work,
"Each time you convey a covered work, the recipient automatically receives
a license from the original licensors, to run, modify and propagate that work,
subject to this License."
Sublicensing is thus redundant, since every recipient has a license to the original work from the copyright holder, plus a license from you to your modifications.

I suggest just removing the warning.

Send License as a Pull Request

To make it even more straitghforward, It would be cool to have button to make this site send a Pull Request to a specific public github repo adding the license as a file, and/or optionally as a new section on the README.md

Replace the 2-clause BSD license with the ISC license

The ISC license is a functionally equivalent and the prefered form of the 2-clause BSD license. [1][2]
There's no point recomending the 2-clause BSD license at this points, even projects initially written under the 2-clause BSD license are now suggesting new code use the ISC license.

standardize order for required/permitted/restricted buckets

screen shot 2013-10-28 at 5 08 55 pm
screen shot 2013-10-28 at 5 08 14 pm
screen shot 2013-10-28 at 5 08 43 pm

Just examples for cases where we have them in different order.

Is there a reason for this? I like that these spell out the gist of the license and i think there is real value in the visual clarity that can be found in an ordered list that we are losing when we don't keep the same orde.

Proposed modified workflow: make permissive/copyleft and patents orthogonal

There's no point producing a patch for this without some agreement, hence an issue rather than a pull request :-)

The initial 3-way choice, while having the desirability of 1-click licensing choice, means that anyone concerned about patents will end up with Apache 2.0, whereas the GPLv3 also has patent language (and, the FSF would say, GPLv2 has an implied patent licence). In fact, the GPLv3's patent language is significantly stronger than that of the Apache licence, because redistribution means a licence is granted; you don't have to modify, and the patented code doesn't have to be part of your modification. So the patent protection for developers and users is a lot larger.

The best solution would be to say (as we do at Mozilla) that patent language is a necessary requirement for a modern open source licence, and in 2013 no-one should recommend a licence without it. That would simplify the choice down to Apache 2.0 or GPLv3+.

However, if that's a step too far for Github, could we instead have the following workflow?

  1. A: "I want it simple and permissive" vs. B: "I want others to share their improvements"
  2. A: "I'm not worried about patents" vs. B: "I want to try and avoid patent lawsuits"

A. A. would be MIT (or 2-clause BSD, or ISC, or whatever)
A. B. would be Apache 2.0
B. A. would be GPLv2+
B. B. would be GPLv3+

Gerv

move "Patent Grant" from "Permitted" list to "Required" list

Hope i'm not resurrecting a resolved issue (I looked and couldn't trace one):

If I'm not misreading the licenses, granting rights to their patents is part of what the contributors are required to do under some of the licenses and therefore belongs under the "Required" list and not the "Permitted" list. (Everybody else is then permitted to use and not to grant those patents)

BSD (3-Clause) License license should populate all placeholders

Creating a repository with the BSD (3-Clause) License doesn't define values for all placeholders in the license.

Specifically, the {organization} placeholder is not replaced with any value, and this has to be done manually after creating the repository:

https://github.com/github/choosealicense.com/blob/gh-pages/licenses/bsd-3-clause.txt#L38

A better approach might be to replace {organization} with {fullname}.

cc @haacked @benbalter

GPL and disclose of changes

The GPL (V2 or V3) is a copyleft license that requires others who modify your code to disclose their changes if they redistribute it in source or binary form

I'm not sure this explains very clearly what the GPL does.

Basically the GPL makes sure the user of the 'product' will also receive the source and/or modifications. It does not mean the changes need to be made publicly available, only be made available to the user.

So I propose to change the text slightly:
The GPL (V2 or V3) is a copyleft license that requires others who modify your code to make the code and changes available to whomever they distribute it to

Or something along those lines.

Bring back CC0

I was pretty excited to learn that CC0 was among the legal texts available on choosealicense.com and that I could even choose it during repo creation. I love CC0 and advertise it to artists and developers alike: It's attached to the strong Creative Commons brand and equally applies to all types of creative works (unlike the limitation to software found in the Unlicense).

Of course that's just the opinion of one guy, but consider that the FSF explicitly recommends CC0 over Unlicense and that there's a wealth of CC0 media files already available.

So I hope you understand why I'm a bit disappointed about the resolution of #38. By no means do I want to put down the effort of the Unlicense people, their advocacy for the PD cause is excellent! But I believe the point of PD is simplicity, and to me that means the ability to use the same declaration for my software, its wiki, manual, screenshots, and many other things up to my holiday photographs and videos.

Cooperation with tldrlegal.com ?

Hey guys,

awesome service you are running there. Just a couple of weeks ago I was pointed here: http://www.tldrlegal.com
which pretty much does the same as you. Maybe you want to cooperate somehow, don't know if you already aware of this other website but I hope this hint helps in any way.

Best of luck and thanks for your work
gossi

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.