├── CNAME ├── assets ├── vendor │ ├── jquery │ │ ├── .gitignore │ │ ├── package.json │ │ ├── bower.json │ │ ├── component.json │ │ ├── README.md │ │ ├── .bower.json │ │ ├── composer.json │ │ └── jquery-migrate.min.js │ ├── qtip2 │ │ ├── README.md │ │ ├── bower.json │ │ ├── .bower.json │ │ ├── imagesloaded.pkg.min.js │ │ └── jquery.qtip.min.css │ ├── normalize-css │ │ ├── bower.json │ │ ├── .bower.json │ │ ├── LICENSE.md │ │ └── README.md │ ├── clipboard │ │ ├── package.js │ │ ├── bower.json │ │ ├── .bower.json │ │ ├── package.json │ │ ├── contributing.md │ │ ├── dist │ │ │ └── clipboard.min.js │ │ └── readme.md │ ├── selectivizr │ │ ├── .bower.json │ │ ├── README.markdown │ │ └── changelog.txt │ └── html5shiv │ │ ├── .bower.json │ │ ├── dist │ │ ├── html5shiv.js │ │ └── html5shiv-printshiv.js │ │ └── readme.md ├── img │ ├── home-sprite.png │ ├── home-sprite@2x.png │ ├── license-sprite.png │ └── license-sprite@2x.png └── js │ └── app.coffee ├── .bowerrc ├── .gitattributes ├── favicon.ico ├── _layouts ├── default.html └── license.html ├── script ├── cibuild ├── server ├── bootstrap ├── generate-docs └── check-approval ├── robots.txt ├── spec ├── self_license_spec.rb ├── license_wrap_spec.rb ├── license_fields_spec.rb ├── license_bom_spec.rb ├── license_rules_spec.rb ├── license_shown_spec.rb ├── ci_ruby_version_spec.rb ├── license_spec.rb ├── license_meta_spec.rb └── spec_helper.rb ├── .gitignore ├── .rubocop.yml ├── Gemfile ├── .travis.yml ├── bower.json ├── _includes ├── using-sentence.html ├── header.html ├── breadcrumbs.html ├── license-overview.html ├── footer.html ├── sidebar.html └── css │ └── responsive.css ├── _data ├── fields.yml ├── meta.yml └── rules.yml ├── _config.yml ├── _licenses ├── wtfpl.txt ├── zlib.txt ├── 0bsd.txt ├── isc.txt ├── postgresql.txt ├── mit.txt ├── unlicense.txt ├── bsl-1.0.txt ├── bsd-2-clause.txt ├── bsd-3-clause-clear.txt ├── bsd-3-clause.txt ├── ncsa.txt ├── upl-1.0.txt ├── ms-pl.txt ├── ms-rl.txt ├── ofl-1.1.txt └── cc0-1.0.txt ├── LICENSE.md ├── Rakefile ├── licenses.html ├── non-software.md ├── about.md ├── community.md ├── index.html ├── CODE_OF_CONDUCT.md ├── no-permission.md ├── appendix.md ├── CONTRIBUTING.md ├── README.md └── terms-of-service.md /CNAME: -------------------------------------------------------------------------------- 1 | choosealicense.com -------------------------------------------------------------------------------- /assets/vendor/jquery/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | -------------------------------------------------------------------------------- /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "assets/vendor" 3 | } 4 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DandelionSprout/choosealicense.com/gh-pages/favicon.ico -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | {% include header.html %} 2 | 3 | {{ content }} 4 | 5 | {% include footer.html %} 6 | -------------------------------------------------------------------------------- /assets/img/home-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DandelionSprout/choosealicense.com/gh-pages/assets/img/home-sprite.png -------------------------------------------------------------------------------- /assets/img/home-sprite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DandelionSprout/choosealicense.com/gh-pages/assets/img/home-sprite@2x.png -------------------------------------------------------------------------------- /assets/img/license-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DandelionSprout/choosealicense.com/gh-pages/assets/img/license-sprite.png -------------------------------------------------------------------------------- /assets/img/license-sprite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DandelionSprout/choosealicense.com/gh-pages/assets/img/license-sprite@2x.png -------------------------------------------------------------------------------- /script/cibuild: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | echo "building the site..." 6 | bundle exec rake test 7 | bundle exec rubocop -D -S 8 | -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | # www.robotstxt.org/ 5 | 6 | # Allow crawling of all content 7 | User-agent: * 8 | Disallow: 9 | Sitemap: {{ site.url }}/sitemap.xml 10 | -------------------------------------------------------------------------------- /assets/vendor/qtip2/README.md: -------------------------------------------------------------------------------- 1 | qTip2 Bower Package 2 | ===== 3 | 4 | Clone into an existing `qtip2` repo clone, and run the ./bin/build script to generate the files. Then push to the repo. 5 | -------------------------------------------------------------------------------- /script/server: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | echo "spinning up the server..." 6 | bundle exec jekyll serve --watch --incremental --trace 7 | 8 | echo "cleaning up..." 9 | rm -Rf _site 10 | -------------------------------------------------------------------------------- /assets/vendor/jquery/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "components-jquery", 3 | "version": "1.11.0", 4 | "description": "jQuery component", 5 | "keywords": ["jquery"], 6 | "main": "./jquery.js" 7 | } 8 | -------------------------------------------------------------------------------- /script/bootstrap: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | echo "bundling installin'" 6 | gem install bundler 7 | bundle install 8 | 9 | echo 10 | echo "You're all set. Just run script/server and you can play license roulette!" 11 | -------------------------------------------------------------------------------- /assets/vendor/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "1.11.0", 4 | "description": "jQuery component", 5 | "keywords": [ 6 | "jquery", 7 | "component" 8 | ], 9 | "main": "jquery.js", 10 | "license": "MIT" 11 | } 12 | -------------------------------------------------------------------------------- /spec/self_license_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'spec_helper' 4 | 5 | context 'licensee detects this project' do 6 | let(:detected) { Licensee.project('.').license } 7 | 8 | it 'license as MIT' do 9 | expect(detected.key).to eq('mit') 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /_site 3 | /node_modules 4 | /.bundle 5 | assets/vendor/clipboard/src 6 | assets/vendor/clipboard/test 7 | assets/vendor/selectivizr/tests 8 | assets/vendor/qtip2/basic 9 | /vendor 10 | /.sass-cache 11 | .ruby-version 12 | /tmp 13 | Gemfile.lock 14 | .jekyll-metadata 15 | -------------------------------------------------------------------------------- /assets/vendor/normalize-css/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "normalize-css", 3 | "version": "3.0.0", 4 | "main": "normalize.css", 5 | "author": "Nicolas Gallagher", 6 | "ignore": [ 7 | "CHANGELOG.md", 8 | "CONTRIBUTING.md", 9 | "component.json", 10 | "test.html" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /assets/vendor/jquery/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "repo": "components/jquery", 4 | "version": "1.11.0", 5 | "description": "jQuery component", 6 | "keywords": [ 7 | "jquery", 8 | "component" 9 | ], 10 | "main": "jquery.js", 11 | "scripts": [ 12 | "jquery.js" 13 | ], 14 | "license": "MIT" 15 | } 16 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | AllCops: 2 | TargetRubyVersion: 2.5 3 | Exclude: 4 | - _site/**/* 5 | - vendor/**/* 6 | 7 | Metrics/BlockLength: 8 | Enabled: false 9 | 10 | Metrics/LineLength: 11 | Enabled: false 12 | 13 | Metrics/MethodLength: 14 | Enabled: false 15 | 16 | Metrics/AbcSize: 17 | Enabled: false 18 | 19 | Style/Documentation: 20 | Enabled: false 21 | -------------------------------------------------------------------------------- /assets/vendor/clipboard/package.js: -------------------------------------------------------------------------------- 1 | // Package metadata for Meteor.js. 2 | 3 | Package.describe({ 4 | name: "zenorocha:clipboard", 5 | summary: "Modern copy to clipboard. No Flash. Just 2kb.", 6 | version: "1.4.2", 7 | git: "https://github.com/zenorocha/clipboard.js" 8 | }); 9 | 10 | Package.onUse(function(api) { 11 | api.addFiles("dist/clipboard.min.js", "client"); 12 | }); 13 | -------------------------------------------------------------------------------- /assets/vendor/jquery/README.md: -------------------------------------------------------------------------------- 1 | jQuery Component 2 | ================ 3 | 4 | Shim repository for the [jQuery](http://jquery.com). 5 | 6 | Package Managers 7 | ---------------- 8 | 9 | * [Bower](http://twitter.github.com/bower/): `jquery` 10 | * [Component](https://github.com/component/component): `components/jquery` 11 | * [Composer](http://packagist.org/packages/components/jquery): `components/jquery` 12 | -------------------------------------------------------------------------------- /assets/vendor/clipboard/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "clipboard", 3 | "version": "1.4.3", 4 | "description": "Modern copy to clipboard. No Flash. Just 2kb", 5 | "license": "MIT", 6 | "main": "dist/clipboard.js", 7 | "ignore": [ 8 | "/.*/", 9 | "/example/", 10 | "/test/", 11 | "/.*", 12 | "/bower.json", 13 | "/karma.conf.js" 14 | ], 15 | "keywords": [ 16 | "clipboard", 17 | "copy", 18 | "cut" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /assets/vendor/selectivizr/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "selectivizr", 3 | "homepage": "https://github.com/keithclark/selectivizr", 4 | "version": "1.0.2", 5 | "_release": "1.0.2", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "1.0.2", 9 | "commit": "994f65755ac4e7ead1d14534f6eeb90cda21e909" 10 | }, 11 | "_source": "git://github.com/keithclark/selectivizr.git", 12 | "_target": "~1.0.2", 13 | "_originalSource": "selectivizr" 14 | } -------------------------------------------------------------------------------- /spec/license_wrap_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'spec_helper' 4 | 5 | describe 'word wrapping' do 6 | licenses.each do |license| 7 | context "the #{license['slug']} license" do 8 | it 'wraps at line length 78' do 9 | max_line = license['content'].lines.max_by { |line| line.chomp!.length } 10 | msg = "Longest line is #{max_line.length} characters: #{max_line}" 11 | expect(max_line.length).to be <= 78, msg 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source 'https://rubygems.org' 4 | 5 | require 'json' 6 | require 'open-uri' 7 | versions = JSON.parse(open('https://pages.github.com/versions.json').read) 8 | 9 | gem 'github-pages', versions['github-pages'] 10 | 11 | group :development do 12 | gem 'colored' 13 | gem 'fuzzy_match' 14 | gem 'terminal-table' 15 | end 16 | 17 | group :test do 18 | gem 'html-proofer', '~> 3.0' 19 | gem 'licensee' 20 | gem 'rake' 21 | gem 'rspec' 22 | gem 'rubocop' 23 | end 24 | -------------------------------------------------------------------------------- /spec/license_fields_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'spec_helper' 4 | 5 | describe 'license fillable fields' do 6 | licenses.each do |license| 7 | context "The #{license['title']} license" do 8 | it 'should only contain supported fillable fields' do 9 | matches = license['content'][1, 1000].scan(/\s+\[([a-z_]+)\]/) 10 | extra_fields = matches.flatten - (fields.map { |f| f['name'] }) 11 | expect(extra_fields).to be_empty 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | #bootstrap and build 2 | before_script: "./script/bootstrap" 3 | script: "./script/cibuild" 4 | 5 | #environment 6 | language: ruby 7 | rvm: 8 | - 2.5.3 9 | 10 | addons: 11 | apt: 12 | packages: 13 | - libcurl4-openssl-dev 14 | 15 | before_install: 16 | - gem update --system 17 | 18 | branches: 19 | only: 20 | - gh-pages 21 | - /.*/ 22 | 23 | notifications: 24 | email: false 25 | 26 | env: 27 | global: 28 | - NOKOGIRI_USE_SYSTEM_LIBRARIES=true 29 | 30 | sudo: false 31 | cache: bundler 32 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "choosealicense.com", 3 | "version": "0.0.1", 4 | "homepage": "choosealicense.com", 5 | "authors": [ 6 | "GitHub Inc." 7 | ], 8 | "description": "A site to provide non-judgmental guidance on choosing a license for your open source project", 9 | "main": "index.html", 10 | "license": "MIT", 11 | "dependencies": { 12 | "jquery": "~1.11.0", 13 | "html5shiv": "~3.7.0", 14 | "selectivizr": "~1.0.2", 15 | "qtip2": "~2.2.0", 16 | "normalize-css": "~3.0.0", 17 | "clipboard": "~1.4.3" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /spec/license_bom_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'spec_helper' 4 | 5 | describe 'byte order marks' do 6 | Dir["#{licenses_path}/*.txt"].each do |file| 7 | context "the #{File.basename(file, '.txt')} license" do 8 | it 'does not begin with a byte order mark' do 9 | bom = File.open(file).read.start_with?("\u0000EF\u0000BB\u0000BF") 10 | msg = 'License file begins with a Byte Order Mark. See https://stackoverflow.com/a/1068700.' 11 | expect(bom).to eql(false), msg 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /assets/vendor/jquery/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "1.11.0", 4 | "description": "jQuery component", 5 | "keywords": [ 6 | "jquery", 7 | "component" 8 | ], 9 | "main": "jquery.js", 10 | "license": "MIT", 11 | "homepage": "https://github.com/components/jquery", 12 | "_release": "1.11.0", 13 | "_resolution": { 14 | "type": "version", 15 | "tag": "1.11.0", 16 | "commit": "c20fd94f83db26dfdce5f37ce5d6cbe0e907a05b" 17 | }, 18 | "_source": "git://github.com/components/jquery.git", 19 | "_target": "~1.11.0", 20 | "_originalSource": "jquery" 21 | } -------------------------------------------------------------------------------- /assets/vendor/html5shiv/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "html5shiv", 3 | "version": "3.7.0", 4 | "main": [ 5 | "dist/html5shiv.js", 6 | "dist/html5shiv-printshiv.js" 7 | ], 8 | "ignore": [ 9 | "**/.*", 10 | "*.json", 11 | "test", 12 | "build", 13 | "src", 14 | "build.xml" 15 | ], 16 | "homepage": "https://github.com/aFarkas/html5shiv", 17 | "_release": "3.7.0", 18 | "_resolution": { 19 | "type": "version", 20 | "tag": "3.7.0", 21 | "commit": "a4d4dcbe0875ba10c4c56c54454ae93031d59584" 22 | }, 23 | "_source": "git://github.com/aFarkas/html5shiv.git", 24 | "_target": "~3.7.0", 25 | "_originalSource": "html5shiv" 26 | } -------------------------------------------------------------------------------- /assets/vendor/normalize-css/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "normalize-css", 3 | "version": "3.0.0", 4 | "main": "normalize.css", 5 | "author": "Nicolas Gallagher", 6 | "ignore": [ 7 | "CHANGELOG.md", 8 | "CONTRIBUTING.md", 9 | "component.json", 10 | "test.html" 11 | ], 12 | "homepage": "https://github.com/necolas/normalize.css", 13 | "_release": "3.0.0", 14 | "_resolution": { 15 | "type": "version", 16 | "tag": "3.0.0", 17 | "commit": "ecfe3e1788c1c79640cad011a3bc04dd6e4e1e6a" 18 | }, 19 | "_source": "git://github.com/necolas/normalize.css.git", 20 | "_target": "~3.0.0", 21 | "_originalSource": "normalize-css", 22 | "_direct": true 23 | } -------------------------------------------------------------------------------- /spec/license_rules_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'spec_helper' 4 | 5 | describe 'license rules' do 6 | licenses.each do |license| 7 | groups = rules.keys 8 | 9 | context "The #{license['title']} license" do 10 | groups.each do |group| 11 | valid_tags = rules[group].map { |r| r['tag'] } 12 | 13 | context "the #{group} group" do 14 | it 'should exist' do 15 | expect(license[group]).to_not be_nil 16 | end 17 | 18 | it 'should only contain valid tags' do 19 | extra = license[group] - valid_tags 20 | expect(extra).to be_empty 21 | end 22 | end 23 | end 24 | end 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /_includes/using-sentence.html: -------------------------------------------------------------------------------- 1 | {% assign id = "/licenses/" | append: include.license-id %} 2 | {% assign licenses = site.licenses | where:"id", id %} 3 | {% for license in licenses %} 4 | {% assign using = license.using %} 5 | {% if using.size > 0 %} 6 | {% for used in using limit: 3 %} 7 | {% assign last = forloop.last %} 8 | {% if last and using.size > 1 %} 9 | and 10 | {% endif %} 11 | {% for hash in used %} 12 | {{ hash[0] }}{% if last == false %},{% endif %} 13 | {% endfor %} 14 | {% endfor %} 15 | use{% if using.size == 1 %}s{% endif %} the {% if license.nickname %}{{ license.nickname }}{% else %}{{ license.title }}{% endif %}. 16 | {% endif %} 17 | {% endfor %} 18 | -------------------------------------------------------------------------------- /assets/vendor/clipboard/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "clipboard", 3 | "version": "1.4.3", 4 | "description": "Modern copy to clipboard. No Flash. Just 2kb", 5 | "license": "MIT", 6 | "main": "dist/clipboard.js", 7 | "ignore": [ 8 | "/.*/", 9 | "/example/", 10 | "/test/", 11 | "/.*", 12 | "/bower.json", 13 | "/karma.conf.js" 14 | ], 15 | "keywords": [ 16 | "clipboard", 17 | "copy", 18 | "cut" 19 | ], 20 | "homepage": "https://github.com/zenorocha/clipboard.js", 21 | "_release": "1.4.3", 22 | "_resolution": { 23 | "type": "version", 24 | "tag": "v1.4.3", 25 | "commit": "705e2dbefdf40911ee2fe266a514b982d3edd0b6" 26 | }, 27 | "_source": "git://github.com/zenorocha/clipboard.js.git", 28 | "_target": "~1.4.3", 29 | "_originalSource": "clipboard", 30 | "_direct": true 31 | } -------------------------------------------------------------------------------- /spec/license_shown_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'spec_helper' 4 | 5 | describe 'shown licenses' do 6 | # Whitelist of popular licenses that are shown (non-hidden) 7 | # Note: most new licenses that are added should be hidden by default 8 | SHOWN_LICENSES = %w[ 9 | agpl-3.0 10 | apache-2.0 11 | bsd-2-clause 12 | bsd-3-clause 13 | epl-2.0 14 | gpl-2.0 15 | gpl-3.0 16 | lgpl-2.1 17 | lgpl-3.0 18 | mit 19 | mpl-2.0 20 | unlicense 21 | ].freeze 22 | 23 | it 'has the expected number of shown licenses' do 24 | expect(shown_licenses.count).to eql(12) 25 | end 26 | 27 | shown_licenses.each do |license| 28 | context "the #{license['title']} license" do 29 | it 'is whitelisted to be shown' do 30 | expect(SHOWN_LICENSES).to include(license['spdx-lcase']) 31 | end 32 | end 33 | end 34 | end 35 | -------------------------------------------------------------------------------- /_data/fields.yml: -------------------------------------------------------------------------------- 1 | # The licenses on choosealicense.com are regularly imported to GitHub.com to 2 | # be used as the list of licenses available when creating a repository. When 3 | # we create a repository, we will replace certain strings in the license with 4 | # variables from the repository. These can be used to create accurate copyright 5 | # notices. The available variables are: 6 | 7 | - name: fullname 8 | description: The full name or username of the repository owner 9 | 10 | - name: login 11 | description: The repository owner's username 12 | 13 | - name: email 14 | description: The repository owner's primary email address 15 | 16 | - name: project 17 | description: The repository name 18 | 19 | - name: description 20 | description: The description of the repository 21 | 22 | - name: year 23 | description: The current year 24 | 25 | - name: projecturl 26 | description: The repository URL or other project website 27 | -------------------------------------------------------------------------------- /assets/vendor/selectivizr/README.markdown: -------------------------------------------------------------------------------- 1 | Selectivizr 2 | ----------- 3 | 4 | **CSS3 selectors for IE** 5 | 6 | 7 | _selectivizr_ is a JavaScript utility that emulates CSS3 pseudo-classes 8 | and attribute selectors in Internet Explorer 6-8. Simply include the 9 | script in your pages and selectivizr will do the rest. 10 | 11 | To use the library, you'll need to include one of the supported libraries: 12 | 13 | * jQuery (1.3+/1.4+) 14 | * Dojo (1.5.0+) 15 | * Prototype (1.6.1+) 16 | * Yahoo UI Library (2.8.0+) 17 | * DOMAssistant (2.8.0+) 18 | * MooTools (1.3+) 19 | * NWMatcher (1.2.3+) 20 | 21 | Then add the following conditional comment: 22 | 23 | 27 | 28 | This adds the `selectivizr.js` and fallback CSS file to IE6-8 while hiding 29 | for other browsers. -------------------------------------------------------------------------------- /assets/vendor/jquery/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "components/jquery", 3 | "description": "jQuery JavaScript Library", 4 | "type": "component", 5 | "homepage": "http://jquery.com", 6 | "license": "MIT", 7 | "support": { 8 | "irc": "irc://irc.freenode.org/jquery", 9 | "issues": "http://bugs.jquery.com", 10 | "forum": "http://forum.jquery.com", 11 | "wiki": "http://docs.jquery.com/", 12 | "source": "https://github.com/jquery/jquery" 13 | }, 14 | "authors": [ 15 | { 16 | "name": "John Resig", 17 | "email": "jeresig@gmail.com" 18 | } 19 | ], 20 | "require": { 21 | "robloach/component-installer": "*" 22 | }, 23 | "extra": { 24 | "component": { 25 | "scripts": [ 26 | "jquery.js" 27 | ], 28 | "files": [ 29 | "jquery.min.js", 30 | "jquery-migrate.js", 31 | "jquery-migrate.min.js" 32 | ] 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /assets/vendor/qtip2/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "qtip2", 3 | "description": "Introducing... qTip2. The second generation of the advanced qTip plugin for the ever popular jQuery framework.", 4 | "version": "2.2.0", 5 | "homepage": "http://qtip2.com", 6 | "location": "https://github.com/qTip2/bower", 7 | "repository": { 8 | "type": "git", 9 | "url": "git://github.com/Craga89/qTip2.git" 10 | }, 11 | "authors": [ 12 | { 13 | "name": "Craig Michael Thompson", 14 | "email": "craig@craigsworks.com", 15 | "url": "http://craigsworks.com/" 16 | } 17 | ], 18 | "license": [ 19 | "MIT", 20 | "GPL" 21 | ], 22 | "keywords": [ 23 | "tooltip", 24 | "tooltips", 25 | "jquery", 26 | "qtip", 27 | "qtip2", 28 | "craig", 29 | "thompson", 30 | "craigsworks" 31 | ], 32 | "main": [ 33 | "./jquery.qtip.js", 34 | "./basic/jquery.qtip.js" 35 | ], 36 | "ignore": [ 37 | "bin" 38 | ] 39 | } -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | --- 2 | title: Choose a License 3 | description: Non-judgmental guidance on choosing a license for your open source project 4 | relative_permalinks: false 5 | markdown: kramdown 6 | url: "https://choosealicense.com" 7 | 8 | collections: 9 | licenses: 10 | output: true 11 | permalink: /licenses/:path/ 12 | 13 | defaults: 14 | - 15 | scope: 16 | path: "" 17 | type: "licenses" 18 | values: 19 | hidden: true 20 | layout: license 21 | 22 | exclude: 23 | - app.coffee 24 | - CNAME 25 | - CONTRIBUTING.md 26 | - Gemfile 27 | - Gemfile.lock 28 | - LICENSE.md 29 | - Rakefile 30 | - README.md 31 | - script 32 | - vendor/bundle 33 | - test 34 | - tests 35 | - assets/vendor/selectivizr/tests 36 | - assets/vendor/clipboard/test 37 | - assets/vendor/*/README.* 38 | 39 | plugins: 40 | - jekyll-sitemap 41 | - jekyll-redirect-from 42 | - jekyll-seo-tag 43 | - jekyll-coffeescript 44 | - jekyll-github-metadata # For 'Improve this page' links 45 | 46 | sass: 47 | style: :compressed 48 | 49 | twitter: 50 | username: "@github" 51 | -------------------------------------------------------------------------------- /_licenses/wtfpl.txt: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Do What The F*ck You Want To Public License" 3 | spdx-id: WTFPL 4 | 5 | description: The easiest license out there. It gives the user permissions to do whatever they want with your code. 6 | 7 | how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. 8 | 9 | using: 10 | 11 | permissions: 12 | - commercial-use 13 | - modifications 14 | - distribution 15 | - private-use 16 | 17 | conditions: [] 18 | 19 | limitations: [] 20 | 21 | --- 22 | 23 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 24 | Version 2, December 2004 25 | 26 | Copyright (C) 2004 Sam Hocevar 27 | 28 | Everyone is permitted to copy and distribute verbatim or modified 29 | copies of this license document, and changing it is allowed as long 30 | as the name is changed. 31 | 32 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 33 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 34 | 35 | 0. You just DO WHAT THE FUCK YOU WANT TO. 36 | -------------------------------------------------------------------------------- /_includes/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | {% seo %} 17 | 18 | 19 |
20 | 21 | {% include breadcrumbs.html %} 22 | 23 | {% if page.title %} 24 |

{{ page.title | markdownify | strip_html | strip_newlines }}

25 | {% endif %} 26 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2018 GitHub, Inc. and contributors 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /script/generate-docs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # frozen_string_literal: true 3 | 4 | # Usage: script/generate-docs 5 | # Reads in the fields, meta, and rules YAML files and produces markdown output 6 | # suitable for documenting in the project's README 7 | 8 | require 'yaml' 9 | 10 | fields = YAML.load_file('_data/fields.yml') 11 | meta = YAML.load_file('_data/meta.yml') 12 | rules = YAML.load_file('_data/rules.yml') 13 | 14 | puts "\n### Fields\n\n" 15 | fields.each do |field| 16 | puts "* `#{field['name']}` - #{field['description']}" 17 | end 18 | 19 | puts "\n### YAML front matter\n" 20 | meta = meta.group_by { |m| m['required'] } 21 | 22 | puts "\n#### Required fields\n\n" 23 | meta[true].each do |field| 24 | puts "* `#{field['name']}` - #{field['description']}" 25 | end 26 | 27 | puts "\n#### Optional fields\n\n" 28 | meta[false].each do |field| 29 | puts "* `#{field['name']}` - #{field['description']}" 30 | end 31 | 32 | puts "\n### Rules\n" 33 | rules.each do |group, group_rules| 34 | puts "\n#### #{group.capitalize}\n\n" 35 | group_rules.each do |rule| 36 | puts "* `#{rule['tag']}` - #{rule['description']}" 37 | end 38 | end 39 | -------------------------------------------------------------------------------- /assets/vendor/normalize-css/LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) Nicolas Gallagher and Jonathan Neal 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 7 | of the Software, and to permit persons to whom the Software is furnished to do 8 | so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /_includes/breadcrumbs.html: -------------------------------------------------------------------------------- 1 | {% unless page.hide_breadcrumbs == true %} 2 |
    3 |
  1. 4 | {% if page.layout == "license" %} 5 | Home / Licenses 6 | {% else %} 7 | Home 8 | {% endif %} 9 |
  2. 10 |
11 | 39 | {% endunless %} 40 | -------------------------------------------------------------------------------- /assets/vendor/qtip2/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "qtip2", 3 | "description": "Introducing... qTip2. The second generation of the advanced qTip plugin for the ever popular jQuery framework.", 4 | "version": "2.2.0", 5 | "homepage": "http://qtip2.com", 6 | "location": "https://github.com/qTip2/bower", 7 | "repository": { 8 | "type": "git", 9 | "url": "git://github.com/Craga89/qTip2.git" 10 | }, 11 | "authors": [ 12 | { 13 | "name": "Craig Michael Thompson", 14 | "email": "craig@craigsworks.com", 15 | "url": "http://craigsworks.com/" 16 | } 17 | ], 18 | "license": [ 19 | "MIT", 20 | "GPL" 21 | ], 22 | "keywords": [ 23 | "tooltip", 24 | "tooltips", 25 | "jquery", 26 | "qtip", 27 | "qtip2", 28 | "craig", 29 | "thompson", 30 | "craigsworks" 31 | ], 32 | "main": [ 33 | "./jquery.qtip.js", 34 | "./basic/jquery.qtip.js" 35 | ], 36 | "ignore": [ 37 | "bin" 38 | ], 39 | "_release": "2.2.0", 40 | "_resolution": { 41 | "type": "version", 42 | "tag": "v2.2.0", 43 | "commit": "f5300e9a698f203d47307cfdf90399504fd2f6b2" 44 | }, 45 | "_source": "git://github.com/qTip2/bower.git", 46 | "_target": "~2.2.0", 47 | "_originalSource": "qtip2" 48 | } -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'html-proofer' 4 | require 'rspec/core/rake_task' 5 | 6 | desc 'Run specs' 7 | RSpec::Core::RakeTask.new do |t| 8 | t.pattern = 'spec/**/*_spec.rb' 9 | t.rspec_opts = ['--order', 'rand', '--color'] 10 | end 11 | 12 | task :test do 13 | sh 'bundle exec jekyll build' 14 | Rake::Task['spec'].invoke 15 | HTMLProofer.check_directory('./_site', 16 | check_html: true, 17 | enforce_https: true, 18 | validation: { ignore_script_embeds: true }, 19 | url_swap: { %r{https://choosealicense.com} => '' }, 20 | url_ignore: [%r{https://github.com/github/choosealicense.com/edit/gh-pages/_licenses/}], 21 | hydra: { max_concurrency: 10 }, 22 | check_img_http: true).run 23 | end 24 | 25 | task :approved_licenses do 26 | require './spec/spec_helper' 27 | approved = approved_licenses 28 | approved.select! { |l| spdx_ids.include?(l) } 29 | puts "#{approved.count} approved licenses:" 30 | puts approved.join(', ') 31 | puts "\n" 32 | 33 | potential = approved - (licenses.map { |l| l['id'] }) 34 | puts "#{potential.count} potential additions:" 35 | puts potential.join(', ') 36 | end 37 | -------------------------------------------------------------------------------- /spec/ci_ruby_version_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'json' 4 | require 'open-uri' 5 | require 'spec_helper' 6 | require 'yaml' 7 | 8 | describe 'ruby version' do 9 | pages_versions = JSON.parse(open('https://pages.github.com/versions.json').read) 10 | pages_ruby_version = pages_versions['ruby'] 11 | 12 | ci_config_file = '.travis.yml' 13 | ci_config = YAML.load_file(ci_config_file) 14 | ci_ruby_version = ci_config['rvm'][0] 15 | 16 | context "in #{ci_config_file} and pages ruby version" do 17 | it 'match' do 18 | msg = "#{ci_ruby_version} != #{pages_ruby_version}; please add a commit bumping in #{ci_config_file}" 19 | expect(ci_ruby_version).to eql(pages_ruby_version), msg 20 | end 21 | end 22 | 23 | rubocop_config_file = '.rubocop.yml' 24 | rubocop_config = YAML.load_file(rubocop_config_file) 25 | rubocop_ruby_version = rubocop_config['AllCops']['TargetRubyVersion'] 26 | pages_ruby_version_minor = pages_ruby_version.match('^(\d+)\.(\d+)')[0] 27 | 28 | context "in #{rubocop_config_file} and pages ruby minor version" do 29 | it 'match' do 30 | msg = "#{rubocop_ruby_version} != #{pages_ruby_version_minor}; please add a commit bumping in #{rubocop_config_file}" 31 | expect(rubocop_ruby_version.to_s).to eql(pages_ruby_version_minor), msg 32 | end 33 | end 34 | end 35 | -------------------------------------------------------------------------------- /licenses.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | permalink: licenses/ 4 | class: license-types 5 | title: Licenses 6 | --- 7 | 8 |

Open source licenses grant permission to everyone to use, modify, and share licensed software for any purpose, subject to conditions preserving the provenance and openness of the software. The following licenses are arranged from one with the strongest of these conditions (GNU AGPLv3) to one with no conditions (Unlicense). Notice that the popular licenses featured on the home page (GNU GPLv3 and MIT) fall within this spectrum.

9 |

If you were looking for a reference table of all of the licenses on choosealicense.com, see the appendix.

10 | 11 | {% include license-overview.html license-id="agpl-3.0" %} 12 | {% include license-overview.html license-id="gpl-3.0" %} 13 | {% include license-overview.html license-id="lgpl-3.0" %} 14 | {% include license-overview.html license-id="mpl-2.0" %} 15 | {% include license-overview.html license-id="apache-2.0" %} 16 | {% include license-overview.html license-id="mit" %} 17 | {% include license-overview.html license-id="unlicense" %} 18 | 19 | The above licenses represent the entire spectrum of open source licenses, from highly protective to unconditional. One of these should work for most new open source projects. Many other open source licenses exist, including older versions of and close substitutes for some of the above. See the resources listed on our about page if you'd like to read more. 20 | -------------------------------------------------------------------------------- /_licenses/zlib.txt: -------------------------------------------------------------------------------- 1 | --- 2 | title: zlib License 3 | spdx-id: Zlib 4 | 5 | description: A short permissive license, compatible with GPL. Requires altered source versions to be documented as such. 6 | 7 | how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. 8 | 9 | using: 10 | 11 | permissions: 12 | - commercial-use 13 | - modifications 14 | - distribution 15 | - private-use 16 | 17 | conditions: 18 | - include-copyright 19 | - document-changes 20 | 21 | limitations: 22 | - liability 23 | - warranty 24 | 25 | --- 26 | 27 | zlib License 28 | 29 | (C) [year] [fullname] 30 | 31 | This software is provided 'as-is', without any express or implied 32 | warranty. In no event will the authors be held liable for any damages 33 | arising from the use of this software. 34 | 35 | Permission is granted to anyone to use this software for any purpose, 36 | including commercial applications, and to alter it and redistribute it 37 | freely, subject to the following restrictions: 38 | 39 | 1. The origin of this software must not be misrepresented; you must not 40 | claim that you wrote the original software. If you use this software 41 | in a product, an acknowledgment in the product documentation would be 42 | appreciated but is not required. 43 | 2. Altered source versions must be plainly marked as such, and must not be 44 | misrepresented as being the original software. 45 | 3. This notice may not be removed or altered from any source distribution. 46 | -------------------------------------------------------------------------------- /non-software.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Non-Software Licenses 3 | layout: default 4 | permalink: /non-software/ 5 | --- 6 | 7 | Open source software licenses can be used for non-software works, and often are the best choice. This is particularly the case when the works in question can be edited and versioned as source, e.g., [open source hardware](https://www.oshwa.org/definition/) designs. Choose an [open source license](/licenses/). 8 | 9 | ### Data, media, etc. 10 | 11 | [CC0-1.0](/licenses/cc0-1.0/), [CC-BY-4.0](/licenses/cc-by-4.0/), and [CC-BY-SA-4.0](/licenses/cc-by-sa-4.0/) are [open](https://opendefinition.org) licenses used for non-software material ranging from datasets to videos. Note that CC-BY-4.0 and CC-BY-SA-4.0 should [not be used for software](https://creativecommons.org/faq/#can-i-apply-a-creative-commons-license-to-software). 12 | 13 | ### Documentation 14 | 15 | Any open source software license or open license for media (see [above](#data-media-etc)) is applicable to software documentation. If you use different licenses for your software and its documentation, you may wish to take care that source code examples in the documentation are also licensed under the software license. 16 | 17 | ### Fonts 18 | 19 | The [SIL Open Font License 1.1](/licenses/ofl-1.1/) keeps fonts open but allows them to be freely used in other works. 20 | 21 | ### Mixed Projects 22 | 23 | If your project contains a mix of software and other material, you can include multiple licenses, as long as you are explicit about which license applies to what parts of the project. See [the license notice for this site](https://github.com/github/choosealicense.com#license) as an example. 24 | -------------------------------------------------------------------------------- /assets/vendor/clipboard/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "clipboard", 3 | "version": "1.4.3", 4 | "description": "Modern copy to clipboard. No Flash. Just 2kb", 5 | "repository": "zenorocha/clipboard.js", 6 | "license": "MIT", 7 | "main": "dist/clipboard.js", 8 | "browser": "src/clipboard.js", 9 | "browserify": { 10 | "transform": [ 11 | [ 12 | "babelify", 13 | { 14 | "loose": "all" 15 | } 16 | ] 17 | ] 18 | }, 19 | "keywords": [ 20 | "clipboard", 21 | "copy", 22 | "cut" 23 | ], 24 | "dependencies": { 25 | "babelify": "^6.3.0", 26 | "browserify": "^11.2.0", 27 | "delegate": "^1.0.0", 28 | "select": "^1.0.0", 29 | "tiny-emitter": "^1.0.0" 30 | }, 31 | "devDependencies": { 32 | "karma": "^0.13.10", 33 | "karma-browserify": "^4.4.0", 34 | "karma-chai": "^0.1.0", 35 | "karma-mocha": "^0.2.0", 36 | "karma-phantomjs-launcher": "^0.2.1", 37 | "karma-sinon": "^1.0.4", 38 | "mocha": "^2.3.3", 39 | "phantomjs-polyfill": "0.0.1", 40 | "uglify-js": "^2.4.24", 41 | "watchify": "^3.4.0", 42 | "bannerify": "Vekat/bannerify#feature-option" 43 | }, 44 | "scripts": { 45 | "build": "npm run build-debug && npm run build-min", 46 | "build-debug": "browserify src/clipboard.js -s Clipboard -p [bannerify --file .banner ] -o dist/clipboard.js", 47 | "build-min": "uglifyjs dist/clipboard.js --comments '/!/' -m screw_ie8=true -c screw_ie8=true,unused=false -o dist/clipboard.min.js", 48 | "build-watch": "watchify src/clipboard.js -s Clipboard -o dist/clipboard.js -v", 49 | "test": "npm run test-browser && npm run test-server", 50 | "test-browser": "karma start --single-run", 51 | "test-server": "mocha test/module-systems.js" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /_licenses/0bsd.txt: -------------------------------------------------------------------------------- 1 | --- 2 | title: BSD Zero Clause License 3 | spdx-id: 0BSD 4 | 5 | description: The BSD Zero Clause license goes further than the BSD 2-Clause license to allow you unlimited freedom with the software without requirements to include the copyright notice, license text, or disclaimer in either source or binary forms. 6 | 7 | how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. You may take the additional step of removing the copyright notice. 8 | 9 | using: 10 | - PickMeUp: https://github.com/nazar-pc/PickMeUp/blob/master/copying.md 11 | - smoltcp: https://github.com/m-labs/smoltcp/blob/master/LICENSE-0BSD.txt 12 | - Toybox: https://github.com/landley/toybox/blob/master/LICENSE 13 | 14 | permissions: 15 | - commercial-use 16 | - distribution 17 | - modifications 18 | - private-use 19 | 20 | conditions: [] 21 | 22 | limitations: 23 | - liability 24 | - warranty 25 | 26 | --- 27 | 28 | Copyright (c) [year] [fullname] 29 | 30 | Permission to use, copy, modify, and/or distribute this software for any 31 | purpose with or without fee is hereby granted. 32 | 33 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 34 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 35 | AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 36 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 37 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 38 | OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 39 | PERFORMANCE OF THIS SOFTWARE. 40 | -------------------------------------------------------------------------------- /spec/license_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'spec_helper' 4 | 5 | describe 'licenses' do 6 | it 'matches the number of files in the _licenses folder' do 7 | expect(licenses.count).to eql(Dir["#{licenses_path}/*.txt"].count) 8 | end 9 | 10 | licenses.each do |license| 11 | context "The #{license['title']} license" do 12 | let(:spdx_lcase) { license['spdx-lcase'] } 13 | let(:spdx_id) { license['spdx-id'] } 14 | 15 | it 'has an SPDX ID' do 16 | expect(spdx_ids).to include(spdx_id) 17 | end 18 | 19 | it 'has an ID that is downcased SPDX ID' do 20 | expect(spdx_id.casecmp(spdx_lcase).zero?) 21 | end 22 | 23 | it 'uses its SPDX name' do 24 | spdx = find_spdx(spdx_id) 25 | expect(spdx).to_not be_nil 26 | expect(spdx[1]['name'].gsub(/ only$/, '')).to eql(license['title']) 27 | end 28 | 29 | context 'industry approval' do 30 | it 'should be approved by OSI or FSF or OD' do 31 | expect(approved_licenses).to include(spdx_lcase), 'See https://git.io/vzCTV.' 32 | end 33 | end 34 | 35 | context 'minimum permissions' do 36 | let(:permissions) { license['permissions'] } 37 | it 'should allow commercial use' do 38 | expect(permissions).to include('commercial-use') 39 | end 40 | 41 | it 'should allow modification' do 42 | expect(permissions).to include('modifications') 43 | end 44 | 45 | it 'should allow distribution' do 46 | expect(permissions).to include('distribution') 47 | end 48 | 49 | it 'should allow private use' do 50 | expect(permissions).to include('private-use') 51 | end 52 | end 53 | end 54 | end 55 | end 56 | -------------------------------------------------------------------------------- /_includes/license-overview.html: -------------------------------------------------------------------------------- 1 | {% assign id = "/licenses/" | append: include.license-id %} 2 | {% assign licenses = site.licenses | where:"id", id %} 3 | {% for license in licenses %} 4 |
5 | 18 | 19 |
20 | 21 | 22 | {% assign types = "permissions|conditions|limitations" | split: "|" %} 23 | {% for type in types %} 24 | 25 | {% endfor %} 26 | 27 | 28 | {% for type in types %} 29 | 43 | {% endfor %} 44 | 45 |
{{ type | capitalize }}
30 |
    31 | {% assign rules = site.data.rules[type] | sort: "label" %} 32 | {% for rule_obj in rules %} 33 | {% assign req = rule_obj.tag %} 34 | {% if license[type] contains req %} 35 |
  • 36 | 37 | {{ rule_obj.label }} 38 |
  • 39 | {% endif %} 40 | {% endfor %} 41 |
42 |
46 |

View full {{ license.title }} »

47 |
48 |
49 | {% endfor %} 50 | -------------------------------------------------------------------------------- /assets/vendor/normalize-css/README.md: -------------------------------------------------------------------------------- 1 | # normalize.css v3 2 | 3 | Normalize.css is a customisable CSS file that makes browsers render all 4 | elements more consistently and in line with modern standards. 5 | 6 | The project relies on researching the differences between default browser 7 | styles in order to precisely target only the styles that need or benefit from 8 | normalizing. 9 | 10 | [View the test file](http://necolas.github.io/normalize.css/latest/test.html) 11 | 12 | ## Install 13 | 14 | Download from the [project page](http://necolas.github.io/normalize.css/). 15 | 16 | Install with [Bower](http://bower.io/): `bower install --save normalize-css` 17 | 18 | Install with [Component(1)](http://component.io/): `component install necolas/normalize.css` 19 | 20 | ## What does it do? 21 | 22 | * Preserves useful defaults, unlike many CSS resets. 23 | * Normalizes styles for a wide range of elements. 24 | * Corrects bugs and common browser inconsistencies. 25 | * Improves usability with subtle improvements. 26 | * Explains what code does using detailed comments. 27 | 28 | ## How to use it 29 | 30 | No other styles should come before Normalize.css. 31 | 32 | It is recommended that you include the `normalize.css` file as untouched 33 | library code. 34 | 35 | ## Browser support 36 | 37 | * Google Chrome (latest) 38 | * Mozilla Firefox (latest) 39 | * Mozilla Firefox 4 40 | * Opera (latest) 41 | * Apple Safari 6+ 42 | * Internet Explorer 8+ 43 | 44 | [Normalize.css v1 provides legacy browser 45 | support](https://github.com/necolas/normalize.css/tree/v1) (IE 6+, Safari 4+), 46 | but is no longer actively developed. 47 | 48 | ## Contributing 49 | 50 | Please read the CONTRIBUTING.md 51 | 52 | ## Acknowledgements 53 | 54 | Normalize.css is a project by [Nicolas Gallagher](https://github.com/necolas), 55 | co-created with [Jonathan Neal](https://github.com/jonathantneal). 56 | -------------------------------------------------------------------------------- /_licenses/isc.txt: -------------------------------------------------------------------------------- 1 | --- 2 | title: ISC License 3 | spdx-id: ISC 4 | 5 | description: A permissive license lets people do anything with your code with proper attribution and without warranty. The ISC license is functionally equivalent to the BSD 2-Clause and MIT licenses, removing some language that is no longer necessary. 6 | 7 | how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. 8 | 9 | using: 10 | - Helix: https://github.com/tildeio/helix/blob/master/LICENSE 11 | - Node.js semver: https://github.com/npm/node-semver/blob/master/LICENSE 12 | - OpenStreetMap iD: https://github.com/openstreetmap/iD/blob/master/LICENSE.md 13 | 14 | permissions: 15 | - commercial-use 16 | - distribution 17 | - modifications 18 | - private-use 19 | 20 | conditions: 21 | - include-copyright 22 | 23 | limitations: 24 | - liability 25 | - warranty 26 | 27 | --- 28 | 29 | ISC License 30 | 31 | Copyright (c) [year], [fullname] 32 | 33 | Permission to use, copy, modify, and/or distribute this software for any 34 | purpose with or without fee is hereby granted, provided that the above 35 | copyright notice and this permission notice appear in all copies. 36 | 37 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 38 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 39 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 40 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 41 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 42 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 43 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 44 | -------------------------------------------------------------------------------- /_licenses/postgresql.txt: -------------------------------------------------------------------------------- 1 | --- 2 | title: PostgreSQL License 3 | spdx-id: PostgreSQL 4 | 5 | description: A very short, BSD-style license, used specifically for PostgreSQL. 6 | 7 | how: To use it, say that it is The PostgreSQL License, and then substitute the copyright year and name of the copyright holder into the body of the license. Then put the license into a prominent file ("COPYRIGHT", "LICENSE" or "COPYING" are common names for this file) in your software distribution. 8 | 9 | using: 10 | - pgBadger: https://github.com/darold/pgbadger/blob/master/LICENSE 11 | - pgAdmin: https://github.com/postgres/pgadmin4/blob/master/LICENSE 12 | - .NET Access to PostgreSQL: https://github.com/npgsql/npgsql/blob/dev/LICENSE 13 | 14 | permissions: 15 | - commercial-use 16 | - modifications 17 | - distribution 18 | - private-use 19 | 20 | conditions: 21 | - include-copyright 22 | 23 | limitations: 24 | - liability 25 | - warranty 26 | 27 | --- 28 | 29 | PostgreSQL License 30 | 31 | Copyright (c) [year], [fullname] 32 | 33 | Permission to use, copy, modify, and distribute this software and its 34 | documentation for any purpose, without fee, and without a written agreement is 35 | hereby granted, provided that the above copyright notice and this paragraph 36 | and the following two paragraphs appear in all copies. 37 | 38 | IN NO EVENT SHALL [fullname] BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, 39 | SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING 40 | OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF [fullname] 41 | HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 42 | 43 | [fullname] SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT 44 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 45 | PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, 46 | AND [fullname] HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, 47 | ENHANCEMENTS, OR MODIFICATIONS. 48 | -------------------------------------------------------------------------------- /assets/vendor/clipboard/contributing.md: -------------------------------------------------------------------------------- 1 | # Contributing guide 2 | 3 | Want to contribute to Clipboard.js? Awesome! 4 | There are many ways you can contribute, see below. 5 | 6 | ## Opening issues 7 | 8 | Open an issue to report bugs or to propose new features. 9 | 10 | - Reporting bugs: describe the bug as clearly as you can, including steps to reproduce, what happened and what you were expecting to happen. Also include browser version, OS and other related software's (npm, Node.js, etc) versions when applicable. 11 | 12 | - Proposing features: explain the proposed feature, what it should do, why it is useful, how users should use it. Give us as much info as possible so it will be easier to discuss, access and implement the proposed feature. When you're unsure about a certain aspect of the feature, feel free to leave it open for others to discuss and find an appropriate solution. 13 | 14 | ## Proposing pull requests 15 | 16 | Pull requests are very welcome. Note that if you are going to propose drastic changes, be sure to open an issue for discussion first, to make sure that your PR will be accepted before you spend effort coding it. 17 | 18 | Fork the Clipboard.js repository, clone it locally and create a branch for your proposed bug fix or new feature. Avoid working directly on the master branch. 19 | 20 | Implement your bug fix or feature, write tests to cover it and make sure all tests are passing (run a final `npm test` to make sure everything is correct). Then commit your changes, push your bug fix/feature branch to the origin (your forked repo) and open a pull request to the upstream (the repository you originally forked)'s master branch. 21 | 22 | ## Documentation 23 | 24 | Documentation is extremely important and takes a fair deal of time and effort to write and keep updated. Please submit any and all improvements you can make to the repository's docs. 25 | 26 | ## Known issues 27 | If you're using npm@3 you'll probably face some issues related to peerDependencies. 28 | https://github.com/npm/npm/issues/9204 29 | -------------------------------------------------------------------------------- /_data/meta.yml: -------------------------------------------------------------------------------- 1 | # Each license has YAML front matter describing the license's properties. 2 | # The available fields are: 3 | 4 | - name: title 5 | description: The license full name specified by https://spdx.org/licenses/ 6 | required: true 7 | 8 | - name: spdx-id 9 | description: Short identifier specified by https://spdx.org/licenses/ 10 | required: true 11 | 12 | - name: description 13 | description: A human-readable description of the license 14 | required: true 15 | 16 | - name: how 17 | description: Instructions on how to implement the license 18 | required: true 19 | 20 | - name: conditions 21 | description: Bulleted list of required rules 22 | required: true 23 | 24 | - name: permissions 25 | description: Bulleted list of permitted rules 26 | required: true 27 | 28 | - name: limitations 29 | description: Bulleted list of limited rules 30 | required: true 31 | 32 | - name: using 33 | description: 'A list 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](https://github.com/benbalter/licensee) in the form of `project_name: license_file_url`' 34 | required: true 35 | 36 | # Optional fields 37 | 38 | - name: featured 39 | description: Whether the license should be featured on the main page (defaults to false) 40 | required: false 41 | 42 | - name: hidden 43 | description: Whether the license is neither [popular](https://opensource.org/licenses) nor fills out the [spectrum of licenses](https://choosealicense.com/licenses/) from strongly conditional to unconditional (defaults to true) 44 | required: false 45 | 46 | - name: nickname 47 | description: Customary short name if applicable (e.g, GPLv3) 48 | required: false 49 | 50 | - name: note 51 | description: Additional information about the licenses 52 | required: false 53 | 54 | - name: redirect_from 55 | description: Relative path(s) to redirect to the license from, to prevent breaking old URLs 56 | required: false 57 | -------------------------------------------------------------------------------- /_layouts/license.html: -------------------------------------------------------------------------------- 1 | {% include header.html %} 2 | 3 |
4 | 5 |
6 | 7 | {% if page.nickname %} 8 |

9 | {{ page.nickname }} 10 |

11 | {% endif %} 12 | 13 |

14 | {{ page.description }} 15 |

16 | 17 |
18 | 19 | 20 | 21 | {% assign types = "permissions|conditions|limitations" | split: "|" %} 22 | {% for type in types %} 23 | 24 | {% endfor %} 25 | 26 | 27 | {% for type in types %} 28 | 42 | {% endfor %} 43 | 44 |
{{ type | capitalize }}
29 |
    30 | {% assign rules = site.data.rules[type] | sort: "label" %} 31 | {% for rule_obj in rules %} 32 | {% assign req = rule_obj.tag %} 33 | {% if page[type] contains req %} 34 |
  • 35 | 36 | {{ rule_obj.label }} 37 |
  • 38 | {% endif %} 39 | {% endfor %} 40 |
41 |
45 | 46 |
47 | 48 |
{{ content | replace:"<", "<" | replace:">", ">" }}
49 | 50 |
51 | 52 | {% include sidebar.html %} 53 | 54 |
55 | 56 | {% include footer.html %} 57 | -------------------------------------------------------------------------------- /script/check-approval: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # frozen_string_literal: true 3 | 4 | # Checks if a given license meets the approval criteria to be added to choosealicense.com 5 | # See https://github.com/github/choosealicense.com/blob/gh-pages/CONTRIBUTING.md#adding-a-license 6 | # Usage: script/check-approval [SPDX LICENSE ID] 7 | 8 | require_relative '../spec/spec_helper' 9 | require 'terminal-table' 10 | require 'colored' 11 | require 'fuzzy_match' 12 | 13 | # Display usage instructions 14 | puts File.open(__FILE__).read.scan(/^# .*/)[0...3].join("\n").gsub(/^# /, '') if ARGV.count != 1 15 | 16 | class TrueClass 17 | def to_s 18 | 'Yes'.green 19 | end 20 | end 21 | 22 | class FalseClass 23 | def to_s 24 | 'No'.red 25 | end 26 | end 27 | 28 | license = ARGV[0].downcase.strip 29 | approvals = { 30 | 'OSI' => osi_approved_licenses, 31 | 'FSF' => fsf_approved_licenses, 32 | 'OD' => od_approved_licenses 33 | } 34 | 35 | id, spdx = find_spdx(license) 36 | rows = [] 37 | 38 | if spdx.nil? 39 | id = 'Invalid'.red 40 | name = 'None'.red 41 | else 42 | id = id.green 43 | name = spdx['name'].green 44 | end 45 | 46 | rows << ['SPDX ID', id] 47 | rows << ['SPDX Name', name] 48 | 49 | approvals.each do |approver, licenses| 50 | rows << ["#{approver} approved", licenses.include?(license)] 51 | end 52 | 53 | license_ids = licenses.map { |l| l['id'] } 54 | current = license_ids.include?(license) 55 | rows << ['Current license', current] 56 | 57 | rows << :separator 58 | eligible = (!current && spdx && approved_licenses.include?(license)) 59 | rows << ['Eligible', eligible] 60 | 61 | puts Terminal::Table.new title: "License: #{license}", rows: rows 62 | puts 63 | puts "Code search: https://github.com/search?q=#{license}+filename%3ALICENSE&type=Code" 64 | 65 | if spdx.nil? 66 | puts 67 | puts 'SPDX ID not found. Some possible matches:' 68 | puts 69 | 70 | fm = FuzzyMatch.new(spdx_ids) 71 | matches = fm.find_all_with_score(license) 72 | matches = matches[0...5].map { |record, _dice, _levin| record } 73 | matches.each { |l| puts "* #{l}" } 74 | end 75 | -------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 | 15 | 16 |
17 | 18 | {% if page.collection == "licenses" or page.class == "license-types" %} 19 | 20 | 21 | 22 | 35 | 36 | {% endif %} 37 | 38 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /_licenses/mit.txt: -------------------------------------------------------------------------------- 1 | --- 2 | title: MIT License 3 | spdx-id: MIT 4 | featured: true 5 | hidden: false 6 | 7 | description: A short and simple permissive license with conditions only requiring preservation of copyright and license notices. Licensed works, modifications, and larger works may be distributed under different terms and without source code. 8 | 9 | how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. 10 | 11 | using: 12 | - Babel: https://github.com/babel/babel/blob/master/LICENSE 13 | - .NET Core: https://github.com/dotnet/corefx/blob/master/LICENSE.TXT 14 | - Rails: https://github.com/rails/rails/blob/master/MIT-LICENSE 15 | 16 | permissions: 17 | - commercial-use 18 | - modifications 19 | - distribution 20 | - private-use 21 | 22 | conditions: 23 | - include-copyright 24 | 25 | limitations: 26 | - liability 27 | - warranty 28 | 29 | --- 30 | 31 | MIT License 32 | 33 | Copyright (c) [year] [fullname] 34 | 35 | Permission is hereby granted, free of charge, to any person obtaining a copy 36 | of this software and associated documentation files (the "Software"), to deal 37 | in the Software without restriction, including without limitation the rights 38 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 39 | copies of the Software, and to permit persons to whom the Software is 40 | furnished to do so, subject to the following conditions: 41 | 42 | The above copyright notice and this permission notice shall be included in all 43 | copies or substantial portions of the Software. 44 | 45 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 46 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 47 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 48 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 49 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 50 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 51 | SOFTWARE. 52 | -------------------------------------------------------------------------------- /_licenses/unlicense.txt: -------------------------------------------------------------------------------- 1 | --- 2 | title: The Unlicense 3 | spdx-id: Unlicense 4 | hidden: false 5 | 6 | description: A license with no conditions whatsoever which dedicates works to the public domain. Unlicensed works, modifications, and larger works may be distributed under different terms and without source code. 7 | 8 | how: Create a text file (typically named UNLICENSE or UNLICENSE.txt) in the root of your source code and copy the text of the license disclaimer into the file. 9 | 10 | using: 11 | - youtube-dl: https://github.com/rg3/youtube-dl/blob/master/LICENSE 12 | - kakoune: https://github.com/mawww/kakoune/blob/master/UNLICENSE 13 | - RDF.rb: https://github.com/ruby-rdf/rdf/blob/master/UNLICENSE 14 | 15 | permissions: 16 | - private-use 17 | - commercial-use 18 | - modifications 19 | - distribution 20 | 21 | conditions: [] 22 | 23 | limitations: 24 | - liability 25 | - warranty 26 | 27 | --- 28 | 29 | This is free and unencumbered software released into the public domain. 30 | 31 | Anyone is free to copy, modify, publish, use, compile, sell, or 32 | distribute this software, either in source code form or as a compiled 33 | binary, for any purpose, commercial or non-commercial, and by any 34 | means. 35 | 36 | In jurisdictions that recognize copyright laws, the author or authors 37 | of this software dedicate any and all copyright interest in the 38 | software to the public domain. We make this dedication for the benefit 39 | of the public at large and to the detriment of our heirs and 40 | successors. We intend this dedication to be an overt act of 41 | relinquishment in perpetuity of all present and future rights to this 42 | software under copyright law. 43 | 44 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 45 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 46 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 47 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 48 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 49 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 50 | OTHER DEALINGS IN THE SOFTWARE. 51 | 52 | For more information, please refer to 53 | -------------------------------------------------------------------------------- /_licenses/bsl-1.0.txt: -------------------------------------------------------------------------------- 1 | --- 2 | title: Boost Software License 1.0 3 | spdx-id: BSL-1.0 4 | 5 | description: A simple permissive license only requiring preservation of copyright and license notices for source (and not binary) distribution. Licensed works, modifications, and larger works may be distributed under different terms and without source code. 6 | 7 | how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. 8 | 9 | note: Boost recommends taking the additional step of adding a boilerplate notice to the top of each file. The boilerplate can be found at the [Boost Software License FAQ](https://www.boost.org/users/license.html#FAQ). 10 | 11 | using: 12 | 13 | permissions: 14 | - commercial-use 15 | - modifications 16 | - distribution 17 | - private-use 18 | 19 | conditions: 20 | - include-copyright 21 | 22 | limitations: 23 | - liability 24 | - warranty 25 | 26 | --- 27 | 28 | Boost Software License - Version 1.0 - August 17th, 2003 29 | 30 | Permission is hereby granted, free of charge, to any person or organization 31 | obtaining a copy of the software and accompanying documentation covered by 32 | this license (the "Software") to use, reproduce, display, distribute, 33 | execute, and transmit the Software, and to prepare derivative works of the 34 | Software, and to permit third-parties to whom the Software is furnished to 35 | do so, all subject to the following: 36 | 37 | The copyright notices in the Software and this entire statement, including 38 | the above license grant, this restriction and the following disclaimer, 39 | must be included in all copies of the Software, in whole or in part, and 40 | all derivative works of the Software, unless such copies or derivative 41 | works are solely in the form of machine-executable object code generated by 42 | a source language processor. 43 | 44 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 45 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 46 | FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 47 | SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 48 | FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 49 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 50 | DEALINGS IN THE SOFTWARE. 51 | -------------------------------------------------------------------------------- /assets/vendor/html5shiv/dist/html5shiv.js: -------------------------------------------------------------------------------- 1 | /* 2 | HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | (function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); 5 | a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; 6 | c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| 7 | "undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f); 8 | if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;dBSD 2-Clause and BSD 3-Clause. Both have very minute differences to the MIT license. 8 | 9 | how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. 10 | 11 | using: 12 | - go-redis: https://github.com/go-redis/redis/blob/master/LICENSE 13 | - Homebrew: https://github.com/Homebrew/brew/blob/master/LICENSE.txt 14 | - Pony: https://github.com/ponylang/ponyc/blob/master/LICENSE 15 | 16 | permissions: 17 | - commercial-use 18 | - modifications 19 | - distribution 20 | - private-use 21 | 22 | conditions: 23 | - include-copyright 24 | 25 | limitations: 26 | - liability 27 | - warranty 28 | 29 | --- 30 | 31 | BSD 2-Clause License 32 | 33 | Copyright (c) [year], [fullname] 34 | All rights reserved. 35 | 36 | Redistribution and use in source and binary forms, with or without 37 | modification, are permitted provided that the following conditions are met: 38 | 39 | 1. Redistributions of source code must retain the above copyright notice, this 40 | list of conditions and the following disclaimer. 41 | 42 | 2. Redistributions in binary form must reproduce the above copyright notice, 43 | this list of conditions and the following disclaimer in the documentation 44 | and/or other materials provided with the distribution. 45 | 46 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 47 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 48 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 49 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 50 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 51 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 52 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 53 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 54 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 55 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 56 | -------------------------------------------------------------------------------- /about.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | permalink: /about/ 4 | title: "What's this about?" 5 | --- 6 | 7 | GitHub wants to help developers choose an open source license for their source code. 8 | 9 | If you already know what you're doing and have a license you prefer to use, that's great! We're not here to change your mind. But if you are bewildered by the large number of open source license choices, maybe we can help. 10 | 11 | ## Not comprehensive 12 | 13 | This site is not a comprehensive directory of open source licenses. On the [homepage](/), we break it down into just two licenses. The vast majority of projects will likely be fine choosing from one of these two. Just in case you have specific needs not covered by those two, we also highlight a [few other licenses to consider](/licenses/), and have a page about [licenses for non-software projects](/non-software/). 14 | 15 | See our [appendix](/appendix/) for a table of all of the licenses cataloged in the choosealicense.com repository and the links below for *even more licenses* that you **do not** need to learn about when choosing a license for your project. 16 | 17 | ### Additional resources 18 | 19 | {: .bullets} 20 | 21 | * Open Source Initiative's FAQ on [Which Open Source license should I choose to release my software under?](https://opensource.org/faq#which-license) 22 | * Free Software Foundation's [advice on how to choose a license](https://www.gnu.org/licenses/license-recommendations.html) 23 | * [Joinup Licensing Assistant](https://joinup.ec.europa.eu/collection/eupl/joinup-licensing-assistant-jla), an interactive license chooser from the European Commission 24 | * [The Legal Side of Open Source](https://opensource.guide/legal/), an Open Source Guide covering licensing and related issues 25 | 26 | ## Help us improve it 27 | 28 | Choosealicense.com isn't just about open source, the site itself is open source as well. See something you think could be done better? Feel free to [fork the project](https://github.com/github/choosealicense.com) on GitHub and submit a pull request. We'd welcome your improvements. 29 | 30 | ## Disclaimer 31 | 32 | We are not lawyers. Well, most of us anyway. It is not the goal of this site to provide legal advice. The goal of this site is to provide a starting point to help you make an informed choice by providing information on popular open source licenses. If you have any questions regarding the right license for your code or any other legal issues relating to it, it's up to you to do further research or consult with a professional. 33 | -------------------------------------------------------------------------------- /community.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | permalink: /community/ 4 | redirect_from: /existing/ 5 | title: Existing projects and communities 6 | --- 7 | 8 | If you're contributing to or extending an existing project, it's almost always easiest to continue using that project's license. Look for a file called `LICENSE` or `COPYING`, or a notice in the project's `README` to find out what that license is. If you can't find a license, [ask](/no-permission/#for-users). 9 | 10 | Depending on how you're building on an existing project and what its license is, using the existing project's license for your own might not just be the easiest thing to do, but a condition on which your permission to build on the existing project rests: see the "same license" condition of [some licenses](/licenses/). 11 | 12 | Some communities have strong preferences for particular licenses. If you want to participate in one of these, it will be easier to use the preferred license even if you're starting a brand new project with no existing dependencies. Examples: 13 | 14 | {: .bullets} 15 | 16 | * [Apache](https://www.apache.org/licenses/) requires [Apache License 2.0](/licenses/apache-2.0/) 17 | * [Cloud Native Computing Foundation](https://github.com/cncf/toc/blob/master/process/project_proposals.adoc) dictates [Apache License 2.0](/licenses/apache-2.0/) by default 18 | * [GNU](https://www.gnu.org/licenses/license-recommendations.html) recommends [GNU GPLv3](/licenses/gpl-3.0/) for most programs 19 | * [NPM packages](https://libraries.io/search?platforms=NPM) overwhelmingly use the [MIT](/licenses/mit/) or the very similar [ISC](/licenses/isc) licenses 20 | * [OpenBSD](https://www.openbsd.org/policy.html) prefers the [ISC License](/licenses/isc/) 21 | * [Rust](https://rust-lang-nursery.github.io/api-guidelines/necessities.html#crate-and-its-dependencies-have-a-permissive-license-c-permissive) crates are overwhelmingly licensed under both [MIT](/licenses/mit/) and [Apache License 2.0](/licenses/apache-2.0/) 22 | * [WordPress](https://wordpress.org/about/license/) plugins and themes must be [GNU GPLv2](/licenses/gpl-2.0/) (or later) 23 | 24 | Communities come in all shapes and sizes, and more than one might be pertinent (e.g., [your company](https://opensource.guide/legal/#what-does-my-companys-legal-team-need-to-know)). The examples above are *very* well established. If the community you see your project as a part of doesn't have set-in-stone licensing traditions, or you don't see your project as part of any particular community, that's just fine: [make your own choice of an open source license](/). 25 | -------------------------------------------------------------------------------- /_licenses/bsd-3-clause-clear.txt: -------------------------------------------------------------------------------- 1 | --- 2 | title: BSD 3-Clause Clear License 3 | spdx-id: BSD-3-Clause-Clear 4 | 5 | description: A variant of the BSD 3-Clause License that explicitly does not grant any patent rights. 6 | 7 | how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. 8 | 9 | using: 10 | 11 | permissions: 12 | - commercial-use 13 | - modifications 14 | - distribution 15 | - private-use 16 | 17 | conditions: 18 | - include-copyright 19 | 20 | limitations: 21 | - liability 22 | - patent-use 23 | - warranty 24 | 25 | --- 26 | 27 | The Clear BSD License 28 | 29 | Copyright (c) [year] [fullname] 30 | All rights reserved. 31 | 32 | Redistribution and use in source and binary forms, with or without 33 | modification, are permitted (subject to the limitations in the disclaimer 34 | below) provided that the following conditions are met: 35 | 36 | * Redistributions of source code must retain the above copyright notice, 37 | this list of conditions and the following disclaimer. 38 | 39 | * Redistributions in binary form must reproduce the above copyright 40 | notice, this list of conditions and the following disclaimer in the 41 | documentation and/or other materials provided with the distribution. 42 | 43 | * Neither the name of the copyright holder nor the names of its 44 | contributors may be used to endorse or promote products derived from this 45 | software without specific prior written permission. 46 | 47 | NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY 48 | THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 49 | CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 50 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 51 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 52 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 53 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 54 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 55 | BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 56 | IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 57 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 58 | POSSIBILITY OF SUCH DAMAGE. 59 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | class: home 4 | hide_breadcrumbs: true 5 | title: Choose an open source license 6 | permalink: / 7 | --- 8 | 9 |

An open source license protects contributors and users. Businesses and savvy developers won’t touch a project without this protection.

10 | 11 |

12 | { 13 | Which of the following best describes your situation? 14 | } 15 |

16 | 54 |

55 | { 56 | What if none of these work for me? 57 | } 58 |

59 | 79 | -------------------------------------------------------------------------------- /_data/rules.yml: -------------------------------------------------------------------------------- 1 | permissions: 2 | - description: This software and derivatives may be used for commercial purposes. 3 | label: Commercial use 4 | tag: commercial-use 5 | - description: This software may be modified. 6 | label: Modification 7 | tag: modifications 8 | - description: This software may be distributed. 9 | label: Distribution 10 | tag: distribution 11 | - description: This software may be used and modified in private. 12 | label: Private use 13 | tag: private-use 14 | - description: This license provides an express grant of patent rights from contributors. 15 | label: Patent use 16 | tag: patent-use 17 | 18 | conditions: 19 | - description: A copy of the license and copyright notice must be included with the software. 20 | label: License and copyright notice 21 | tag: include-copyright 22 | - description: Changes made to the code must be documented. 23 | label: State changes 24 | tag: document-changes 25 | - description: Source code must be made available when the software is distributed. 26 | label: Disclose source 27 | tag: disclose-source 28 | - description: Users who interact with the software via network are given the right to receive a copy of the source code. 29 | label: Network use is distribution 30 | tag: network-use-disclose 31 | - description: Modifications must be released under the same license when distributing the software. In some cases a similar or related license may be used. 32 | label: Same license 33 | tag: same-license 34 | - description: 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. 35 | label: Same license (file) 36 | tag: same-license--file 37 | - description: 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. 38 | label: Same license (library) 39 | tag: same-license--library 40 | 41 | limitations: 42 | - description: 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. 43 | label: Trademark use 44 | tag: trademark-use 45 | - description: This license includes a limitation of liability. 46 | label: Liability 47 | tag: liability 48 | - description: This license explicitly states that it does NOT grant any rights in the patents of contributors. 49 | label: Patent use 50 | tag: patent-use 51 | - description: The license explicitly states that it does NOT provide any warranty. 52 | label: Warranty 53 | tag: warranty 54 | -------------------------------------------------------------------------------- /_licenses/bsd-3-clause.txt: -------------------------------------------------------------------------------- 1 | --- 2 | title: BSD 3-Clause "New" or "Revised" License 3 | spdx-id: BSD-3-Clause 4 | hidden: false 5 | 6 | description: A permissive license similar to the BSD 2-Clause License, but with a 3rd clause that prohibits others from using the name of the project or its contributors to promote derived products without written consent. 7 | 8 | how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. 9 | 10 | using: 11 | - d3: https://github.com/d3/d3/blob/master/LICENSE 12 | - LevelDB: https://github.com/google/leveldb/blob/master/LICENSE 13 | - Quill: https://github.com/quilljs/quill/blob/develop/LICENSE 14 | 15 | permissions: 16 | - commercial-use 17 | - modifications 18 | - distribution 19 | - private-use 20 | 21 | conditions: 22 | - include-copyright 23 | 24 | limitations: 25 | - liability 26 | - warranty 27 | 28 | --- 29 | 30 | BSD 3-Clause License 31 | 32 | Copyright (c) [year], [fullname] 33 | All rights reserved. 34 | 35 | Redistribution and use in source and binary forms, with or without 36 | modification, are permitted provided that the following conditions are met: 37 | 38 | 1. Redistributions of source code must retain the above copyright notice, this 39 | list of conditions and the following disclaimer. 40 | 41 | 2. Redistributions in binary form must reproduce the above copyright notice, 42 | this list of conditions and the following disclaimer in the documentation 43 | and/or other materials provided with the distribution. 44 | 45 | 3. Neither the name of the copyright holder nor the names of its 46 | contributors may be used to endorse or promote products derived from 47 | this software without specific prior written permission. 48 | 49 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 50 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 51 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 52 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 53 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 54 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 55 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 56 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 57 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 58 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 59 | -------------------------------------------------------------------------------- /spec/license_meta_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'spec_helper' 4 | 5 | describe 'license meta' do 6 | licenses.each do |license| 7 | # Manually load the raw license so we don't get the defaults 8 | raw_fields = SafeYAML.load_file("_licenses/#{license['spdx-lcase']}.txt") 9 | 10 | context "The #{license['title']} license" do 11 | it 'should only contain supported meta fields' do 12 | extra_fields = raw_fields.keys - (meta.map { |m| m['name'] }) 13 | expect(extra_fields).to be_empty 14 | end 15 | 16 | it 'should contain all required meta fields' do 17 | required = meta.select { |m| m['required'] }.map { |m| m['name'] } 18 | missing = required - raw_fields.keys 19 | expect(missing).to be_empty 20 | end 21 | 22 | examples = raw_fields['using'] || [] 23 | 24 | it 'using contains 3 examples' do 25 | legacy = [ 26 | 'afl-3.0', 27 | 'agpl-3.0', 28 | 'artistic-2.0', 29 | 'bsd-3-clause-clear', 30 | 'bsl-1.0', 31 | 'cc0-1.0', 32 | 'cc-by-4.0', 33 | 'cc-by-sa-4.0', 34 | 'eupl-1.1', 35 | 'lgpl-2.1', 36 | 'lgpl-3.0', 37 | 'lppl-1.3c', 38 | 'ms-pl', 39 | 'ms-rl', 40 | 'ofl-1.1', 41 | 'wtfpl', 42 | 'zlib' 43 | ] 44 | skip 'added before 3 using examples required' if legacy.include?(license['slug']) 45 | expect(examples.length).to eq(3) 46 | end 47 | 48 | context 'licensee detects using examples' do 49 | slug = license['slug'] 50 | 51 | examples.each do |example| 52 | example_url = example.values[0] 53 | 54 | context "the #{example_url} URL" do 55 | let(:content) { OpenURI.open_uri(example_url).read } 56 | let(:detected) { Licensee::ProjectFiles::LicenseFile.new(content, 'LICENSE').license } 57 | 58 | if example_url.start_with?('https://github.com/') 59 | example_url.gsub!(%r{\Ahttps://github.com/([\w-]+/[\w\.-]+)/blob/([\w-]+/\S+)\z}, 'https://raw.githubusercontent.com/\1/\2') 60 | elsif example_url.start_with?('https://git.savannah.gnu.org/', 'https://git.gnome.org/') 61 | example_url.gsub!(%r{/tree/}, '/plain/') 62 | elsif example_url.start_with?('https://bitbucket.org/') 63 | example_url.gsub!(%r{/src/}, '/raw/') 64 | end 65 | 66 | it "is a #{slug} license" do 67 | skip 'NCSA and PostgreSQL licenses hard to detect' if %(ncsa postgresql).include?(slug) 68 | expect(detected.key).to eq(slug) 69 | end 70 | end 71 | end 72 | end 73 | end 74 | end 75 | end 76 | -------------------------------------------------------------------------------- /_includes/sidebar.html: -------------------------------------------------------------------------------- 1 | 55 | -------------------------------------------------------------------------------- /_licenses/ncsa.txt: -------------------------------------------------------------------------------- 1 | --- 2 | title: University of Illinois/NCSA Open Source License 3 | spdx-id: NCSA 4 | nickname: UIUC/NCSA 5 | 6 | description: The University of Illinois/NCSA Open Source License, or UIUC license, is a permissive free software license, based on the MIT/X11 license and the BSD 3-clause License. Its conditions include requiring the preservation of copyright and license notices both in source and in binary distributions and the prohibition of using the names of the authors or the project organization to promote or endorse derived products. 7 | 8 | how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. Replace [project] with the project organization, if any, that sponsors this work. 9 | 10 | using: 11 | - LLDB: https://github.com/llvm-mirror/lldb/blob/master/LICENSE.TXT 12 | - ROCR-Runtime: https://github.com/RadeonOpenCompute/ROCR-Runtime/blob/master/LICENSE.txt 13 | - RLTK: https://github.com/chriswailes/RLTK/blob/master/LICENSE 14 | 15 | permissions: 16 | - commercial-use 17 | - modifications 18 | - distribution 19 | - private-use 20 | 21 | conditions: 22 | - include-copyright 23 | 24 | limitations: 25 | - liability 26 | - warranty 27 | 28 | --- 29 | 30 | University of Illinois/NCSA Open Source License 31 | 32 | Copyright (c) [year] [fullname]. All rights reserved. 33 | 34 | Developed by: [project] 35 | [fullname] 36 | [projecturl] 37 | 38 | Permission is hereby granted, free of charge, to any person 39 | obtaining a copy of this software and associated documentation files 40 | (the "Software"), to deal with the Software without restriction, 41 | including without limitation the rights to use, copy, modify, merge, 42 | publish, distribute, sublicense, and/or sell copies of the Software, 43 | and to permit persons to whom the Software is furnished to do so, 44 | subject to the following conditions: 45 | 46 | * Redistributions of source code must retain the above copyright notice, 47 | this list of conditions and the following disclaimers. 48 | 49 | * Redistributions in binary form must reproduce the above copyright 50 | notice, this list of conditions and the following disclaimers in the 51 | documentation and/or other materials provided with the distribution. 52 | 53 | * Neither the names of [fullname], [project] nor the names of its 54 | contributors may be used to endorse or promote products derived from 55 | this Software without specific prior written permission. 56 | 57 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 58 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 59 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 60 | CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 61 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 62 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH 63 | THE SOFTWARE. 64 | -------------------------------------------------------------------------------- /assets/vendor/qtip2/imagesloaded.pkg.min.js: -------------------------------------------------------------------------------- 1 | /* qTip2 v2.2.0 tips modal viewport svg imagemap ie6 | qtip2.com | Licensed MIT, GPL | Mon Nov 25 2013 11:54:49 */ 2 | /*! 3 | * imagesLoaded v3.0.4 4 | * JavaScript is all like "You images are done yet or what?" 5 | */ 6 | (function(t){"use strict";function e(t,e){for(var i in e)t[i]=e[i];return t}function i(t){return"[object Array]"===h.call(t)}function s(t){var e=[];if(i(t))e=t;else if("number"==typeof t.length)for(var s=0,o=t.length;o>s;s++)e.push(t[s]);else e.push(t);return e}function o(t,i){function o(t,i,r){if(!(this instanceof o))return new o(t,i);"string"==typeof t&&(t=document.querySelectorAll(t)),this.elements=s(t),this.options=e({},this.options),"function"==typeof i?r=i:e(this.options,i),r&&this.on("always",r),this.getImages(),n&&(this.jqDeferred=new n.Deferred);var a=this;setTimeout(function(){a.check()})}function h(t){this.img=t}o.prototype=new t,o.prototype.options={},o.prototype.getImages=function(){this.images=[];for(var t=0,e=this.elements.length;e>t;t++){var i=this.elements[t];"IMG"===i.nodeName&&this.addImage(i);for(var s=i.querySelectorAll("img"),o=0,n=s.length;n>o;o++){var r=s[o];this.addImage(r)}}},o.prototype.addImage=function(t){var e=new h(t);this.images.push(e)},o.prototype.check=function(){function t(t,o){return e.options.debug&&a&&r.log("confirm",t,o),e.progress(t),i++,i===s&&e.complete(),!0}var e=this,i=0,s=this.images.length;if(this.hasAnyBroken=!1,!s)return this.complete(),void 0;for(var o=0;s>o;o++){var n=this.images[o];n.on("confirm",t),n.check()}},o.prototype.progress=function(t){this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded;var e=this;setTimeout(function(){e.emit("progress",e,t),e.jqDeferred&&e.jqDeferred.notify(e,t)})},o.prototype.complete=function(){var t=this.hasAnyBroken?"fail":"done";this.isComplete=!0;var e=this;setTimeout(function(){if(e.emit(t,e),e.emit("always",e),e.jqDeferred){var i=e.hasAnyBroken?"reject":"resolve";e.jqDeferred[i](e)}})},n&&(n.fn.imagesLoaded=function(t,e){var i=new o(this,t,e);return i.jqDeferred.promise(n(this))});var l={};return h.prototype=new t,h.prototype.check=function(){var t=l[this.img.src];if(t)return this.useCached(t),void 0;if(l[this.img.src]=this,this.img.complete&&void 0!==this.img.naturalWidth)return this.confirm(0!==this.img.naturalWidth,"naturalWidth"),void 0;var e=this.proxyImage=new Image;i.bind(e,"load",this),i.bind(e,"error",this),e.src=this.img.src},h.prototype.useCached=function(t){if(t.isConfirmed)this.confirm(t.isLoaded,"cached was confirmed");else{var e=this;t.on("confirm",function(t){return e.confirm(t.isLoaded,"cache emitted confirmed"),!0})}},h.prototype.confirm=function(t,e){this.isConfirmed=!0,this.isLoaded=t,this.emit("confirm",this,e)},h.prototype.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},h.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindProxyEvents()},h.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindProxyEvents()},h.prototype.unbindProxyEvents=function(){i.unbind(this.proxyImage,"load",this),i.unbind(this.proxyImage,"error",this)},o}var n=t.jQuery,r=t.console,a=r!==void 0,h=Object.prototype.toString;"function"==typeof define&&define.amd?define(["eventEmitter/EventEmitter","eventie/eventie"],o):t.imagesLoaded=o(t.EventEmitter,t.eventie)})(window); 7 | //@ sourceMappingURL=http://cdnjs.cloudflare.com/ajax/libs/qtip2/2.2.0/imagesloaded.pkg.min.map -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | Contributor Covenant Code of Conduct 2 | 3 | Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | nationality, personal appearance, race, religion, or sexual identity and 10 | orientation. 11 | 12 | Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at opensource+choosealicense.com@github.com. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | Attribution 69 | 70 | This Code of Conduct is adapted from the Contributor Covenant, version 1.4, 71 | available at http://contributor-covenant.org/version/1/4/ 72 | -------------------------------------------------------------------------------- /_licenses/upl-1.0.txt: -------------------------------------------------------------------------------- 1 | --- 2 | title: Universal Permissive License v1.0 3 | spdx-id: UPL-1.0 4 | 5 | description: A permissive, OSI and FSF approved, GPL compatible license, expressly allowing attribution with just a copyright notice and a short form link rather than the full text of the license. Includes an express grant of patent rights. Licensed works and modifications may be distributed under different terms and without source code, and the patent grant may also optionally be expanded to larger works to permit use as a contributor license agreement. 6 | 7 | how: Insert the license or a link to it along with a copyright notice into your source file(s), and/or create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license and your copyright notice into the file. 8 | 9 | note: It is recommended to add a link to the license and copyright notice at the top of each source file, example text can be found at https://oss.oracle.com/licenses/upl/. 10 | 11 | using: 12 | - Oracle Product Boxes for Vagrant: https://github.com/oracle/vagrant-boxes/blob/master/LICENSE 13 | - Oracle Product Images for Docker: https://github.com/oracle/docker-images/blob/master/LICENSE 14 | - Skater: https://github.com/oracle/Skater/blob/master/LICENSE 15 | 16 | permissions: 17 | - commercial-use 18 | - modifications 19 | - distribution 20 | - patent-use 21 | - private-use 22 | 23 | conditions: 24 | - include-copyright 25 | 26 | limitations: 27 | - liability 28 | - warranty 29 | 30 | --- 31 | 32 | Copyright (c) [year] [fullname] 33 | 34 | The Universal Permissive License (UPL), Version 1.0 35 | 36 | Subject to the condition set forth below, permission is hereby granted to any 37 | person obtaining a copy of this software, associated documentation and/or data 38 | (collectively the "Software"), free of charge and under any and all copyright 39 | rights in the Software, and any and all patent rights owned or freely 40 | licensable by each licensor hereunder covering either (i) the unmodified 41 | Software as contributed to or provided by such licensor, or (ii) the Larger 42 | Works (as defined below), to deal in both 43 | 44 | (a) the Software, and 45 | (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if 46 | one is included with the Software (each a “Larger Work” to which the Software 47 | is contributed by such licensors), 48 | 49 | without restriction, including without limitation the rights to copy, create 50 | derivative works of, display, perform, and distribute the Software and make, 51 | use, sell, offer for sale, import, export, have made, and have sold the 52 | Software and the Larger Work(s), and to sublicense the foregoing rights on 53 | either these or other terms. 54 | 55 | This license is subject to the following condition: 56 | The above copyright notice and either this complete permission notice or at 57 | a minimum a reference to the UPL must be included in all copies or 58 | substantial portions of the Software. 59 | 60 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 61 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 62 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 63 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 64 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 65 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 66 | SOFTWARE. 67 | -------------------------------------------------------------------------------- /no-permission.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | permalink: no-permission/ 4 | redirect_from: 5 | - /no-license/ 6 | - /licenses/no-license/ 7 | title: No License 8 | description: "You're under no obligation to choose a license and it's your right not to include one with your code or project. But please note that opting out of open source licenses doesn't mean you're opting out of copyright law." 9 | --- 10 | 11 | When you make a creative work (which includes code), the work is under exclusive copyright by default. Unless you include a license that specifies otherwise, nobody else can copy, distribute, or modify your work without being at risk of take-downs, shake-downs, or litigation. Once the work has other contributors (each a copyright holder), “nobody” starts including you. 12 | 13 | Even in the absence of a license file, you may grant some rights in cases where you publish your source code to a site that requires accepting terms of service. For example, if you publish your source code in a public repository on GitHub, you have accepted the [Terms of Service](https://help.github.com/articles/github-terms-of-service), by which you allow others to view and fork your repository. Others may not need your permission if [limitations and exceptions to copyright](https://en.wikipedia.org/wiki/Limitations_and_exceptions_to_copyright) apply to their particular situation. Neither site terms nor jurisdiction-specific copyright limitations are sufficient for the kinds of collaboration that people usually seek on a public code host, such as experimentation, modification, and sharing as fostered by an open source license. 14 | 15 | You don't have to do anything to not offer a license. You may however wish to add a copyright notice and statement that you are not offering any license in a prominent place (e.g., your project's README) so that [users](#for-users) don't assume you made an oversight. If you're going to accept others' contributions to your non-licensed project, you may wish to explore with your lawyer adding a contributor agreement to your project so that you maintain copyright permission from contributors, even though you're not granting the same. 16 | 17 | Disallowing use of your code might not be what you intend by "no license." An [open-source license](/) allows reuse of your code while retaining copyright. If your goal is to completely opt-out of copyright restrictions, try a [public domain dedication](/licenses/#unlicense). 18 | 19 | ## For users 20 | 21 | If you find software that doesn't have a license, that generally means you have no permission from the creators of the software to use, modify, or share the software. Although a code host such as GitHub may allow you to view and fork the code, this does not imply that you are permitted to use, modify, or share the software for any purpose. 22 | 23 | Your options: 24 | 25 | {: .bullets} 26 | 27 | - **Ask the maintainers nicely to add a license.** Unless the software includes strong indications to the contrary, lack of a license is probably an oversight. If the software is hosted on a site like GitHub, open an issue requesting a license and include a link to this site. If you're bold and it's fairly obvious what license is most appropriate, open a pull request to add a license – see "suggest this license" in the sidebar of the page for each license on this site (e.g., [MIT](/licenses/mit/#suggest-this-license)). 28 | - **Don't use the software.** Find or create an alternative that is under an open source license. 29 | - **Negotiate a private license.** Bring your lawyer. 30 | -------------------------------------------------------------------------------- /_licenses/ms-pl.txt: -------------------------------------------------------------------------------- 1 | --- 2 | title: Microsoft Public License 3 | spdx-id: MS-PL 4 | 5 | description: An open source license with a patent grant. 6 | 7 | how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. 8 | 9 | using: 10 | 11 | permissions: 12 | - commercial-use 13 | - modifications 14 | - distribution 15 | - patent-use 16 | - private-use 17 | 18 | conditions: 19 | - include-copyright 20 | 21 | limitations: 22 | - warranty 23 | - trademark-use 24 | 25 | --- 26 | 27 | Microsoft Public License (Ms-PL) 28 | 29 | This license governs use of the accompanying software. If you use the 30 | software, you accept this license. If you do not accept the license, do not 31 | use the software. 32 | 33 | 1. Definitions 34 | The terms "reproduce," "reproduction," "derivative works," and "distribution" 35 | have the same meaning here as under U.S. copyright law. A "contribution" is 36 | the original software, or any additions or changes to the software. A 37 | "contributor" is any person that distributes its contribution under this 38 | license. "Licensed patents" are a contributor's patent claims that read 39 | directly on its contribution. 40 | 41 | 2. Grant of Rights 42 | (A) Copyright Grant- Subject to the terms of this license, including the 43 | license conditions and limitations in section 3, each contributor grants 44 | you a non-exclusive, worldwide, royalty-free copyright license to 45 | reproduce its contribution, prepare derivative works of its contribution, 46 | and distribute its contribution or any derivative works that you create. 47 | 48 | (B) Patent Grant- Subject to the terms of this license, including the 49 | license conditions and limitations in section 3, each contributor grants 50 | you a non-exclusive, worldwide, royalty-free license under its licensed 51 | patents to make, have made, use, sell, offer for sale, import, and/or 52 | otherwise dispose of its contribution in the software or derivative works 53 | of the contribution in the software. 54 | 55 | 3. Conditions and Limitations 56 | (A) No Trademark License- This license does not grant you rights to use 57 | any contributors' name, logo, or trademarks. 58 | 59 | (B) If you bring a patent claim against any contributor over patents that 60 | you claim are infringed by the software, your patent license from such 61 | contributor to the software ends automatically. 62 | 63 | (C) If you distribute any portion of the software, you must retain all 64 | copyright, patent, trademark, and attribution notices that are present in 65 | the software. 66 | 67 | (D) If you distribute any portion of the software in source code form, 68 | you may do so only under this license by including a complete copy of 69 | this license with your distribution. If you distribute any portion of the 70 | software in compiled or object code form, you may only do so under a 71 | license that complies with this license. 72 | 73 | (E) The software is licensed "as-is." You bear the risk of using it. The 74 | contributors give no express warranties, guarantees, or conditions. You 75 | may have additional consumer rights under your local laws which this 76 | license cannot change. To the extent permitted under your local laws, the 77 | contributors exclude the implied warranties of merchantability, fitness 78 | for a particular purpose and non-infringement. 79 | -------------------------------------------------------------------------------- /appendix.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | permalink: /appendix/ 4 | title: Appendix 5 | class: license-types 6 | --- 7 | 8 | For reference, all licenses described in the choosealicense.com [repository](https://github.com/github/choosealicense.com), in a table. 9 | 10 | If you're here to choose a license, **[start from the home page](/)** to see a few licenses that will work for most cases. 11 | 12 | 13 | {% assign types = "permissions|conditions|limitations" | split: "|" %} 14 | 15 | 16 | {% assign seen_tags = '' %} 17 | {% for type in types %} 18 | {% assign rules = site.data.rules[type] | sort: "label" %} 19 | {% for rule_obj in rules %} 20 | {% if seen_tags contains rule_obj.tag or rule_obj.tag contains '--' %} 21 | {% continue %} 22 | {% endif %} 23 | {% capture seen_tags %}{{ seen_tags | append:rule_obj.tag }}{% endcapture %} 24 | 25 | {% endfor %} 26 | {% endfor %} 27 | 28 | {% assign licenses = site.licenses | sort: "path" %} 29 | {% for license in licenses %} 30 | 31 | {% assign seen_tags = '' %} 32 | {% for type in types %} 33 | {% assign rules = site.data.rules[type] | sort: "label" %} 34 | {% for rule_obj in rules %} 35 | {% assign req = rule_obj.tag %} 36 | {% if seen_tags contains req or rule_obj.tag contains '--' %} 37 | {% continue %} 38 | {% endif %} 39 | {% capture seen_tags %}{{ seen_tags | append:req }}{% endcapture %} 40 | {% assign seen_req = false %} 41 | {% for t in types %} 42 | {% for r in license[t] %} 43 | {% if r contains req %} 44 | 49 | {% assign seen_req = true %} 50 | {% endif %} 51 | {% endfor %} 52 | {% endfor %} 53 | {% unless seen_req %} 54 | 55 | {% endunless %} 56 | {% endfor %} 57 | {% endfor %} 58 | 59 | {% endfor %} 60 |
License{{ rule_obj.label }}
{{ license.title }} 45 | 46 | 47 | 48 |
61 | 62 | ## Legend 63 | 64 |

Open source licenses grant to the public permissions to do things with licensed works copyright or other "intellectual property" laws might otherwise disallow.

65 | 66 |

Most open source licenses' grants of permissions are subject to compliance with conditions.

67 | 68 |

Most open source licenses also have limitations that usually disclaim warranty and liability and sometimes expressly exclude patent or trademark from licenses' grants.

69 | 70 |
71 | {% assign seen_tags = '' %} 72 | {% for type in types %} 73 | {% assign rules = site.data.rules[type] | sort: "label" %} 74 | {% for rule_obj in rules %} 75 | {% assign req = rule_obj.tag %} 76 | {% if seen_tags contains req %} 77 | {% continue %} 78 | {% endif %} 79 |
{{ rule_obj.label }}
80 | {% capture seen_tags %}{{ seen_tags | append:req }}{% endcapture %} 81 | {% for t in types %} 82 | {% assign rs = site.data.rules[t] | sort: "label" %} 83 | {% for r in rs %} 84 | {% if r.tag == req %} 85 |
{{ r.description }}
86 | {% endif %} 87 | {% endfor %} 88 | {% endfor %} 89 | {% endfor %} 90 | {% endfor %} 91 |
92 | -------------------------------------------------------------------------------- /spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'jekyll' 4 | require 'json' 5 | require 'licensee' 6 | require 'open-uri' 7 | 8 | module SpecHelper 9 | class << self 10 | attr_accessor :config, :licenses, :site, :spdx 11 | attr_accessor :osi_approved_licenses, :fsf_approved_licenses, :od_approved_licenses 12 | end 13 | end 14 | 15 | def config_file 16 | File.expand_path './_config.yml', source 17 | end 18 | 19 | def source 20 | File.expand_path('../', File.dirname(__FILE__)) 21 | end 22 | 23 | def licenses_path 24 | File.expand_path '_licenses', source 25 | end 26 | 27 | def config 28 | SpecHelper.config ||= begin 29 | config = Jekyll::Configuration.new.read_config_file config_file 30 | config = Jekyll::Utils.deep_merge_hashes(config, source: source) 31 | Jekyll::Utils.deep_merge_hashes(Jekyll::Configuration::DEFAULTS, config) 32 | end 33 | end 34 | 35 | def licenses 36 | SpecHelper.licenses ||= begin 37 | site.collections['licenses'].docs.map do |license| 38 | spdx_lcase = File.basename(license.basename, '.txt') 39 | license.to_liquid.merge('spdx-lcase' => spdx_lcase) 40 | end 41 | end 42 | end 43 | 44 | def shown_licenses 45 | licenses.reject { |l| l['hidden'] } 46 | end 47 | 48 | def site 49 | SpecHelper.site ||= begin 50 | site = Jekyll::Site.new(config) 51 | site.reset 52 | site.read 53 | site 54 | end 55 | end 56 | 57 | def rules 58 | site.data['rules'] 59 | end 60 | 61 | def fields 62 | site.data['fields'] 63 | end 64 | 65 | def meta 66 | site.data['meta'] 67 | end 68 | 69 | def rule?(tag, group) 70 | rules[group].any? { |r| r['tag'] == tag } 71 | end 72 | 73 | def spdx_list 74 | SpecHelper.spdx ||= begin 75 | url = 'https://spdx.org/licenses/licenses.json' 76 | list = JSON.parse(OpenURI.open_uri(url).read)['licenses'] 77 | list.each_with_object({}) do |values, memo| 78 | memo[values['licenseId']] = values 79 | end 80 | end 81 | end 82 | 83 | def spdx_ids 84 | spdx_list.map { |name, _properties| name } 85 | end 86 | 87 | def find_spdx(license) 88 | spdx_list.find { |name, _properties| name.casecmp(license).zero? } 89 | end 90 | 91 | def osi_approved_licenses 92 | SpecHelper.osi_approved_licenses ||= begin 93 | licenses = {} 94 | list = spdx_list.select { |_id, meta| meta['isOsiApproved'] } 95 | list.each do |id, meta| 96 | licenses[id.downcase] = meta['name'] 97 | end 98 | licenses 99 | end 100 | end 101 | 102 | def fsf_approved_licenses 103 | SpecHelper.fsf_approved_licenses ||= begin 104 | url = 'https://wking.github.io/fsf-api/licenses-full.json' 105 | object = JSON.parse(OpenURI.open_uri(url).read) 106 | licenses = {} 107 | object['licenses'].each_value do |meta| 108 | next unless (meta.include? 'identifiers') && (meta['identifiers'].include? 'spdx') && (meta.include? 'tags') && (meta['tags'].include? 'libre') 109 | 110 | meta['identifiers']['spdx'].each do |identifier| 111 | licenses[identifier.downcase] = meta['name'] 112 | end 113 | end 114 | licenses 115 | end 116 | end 117 | 118 | def od_approved_licenses 119 | SpecHelper.od_approved_licenses ||= begin 120 | url = 'https://licenses.opendefinition.org/licenses/groups/od.json' 121 | data = OpenURI.open_uri(url).read 122 | data = JSON.parse(data) 123 | licenses = {} 124 | data.each do |id, meta| 125 | licenses[id.downcase] = meta['title'] 126 | end 127 | licenses 128 | end 129 | end 130 | 131 | def approved_licenses 132 | (osi_approved_licenses.keys + fsf_approved_licenses.keys + od_approved_licenses.keys).flatten.uniq.sort 133 | end 134 | 135 | module Licensee 136 | class License 137 | class << self 138 | def license_dir 139 | dir = ::File.dirname(__FILE__) 140 | ::File.expand_path '../_licenses', dir 141 | end 142 | end 143 | end 144 | end 145 | -------------------------------------------------------------------------------- /assets/vendor/html5shiv/dist/html5shiv-printshiv.js: -------------------------------------------------------------------------------- 1 | /* 2 | HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | (function(j,f){function s(a,b){var c=a.createElement("p"),m=a.getElementsByTagName("head")[0]||a.documentElement;c.innerHTML="x";return m.insertBefore(c.lastChild,m.firstChild)}function o(){var a=d.elements;return"string"==typeof a?a.split(" "):a}function n(a){var b=t[a[u]];b||(b={},p++,a[u]=p,t[p]=b);return b}function v(a,b,c){b||(b=f);if(e)return b.createElement(a);c||(c=n(b));b=c.cache[a]?c.cache[a].cloneNode():y.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a); 5 | return b.canHaveChildren&&!z.test(a)?c.frag.appendChild(b):b}function A(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();a.createElement=function(c){return!d.shivMethods?b.createElem(c):v(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+o().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(d,b.frag)} 6 | function w(a){a||(a=f);var b=n(a);if(d.shivCSS&&!q&&!b.hasCSS)b.hasCSS=!!s(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}");e||A(a,b);return a}function B(a){for(var b,c=a.attributes,m=c.length,f=a.ownerDocument.createElement(l+":"+a.nodeName);m--;)b=c[m],b.specified&&f.setAttribute(b.nodeName,b.nodeValue);f.style.cssText=a.style.cssText;return f}function x(a){function b(){clearTimeout(d._removeSheetTimer); 7 | c&&c.removeNode(!0);c=null}var c,f,d=n(a),e=a.namespaces,j=a.parentWindow;if(!C||a.printShived)return a;"undefined"==typeof e[l]&&e.add(l);j.attachEvent("onbeforeprint",function(){b();var g,i,d;d=a.styleSheets;for(var e=[],h=d.length,k=Array(h);h--;)k[h]=d[h];for(;d=k.pop();)if(!d.disabled&&D.test(d.media)){try{g=d.imports,i=g.length}catch(j){i=0}for(h=0;h+~])("+o().join("|")+")(?=[[\\s,>+~#.:]|$)", 8 | "gi");for(k="$1"+l+"\\:$2";i--;)e=g[i]=g[i].split("}"),e[e.length-1]=e[e.length-1].replace(h,k),g[i]=e.join("}");e=g.join("{");i=a.getElementsByTagName("*");h=i.length;k=RegExp("^(?:"+o().join("|")+")$","i");for(d=[];h--;)g=i[h],k.test(g.nodeName)&&d.push(g.applyElement(B(g)));f=d;c=s(a,e)});j.attachEvent("onafterprint",function(){for(var a=f,c=a.length;c--;)a[c].removeNode();clearTimeout(d._removeSheetTimer);d._removeSheetTimer=setTimeout(b,500)});a.printShived=!0;return a}var r=j.html5||{},z=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i, 9 | y=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q,u="_html5shiv",p=0,t={},e;(function(){try{var a=f.createElement("a");a.innerHTML="";q="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}e=b}catch(d){e=q=!0}})();var d={elements:r.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video", 10 | version:"3.7.0",shivCSS:!1!==r.shivCSS,supportsUnknownElements:e,shivMethods:!1!==r.shivMethods,type:"default",shivDocument:w,createElement:v,createDocumentFragment:function(a,b){a||(a=f);if(e)return a.createDocumentFragment();for(var b=b||n(a),c=b.frag.cloneNode(),d=0,j=o(),l=j.length;dMicrosoft Public License, with the additional condition that any source code for any derived file be provided under this license. 6 | 7 | how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. 8 | 9 | using: 10 | 11 | permissions: 12 | - commercial-use 13 | - modifications 14 | - distribution 15 | - patent-use 16 | - private-use 17 | 18 | conditions: 19 | - disclose-source 20 | - include-copyright 21 | - same-license--file 22 | 23 | limitations: 24 | - warranty 25 | - trademark-use 26 | 27 | --- 28 | 29 | Microsoft Reciprocal License (Ms-RL) 30 | 31 | This license governs use of the accompanying software. If you use the 32 | software, you accept this license. If you do not accept the license, do not 33 | use the software. 34 | 35 | 1. Definitions 36 | The terms "reproduce," "reproduction," "derivative works," and "distribution" 37 | have the same meaning here as under U.S. copyright law. 38 | 39 | A "contribution" is the original software, or any additions or changes to the 40 | software. 41 | 42 | A "contributor" is any person that distributes its contribution under this 43 | license. 44 | 45 | "Licensed patents" are a contributor's patent claims that read directly on its 46 | contribution. 47 | 48 | 2. Grant of Rights 49 | (A) Copyright Grant- Subject to the terms of this license, including the 50 | license conditions and limitations in section 3, each contributor grants 51 | you a non-exclusive, worldwide, royalty-free copyright license to 52 | reproduce its contribution, prepare derivative works of its contribution, 53 | and distribute its contribution or any derivative works that you create. 54 | 55 | (B) Patent Grant- Subject to the terms of this license, including the 56 | license conditions and limitations in section 3, each contributor grants 57 | you a non-exclusive, worldwide, royalty-free license under its licensed 58 | patents to make, have made, use, sell, offer for sale, import, and/or 59 | otherwise dispose of its contribution in the software or derivative works 60 | of the contribution in the software. 61 | 62 | 3. Conditions and Limitations 63 | (A) Reciprocal Grants- For any file you distribute that contains code 64 | from the software (in source code or binary format), you must provide 65 | recipients the source code to that file along with a copy of this 66 | license, which license will govern that file. You may license other files 67 | that are entirely your own work and do not contain code from the software 68 | under any terms you choose. 69 | 70 | (B) No Trademark License- This license does not grant you rights to use 71 | any contributors' name, logo, or trademarks. 72 | 73 | (C) If you bring a patent claim against any contributor over patents that 74 | you claim are infringed by the software, your patent license from such 75 | contributor to the software ends automatically. 76 | 77 | (D) If you distribute any portion of the software, you must retain all 78 | copyright, patent, trademark, and attribution notices that are present in 79 | the software. 80 | 81 | (E) If you distribute any portion of the software in source code form, 82 | you may do so only under this license by including a complete copy of 83 | this license with your distribution. If you distribute any portion of the 84 | software in compiled or object code form, you may only do so under a 85 | license that complies with this license. 86 | 87 | (F) The software is licensed "as-is." You bear the risk of using it. The 88 | contributors give no express warranties, guarantees, or conditions. You 89 | may have additional consumer rights under your local laws which this 90 | license cannot change. To the extent permitted under your local laws, the 91 | contributors exclude the implied warranties of merchantability, fitness 92 | for a particular purpose and non-infringement. 93 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to Contribute 2 | 3 | We love Pull Requests! Your contributions help make ChooseALicense.com great. 4 | 5 | Contributions to this project are [released](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license) to the public under the [project's open source license](LICENSE.md). 6 | 7 | Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. 8 | 9 | ## Getting Started 10 | 11 | So you want to contribute to ChooseALicense. Great! We welcome any help we can 12 | get. But first, please make sure you understand what 13 | [this site is all about](https://choosealicense.com/about). It’s not a comprehensive list of all possible licenses. 14 | 15 | ## Adding a license 16 | 17 | Choosealicense.com is intended to demystify license choices, not present or catalog all of them. As such, only a small number are highlighted on the home page or , and there are several requirements for a license to be [cataloged](https://choosealicense.com/appendix/) on the site: 18 | 19 | 1. The license must have [an SPDX identifier](https://spdx.org/licenses/). If your license isn't registered with SPDX, please [request that it be added](https://spdx.org/spdx-license-list/request-new-license). 20 | 2. The license must be listed on one of the following approved lists of licenses: 21 | * [List of OSI approved licenses](https://opensource.org/licenses/alphabetical) 22 | * [GNU's list of free licenses](https://www.gnu.org/licenses/license-list.en.html) (*note: the license must be listed in one of the three "free" categories*) 23 | * [Open Definition's list of conformant licenses](https://opendefinition.org/licenses/) (non-code) 24 | 3. A [GitHub code search](https://github.com/search?q=MIT+filename%3ALICENSE&type=Code) must reveal at least *1,000* public repositories using the license. 25 | 4. 3 notable projects using the license must be identified. These must have straightforward LICENSE files which serve as examples newcomers can follow and that could be detected by [licensee](https://github.com/benbalter/licensee) if it knew about the license. 26 | 27 | If your proposed license meets the above criteria, here's a few other things to keep in mind as you propose the license's addition: 28 | 29 | * Is the license already cataloged? See for a list of all of the licenses known by the site. 30 | * Licenses live in the `/_licenses` folder. 31 | * The license files should be in the format of `_licenses/[lowercased-spdx-id].txt` (e.g., `_licenses/mit.txt`) 32 | * Each license has both [required and optional metadata](https://github.com/github/choosealicense.com#license-metadata) that should be included. 33 | * The text of the license should be wrapped to a 78 character width. 34 | * The text of the license should match the corresponding text found in [spdx/license-list-data](https://github.com/spdx/license-list-data/blob/master/text/). If there are errors there, please fix them in [spdx/license-list-XML](https://github.com/spdx/license-list-XML) (from which the plain text version is generated) so as to minimize license text variation and make it easier for choosealicense.com to eventually consume license texts directly from SPDX. 35 | * The body of the file should be the text of the license in plain text. 36 | 37 | ## Making Changes 38 | 39 | The easiest way to make a change is to simply edit a file from your browser. 40 | When you click the edit button, it will fork the repository under your account. 41 | Note what issue/issues your patch fixes in the commit message. 42 | 43 | For example, to [change this file](/CONTRIBUTING.md), 44 | find it in the GitHub repository. Then click the `Edit` button. Make your 45 | changes, type in a commit message, and click the `Propose File Change` button. 46 | That’s it! 47 | 48 | For more advanced changes, check out [the bootstrap instructions](https://github.com/github/choosealicense.com#run-it-on-your-machine) in the [project's readme](/README.md). 49 | 50 | ## Testing 51 | 52 | [HTML::Proofer](https://github.com/gjtorikian/html-proofer) is set up to validate all links within the project. You can run this locally to ensure that your changes are valid: 53 | 54 | ```shell 55 | ./script/bootstrap 56 | ./script/cibuild 57 | ``` 58 | -------------------------------------------------------------------------------- /assets/vendor/selectivizr/changelog.txt: -------------------------------------------------------------------------------- 1 | selectivizr - change log 2 | ======================== 3 | 4 | 5 | v1.0.2 6 | ------ 7 | 8 | * BUG - fixed Google Closure Compiler issue that added 2 global vars - sorry about that! 9 | * NEW - removed the eval() from determineSelectorMethod() 10 | * BUG - selectivizr incorrectly detects Yahoo! profiler as YUI selector library 11 | * NEW - selectivizr can now be "lazy-loaded" 12 | * NEW - switched DOMReady back to Diego Perini's (new) ContentLoaded. 13 | * BUG - asset urls using the 'data:' scheme (i.e. background-image) resolved to a path (Chris Korhonen) 14 | * BUG - resolveUrl() failed if the context url contained a hash followed by a '/' (Zee Agency) 15 | * BUG - IE version detection wasn't IE>9 friendly (reported by Paul Irish) 16 | 17 | 18 | 19 | v1.0.1 20 | ------ 21 | 22 | * BUG - @import urls not wrapped with "url()" are now correctly processed 23 | * BUG - relative urls are now correctly resolved 24 | * BUG - patched [*=""] selector in IE8 (returns elements it shouldn't) 25 | 26 | 27 | 28 | v1.0.0 29 | ------ 30 | 31 | ie-css3.js is now stable enough to be released with out a beta suffix - say hello to selectivizr v1! 32 | 33 | 34 | 35 | v0.9.7b 36 | ------- 37 | 38 | * NEW - Complete rewrite of the stylesheet parser. 39 | * NEW - :not() pseudo support. 40 | * NEW - Attribute selector support in IE6 [att] [att="x"] [att~="x"] [att^="x"] [att$="x"] [att*="x"] and [att|="x"] 41 | * NEW - Fixes native empty attribute selector support in IE7 [att^=""] [att$=""] [att*=""] and IE8 [att^=""] [att$=""] 42 | * BUG - :enabled and :disabled elements now change state properly. (Uses polling) 43 | * BUG - Emulation no longer fails in IE6 when more than 2 classes are applied to an element 44 | 45 | 46 | 47 | v0.9.6b 48 | ------- 49 | 50 | * BUG - IE8 :target pseudo-class emulation fails with jQuery (but not with Sizzle) (reported by Tom Law) 51 | * BUG - ie-css3.js won't run if page is in an iframe (switched DOM Load detection to Dean Edwards defered script method) 52 | * BUG - A selector that begins with a attribute selector incorrected parsed (reported by Stephanie Sullivan) 53 | 54 | 55 | 56 | v0.9.5b 57 | ------- 58 | 59 | * NEW - Reworked DOM Load detection (using a cut down version of Diego Perini's ContentLoaded technique) 60 | * NEW - Enabled Dojo detection (lowest priority) - Warning: some of Dojo's CSS3 selectors seem very buggy! 61 | * BUG - Fixed mixed content warning when using over SSL 62 | * NEW - :target pseudo for IE8 when running standards mode. Sorry, no support for pre-IE8 or quirks mode 63 | * NWMatcher now higher priority that DOMAssistant when auto-detecting best library 64 | * Internal rewrites / refactoring - more features, but a smaller file :o) 65 | 66 | 67 | 68 | v0.9.4b 69 | ------- 70 | 71 | * NEW - added support for :hover (for IE 5.5 - 6) and :focus (for IE 5.5 - 7) 72 | * NEW - added support for ::first-child and ::first-letter (suggested by Philip Renich) 73 | * BUG - style sheets without href values shouldn't get parsed (reported by Jeff Smith) 74 | * BUG - remotely hosted style sheets are now ignored when used in @imports 75 | * BUG - @import rules now honor the href if its specified (reported by Andrea and Tim) 76 | * BUG - various minor bug fixes 77 | 78 | 79 | 80 | v0.9.3b 81 | ------- 82 | 83 | * No longer dependent on DOMAssistant. 84 | * Auto-detects best suited selector library from these: 85 | - DOMAssistant (recommended) 86 | - NWmatcher 87 | - Prototype 88 | - YUI 2 89 | - MooTools 90 | - Sizzle / jQuery 91 | * NEW - pseudo selectors :enabled, :disabled, :checked and :root. 92 | * BUG - Fixed IE 5.5/6 issue with illegal character in replacement class name. 93 | * BUG - Fixed extra spaces issue with modified class names. 94 | * BUG - Stopped triggering a DOM redraw when there are no className changes 95 | * Dynamic building of CSS_PSEUDOS regexp based on IE version so we only patch what's needed. 96 | * XHR compatability test (reported from twitter.com/kangax). 97 | * Reworked DOMLoaded detection. 98 | 99 | 100 | 101 | v0.9.2b 102 | ------- 103 | 104 | * CSS parser updated to crawl @import statements (suggested by Andy "Malarkey" Clarke). 105 | * @font rules support. 106 | 107 | 108 | 109 | v0.9.1b 110 | ------- 111 | 112 | * Public beta release. -------------------------------------------------------------------------------- /_licenses/ofl-1.1.txt: -------------------------------------------------------------------------------- 1 | --- 2 | title: SIL Open Font License 1.1 3 | spdx-id: OFL-1.1 4 | redirect_from: /licenses/ofl/ 5 | 6 | description: The Open Font License (OFL) is maintained by SIL International. It attempts to be a compromise between the values of the free software and typeface design communities. It is used for almost all open source font projects, including those by Adobe, Google and Mozilla. 7 | 8 | how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your font source and copy the text of the license into the file. Replace [year] with the current year and [fullname] ([email]) with the name and contact email address of each copyright holder. You may take the additional step of appending a Reserved Font Name notice. This option requires anyone making modifications to change the font's name, and is not ideal for web fonts (which all users will modify by changing formats and subsetting for their own needs.) 9 | 10 | note: This license doesn't require source provision, but recommends it. All files derived from OFL files must remain licensed under the OFL. 11 | 12 | using: 13 | 14 | permissions: 15 | - private-use 16 | - commercial-use 17 | - modifications 18 | - distribution 19 | 20 | conditions: 21 | - include-copyright 22 | - same-license 23 | 24 | limitations: 25 | - liability 26 | - warranty 27 | 28 | --- 29 | 30 | Copyright (c) [year] [fullname] ([email]) 31 | 32 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 33 | This license is copied below, and is also available with a FAQ at: 34 | http://scripts.sil.org/OFL 35 | 36 | ----------------------------------------------------------- 37 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 38 | ----------------------------------------------------------- 39 | 40 | PREAMBLE 41 | The goals of the Open Font License (OFL) are to stimulate worldwide 42 | development of collaborative font projects, to support the font creation 43 | efforts of academic and linguistic communities, and to provide a free and 44 | open framework in which fonts may be shared and improved in partnership 45 | with others. 46 | 47 | The OFL allows the licensed fonts to be used, studied, modified and 48 | redistributed freely as long as they are not sold by themselves. The 49 | fonts, including any derivative works, can be bundled, embedded, 50 | redistributed and/or sold with any software provided that any reserved 51 | names are not used by derivative works. The fonts and derivatives, 52 | however, cannot be released under any other type of license. The 53 | requirement for fonts to remain under this license does not apply 54 | to any document created using the fonts or their derivatives. 55 | 56 | DEFINITIONS 57 | "Font Software" refers to the set of files released by the Copyright 58 | Holder(s) under this license and clearly marked as such. This may 59 | include source files, build scripts and documentation. 60 | 61 | "Reserved Font Name" refers to any names specified as such after the 62 | copyright statement(s). 63 | 64 | "Original Version" refers to the collection of Font Software components as 65 | distributed by the Copyright Holder(s). 66 | 67 | "Modified Version" refers to any derivative made by adding to, deleting, 68 | or substituting -- in part or in whole -- any of the components of the 69 | Original Version, by changing formats or by porting the Font Software to a 70 | new environment. 71 | 72 | "Author" refers to any designer, engineer, programmer, technical 73 | writer or other person who contributed to the Font Software. 74 | 75 | PERMISSION AND CONDITIONS 76 | Permission is hereby granted, free of charge, to any person obtaining 77 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 78 | redistribute, and sell modified and unmodified copies of the Font 79 | Software, subject to the following conditions: 80 | 81 | 1) Neither the Font Software nor any of its individual components, 82 | in Original or Modified Versions, may be sold by itself. 83 | 84 | 2) Original or Modified Versions of the Font Software may be bundled, 85 | redistributed and/or sold with any software, provided that each copy 86 | contains the above copyright notice and this license. These can be 87 | included either as stand-alone text files, human-readable headers or 88 | in the appropriate machine-readable metadata fields within text or 89 | binary files as long as those fields can be easily viewed by the user. 90 | 91 | 3) No Modified Version of the Font Software may use the Reserved Font 92 | Name(s) unless explicit written permission is granted by the corresponding 93 | Copyright Holder. This restriction only applies to the primary font name as 94 | presented to the users. 95 | 96 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 97 | Software shall not be used to promote, endorse or advertise any 98 | Modified Version, except to acknowledge the contribution(s) of the 99 | Copyright Holder(s) and the Author(s) or with their explicit written 100 | permission. 101 | 102 | 5) The Font Software, modified or unmodified, in part or in whole, 103 | must be distributed entirely under this license, and must not be 104 | distributed under any other license. The requirement for fonts to 105 | remain under this license does not apply to any document created 106 | using the Font Software. 107 | 108 | TERMINATION 109 | This license becomes null and void if any of the above conditions are 110 | not met. 111 | 112 | DISCLAIMER 113 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 114 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 115 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 116 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 117 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 118 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 119 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 120 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 121 | OTHER DEALINGS IN THE FONT SOFTWARE. 122 | -------------------------------------------------------------------------------- /assets/vendor/jquery/jquery-migrate.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery Migrate v1.1.1 | (c) 2005, 2013 jQuery Foundation, Inc. and other contributors | jquery.org/license */ 2 | jQuery.migrateMute===void 0&&(jQuery.migrateMute=!0),function(e,t,n){function r(n){o[n]||(o[n]=!0,e.migrateWarnings.push(n),t.console&&console.warn&&!e.migrateMute&&(console.warn("JQMIGRATE: "+n),e.migrateTrace&&console.trace&&console.trace()))}function a(t,a,o,i){if(Object.defineProperty)try{return Object.defineProperty(t,a,{configurable:!0,enumerable:!0,get:function(){return r(i),o},set:function(e){r(i),o=e}}),n}catch(s){}e._definePropertyBroken=!0,t[a]=o}var o={};e.migrateWarnings=[],!e.migrateMute&&t.console&&console.log&&console.log("JQMIGRATE: Logging is active"),e.migrateTrace===n&&(e.migrateTrace=!0),e.migrateReset=function(){o={},e.migrateWarnings.length=0},"BackCompat"===document.compatMode&&r("jQuery is not compatible with Quirks Mode");var i=e("",{size:1}).attr("size")&&e.attrFn,s=e.attr,u=e.attrHooks.value&&e.attrHooks.value.get||function(){return null},c=e.attrHooks.value&&e.attrHooks.value.set||function(){return n},l=/^(?:input|button)$/i,d=/^[238]$/,p=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,f=/^(?:checked|selected)$/i;a(e,"attrFn",i||{},"jQuery.attrFn is deprecated"),e.attr=function(t,a,o,u){var c=a.toLowerCase(),g=t&&t.nodeType;return u&&(4>s.length&&r("jQuery.fn.attr( props, pass ) is deprecated"),t&&!d.test(g)&&(i?a in i:e.isFunction(e.fn[a])))?e(t)[a](o):("type"===a&&o!==n&&l.test(t.nodeName)&&t.parentNode&&r("Can't change the 'type' of an input or button in IE 6/7/8"),!e.attrHooks[c]&&p.test(c)&&(e.attrHooks[c]={get:function(t,r){var a,o=e.prop(t,r);return o===!0||"boolean"!=typeof o&&(a=t.getAttributeNode(r))&&a.nodeValue!==!1?r.toLowerCase():n},set:function(t,n,r){var a;return n===!1?e.removeAttr(t,r):(a=e.propFix[r]||r,a in t&&(t[a]=!0),t.setAttribute(r,r.toLowerCase())),r}},f.test(c)&&r("jQuery.fn.attr('"+c+"') may use property instead of attribute")),s.call(e,t,a,o))},e.attrHooks.value={get:function(e,t){var n=(e.nodeName||"").toLowerCase();return"button"===n?u.apply(this,arguments):("input"!==n&&"option"!==n&&r("jQuery.fn.attr('value') no longer gets properties"),t in e?e.value:null)},set:function(e,t){var a=(e.nodeName||"").toLowerCase();return"button"===a?c.apply(this,arguments):("input"!==a&&"option"!==a&&r("jQuery.fn.attr('value', val) no longer sets properties"),e.value=t,n)}};var g,h,v=e.fn.init,m=e.parseJSON,y=/^(?:[^<]*(<[\w\W]+>)[^>]*|#([\w\-]*))$/;e.fn.init=function(t,n,a){var o;return t&&"string"==typeof t&&!e.isPlainObject(n)&&(o=y.exec(t))&&o[1]&&("<"!==t.charAt(0)&&r("$(html) HTML strings must start with '<' character"),n&&n.context&&(n=n.context),e.parseHTML)?v.call(this,e.parseHTML(e.trim(t),n,!0),n,a):v.apply(this,arguments)},e.fn.init.prototype=e.fn,e.parseJSON=function(e){return e||null===e?m.apply(this,arguments):(r("jQuery.parseJSON requires a valid JSON string"),null)},e.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||0>e.indexOf("compatible")&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e.browser||(g=e.uaMatch(navigator.userAgent),h={},g.browser&&(h[g.browser]=!0,h.version=g.version),h.chrome?h.webkit=!0:h.webkit&&(h.safari=!0),e.browser=h),a(e,"browser",e.browser,"jQuery.browser is deprecated"),e.sub=function(){function t(e,n){return new t.fn.init(e,n)}e.extend(!0,t,this),t.superclass=this,t.fn=t.prototype=this(),t.fn.constructor=t,t.sub=this.sub,t.fn.init=function(r,a){return a&&a instanceof e&&!(a instanceof t)&&(a=t(a)),e.fn.init.call(this,r,a,n)},t.fn.init.prototype=t.fn;var n=t(document);return r("jQuery.sub() is deprecated"),t},e.ajaxSetup({converters:{"text json":e.parseJSON}});var b=e.fn.data;e.fn.data=function(t){var a,o,i=this[0];return!i||"events"!==t||1!==arguments.length||(a=e.data(i,t),o=e._data(i,t),a!==n&&a!==o||o===n)?b.apply(this,arguments):(r("Use of jQuery.fn.data('events') is deprecated"),o)};var j=/\/(java|ecma)script/i,w=e.fn.andSelf||e.fn.addBack;e.fn.andSelf=function(){return r("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),w.apply(this,arguments)},e.clean||(e.clean=function(t,a,o,i){a=a||document,a=!a.nodeType&&a[0]||a,a=a.ownerDocument||a,r("jQuery.clean() is deprecated");var s,u,c,l,d=[];if(e.merge(d,e.buildFragment(t,a).childNodes),o)for(c=function(e){return!e.type||j.test(e.type)?i?i.push(e.parentNode?e.parentNode.removeChild(e):e):o.appendChild(e):n},s=0;null!=(u=d[s]);s++)e.nodeName(u,"script")&&c(u)||(o.appendChild(u),u.getElementsByTagName!==n&&(l=e.grep(e.merge([],u.getElementsByTagName("script")),c),d.splice.apply(d,[s+1,0].concat(l)),s+=l.length));return d});var Q=e.event.add,x=e.event.remove,k=e.event.trigger,N=e.fn.toggle,C=e.fn.live,S=e.fn.die,T="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",M=RegExp("\\b(?:"+T+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,A=function(t){return"string"!=typeof t||e.event.special.hover?t:(H.test(t)&&r("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),t&&t.replace(H,"mouseenter$1 mouseleave$1"))};e.event.props&&"attrChange"!==e.event.props[0]&&e.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),e.event.dispatch&&a(e.event,"handle",e.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),e.event.add=function(e,t,n,a,o){e!==document&&M.test(t)&&r("AJAX events should be attached to document: "+t),Q.call(this,e,A(t||""),n,a,o)},e.event.remove=function(e,t,n,r,a){x.call(this,e,A(t)||"",n,r,a)},e.fn.error=function(){var e=Array.prototype.slice.call(arguments,0);return r("jQuery.fn.error() is deprecated"),e.splice(0,0,"error"),arguments.length?this.bind.apply(this,e):(this.triggerHandler.apply(this,e),this)},e.fn.toggle=function(t,n){if(!e.isFunction(t)||!e.isFunction(n))return N.apply(this,arguments);r("jQuery.fn.toggle(handler, handler...) is deprecated");var a=arguments,o=t.guid||e.guid++,i=0,s=function(n){var r=(e._data(this,"lastToggle"+t.guid)||0)%i;return e._data(this,"lastToggle"+t.guid,r+1),n.preventDefault(),a[r].apply(this,arguments)||!1};for(s.guid=o;a.length>i;)a[i++].guid=o;return this.click(s)},e.fn.live=function(t,n,a){return r("jQuery.fn.live() is deprecated"),C?C.apply(this,arguments):(e(this.context).on(t,this.selector,n,a),this)},e.fn.die=function(t,n){return r("jQuery.fn.die() is deprecated"),S?S.apply(this,arguments):(e(this.context).off(t,this.selector||"**",n),this)},e.event.trigger=function(e,t,n,a){return n||M.test(e)||r("Global events are undocumented and deprecated"),k.call(this,e,t,n||document,a)},e.each(T.split("|"),function(t,n){e.event.special[n]={setup:function(){var t=this;return t!==document&&(e.event.add(document,n+"."+e.guid,function(){e.event.trigger(n,null,t,!0)}),e._data(this,n,e.guid++)),!1},teardown:function(){return this!==document&&e.event.remove(document,n+"."+e._data(this,n)),!1}}})}(jQuery,window); 3 | //@ sourceMappingURL=dist/jquery-migrate.min.map -------------------------------------------------------------------------------- /assets/js/app.coffee: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | class Choosealicense 5 | # Selects the content of a given element 6 | selectText: (element) -> 7 | if document.body.createTextRange 8 | range = document.body.createTextRange() 9 | range.moveToElementText(element) 10 | range.select() 11 | else if window.getSelection 12 | selection = window.getSelection() 13 | range = document.createRange() 14 | 15 | range.selectNodeContents(element) 16 | selection.removeAllRanges() 17 | selection.addRange(range) 18 | 19 | # Qtip position attributes for tooltips 20 | qtip_position: 21 | my: "top center" 22 | at: "bottom center" 23 | 24 | # Annotation rule types as defined in `_config.yml` 25 | ruletypes: 26 | permissions: "Permission" 27 | conditions: "Condition" 28 | limitations: "Limitation" 29 | 30 | # fire on document.ready 31 | constructor: -> 32 | @initTooltips() 33 | @initClipboard() 34 | @initLicenseSuggestion() 35 | 36 | # Init tooltip action 37 | initTooltips: -> 38 | 39 | # Dynamically add annotations as title attribute to rule list items 40 | for ruletype, rules of window.annotations 41 | for rule in rules 42 | $(".license-#{ruletype} .#{rule["tag"]}").attr "title", rule["description"] 43 | 44 | # Init tooltips on all rule list items 45 | for ruletype, label of @ruletypes 46 | $(".license-#{ruletype} li, .license-#{ruletype} .license-sprite").qtip 47 | content: 48 | text: false 49 | title: 50 | text: label 51 | position: @qtip_position 52 | style: 53 | classes: "qtip-shadow qtip-#{ruletype}" 54 | 55 | false 56 | 57 | # Initializes Clipboard.js 58 | initClipboard: -> 59 | # Backup the clipboard button's original text. 60 | $(".js-clipboard-button").data "clipboard-prompt", $(".js-clipboard-button").text() 61 | 62 | # Hook up copy to clipboard buttons 63 | clip = new Clipboard ".js-clipboard-button" 64 | clip.on "mouseout", @clipboardMouseout 65 | clip.on "complete", @clipboardComplete 66 | 67 | # Callback to restore the clipboard button's original text 68 | clipboardMouseout: (client, args) -> 69 | @textContent = $(this).data("clipboard-prompt") 70 | 71 | # Post-copy user feedback callback 72 | clipboardComplete: (client, args) -> 73 | @textContent = "Copied!" 74 | 75 | # Initializes the repository suggestion feature 76 | initLicenseSuggestion: -> 77 | inputEl = $("#repository-url") 78 | licenseId = inputEl.attr("data-license-id") 79 | statusIndicator = $(".status-indicator") 80 | new LicenseSuggestion(inputEl, licenseId, statusIndicator) 81 | 82 | class LicenseSuggestion 83 | constructor: (@inputEl, @licenseId, @statusIndicator) -> 84 | @setupTooltips() 85 | @bindEventHandlers() 86 | 87 | # Initializes tooltips on the input element 88 | setupTooltips: => 89 | @inputEl.qtip 90 | content: 91 | text: false 92 | title: 93 | text: "message" 94 | show: false 95 | hide: false 96 | position: 97 | my: "top center" 98 | at: "bottom center" 99 | style: 100 | classes: "qtip-shadow" 101 | 102 | # Main event handlers for user input 103 | bindEventHandlers: => 104 | @inputEl.on "input", (event) => 105 | @setStatus "" 106 | .on "keyup", (event) => 107 | if event.keyCode == 13 and event.target.value 108 | # Validate the user input first 109 | try 110 | repositoryFullName = @parseUserInput event.target.value 111 | catch 112 | @setStatus "Error", "Invalid URL." 113 | return 114 | 115 | @setStatus "Fetching" 116 | @fetchInfoFromGithubAPI repositoryFullName, (err, repositoryInfo=null) => 117 | if (err) 118 | @setStatus "Error", err.message 119 | return 120 | if repositoryInfo.license # The repository already has a license 121 | license = repositoryInfo.license 122 | @setStatus "Error", @repositoryLicense repositoryFullName, license 123 | else # The repository is not licensed 124 | licenseUrl = encodeURIComponent "https://github.com/#{repositoryFullName}/community/license/new?template=#{@licenseId}" 125 | # Provide the chance to the user log-in, since the URL to suggest a license is restricted 126 | window.location.href = "https://github.com/login?return_to=#{licenseUrl}" 127 | @setStatus "" 128 | @inputEl.val("") 129 | 130 | # Try to extract the repository full name from the user input 131 | parseUserInput: (userInput) -> 132 | repository = /https?:\/\/github\.com\/(.*?)\/(.+)(\.git)?$/.exec userInput 133 | [_, username, project] = repository 134 | project = project 135 | .split /\/|\.git/ 136 | .filter (str) -> str 137 | .slice 0, 1 138 | .join "" 139 | return username + '/' + project 140 | 141 | # Displays an indicator and tooltips to the user about the current status 142 | setStatus: (status="", message="") => 143 | statusClass = status.toLowerCase() 144 | displayQtip = (status, message) => 145 | @inputEl.qtip("api") 146 | .set("content.text", message) 147 | .set("content.title", status) 148 | .set("style.classes", "qtip-shadow qtip-#{statusClass}") 149 | .show() 150 | 151 | switch status 152 | when "Fetching" 153 | @statusIndicator.removeClass('error').addClass(statusClass) 154 | when "Error" 155 | @statusIndicator.removeClass('fetching').addClass(statusClass) 156 | displayQtip status, message 157 | else 158 | @inputEl.qtip("api").hide() 159 | @statusIndicator.removeClass('fetching error') 160 | 161 | # Fetches information about a repository from the Github API 162 | fetchInfoFromGithubAPI: (repositoryFullName, callback) -> 163 | $.getJSON "https://api.github.com/repos/"+repositoryFullName, (info) -> 164 | callback null, info 165 | .fail (e) -> 166 | if e.status == 404 167 | callback new Error "Repository #{repositoryFullName} not found." 168 | else 169 | callback new Error "Network error when trying to get information about #{repositoryFullName}." 170 | 171 | # Generates a message showing that a repository is already licensed 172 | repositoryLicense: (repositoryFullName, license) -> 173 | foundLicense = window.licenses.find (lic) -> lic.spdx_id == license.spdx_id 174 | if foundLicense # Links the license to its page on this site 175 | "The repository #{repositoryFullName} is already licensed under the 176 | #{foundLicense.title}." 177 | else 178 | "The repository #{repositoryFullName} is already licensed." 179 | 180 | $ -> 181 | new Choosealicense() 182 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **[ChooseALicense.com](https://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. 2 | 3 | [![Build Status](https://travis-ci.org/github/choosealicense.com.svg?branch=gh-pages)](https://travis-ci.org/github/choosealicense.com) 4 | 5 | We catalog [select](CONTRIBUTING.md#adding-a-license) open source licenses with a [Jekyll collection](https://jekyllrb.com/docs/collections/) (in `_licenses`). The catalog is used to render [ChooseALicense.com](https://choosealicense.com) and is regularly vendored into [Licensee](https://github.com/benbalter/licensee), which GitHub uses to provide a [license chooser and license detection](https://help.github.com/articles/adding-a-license-to-a-repository/), a [licenses API](https://developer.github.com/v3/licenses/), and to [display license descriptions and metadata](https://github.com/blog/2335-open-source-license-descriptions-and-metadata). 6 | 7 | ## Goals 8 | 9 | * Be accurate, non-judgmental, and understandable. Our goal is to help you find a license that meets *your* goals. 10 | * The homepage should have just enough to help most folks make a decision about what license to use for a project they contribute to. 11 | * For the rest, the site will contain additional information about licenses common to specific communities and situations. 12 | * Collaborate with and reinforce other licensing best practices and standards projects. 13 | * 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. 14 | 15 | ## Run It On Your Machine 16 | 17 | ```bash 18 | git clone https://github.com/github/choosealicense.com.git 19 | cd choosealicense.com 20 | script/bootstrap 21 | script/server 22 | ``` 23 | 24 | Open `http://localhost:4000` in your favorite browser. 25 | 26 | ## Adding a license 27 | 28 | For information on adding a license, see [the CONTRIBUTING file](https://github.com/github/choosealicense.com/blob/gh-pages/CONTRIBUTING.md#adding-a-license). 29 | 30 | ## License metadata 31 | 32 | 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: 33 | 34 | #### Required fields 35 | 36 | * `title` - The license full name specified by https://spdx.org/licenses/ 37 | * `spdx-id` - Short identifier specified by https://spdx.org/licenses/ 38 | * `description` - A human-readable description of the license 39 | * `how` - Instructions on how to implement the license 40 | * `using` - A list 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](https://github.com/benbalter/licensee) in the form of `project_name: license_file_url` 41 | * `permissions` - Bulleted list of permission rules 42 | * `conditions` - Bulleted list of condition rules 43 | * `limitations` - Bulleted list of limitation rules 44 | 45 | #### Optional fields 46 | 47 | * `featured` - Whether the license should be featured on the main page (defaults to false) 48 | * `hidden` - Whether the license is neither [popular](https://opensource.org/licenses) nor fills out the [spectrum of licenses](https://choosealicense.com/licenses/) from strongly conditional to unconditional (defaults to true) 49 | * `nickname` - Customary short name if applicable (e.g, GPLv3) 50 | * `note` - Additional information about the licenses 51 | * `redirect_from` - Relative path(s) to redirect to the license from, to prevent breaking old URLs 52 | 53 | ### Auto-populated fields 54 | 55 | 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: 56 | 57 | #### Fields 58 | 59 | * `fullname` - The full name or username of the repository owner 60 | * `login` - The repository owner's username 61 | * `email` - The repository owner's primary email address 62 | * `project` - The repository name 63 | * `description` - The description of the repository 64 | * `year` - The current year 65 | * `projecturl` - The repository URL or other project website 66 | 67 | ## License properties 68 | 69 | 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. 70 | 71 | ### Rules 72 | 73 | #### Permissions 74 | 75 | * `commercial-use` - This software and derivatives may be used for commercial purposes. 76 | * `modifications` - This software may be modified. 77 | * `distribution` - This software may be distributed. 78 | * `private-use` - This software may be used and modified in private. 79 | * `patent-use` - This license provides an express grant of patent rights from contributors. 80 | 81 | #### Conditions 82 | 83 | * `include-copyright` - A copy of the license and copyright notice must be included with the software. 84 | * `document-changes` - Changes made to the code must be documented. 85 | * `disclose-source` - Source code must be made available when the software is distributed. 86 | * `network-use-disclose` - Users who interact with the software via network are given the right to receive a copy of the source code. 87 | * `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. 88 | * `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. 89 | * `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. 90 | 91 | #### Limitations 92 | 93 | * `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. 94 | * `liability` - This license includes a limitation of liability. 95 | * `patent-use` - This license explicitly states that it does NOT grant any rights in the patents of contributors. 96 | * `warranty` - The license explicitly states that it does NOT provide any warranty. 97 | 98 | ## License 99 | 100 | The content of this project itself is licensed under the [Creative Commons Attribution 3.0 Unported license](https://creativecommons.org/licenses/by/3.0/), and the underlying source code used to format and display that content is licensed under the [MIT license](LICENSE.md). 101 | -------------------------------------------------------------------------------- /terms-of-service.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Terms of Service 3 | layout: default 4 | permalink: /terms-of-service/ 5 | description: Terms governing your use of choosealicense.com 6 | --- 7 | 8 | ### 1. Introduction 9 | 10 | Welcome to Choosealicense.com (the "Site"). The Site is operated by GitHub, Inc. ("GitHub" or "we"), a Delaware corporation headquartered in lovely San Francisco, California. This document – the Site's terms of service – is an agreement between you, the beloved user, and GitHub. It's referred to as the "Terms" or the "Agreement". 11 | These Terms govern your use of the Site and this Site only. The Terms neither relate to any other GitHub website, service or property nor your use of any other GitHub website, service or property. For example, these Terms don't govern your use of www.github.com. 12 | 13 | ### 2. Agreement to the Terms 14 | 15 | Terms of service agreements are contracts. That means that this Agreement is a contract between you and GitHub for the limited purpose of laying out what our respective rights and obligations are with respect to Choosealicense.com. 16 | If there's something in these Terms you don't agree with or don't understand, please don't use the Site. By accessing or using the Site, you signal your agreement with and consent to the Terms. By accessing or using any Website or Service you also represent that you have the legal authority to accept the Terms on behalf of yourself and any party you represent in connection with your use of any Website or Service. 17 | 18 | Unless otherwise agreed to in writing with GitHub, your use of any Website or Service will always be subject to, at a minimum, the terms and conditions set out in this document. 19 | 20 | ### 3. No legal advice is being provided 21 | 22 | GitHub is a lot of things, but it's not a law firm. GitHub does not provide legal advice. Using the Site or sending us an email about the Site does not create an attorney-client relationship. Use of Choosealicense.com does not constitute legal advice nor does it create an attorney-client relationship. If you have any questions about the Site or its content, you should consult with your own legal counsel before moving forward with your project. In fact, you should always consult with your own lawyer before making any decisions that might have legal ramifications or that may impact your legal rights. 23 | 24 | GitHub created the Site to help users get started with their open source projects. And we do hope it helps. But please keep in mind that we're not lawyers (at least not most of us) and that we make mistakes like everyone else. For that reason, GitHub provides the Site on an "as-is" basis. GitHub makes no warranties regarding any information or licenses provided on or through the Site, and disclaims liability for damages resulting from use of the Site. 25 | 26 | The next few sections of these Terms go into greater detail on these disclaimers and lack of warranties. They're in caps so that you notice them. 27 | 28 | ### 4. DISCLAIMER OF WARRANTIES 29 | 30 | TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, GITHUB OFFERS THE SITE ON AN AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WEBSITES OR SERVICES, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. GITHUB DOES NOT WARRANT THAT THE FUNCTIONS OR CONTENT CONTAINED ON THE WEBSITE OR SERVICES WILL BE ERROR-FREE, THAT DEFECTS WILL BE CORRECTED, OR THAT GITHUB'S SERVERS ARE FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS. GITHUB DOES NOT WARRANT OR MAKE ANY REPRESENTATION REGARDING USE OR THE RESULT OF USE OF THE CONTENT IN TERMS OF ACCURACY, RELIABILITY, OR OTHERWISE. 31 | 32 | ### 5. LIMITATION OF LIABILITY 33 | 34 | EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW AND THEN ONLY TO THAT EXTENT, IN NO EVENT WILL GITHUB, ITS EMPLOYEES, OFFICERS, DIRECTORS, AFFILIATES OR AGENTS ("THE GITHUB PARTIES") BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY INCIDENTAL, DIRECT, INDIRECT, PUNITIVE, ACTUAL, CONSEQUENTIAL, SPECIAL, EXEMPLARY OR OTHER DAMAGES, INCLUDING WITHOUT LIMITATION, LOSS OF REVENUE OR INCOME, LOST PROFITS, PAIN AND SUFFERING, EMOTIONAL DISTRESS, COST OF SUBSTITUTE GOODS OR SERVICES, OR SIMILAR DAMAGES SUFFERED OR INCURRED BY YOU OR ANY THIRD PARTY THAT ARISE IN CONNECTION WITH THE WEBSITES OR SERVICES (OR THE TERMINATION THEREOF FOR ANY REASON), EVEN IF THE GITHUB PARTIES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 35 | 36 | THE GITHUB PARTIES SHALL NOT BE RESPONSIBLE OR LIABLE WHATSOEVER IN ANY MANNER FOR ANY CONTENT POSTED ON THE SITE (INCLUDING CLAIMS OF INFRINGEMENT RELATING TO CONTENT POSTED ON THE WEBSITES OR SERVICES, FOR YOUR USE OF THE WEBSITES AND SERVICES, OR FOR THE CONDUCT OF THIRD PARTIES WHETHER ON THE WEBSITES, IN CONNECTION WITH THE SERVICES OR OTHERWISE RELATING TO THE WEBSITES OR SERVICES. 37 | 38 | ### 6. Indemnification for breach of the Terms 39 | 40 | You agree to indemnify and hold harmless the GitHub Parties (defined above) from and against any and all loss, expenses, damages, and costs, including without limitation reasonable attorneys fees, resulting, whether directly or indirectly, from your violation of the Terms. 41 | 42 | ### 7. Termination of this Agreement 43 | 44 | These Terms will continue to apply until terminated by the parties in writing, though your right to access and use the Site terminates automatically upon your breach of any of these Terms. 45 | The disclaimer of warranties, the limitation of liability and the jurisdiction and applicable law provisions shall survive any termination. The license grants mentioned herein shall continue in effect subject to the terms of the applicable license. Your warranties and indemnification obligations shall survive any termination for one year. 46 | 47 | ### 8. Miscellaneous Terms 48 | 49 | These Terms are governed by and construed by the laws of the State of California, in the United States, exclusive of its choice of law rules. 50 | 51 | The parties agree that any disputes or proceedings between GitHub and you concerning these Terms or the Site shall be brought in a federal or state court of competent jurisdiction sitting in the Northern District of California, and hereby consent to the personal jurisdiction and venue of such court. Either party's failure to insist on or enforce strict performance of any of the Terms shall not be construed as a waiver of any provision or right. 52 | 53 | If any term or part of the Terms is held to be invalid or unenforceable by any law or regulation or final determination of a competent court or tribunal, that provision will be deemed severable and will not affect the validity and enforceability of any remaining provisions. 54 | 55 | The parties agree that no joint venture, partnership, employment, or agency relationship exists between you and GitHub as a result of these Terms or your use of the Site. 56 | 57 | These Terms constitute the entire agreement between you and GitHub relating to the Site and supersede all prior, contemporaneous and future communications (with the exception of future amendments to the Terms as made available by GitHub from time to time) between you and GitHub. A printed version of the Terms and of any notice given in electronic form shall be admissible in judicial or administrative proceedings based on or relating to the Terms to the same extent and subject to the same conditions as other business documents and records originally generating and maintained in printed form. 58 | -------------------------------------------------------------------------------- /assets/vendor/clipboard/dist/clipboard.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * clipboard.js v1.4.3 3 | * https://zenorocha.github.io/clipboard.js 4 | * 5 | * Licensed MIT © Zeno Rocha 6 | */ 7 | !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t,e,n;return function t(e,n,i){function o(a,c){if(!n[a]){if(!e[a]){var s="function"==typeof require&&require;if(!c&&s)return s(a,!0);if(r)return r(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return o(n?n:t)},u,u.exports,t,e,n,i)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;ai;i++)n[i].fn.apply(n[i].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),i=n[t],o=[];if(i&&e)for(var r=0,a=i.length;a>r;r++)i[r].fn!==e&&i[r].fn._!==e&&o.push(i[r]);return o.length?n[t]=o:delete n[t],this}},e.exports=i},{}],6:[function(t,e,n){"use strict";function i(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}n.__esModule=!0;var r=function(){function t(t,e){for(var n=0;n Modern copy to clipboard. No Flash. Just 2kb 7 | 8 | Demo 9 | 10 | ## Why 11 | 12 | Copying text to the clipboard shouldn't be hard. It shouldn't require dozens of steps to configure or hundreds of KBs to load. But most of all, it shouldn't depend on Flash or any bloated framework. 13 | 14 | That's why clipboard.js exists. 15 | 16 | ## Install 17 | 18 | You can get it on npm. 19 | 20 | ``` 21 | npm install clipboard --save 22 | ``` 23 | 24 | Or bower, too. 25 | 26 | ``` 27 | bower install clipboard --save 28 | ``` 29 | 30 | If you're not into package management, just [download a ZIP](https://github.com/zenorocha/clipboard.js/archive/master.zip) file. 31 | 32 | ## Setup 33 | 34 | First, include the script located on the `dist` folder. 35 | 36 | ```html 37 | 38 | ``` 39 | 40 | Or load it from a CDN. 41 | 42 | ```html 43 | 44 | ``` 45 | 46 | Now, you need to instantiate it using a DOM selector. This selector corresponds to the trigger element(s), for example ` 76 | ``` 77 | 78 | ### Cut text from another element 79 | 80 | Additionally, you can define a `data-clipboard-action` attribute to specify if you want to either `copy` or `cut` content. 81 | 82 | If you omit this attribute, `copy` will be used by default. 83 | 84 | example-3 85 | 86 | ```html 87 | 88 | 89 | 90 | 91 | 94 | ``` 95 | 96 | As you may expect, the `cut` action only works on `` or `