Skip to content

Instantly share code, notes, and snippets.

@monorkin
Created August 29, 2018 18:16
Show Gist options
  • Save monorkin/715f737a6fee2ce706840711776e7c89 to your computer and use it in GitHub Desktop.
Save monorkin/715f737a6fee2ce706840711776e7c89 to your computer and use it in GitHub Desktop.
Data gathered for the "Licensing software" article
language agpl-3.0 apache-2.0 artistic-2.0 bsd-2-clause bsd-3-clause cc0-1.0 epl-1.0 gpl-2.0 gpl-3.0 isc lgpl-2.1 lgpl-3.0 mit mpl-2.0 unlicensed
Ruby 4513 42208 266 5463 13744 1682 533 20153 14975 797 1155 1617 269015 1878 2247
Rust 162 3188 21 328 714 83 8 665 1317 126 105 137 8108 492 297
C 3060 30281 468 8949 23247 996 802 71930 51125 1637 9981 6433 84365 1574 3057
Python 14102 79036 588 14517 46448 3891 1113 75928 82760 2503 5983 7923 209152 3630 6285
PHP 6205 29648 283 3141 23837 924 243 70814 36439 562 2209 4256 163556 1069 2306
C++ 3161 28707 387 7450 21009 909 584 64061 51985 877 8104 7311 83737 1599 3044
Java 4060 149147 550 3809 12911 1303 5360 32128 46739 609 4164 7993 98623 1753 3998
Kotlin 60 2722 12 51 139 21 14 141 597 26 13 60 2143 84 49
Elixir 76 740 18 126 363 13 9 496 328 93 34 70 4328 82 89
Haskell 384 1384 50 1259 12840 120 42 1809 3145 215 166 324 9041 170 429
JavaScript 18631 131794 1301 11185 43347 6148 2835 93429 75531 8551 3427 7858 693419 7339 9599
{
"Ruby": [
{
"license": "lgpl-3.0",
"count": "1617"
},
{
"license": "artistic-2.0",
"count": "266"
},
{
"license": "apache-2.0",
"count": "42208"
},
{
"license": "bsd-2-clause",
"count": "5463"
},
{
"license": "cc0-1.0",
"count": "1682"
},
{
"license": "mpl-2.0",
"count": "1878"
},
{
"license": "bsd-3-clause",
"count": "13744"
},
{
"license": "lgpl-2.1",
"count": "1155"
},
{
"license": "unlicense",
"count": "2247"
},
{
"license": "mit",
"count": "269015"
},
{
"license": "isc",
"count": "797"
},
{
"license": "gpl-3.0",
"count": "14975"
},
{
"license": "epl-1.0",
"count": "533"
},
{
"license": "agpl-3.0",
"count": "4513"
},
{
"license": "gpl-2.0",
"count": "20153"
}
],
"Rust": [
{
"license": "agpl-3.0",
"count": "162"
},
{
"license": "epl-1.0",
"count": "8"
},
{
"license": "apache-2.0",
"count": "3188"
},
{
"license": "bsd-2-clause",
"count": "328"
},
{
"license": "cc0-1.0",
"count": "83"
},
{
"license": "mpl-2.0",
"count": "492"
},
{
"license": "mit",
"count": "8108"
},
{
"license": "gpl-3.0",
"count": "1317"
},
{
"license": "isc",
"count": "126"
},
{
"license": "bsd-3-clause",
"count": "714"
},
{
"license": "lgpl-3.0",
"count": "137"
},
{
"license": "artistic-2.0",
"count": "21"
},
{
"license": "gpl-2.0",
"count": "665"
},
{
"license": "unlicense",
"count": "297"
},
{
"license": "lgpl-2.1",
"count": "105"
}
],
"C": [
{
"license": "gpl-2.0",
"count": "71930"
},
{
"license": "lgpl-2.1",
"count": "9981"
},
{
"license": "unlicense",
"count": "3057"
},
{
"license": "cc0-1.0",
"count": "996"
},
{
"license": "mpl-2.0",
"count": "1574"
},
{
"license": "isc",
"count": "1637"
},
{
"license": "gpl-3.0",
"count": "51125"
},
{
"license": "artistic-2.0",
"count": "468"
},
{
"license": "lgpl-3.0",
"count": "6433"
},
{
"license": "epl-1.0",
"count": "802"
},
{
"license": "agpl-3.0",
"count": "3060"
},
{
"license": "mit",
"count": "84365"
},
{
"license": "bsd-3-clause",
"count": "23247"
},
{
"license": "apache-2.0",
"count": "30281"
},
{
"license": "bsd-2-clause",
"count": "8949"
}
],
"Python": [
{
"license": "artistic-2.0",
"count": "588"
},
{
"license": "lgpl-3.0",
"count": "7923"
},
{
"license": "mit",
"count": "209152"
},
{
"license": "epl-1.0",
"count": "1113"
},
{
"license": "agpl-3.0",
"count": "14102"
},
{
"license": "gpl-2.0",
"count": "75928"
},
{
"license": "apache-2.0",
"count": "79036"
},
{
"license": "bsd-2-clause",
"count": "14517"
},
{
"license": "cc0-1.0",
"count": "3891"
},
{
"license": "mpl-2.0",
"count": "3630"
},
{
"license": "bsd-3-clause",
"count": "46448"
},
{
"license": "isc",
"count": "2503"
},
{
"license": "gpl-3.0",
"count": "82760"
},
{
"license": "lgpl-2.1",
"count": "5983"
},
{
"license": "unlicense",
"count": "6285"
}
],
"PHP": [
{
"license": "apache-2.0",
"count": "29648"
},
{
"license": "bsd-2-clause",
"count": "3141"
},
{
"license": "isc",
"count": "562"
},
{
"license": "gpl-3.0",
"count": "36439"
},
{
"license": "gpl-2.0",
"count": "70814"
},
{
"license": "bsd-3-clause",
"count": "23837"
},
{
"license": "artistic-2.0",
"count": "283"
},
{
"license": "lgpl-3.0",
"count": "4256"
},
{
"license": "mit",
"count": "163556"
},
{
"license": "cc0-1.0",
"count": "924"
},
{
"license": "mpl-2.0",
"count": "1069"
},
{
"license": "lgpl-2.1",
"count": "2209"
},
{
"license": "unlicense",
"count": "2306"
},
{
"license": "epl-1.0",
"count": "243"
},
{
"license": "agpl-3.0",
"count": "6205"
}
],
"C++": [
{
"license": "isc",
"count": "877"
},
{
"license": "gpl-3.0",
"count": "51985"
},
{
"license": "mit",
"count": "83737"
},
{
"license": "epl-1.0",
"count": "584"
},
{
"license": "agpl-3.0",
"count": "3161"
},
{
"license": "apache-2.0",
"count": "28707"
},
{
"license": "bsd-2-clause",
"count": "7450"
},
{
"license": "artistic-2.0",
"count": "387"
},
{
"license": "lgpl-3.0",
"count": "7311"
},
{
"license": "cc0-1.0",
"count": "909"
},
{
"license": "mpl-2.0",
"count": "1599"
},
{
"license": "lgpl-2.1",
"count": "8104"
},
{
"license": "unlicense",
"count": "3044"
},
{
"license": "gpl-2.0",
"count": "64061"
},
{
"license": "bsd-3-clause",
"count": "21009"
}
],
"Java": [
{
"license": "artistic-2.0",
"count": "550"
},
{
"license": "lgpl-3.0",
"count": "7993"
},
{
"license": "lgpl-2.1",
"count": "4164"
},
{
"license": "unlicense",
"count": "3998"
},
{
"license": "cc0-1.0",
"count": "1303"
},
{
"license": "mpl-2.0",
"count": "1753"
},
{
"license": "bsd-3-clause",
"count": "12911"
},
{
"license": "epl-1.0",
"count": "5360"
},
{
"license": "agpl-3.0",
"count": "4060"
},
{
"license": "isc",
"count": "609"
},
{
"license": "gpl-3.0",
"count": "46739"
},
{
"license": "mit",
"count": "98623"
},
{
"license": "apache-2.0",
"count": "149147"
},
{
"license": "bsd-2-clause",
"count": "3809"
},
{
"license": "gpl-2.0",
"count": "32128"
}
],
"Kotlin": [
{
"license": "bsd-3-clause",
"count": "139"
},
{
"license": "mpl-2.0",
"count": "84"
},
{
"license": "cc0-1.0",
"count": "21"
},
{
"license": "unlicense",
"count": "49"
},
{
"license": "lgpl-2.1",
"count": "13"
},
{
"license": "lgpl-3.0",
"count": "60"
},
{
"license": "artistic-2.0",
"count": "12"
},
{
"license": "mit",
"count": "2143"
},
{
"license": "gpl-2.0",
"count": "141"
},
{
"license": "gpl-3.0",
"count": "597"
},
{
"license": "isc",
"count": "26"
},
{
"license": "agpl-3.0",
"count": "60"
},
{
"license": "epl-1.0",
"count": "14"
},
{
"license": "apache-2.0",
"count": "2722"
},
{
"license": "bsd-2-clause",
"count": "51"
}
],
"Elixir": [
{
"license": "gpl-2.0",
"count": "496"
},
{
"license": "apache-2.0",
"count": "740"
},
{
"license": "bsd-2-clause",
"count": "126"
},
{
"license": "isc",
"count": "93"
},
{
"license": "gpl-3.0",
"count": "328"
},
{
"license": "mit",
"count": "4328"
},
{
"license": "lgpl-2.1",
"count": "34"
},
{
"license": "unlicense",
"count": "89"
},
{
"license": "bsd-3-clause",
"count": "363"
},
{
"license": "agpl-3.0",
"count": "76"
},
{
"license": "epl-1.0",
"count": "9"
},
{
"license": "artistic-2.0",
"count": "18"
},
{
"license": "lgpl-3.0",
"count": "70"
},
{
"license": "mpl-2.0",
"count": "82"
},
{
"license": "cc0-1.0",
"count": "13"
}
],
"Haskell": [
{
"license": "agpl-3.0",
"count": "384"
},
{
"license": "epl-1.0",
"count": "42"
},
{
"license": "bsd-3-clause",
"count": "12840"
},
{
"license": "isc",
"count": "215"
},
{
"license": "gpl-3.0",
"count": "3145"
},
{
"license": "apache-2.0",
"count": "1384"
},
{
"license": "bsd-2-clause",
"count": "1259"
},
{
"license": "cc0-1.0",
"count": "120"
},
{
"license": "mpl-2.0",
"count": "170"
},
{
"license": "lgpl-3.0",
"count": "324"
},
{
"license": "artistic-2.0",
"count": "50"
},
{
"license": "lgpl-2.1",
"count": "166"
},
{
"license": "unlicense",
"count": "429"
},
{
"license": "gpl-2.0",
"count": "1809"
},
{
"license": "mit",
"count": "9041"
}
],
"JavaScript": [
{
"license": "apache-2.0",
"count": "131794"
},
{
"license": "bsd-2-clause",
"count": "11185"
},
{
"license": "gpl-2.0",
"count": "93429"
},
{
"license": "isc",
"count": "8551"
},
{
"license": "gpl-3.0",
"count": "75531"
},
{
"license": "epl-1.0",
"count": "2835"
},
{
"license": "agpl-3.0",
"count": "18631"
},
{
"license": "cc0-1.0",
"count": "6148"
},
{
"license": "mpl-2.0",
"count": "7339"
},
{
"license": "bsd-3-clause",
"count": "43347"
},
{
"license": "lgpl-2.1",
"count": "3427"
},
{
"license": "unlicense",
"count": "9599"
},
{
"license": "mit",
"count": "693419"
},
{
"license": "artistic-2.0",
"count": "1301"
},
{
"license": "lgpl-3.0",
"count": "7858"
}
]
}
# frozen_string_literal: true
require 'json'
require 'csv'
data = File.read('data.json')
data = JSON.parse(data)
data =
data.each_with_object({}) do |(language, licenses), result|
result[language] =
licenses.each_with_object({}) do |license, object|
name = license['license']
count = license['count'].to_i
object[name] = count
end
end
licenses =
data.flat_map do |_language, license_counts|
license_counts.keys
end.uniq.sort!
file = File.open('data.csv', 'w+')
CSV(file) do |csv|
csv << ['language', *licenses]
data.each do |language, license_counts|
counts =
licenses.map do |license|
license_counts[license] || 0
end
csv << [language, *counts]
end
end
file.close
SELECT licenses.license AS license, COUNT(licenses.repo_name) AS count
FROM [bigquery-public-data:github_repos.licenses] AS licenses
JOIN [bigquery-public-data:github_repos.languages] AS languages ON licenses.repo_name = languages.repo_name
WHERE languages.language.name = 'JavaScript'
GROUP BY license
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment