├── .github ├── .mailmap ├── CONTRIBUTING.md └── PULL_REQUEST_TEMPLATE.md ├── .travis.yml ├── tests ├── Dangerfile ├── check-github-commit-dates.py └── test.js ├── Makefile ├── non-free.md ├── LICENSE └── AUTHORS.md /.github/.mailmap: -------------------------------------------------------------------------------- 1 | Kickball 2 | Andrew Rylatt Andrew Rylatt 3 | Andrew Rylatt 4 | Andrew Rylatt 5 | Andrew Rylatt 6 | n8225 7 | Thomas Dalichow <2012-02-05.github.com@thomasdalichow.de> 8 | Keith Thibodeaux Keith Thibodeaux 9 | Madhu GB Madhu GB 10 | Miguel Piedrafita 11 | Pavel Lobashov Pavel Lobashov 12 | Stefan Bohacek Stefan Bohacek 13 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | 3 | node_js: 4 | - "node" 5 | cache: 6 | npm: false 7 | 8 | before_install: 9 | - rvm install 2.6.2 10 | - gem install awesome_bot 11 | - cd tests && npm install chalk && cd .. 12 | 13 | before_script: 14 | 15 | script: 16 | - 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then git diff origin/master -U0 README.md | grep -Pos "(?<=^\+).*" >> temp.md; fi || (exit 0)' 17 | - 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then node tests/test.js -r README.md -d temp.md; else node tests/test.js -r README.md; fi' 18 | - 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then if [ -f temp.md ]; then awesome_bot temp.md --allow-redirect --skip-save-results --allow 202 --white-list airsonic.github.io/docs/apps; else (exit 0); fi else awesome_bot *.md --allow-redirect --skip-save-results --allow 202 --white-list airsonic.github.io/docs/apps; fi' 19 | 20 | 21 | notifications: 22 | email: false 23 | 24 | branches: 25 | only: 26 | - master 27 | - travis_test 28 | 29 | -------------------------------------------------------------------------------- /tests/Dangerfile: -------------------------------------------------------------------------------- 1 | # Danger CI configuration file 2 | # https://danger.systems/guides/getting_started.html 3 | 4 | # Check for changes to README.md 5 | has_readme_changes = git.modified_files.include?("README.md") 6 | 7 | # Ensure there is a summary for a pull request 8 | fail 'Please provide a summary in the Pull Request description' if github.pr_body.length < 5 9 | 10 | # Warn if PR guideline boxes are not checked. 11 | warn 'Please check PR guidelines and check the boxes.' if github.pr_body.include? '- [ ]' 12 | 13 | # Warn if pull request is not updated 14 | warn 'Please provide a descriptive title for the Pull Request' if github.pr_title.include? 'Update README.md' 15 | 16 | # Warn when there are merge commits in the diff 17 | warn 'Please rebase to get rid of the merge commits in this Pull Request' if git.commits.any? { |c| c.message =~ /^Merge branch 'master'/ } 18 | 19 | # Check links 20 | if has_readme_changes 21 | require 'json' 22 | results = File.read 'ab-results-temp.md-markdown-table.json' 23 | j = JSON.parse results 24 | if j['error']==true 25 | warn j['title'] 26 | markdown j['message'] 27 | end 28 | end 29 | 30 | # Check syntax 31 | if has_readme_changes 32 | require 'json' 33 | syntaxresults = File.read 'syntaxcheck.json' 34 | sj = JSON.parse syntaxresults 35 | if sj['error']==true 36 | fail sj['title'] 37 | markdown sj['message'] 38 | end 39 | end 40 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Contributing 2 | 3 | Please open a new issue to clarify any questions, or post in the [General discussion issue](https://github.com/awesome-selfhosted/awesome-selfhosted/issues/89). 4 | 5 | All guidelines for adding new software to the list are listed in [PULL_REQUEST_TEMPLATE.md](PULL_REQUEST_TEMPLATE.md). 6 | 7 | Other recommendations: 8 | 9 | - To add a new entry, [edit the README.md file](https://github.com/awesome-selfhosted/awesome-selfhosted/edit/master/README.md) through Github's web interface or a text editor, and send a Pull Request. 10 | - See [Editing files in another user's repository](https://help.github.com/articles/editing-files-in-another-user-s-repository/), [Creating Pull Requests](https://help.github.com/articles/creating-a-pull-request/), [Using Pull Requests](https://help.github.com/articles/using-pull-requests/) for help on sending your patch. 11 | - A script to help you format new entries is available at (it requires `make` to be installed): `git clone`/[download](https://github.com/awesome-selfhosted/awesome-selfhosted/archive/master.zip) and enter the repository, run `make add` and follow the instructions. 12 | - A website to help you format new entries is available at https://n8225.github.io/ 13 | - The list of contributors can be updated with `make contrib`. 14 | - Software with no development activity for 6-12 months may be removed from the list. 15 | - Don't know where to start? Check issues labeled [`help wanted`](https://github.com/awesome-selfhosted/awesome-selfhosted/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) and [`fix`](https://github.com/awesome-selfhosted/awesome-selfhosted/issues?q=is%3Aissue+is%3Aopen+label%3Afix). 16 | 17 | -------------------------------------------------------------------------------- /tests/check-github-commit-dates.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | """ A script to find github repo links and last commit dates in a markdown file 4 | 5 | Requirements: 6 | - python3 github module (sudo apt install python3-github on Debian) 7 | - A personal access token (https://github.com/settings/tokens) 8 | 9 | Usage: 10 | - Run awesome_bot --allow-redirect -f README.md beforehand to detect any error(4xx, 5xx) that would 11 | cause the script to abort 12 | - Github API calls are limited to 5000 requests/hour https://developer.github.com/v3/#rate-limiting 13 | - Put the token in your environment variables: 14 | export GITHUB_TOKEN=18c45f8d8d556492d1d877998a5b311b368a76e4 15 | - The output is unsorted, just pipe it through 'sort' or paste it in your editor and sort from there 16 | - Put the script in your crontab or run it from time to time. It doesn't make sense to add this 17 | script to the CI job that runs every time something is pushed. 18 | - To detect no-commit related activity (repo metadata changes, wiki edits, ...), replace pushed_at 19 | with updated_at 20 | 21 | """ 22 | 23 | from github import Github 24 | import sys 25 | import time 26 | import re 27 | import os 28 | 29 | __author__ = "nodiscc" 30 | __copyright__ = "Copyright 2019, nodiscc" 31 | __credits__ = ["https://github.com/awesome-selfhosted/awesome-selfhosted"] 32 | __license__ = "MIT" 33 | __version__ = "1.0" 34 | __maintainer__ = "nodiscc" 35 | __email__ = "nodiscc@gmail.com" 36 | __status__ = "Production" 37 | 38 | ############################################################################### 39 | 40 | access_token = os.environ['GITHUB_TOKEN'] 41 | 42 | """ find all URLs of the form https://github.com/owner/repo """ 43 | with open('README.md', 'r') as readme: 44 | data = readme.read() 45 | project_urls = re.findall('https://github.com/[A-z]*/[A-z|0-9|\-|_|\.]+', data) 46 | 47 | urls = sorted(set(project_urls)) 48 | 49 | """ Uncomment this to debug the list of matched URLs """ 50 | # print(str(urls)) 51 | # exit(0) 52 | 53 | """ login to github API """ 54 | g = Github(access_token) 55 | 56 | """ load project metadata, output last commit date and URL """ 57 | for url in urls: 58 | project = re.sub('https://github.com/', '', url) 59 | repo = g.get_repo(project) 60 | print(str(repo.pushed_at) + ' https://github.com/' + project) 61 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Thank you for taking the time to work on a PR for Awesome-Selfhosted! 2 | 3 | To ensure your PR is dealt with swiftly please check the following: 4 | 5 | - [ ] Your submissions are formatted according to the following requirements: 6 | 7 | ``- [Name](http://homepage/) - Short description, less than 250 characters. ([Demo](http://url.to/demo), [Source Code](http://url.of/source/code), [Clients](https://url.to/list/of/related/clients-or-apps)) `License` `Language` `` 8 | 9 | Depends on proprietary services: 10 | 11 | ``- [Name](http://homepage/) `⚠` - Short description, less than 250 characters. ([Demo](http://url.to/demo), [Source Code](http://url.of/source/code), [Clients](https://url.to/list/of/related/clients-or-apps)) `License` `Language` `` 12 | 13 | Non-free software in `non-free.md`: 14 | 15 | ``- [Name](http://homepage/) `⊘ Proprietary` - Short description, less than 250 characters. ([Demo](http://url.to/demo), [Source Code](http://url.of/source/code), [Clients](https://url.to/list/of/related/clients-or-apps)) `Language` `` 16 | 17 | 18 | - [ ] Your additions are ordered alphabetically. 19 | - [ ] Your additions are [Free software](https://en.wikipedia.org/wiki/Free_software), or if not they have been added to [non-free](non-free.md) and marked `⊘ Proprietary`. 20 | - [ ] If your additions depend on proprietary services outside the user's control, they must be marked `⚠`. 21 | - [ ] Your additions are not already listed at [awesome-sysadmin](https://github.com/n1trux/awesome-sysadmin) (IT infrastructure management), [staticgen.com](https://www.staticgen.com/) or [staticsitegenerators.net](https://staticsitegenerators.net/) (static site generators). 22 | - [ ] Your additions have their `License` main server-side `Language`/platform/requirement listed. 23 | - [ ] Any licenses you have added are in our [list of licenses](https://github.com/awesome-selfhosted/awesome-selfhosted/blob/master/README.md#list-of-licenses). 24 | - [ ] You have searched the repository for any relevant [issues](https://github.com/awesome-selfhosted/awesome-selfhosted/issues) or [PRs](https://github.com/awesome-selfhosted/awesome-selfhosted/pulls), including closed ones. 25 | - [ ] If the main link of your addition points to the program's source code, there is no need to add a duplicate _Source Code_ link. The _Demo_ and _Clients_ links are not mandatory. 26 | - [ ] Any category you are creating has the minimum requirement of 3 items. If not, your addition may be inserted into `Misc/Other`. 27 | - [ ] Any software project you are adding to the list is actively maintained. 28 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | SHELL = /bin/bash 3 | all: checks 4 | 5 | checks: nolicenselanguage nofullstop longdescriptions syntaxerrors 6 | 7 | monthly: checks awesome_bot check_github_commit_dates contrib 8 | 9 | noexternallink: 10 | @echo -e "\nLines with no source/demo/other link:" 11 | @sed -n -e '/BEGIN SOFTWARE LIST/,/END SOFTWARE LIST/ p' README.md | egrep '^ *\* ' | egrep --color=always '[a-z\.] `' 12 | 13 | nolicenselanguage: 14 | @echo -e "\nLines with only 1 or no language/license entry:" 15 | @! sed -n -e '/BEGIN SOFTWARE LIST/,/END SOFTWARE LIST/ p' README.md | egrep '^ *\* ' | egrep -v '` `' 16 | 17 | nofullstop: 18 | @echo -e "\nLines without a full stop after description:" 19 | @! sed -n -e '/BEGIN SOFTWARE LIST/,/END SOFTWARE LIST/ p' README.md | egrep '[a-z] \(\[' 20 | @! sed -n -e '/BEGIN SOFTWARE LIST/,/END SOFTWARE LIST/ p' README.md | egrep '[a-z] `' 21 | 22 | longdescriptions: 23 | @echo -e "\nDescriptions exceeding 250 chars:" 24 | @! sed -n -e '/BEGIN SOFTWARE LIST/,/END SOFTWARE LIST/ p' README.md | egrep --only-matching '\) - [Aa-Zz|.|\(|\)|/| |,|-]*\s\(\[' README.md | grep '.\{257\}' 25 | 26 | syntaxerrors: 27 | @echo -e "\nSyntax errors:" 28 | @! sed -n -e '/BEGIN SOFTWARE LIST/,/END SOFTWARE LIST/ p' README.md | egrep '\)\(|``|\)`' 29 | 30 | ################################# 31 | 32 | contrib: 33 | @mv .github/.mailmap . && printf "|Commits | Author |\n| :---: | --- |\n" > AUTHORS.md && git shortlog -sne | sed -r 's/^\s*([[:digit:]]*?)\s*?(.*?)/|\1|\2|/' >> AUTHORS.md && mv .mailmap .github/.mailmap 34 | 35 | awesome_bot: 36 | # https://github.com/dkhamsing/awesome_bot 37 | awesome_bot --allow-redirect --allow 202 -f README.md 38 | 39 | check_github_commit_dates: 40 | python3 tests/check-github-commit-dates.py 41 | 42 | ################################# 43 | 44 | 45 | add: 46 | @#add a new entry 47 | @printf 'Software name: ' ;\ 48 | read Name; if [ -z "$$Name" ]; then printf 'Missing software name!\n'; exit 1 ; fi ;\ 49 | printf 'Homepage URL: ' ;\ 50 | read Url; if [ -z "$$Url" ]; then printf 'Missing main project URL!\n'; exit 1 ; fi ;\ 51 | printf 'Description (max 250 characters, ending with .): ' ;\ 52 | read Description; if [ -z "$$Description" ]; then printf 'Missing description!\n'; exit 1 ; fi ;\ 53 | printf 'License: ' ;\ 54 | read License; if [ -z "$$License" ]; then printf 'Missing license!\n'; exit 1 ; fi ;\ 55 | printf 'Main server-side language/platform/requirement: ' ;\ 56 | read Language; if [ -z "$$Language" ]; then printf 'Missing language!\n'; exit 1 ; fi ;\ 57 | printf 'Demo URL (if any): ' ;\ 58 | read Demo; if [ -z "$$Demo" ]; then CDemo="" ; else CDemo="[Demo]($$Demo)" ; fi ;\ 59 | printf 'Source code URL (if different from Homepage): ' ;\ 60 | read Source; if [ -z "$$Source" ]; then CSource="" ; else CSource="[Source Code]($$Source)" ; fi ;\ 61 | if [[ "$$CSource" == "" && "$$Demo" == "" ]]; \ 62 | then Moreinfo=""; \ 63 | else Moreinfo=$$(echo "($$CDemo$$CSource)" | sed 's|)\[|), [|g') ;\ 64 | fi ;\ 65 | echo -e "Copy this entry to your clipboard, paste it in the appropriate category:\n\n" ;\ 66 | echo "- [$$Name]($$Url) - $${Description} $${Moreinfo} \`$$License\` \`$$Language\`" 67 | 68 | 69 | #TODO ask for category and insert item accordingly 70 | #TODO check for unsorted entries 71 | #TODO automatically sort entries/sections 72 | #TODO autoupdate contributors list 73 | -------------------------------------------------------------------------------- /tests/test.js: -------------------------------------------------------------------------------- 1 | // USAGE: 2 | // node test.js -r README.md (Checks whole file) 3 | // node test.js -r README.md -d temp.md (Checks just the diff) 4 | 5 | const fs = require('fs'); 6 | const chalk = require('chalk'); 7 | let licenses = new Set(); 8 | let pr = false; 9 | let readme; 10 | let diff; 11 | 12 | //Parse the command options and set the pr var 13 | function parseArgs(args) { 14 | if ( args.indexOf('-r', 2) > 0 ) { 15 | readme = fs.readFileSync(args[args.indexOf('-r', 2)+1], 'utf8') 16 | } 17 | if (args.indexOf('-d', 2) > 0) { 18 | pr = true; 19 | diff = fs.readFileSync(args[args.indexOf('-d', 2)+1], 'utf8'); 20 | } 21 | if ( pr === true) { 22 | console.log(chalk.blue(`Running on PR. README.md: ${args[args.indexOf('-r', 2)+1]} diff: ${args[args.indexOf('-d', 2)+1]}`)) 23 | } 24 | } 25 | 26 | // Function to find lines with entries 27 | function entryFilter(md) { 28 | const linepatt = /^\s{0,2}-\s\[.*`/; 29 | return linepatt.test(md); 30 | } 31 | 32 | // Function to find lines with licenses 33 | function licenseFilter(md) { 34 | const linepatt = /^- `.*` - .*/; 35 | return linepatt.test(md) 36 | } 37 | 38 | // Function to split lines into array 39 | function split(text) { 40 | return text.split(/\r?\n/); 41 | } 42 | 43 | // All entries should match this pattern. If matches pattern returns true. 44 | function findPattern(text) { 45 | const patt = /^\s{0,2}-\s\[.*?\]\(.*?\) (`⚠` )?- .{0,249}?\.( \(\[(Demo|Source Code|Clients)\]\([^)\]]*\)(, \[(Source Code|Clients)\]\([^)\]]*\))?(, \[(Source Code|Clients)\]\([^)\]]*\))*\))? \`.*?\` \`.*?\`$/; 46 | if (patt.test(text) === true) { 47 | return true; 48 | } 49 | return false; 50 | } 51 | 52 | // Parses SPDX identifiers from list of licenses 53 | function parseLicense(md) { 54 | const patt = /^- `(.*)` - .*/ 55 | return patt.exec(md)[1] 56 | } 57 | 58 | //Test '- [Name](http://homepage/)' 59 | function testMainLink(text) { 60 | let testA = /(^ {0,2}- \[.*?\]\(.*\))(?=.?-? ?\w)/; 61 | const testA1 = /(- \W?\w*\W{0,2}.*?\)?)( .*$)/; 62 | if (!testA.test(text)) { 63 | let a1 = testA1.exec(text)[2]; 64 | return chalk.red(text.replace(a1, '')) 65 | } 66 | return chalk.green(testA.exec(text)[1]) 67 | } 68 | 69 | //Test '`⚠` - Short description, less than 250 characters.' 70 | function testDescription(text) { 71 | const testB = /( - .*\. )(?:(\(?\[?|\`))/; 72 | const testA1 = /(- \W?\w*\W{0,2}.*?\)?)( .*$)/; 73 | const testB2 = /((\(\[|\`).*$)/; 74 | if (!testB.test(text)) { 75 | let b1 = testA1.exec(text)[1]; 76 | let b2 = testB2.exec(text)[1]; 77 | return chalk.red(text.replace(b1, '').replace(b2, '')) 78 | } 79 | return chalk.green(testB.exec(text)[1]) 80 | } 81 | 82 | //If present, tests '([Demo](http://url.to/demo), [Source Code](http://url.of/source/code), [Clients](https://url.to/list/of/related/clients-or-apps))' 83 | function testSrcDemCli(text) { 84 | let testC = text.search(/\(\[|\)\,|\)\)/); 85 | let testD = /(?<=\w. )(\(\[(Demo|Source Code|Clients)\]\([^)\]]*\)(, \[(Source Code|Clients)\]\([^)\]]*\))?(, \[(Source Code|Clients)\]\([^)\]]*\))*\))(?= \`?)/; 86 | const testD1 = /(^- \W[a-zA-Z0-9-_ ]*\W{0,2}http[^\[]*)(?<= )/; 87 | const testD2 = /(\`.*\` \`.*\`$)/; 88 | if ((testC > -1) && (!testD.test(text))) { 89 | let d1 = testD1.exec(text)[1]; 90 | let d2 = testD2.exec(text)[1]; 91 | return chalk.red(text.replace(d1, '').replace(d2, '')) 92 | } else if (testC > -1) { 93 | return chalk.green(testD.exec(text)[1]) 94 | } 95 | return "" 96 | } 97 | 98 | // Tests '`License` `Language`' 99 | function testLangLic(text) { 100 | const testD2 = /(\`.*\` \`.*\`$)/; 101 | let testE = testD2.test(text); 102 | const testE1 = /(^[^`]*)/; 103 | if (!testE) { 104 | let e1 = testE1.exec(text)[1]; 105 | return chalk.red(text.replace(e1, '')) 106 | } 107 | return chalk.green(testD2.exec(text)[1]) 108 | } 109 | 110 | //Runs all the syntax tests... 111 | function findError(text) { 112 | let res 113 | res = testMainLink(text) 114 | res += testDescription(text) 115 | res += testSrcDemCli(text) 116 | res += testLangLic(text) 117 | return res + `\n` 118 | } 119 | 120 | //Check if license is in the list of licenses. 121 | function testLicense(md) { 122 | let pass = true; 123 | let lFailed = [] 124 | let lPassed = [] 125 | const regex = /.*\`(.*)\` .*$/; 126 | try { 127 | for (l of regex.exec(md)[1].split("/")) { 128 | if (!licenses.has(l)) { 129 | pass = false; 130 | lPassed.push(l) 131 | } 132 | lFailed.push(l) 133 | } 134 | } 135 | catch(err) { 136 | console.log(chalk.yellow("Error in License syntax, license not checked against list.")) 137 | return [false, "", ""] 138 | } 139 | 140 | 141 | 142 | 143 | 144 | return [pass, lFailed, lPassed] 145 | } 146 | 147 | 148 | //Parses name from entry 149 | function parseName(md) { 150 | const regex = /^\W*(.*?)\W/ 151 | return regex.exec(md)[1] 152 | } 153 | 154 | function entryErrorCheck() { 155 | const lines = split(readme); // Inserts each line into the entries array 156 | let totalFail = 0; 157 | let totalPass = 0; 158 | let total = 0; 159 | let entries = []; 160 | let diffEntries = []; 161 | 162 | if (lines[0] === "") { 163 | console.log(chalk.red("0 Entries Found, check your commandline arguments")) 164 | process.exit(0) 165 | } 166 | for (let i = 0; i < lines.length; i ++) { // Loop through array of lines 167 | if (entryFilter(lines[i]) === true) { // filter out lines that don't start with * [) 168 | e = {}; 169 | e.raw = lines[i]; 170 | e.line = i + 1 171 | entries.push(e); 172 | } else if (licenseFilter(lines[i]) === true) { 173 | licenses.add(parseLicense(lines[i])) 174 | } 175 | } 176 | 177 | if (pr === true) { 178 | console.log(chalk.cyan("Only testing the diff from the PR.\n")) 179 | const diffLines = split(diff); // Inserts each line of diff into an array 180 | for (let l of diffLines) { 181 | if (entryFilter(l) === true) { // filter out lines that don't start with * [) 182 | e = {}; 183 | e.raw = l; 184 | diffEntries.push(e); 185 | } else if (licenseFilter(l) === true) { 186 | licenses.add(parseLicense(l)) 187 | } 188 | } 189 | if (diffEntries.length === 0) { 190 | console.log("No entries changed in README.md, Exiting...") 191 | process.exit(0) 192 | } 193 | total = diffEntries.length 194 | for (let e of diffEntries) { 195 | e.pass = true 196 | e.name = parseName(e.raw) 197 | if (!findPattern(e.raw)) { 198 | e.highlight = findError(e.raw); 199 | e.pass = false; 200 | console.log(e.highlight) 201 | } 202 | e.licenseTest = testLicense(e.raw); 203 | if (!e.licenseTest) { 204 | e.pass = false; 205 | console.log(chalk.red(`${e.name}'s license is not on License list.`)) 206 | } 207 | if (e.pass) { 208 | totalPass++ 209 | } else { 210 | totalFail++ 211 | } 212 | } 213 | } else { 214 | console.log(chalk.cyan("Testing entire README.md\n")) 215 | total = entries.length 216 | for (let e of entries) { 217 | e.pass = true 218 | e.name = parseName(e.raw) 219 | if (!findPattern(e.raw)) { 220 | e.highlight = findError(e.raw); 221 | e.pass = false; 222 | console.log(`${chalk.yellow(e.line + ": ")}${e.highlight}`); 223 | syntax = e.highlight; 224 | } 225 | e.licenseTest = testLicense(e.raw); 226 | if (!e.licenseTest[0]) { 227 | e.pass = false; 228 | console.log(chalk.yellow(e.line + ": ") + `${e.name}'s license ${chalk.red(`'${e.licenseTest[1]}'`)} is not on the License list.\n`) 229 | } 230 | if (e.pass) { 231 | totalPass++ 232 | } else { 233 | totalFail++ 234 | } 235 | } 236 | } 237 | if (totalFail > 0) { 238 | console.log(chalk.blue(`\n-----------------------------\n`)) 239 | console.log(chalk.red(`${totalFail} Failed, `) + chalk.green(`${totalPass} Passed, `) + chalk.blue(`of ${total}`)) 240 | console.log(chalk.blue(`\n-----------------------------\n`)) 241 | process.exit(1); 242 | } else { 243 | console.log(chalk.blue(`\n-----------------------------\n`)) 244 | console.log(chalk.green(`${totalPass} Passed of ${total}`)) 245 | console.log(chalk.blue(`\n-----------------------------\n`)) 246 | process.exit(0) 247 | } 248 | } 249 | 250 | parseArgs(process.argv) 251 | entryErrorCheck(); 252 | -------------------------------------------------------------------------------- /non-free.md: -------------------------------------------------------------------------------- 1 | # Awesome Selfhosted - Proprietary Software 2 | 3 | **Software listed here does not allow you to run it for any purpose, study, modify or distribute the source code.** Some of the software here may not be audited due to its closed source nature, and can therefore contain anti-features, such as but not limited to: undisclosed security vulnerabilities, backdoors, user lock-in, sending personal data to a third party. 4 | 5 | ## Analytics 6 | 7 | - [userTrack](https://www.usertrack.net/) `⊘ Proprietary` - userTrack is a web analytics platform with heatmaps, session recordings and powerful user segmentation feature. Updated very regularly. ([Demo](http://dashboard.usertrack.net/)) `PHP/MySQL/ReactJS` 8 | - [UXLens](https://uxlens.com/) `⊘ Proprietary` - UXLens is a website visitor recording software meant for identifying UI issues and fix them to improve user experience. Formerly known as SessionRecord ([Demo](https://console.uxlens.com/test)) `Docker Nodejs` 9 | 10 | 11 | ## Content Management Systems (CMS) 12 | 13 | - [CraftCMS](https://craftcms.com/) `⊘ Proprietary` - Craft is a content-first CMS that aims to make life enjoyable for developers and content managers alike. ([Demo](https://demo.craftcms.com/)) `PHP` 14 | - [Gazelle](https://github.com/WhatCD/Gazelle) - Gazelle is a web framework geared towards private BitTorrent trackers. Although naturally focusing on music, it can be modified for most needs. `unlicensed` `PHP` 15 | - [Kirby](https://getkirby.com/) `⊘ Proprietary` - File-based CMS. Easy to setup. Easy to use. Flexible as hell. ([Source Code](https://github.com/getkirby/kirby)) `PHP` 16 | 17 | 18 | ## Communication Systems 19 | 20 | - [Dialog](https://dlg.im) `⊘ Proprietary` - Handy and feature-rich multi-device solution with native mobile clients, SIP integration, chatbots, 3rd-party integrations. It brings communication efficiency without sacrificing privacy. Works in closed circuit, encrypts push notifications. ([Demo](https://dlg.im/en/download)) `Scala/Go` 21 | - [Groupboard](https://www.groupboard.com) `⊘ Proprietary` - Online whiteboard, audio/video conferencing, screen sharing, shared code editing and optional session recording/playback. 22 | - [HipChat](https://www.atlassian.com/software/hipchat) `⊘ Proprietary` - A team chat solution with 1:1 chat audio and video, third party integration and more. `PHP/Python` 23 | - [PrivMX WebMail](https://privmx.com) - an alternative private mail system - web-based, end-to-end encrypted by design, self-hosted, decentralized, uses independent PKI. Easy to install and administrate, freeware, open-source. `PHP` 24 | 25 | ## Decentralized Network 26 | 27 | - [Synereo](https://www.synereo.com/) - Decentralized network system based on blockchain that allows fast speed and great trust level. ([Source Code](https://github.com/synereo/synereo)) `Scala` 28 | 29 | ## E-books and Integrated Library Systems (ILS) 30 | 31 | - [Ubooquity](https://vaemendis.net/ubooquity/) `⊘ Proprietary` - Ubooquity is a free to use, versatile, lightweight, multi-platform, and secure home server for your comic and e-book library. `Java` 32 | 33 | ## Federated Identity/Authentication 34 | 35 | - [Auth0](https://auth0.com/docs/appliance): `⊘ Proprietary`. Identity made simple for developers. `NodeJS` 36 | - [FusionAuth](https://fusionauth.io) `⊘ Proprietary` - Authentication and Authorization built for devs with OAuth2 and SAMLv2 support. Free as in beer. `Java` 37 | 38 | ## File Sharing and Synchronization 39 | 40 | - [Resilio Sync](https://www.resilio.com/) `⊘ Proprietary` - Resilio Sync by Resilio, Inc is a proprietary peer-to-peer file synchronisation tool. 41 | - [Drive Virtual](http://www.drivevirtual.com/) `⊘ Proprietary` - With Drive Virtual you can sync, backup and share your files privately with your own FTP (SFTP) server or account. 42 | - [Dropcenter](http://projet.idleman.fr/dropcenter/) - Upload files by simple drag-n-drop. ([Source Code](https://github.com/ldleman/dropcenter)) `CCBYNCSAv3` `PHP` 43 | - [FileRun](http://www.filerun.com/) `⊘ Proprietary` - A complete solution for your files with integration with Google and Office. ([Demo](http://www.filerun.com/demo)) `PHP` 44 | 45 | 46 | ## Games 47 | 48 | - [Cubiks-2048](https://github.com/Kshitij-Banerjee/Cubiks-2048) - Clone of 2048 game in 3D. ([Demo](https://kshitij-banerjee.github.io/Cubiks-2048/)) `CCBYNCv4` `HTML5` 49 | - [untrusted](https://github.com/AlexNisnevich/untrusted) - Untrusted is a unique puzzle game designed for geeks and developers, where you solve the puzzles in the game by reading and writing Javascript. ([Demo](http://alex.nisnevich.com/untrusted/)) `CCBYNCSAv3/Custom` `Nodejs` 50 | 51 | ## IPBX 52 | 53 | - [Elastix](http://www.elastix.org) `⊘ Proprietary` - Unified communications server software based on 3CX. 54 | 55 | 56 | ## Maps & GPS 57 | 58 | - [OpenMapTiles Server](https://openmaptiles.org/) `⊘ Proprietary` - Set of tools for self-hosting of OpenStreetMap vector tiles. ([Partial Source Code](https://github.com/openmaptiles)) `Python/JavaScript` 59 | 60 | ## Media Streaming 61 | 62 | - [Channels DVR Server](https://getchannels.com/dvr-server/) `⊘ Proprietary` - Flexible server providing a whole home self hosted DVR experience for [Channels](https://getchannels.com). 63 | - [Emby](https://emby.media/) `⊘ Proprietary` - Home media server supporting both DLNA and DIAL (Chromecast) devices out-of-the-box. ([Partial source Code](https://github.com/MediaBrowser/Emby)) `Proprietary with some GPL-2.0` `C#` 64 | - [Plex](https://plex.tv/) `⊘ Proprietary` - Plex is a centralized home media playback system with a powerful central server. 65 | - [Subsonic](http://subsonic.org/) - Web-based media streamer and jukebox. ([Demo](http://demo.subsonic.org/login.view?user=guest4&password=guest)) 66 | 67 | 68 | ## Money, Budgeting and Management 69 | 70 | - [Anchor](http://theanchorapp.com/) - Anchor is an invoicing system that integrates with Stripe and Paypal. Includes features such as: reporting, dashboard and no client limit. ([Demo](http://theanchorapp.com/demo/admin-login)) `PHP` 71 | - [Manager](http://manager.io/server) `⊘ Proprietary` - Online accounting software for small businesses. `Mono` 72 | - [Pancake](http://pancakeapp.com/) `⊘ Proprietary` - Online invoicing, project management, time tracking and proposal software. `PHP` 73 | 74 | 75 | ## Photo and Video Galleries 76 | 77 | - [ArtVenue](http://codecanyon.net/item/artvenue-image-sharing-community-script/5771542) `⊘ Proprietary` - Start your own photography community website, platform based on the Laravel PHP Framework. ([Demo](http://codecanyon.net/item/artvenue-image-sharing-community-script/full_screen_preview/5771542)) `PHP` 78 | - [Chevereto](https://chevereto.com/) `⊘ Proprietary` - A powerful and fast image hosting script that allows you to create your very own full featured image hosting website in just minutes. ([Demo](http://demo.chevereto.com/)) `PHP` 79 | - [Koken](http://koken.me/) `⊘ Proprietary` - Content management and web site publishing for photographers. `PHP` 80 | - [PhotoStructure](https://photostructure.com/) `⊘ Proprietary` - All your family's photos and videos automatically organized into a fun and beautiful website. Runs via Docker, NodeJS, or native desktop installers. `NodeJS` 81 | - [Single File PHP Gallery](http://sye.dk/sfpg/) `⊘ Proprietary` - is a web gallery in one single PHP file. `PHP` 82 | 83 | 84 | ## Project Management 85 | - [Active Collab](https://www.activecollab.com/) `⊘ Proprietary` - Project management - `PHP` 86 | - [Duet](https://duetapp.com/) `⊘ Proprietary` - Invoicing and project management with an integrated client portal. ([Demo](https://duetapp.com/start-demo)) `PHP` 87 | - [Kantree](https://kantree.io) `⊘ Proprietary` - Work management and collaboration - `Python` 88 | - [Solo](http://www.getsoloapp.com/) - Solo is a free project management app created for freelancers. Create contacts, manage tasks, upload files, track project progress, and keep notes. ([Demo](http://www.getsoloapp.com/demo/)) `PHP` 89 | 90 | 91 | ## Self-hosting Solutions 92 | - [Axigen](https://www.axigen.com/mail-server/free/) `⊘ Proprietary` - Great alternative to open source. It's a turnkey messaging solution, perfect for small & micro businesses, integration projects or test environments. 93 | - [Cloudron](https://cloudron.io) `⊘ Proprietary` - Open-core software allowing you to effortlessly self-host web apps on your server. ([Source Code](https://git.cloudron.io/groups/cloudron)) `Nodejs/Docker` 94 | - [hMailServer](https://www.hmailserver.com) `⊘ Proprietary` - Open source e-mail server for Microsoft Windows. ([Source Code](https://github.com/hmailserver/hmailserver)) `C++` 95 | - [Poste.io](https://poste.io) `⊘ Proprietary` - Full featured solution for your Email server. Native implementation of last anti-SPAM methods, webmail and easy administration included. Free tier available. ([Demo](https://poste.io/demo)) 96 | 97 | 98 | ## Software Development 99 | 100 | - [92five](http://92fiveapp.com/) `⊘ Proprietary` - Self hosted project management application ([Source code](https://github.com/chintanbanugaria/92five)) `CC BY-NC 4.0` `PHP` 101 | - [Bamboo](https://www.atlassian.com/software/bamboo) `⊘ Proprietary` - A continuous integration server `Java` 102 | - [Buddy Enterprise](https://buddy.works/) - The Git and Continuous Integration / Delivery Platform. `⊘ Proprietary` `Nodejs/Java` 103 | - [Cloud9](https://c9.io/) `⊘ Proprietary` - Your development environment, in the cloud ([Source code](https://github.com/c9/core)) `Nodejs` 104 | - [Confluence](https://www.atlassian.com/software/confluence) `⊘ Proprietary` - A team collaboration software `Java` 105 | - [Crucible](https://www.atlassian.com/software/crucible/overview) `⊘ Proprietary` - A peer code review application `Java` 106 | - [Documize](https://documize.com) `⊘ Proprietary` - Modern docs & wiki software built for software team collaboration. `Go` 107 | - [JIRA](https://www.atlassian.com/software/jira) `⊘ Proprietary` - A professional and extensible issue tracker `Java` 108 | - [RhodeCode](https://rhodecode.com) `⊘ Proprietary` - On-premise Source Code Management for Mercurial, Git & Subversion. `Python` 109 | - [BitBucket Server](https://www.atlassian.com/software/bitbucket/server) `⊘ Proprietary` - An enterprise-level Git solution similar to GitLab `Java` 110 | - [Gitpod](https://www.gitpod.io/self-hosted) `⊘ Proprietary` - Ready-to-code dev environments, self-hosted on your infrastructure. [Source Code](https://github.com/gitpod-io/self-hosted) `Go` 111 | 112 | ## Ticketing 113 | - [Full Help](https://www.fullhelp.com/en/) `⊘ Proprietary` - Simple, easy to use help desk & knowledge base software. Custom branding, custom themes, restful API, communication channels, multi-company support, multi-language support, and much more! At least 1 new release per month. [Changelog](https://www.fullhelp.com/en/changelog) `PHP` 114 | - [Jitbit Helpdesk](https://www.jitbit.com/helpdesk/) `⊘ Proprietary` - Self-hosted help desk software - simple but powerful. ([Demo](https://www.jitbit.com/hosted-helpdesk/trial/)) `ASP.NET` 115 | - [SupportPal](https://www.supportpal.com/) `⊘ Proprietary` - Powerful help desk software - easy, fast and intuitive. ([Demo](http://demo.supportpal.com/)) `PHP` 116 | 117 | 118 | ## Time Tracking 119 | - [Virtual TimeClock](https://www.redcort.com/timeclock) `⊘ Proprietary` - Powerful, easy-to-use time tracking software. ([Demo](https://www.redcort.com/timeclock/free-timeclock-software-trial)) 120 | 121 | 122 | ## Remote Support 123 | 124 | * [ScreenConnect](https://www.screenconnect.com/) `⊘ Proprietary` - ScreenConnect offers lightning-fast remote support and remote access to connect instantly and solve problems faster. 125 | * [RemoteUtilities](https://www.remoteutilities.com/) `⊘ Proprietary` - Remote Utilities is self-hosted remote support software for LAN administration and remote support over the Internet. 126 | 127 | ### UX testing 128 | 129 | - [Moon](https://aerokube.com/moon/) `⊘ Proprietary` - An efficient Selenium protocol implementation running everything in Kubernetes or Openshift. `Go` 130 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | License: CC-BY-SA-3.0 2 | Creative Commons Attribution-ShareAlike 3.0 Unported 3 | . 4 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 5 | LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN 6 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION 7 | ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE 8 | INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 9 | ITS USE. 10 | . 11 | License 12 | . 13 | THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE 14 | COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY 15 | COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS 16 | AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. 17 | . 18 | BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE 19 | TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY 20 | BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS 21 | CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND 22 | CONDITIONS. 23 | . 24 | 1. Definitions 25 | . 26 | a. "Adaptation" means a work based upon the Work, or upon the Work and 27 | other pre-existing works, such as a translation, adaptation, derivative 28 | work, arrangement of music or other alterations of a literary or 29 | artistic work, or phonogram or performance and includes cinematographic 30 | adaptations or any other form in which the Work may be recast, 31 | transformed, or adapted including in any form recognizably derived from 32 | the original, except that a work that constitutes a Collection will not 33 | be considered an Adaptation for the purpose of this License. For the 34 | avoidance of doubt, where the Work is a musical work, performance or 35 | phonogram, the synchronization of the Work in timed-relation with a 36 | moving image ("synching") will be considered an Adaptation for the 37 | purpose of this License. 38 | . 39 | b. "Collection" means a collection of literary or artistic works, such 40 | as encyclopedias and anthologies, or performances, phonograms or 41 | broadcasts, or other works or subject matter other than works listed in 42 | Section 1(f) below, which, by reason of the selection and arrangement of 43 | their contents, constitute intellectual creations, in which the Work is 44 | included in its entirety in unmodified form along with one or more other 45 | contributions, each constituting separate and independent works in 46 | themselves, which together are assembled into a collective whole. A work 47 | that constitutes a Collection will not be considered an Adaptation (as 48 | defined below) for the purposes of this License. 49 | . 50 | c. "Creative Commons Compatible License" means a license that is listed 51 | at http://creativecommons.org/compatiblelicenses that has been approved 52 | by Creative Commons as being essentially equivalent to this License, 53 | including, at a minimum, because that license: (i) contains terms that 54 | have the same purpose, meaning and effect as the License Elements of 55 | this License; and, (ii) explicitly permits the relicensing of 56 | adaptations of works made available under that license under this 57 | License or a Creative Commons jurisdiction license with the same License 58 | Elements as this License. 59 | . 60 | d. "Distribute" means to make available to the public the original and 61 | copies of the Work or Adaptation, as appropriate, through sale or other 62 | transfer of ownership. 63 | . 64 | e. "License Elements" means the following high-level license attributes 65 | as selected by Licensor and indicated in the title of this License: 66 | Attribution, ShareAlike. 67 | . 68 | f. "Licensor" means the individual, individuals, entity or entities that 69 | offer(s) the Work under the terms of this License. 70 | . 71 | g. "Original Author" means, in the case of a literary or artistic work, 72 | the individual, individuals, entity or entities who created the Work or 73 | if no individual or entity can be identified, the publisher; and in 74 | addition (i) in the case of a performance the actors, singers, 75 | musicians, dancers, and other persons who act, sing, deliver, declaim, 76 | play in, interpret or otherwise perform literary or artistic works or 77 | expressions of folklore; (ii) in the case of a phonogram the producer 78 | being the person or legal entity who first fixes the sounds of a 79 | performance or other sounds; and, (iii) in the case of broadcasts, the 80 | organization that transmits the broadcast. 81 | . 82 | h. "Work" means the literary and/or artistic work offered under the 83 | terms of this License including without limitation any production in the 84 | literary, scientific and artistic domain, whatever may be the mode or 85 | form of its expression including digital form, such as a book, pamphlet 86 | and other writing; a lecture, address, sermon or other work of the same 87 | nature; a dramatic or dramatico-musical work; a choreographic work or 88 | entertainment in dumb show; a musical composition with or without words; 89 | a cinematographic work to which are assimilated works expressed by a 90 | process analogous to cinematography; a work of drawing, painting, 91 | architecture, sculpture, engraving or lithography; a photographic work 92 | to which are assimilated works expressed by a process analogous to 93 | photography; a work of applied art; an illustration, map, plan, sketch 94 | or three-dimensional work relative to geography, topography, 95 | architecture or science; a performance; a broadcast; a phonogram; a 96 | compilation of data to the extent it is protected as a copyrightable 97 | work; or a work performed by a variety or circus performer to the extent 98 | it is not otherwise considered a literary or artistic work. 99 | . 100 | i. "You" means an individual or entity exercising rights under this 101 | License who has not previously violated the terms of this License with 102 | respect to the Work, or who has received express permission from the 103 | Licensor to exercise rights under this License despite a previous 104 | violation. 105 | . 106 | j. "Publicly Perform" means to perform public recitations of the Work 107 | and to communicate to the public those public recitations, by any means 108 | or process, including by wire or wireless means or public digital 109 | performances; to make available to the public Works in such a way that 110 | members of the public may access these Works from a place and at a place 111 | individually chosen by them; to perform the Work to the public by any 112 | means or process and the communication to the public of the performances 113 | of the Work, including by public digital performance; to broadcast and 114 | rebroadcast the Work by any means including signs, sounds or images. 115 | . 116 | k. "Reproduce" means to make copies of the Work by any means including 117 | without limitation by sound or visual recordings and the right of 118 | fixation and reproducing fixations of the Work, including storage of a 119 | protected performance or phonogram in digital form or other electronic 120 | medium. 121 | . 122 | 2. Fair Dealing Rights. Nothing in this License is intended to reduce, 123 | limit, or restrict any uses free from copyright or rights arising from 124 | limitations or exceptions that are provided for in connection with the 125 | copyright protection under copyright law or other applicable laws. 126 | . 127 | 3. License Grant. Subject to the terms and conditions of this License, 128 | Licensor hereby grants You a worldwide, royalty-free, non-exclusive, 129 | perpetual (for the duration of the applicable copyright) license to 130 | exercise the rights in the Work as stated below: 131 | . 132 | a. to Reproduce the Work, to incorporate the Work into one or more 133 | Collections, and to Reproduce the Work as incorporated in the 134 | Collections; 135 | . 136 | b. to create and Reproduce Adaptations provided that any such 137 | Adaptation, including any translation in any medium, takes reasonable 138 | steps to clearly label, demarcate or otherwise identify that changes 139 | were made to the original Work. For example, a translation could be 140 | marked "The original work was translated from English to Spanish," or a 141 | modification could indicate "The original work has been modified."; 142 | . 143 | c. to Distribute and Publicly Perform the Work including as incorporated 144 | in Collections; and, 145 | . 146 | d. to Distribute and Publicly Perform Adaptations. 147 | . 148 | e. For the avoidance of doubt: 149 | . 150 | i. Non-waivable Compulsory License Schemes. In those jurisdictions in 151 | which the right to collect royalties through any statutory or compulsory 152 | licensing scheme cannot be waived, the Licensor reserves the exclusive 153 | right to collect such royalties for any exercise by You of the rights 154 | granted under this License; 155 | . 156 | ii. Waivable Compulsory License Schemes. In those jurisdictions in which 157 | the right to collect royalties through any statutory or compulsory 158 | licensing scheme can be waived, the Licensor waives the exclusive right 159 | to collect such royalties for any exercise by You of the rights granted 160 | under this License; and, 161 | . 162 | iii. Voluntary License Schemes. The Licensor waives the right to collect 163 | royalties, whether individually or, in the event that the Licensor is a 164 | member of a collecting society that administers voluntary licensing 165 | schemes, via that society, from any exercise by You of the rights 166 | granted under this License. 167 | . 168 | The above rights may be exercised in all media and formats whether now 169 | known or hereafter devised. The above rights include the right to make 170 | such modifications as are technically necessary to exercise the rights 171 | in other media and formats. Subject to Section 8(f), all rights not 172 | expressly granted by Licensor are hereby reserved. 173 | . 174 | 4. Restrictions. The license granted in Section 3 above is expressly 175 | made subject to and limited by the following restrictions: 176 | . 177 | a. You may Distribute or Publicly Perform the Work only under the terms 178 | of this License. You must include a copy of, or the Uniform Resource 179 | Identifier (URI) for, this License with every copy of the Work You 180 | Distribute or Publicly Perform. You may not offer or impose any terms on 181 | the Work that restrict the terms of this License or the ability of the 182 | recipient of the Work to exercise the rights granted to that recipient 183 | under the terms of the License. You may not sublicense the Work. You 184 | must keep intact all notices that refer to this License and to the 185 | disclaimer of warranties with every copy of the Work You Distribute or 186 | Publicly Perform. When You Distribute or Publicly Perform the Work, You 187 | may not impose any effective technological measures on the Work that 188 | restrict the ability of a recipient of the Work from You to exercise the 189 | rights granted to that recipient under the terms of the License. This 190 | Section 4(a) applies to the Work as incorporated in a Collection, but 191 | this does not require the Collection apart from the Work itself to be 192 | made subject to the terms of this License. If You create a Collection, 193 | upon notice from any Licensor You must, to the extent practicable, 194 | remove from the Collection any credit as required by Section 4(c), as 195 | requested. If You create an Adaptation, upon notice from any Licensor 196 | You must, to the extent practicable, remove from the Adaptation any 197 | credit as required by Section 4(c), as requested. 198 | . 199 | b. You may Distribute or Publicly Perform an Adaptation only under the 200 | terms of: (i) this License; (ii) a later version of this License with 201 | the same License Elements as this License; (iii) a Creative Commons 202 | jurisdiction license (either this or a later license version) that 203 | contains the same License Elements as this License (e.g., 204 | Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible 205 | License. If you license the Adaptation under one of the licenses 206 | mentioned in (iv), you must comply with the terms of that license. If 207 | you license the Adaptation under the terms of any of the licenses 208 | mentioned in (i), (ii) or (iii) (the "Applicable License"), you must 209 | comply with the terms of the Applicable License generally and the 210 | following provisions: (I) You must include a copy of, or the URI for, 211 | the Applicable License with every copy of each Adaptation You Distribute 212 | or Publicly Perform; (II) You may not offer or impose any terms on the 213 | Adaptation that restrict the terms of the Applicable License or the 214 | ability of the recipient of the Adaptation to exercise the rights 215 | granted to that recipient under the terms of the Applicable License; 216 | (III) You must keep intact all notices that refer to the Applicable 217 | License and to the disclaimer of warranties with every copy of the Work 218 | as included in the Adaptation You Distribute or Publicly Perform; (IV) 219 | when You Distribute or Publicly Perform the Adaptation, You may not 220 | impose any effective technological measures on the Adaptation that 221 | restrict the ability of a recipient of the Adaptation from You to 222 | exercise the rights granted to that recipient under the terms of the 223 | Applicable License. This Section 4(b) applies to the Adaptation as 224 | incorporated in a Collection, but this does not require the Collection 225 | apart from the Adaptation itself to be made subject to the terms of the 226 | Applicable License. 227 | . 228 | c. If You Distribute, or Publicly Perform the Work or any Adaptations or 229 | Collections, You must, unless a request has been made pursuant to 230 | Section 4(a), keep intact all copyright notices for the Work and 231 | provide, reasonable to the medium or means You are utilizing: (i) the 232 | name of the Original Author (or pseudonym, if applicable) if supplied, 233 | and/or if the Original Author and/or Licensor designate another party or 234 | parties (e.g., a sponsor institute, publishing entity, journal) for 235 | attribution ("Attribution Parties") in Licensor's copyright notice, 236 | terms of service or by other reasonable means, the name of such party or 237 | parties; (ii) the title of the Work if supplied; (iii) to the extent 238 | reasonably practicable, the URI, if any, that Licensor specifies to be 239 | associated with the Work, unless such URI does not refer to the 240 | copyright notice or licensing information for the Work; and (iv) , 241 | consistent with Ssection 3(b), in the case of an Adaptation, a credit 242 | identifying the use of the Work in the Adaptation (e.g., "French 243 | translation of the Work by Original Author," or "Screenplay based on 244 | original Work by Original Author"). The credit required by this Section 245 | 4(c) may be implemented in any reasonable manner; provided, however, 246 | that in the case of a Adaptation or Collection, at a minimum such credit 247 | will appear, if a credit for all contributing authors of the Adaptation 248 | or Collection appears, then as part of these credits and in a manner at 249 | least as prominent as the credits for the other contributing authors. 250 | For the avoidance of doubt, You may only use the credit required by this 251 | Section for the purpose of attribution in the manner set out above and, 252 | by exercising Your rights under this License, You may not implicitly or 253 | explicitly assert or imply any connection with, sponsorship or 254 | endorsement by the Original Author, Licensor and/or Attribution Parties, 255 | as appropriate, of You or Your use of the Work, without the separate, 256 | express prior written permission of the Original Author, Licensor and/or 257 | Attribution Parties. 258 | . 259 | d. Except as otherwise agreed in writing by the Licensor or as may be 260 | otherwise permitted by applicable law, if You Reproduce, Distribute or 261 | Publicly Perform the Work either by itself or as part of any Adaptations 262 | or Collections, You must not distort, mutilate, modify or take other 263 | derogatory action in relation to the Work which would be prejudicial to 264 | the Original Author's honor or reputation. Licensor agrees that in those 265 | jurisdictions (e.g. Japan), in which any exercise of the right granted 266 | in Section 3(b) of this License (the right to make Adaptations) would be 267 | deemed to be a distortion, mutilation, modification or other derogatory 268 | action prejudicial to the Original Author's honor and reputation, the 269 | Licensor will waive or not assert, as appropriate, this Section, to the 270 | fullest extent permitted by the applicable national law, to enable You 271 | to reasonably exercise Your right under Section 3(b) of this License 272 | (right to make Adaptations) but not otherwise. 273 | . 274 | 5. Representations, Warranties and Disclaimer 275 | . 276 | UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR 277 | OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY 278 | KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, 279 | INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, 280 | FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF 281 | LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, 282 | WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE 283 | EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. 284 | . 285 | 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE 286 | LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR 287 | ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES 288 | ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS 289 | BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 290 | . 291 | 7. Termination 292 | . 293 | a. This License and the rights granted hereunder will terminate 294 | automatically upon any breach by You of the terms of this License. 295 | Individuals or entities who have received Adaptations or Collections 296 | from You under this License, however, will not have their licenses 297 | terminated provided such individuals or entities remain in full 298 | compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will 299 | survive any termination of this License. 300 | . 301 | b. Subject to the above terms and conditions, the license granted here 302 | is perpetual (for the duration of the applicable copyright in the Work). 303 | Notwithstanding the above, Licensor reserves the right to release the 304 | Work under different license terms or to stop distributing the Work at 305 | any time; provided, however that any such election will not serve to 306 | withdraw this License (or any other license that has been, or is 307 | required to be, granted under the terms of this License), and this 308 | License will continue in full force and effect unless terminated as 309 | stated above. 310 | . 311 | 8. Miscellaneous 312 | . 313 | a. Each time You Distribute or Publicly Perform the Work or a 314 | Collection, the Licensor offers to the recipient a license to the Work 315 | on the same terms and conditions as the license granted to You under 316 | this License. 317 | . 318 | b. Each time You Distribute or Publicly Perform an Adaptation, Licensor 319 | offers to the recipient a license to the original Work on the same terms 320 | and conditions as the license granted to You under this License. 321 | . 322 | c. If any provision of this License is invalid or unenforceable under 323 | applicable law, it shall not affect the validity or enforceability of 324 | the remainder of the terms of this License, and without further action 325 | by the parties to this agreement, such provision shall be reformed to 326 | the minimum extent necessary to make such provision valid and 327 | enforceable. 328 | . 329 | d. No term or provision of this License shall be deemed waived and no 330 | breach consented to unless such waiver or consent shall be in writing 331 | and signed by the party to be charged with such waiver or consent. 332 | . 333 | e. This License constitutes the entire agreement between the parties 334 | with respect to the Work licensed here. There are no understandings, 335 | agreements or representations with respect to the Work not specified 336 | here. Licensor shall not be bound by any additional provisions that may 337 | appear in any communication from You. This License may not be modified 338 | without the mutual written agreement of the Licensor and You. 339 | . 340 | f. The rights granted under, and the subject matter referenced, in this 341 | License were drafted utilizing the terminology of the Berne Convention 342 | for the Protection of Literary and Artistic Works (as amended on 343 | September 28, 1979), the Rome Convention of 1961, the WIPO Copyright 344 | Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and 345 | the Universal Copyright Convention (as revised on July 24, 1971). These 346 | rights and subject matter take effect in the relevant jurisdiction in 347 | which the License terms are sought to be enforced according to the 348 | corresponding provisions of the implementation of those treaty 349 | provisions in the applicable national law. If the standard suite of 350 | rights granted under applicable copyright law includes additional rights 351 | not granted under this License, such additional rights are deemed to be 352 | included in the License; this License is not intended to restrict the 353 | license of any rights under applicable law. 354 | . 355 | Creative Commons Notice 356 | . 357 | Creative Commons is not a party to this License, and makes no warranty 358 | whatsoever in connection with the Work. Creative Commons will not be 359 | liable to You or any party on any legal theory for any damages 360 | whatsoever, including without limitation any general, special, 361 | incidental or consequential damages arising in connection to this 362 | license. Notwithstanding the foregoing two (2) sentences, if Creative 363 | Commons has expressly identified itself as the Licensor hereunder, it 364 | shall have all rights and obligations of Licensor. 365 | . 366 | Except for the limited purpose of indicating to the public that the Work 367 | is licensed under the CCPL, Creative Commons does not authorize the use 368 | by either party of the trademark "Creative Commons" or any related 369 | trademark or logo of Creative Commons without the prior written consent 370 | of Creative Commons. Any permitted use will be in compliance with 371 | Creative Commons' then-current trademark usage guidelines, as may be 372 | published on its website or otherwise made available upon request from 373 | time to time. For the avoidance of doubt, this trademark restriction 374 | does not form part of the License. 375 | . 376 | Creative Commons may be contacted at http://creativecommons.org/. 377 | -------------------------------------------------------------------------------- /AUTHORS.md: -------------------------------------------------------------------------------- 1 | |Commits | Author | 2 | | :---: | --- | 3 | |1032|nodiscc | 4 | |319|Kickball | 5 | |253|n8225 | 6 | |122|Andrew Rylatt | 7 | |77|Meitar M | 8 | |35|Kovah | 9 | |31|DJCrashdummy | 10 | |26|worldworm <13227454+worldworm@users.noreply.github.com>| 11 | |23|cave beat | 12 | |17|Thomas Dalichow | 13 | |14|Miguel Piedrafita | 14 | |13|jungle-boogie | 15 | |12|Alex | 16 | |12|Ferdinand Mütsch | 17 | |12|Pe46dro | 18 | |11|Pietro Marangon | 19 | |9|Andrew Peng | 20 | |9|Joubert RedRat | 21 | |9|Lance M | 22 | |9|cave | 23 | |8|CooperBarrett | 24 | |8|Nick Busey | 25 | |7|Hammy Havoc | 26 | |7|Ilian | 27 | |7|aubrel | 28 | |7|n1trux | 29 | |7|phre4k | 30 | |7|édouard u. | 31 | |6|Jorge E. Gomez | 32 | |6|Per Guth | 33 | |6|Quinn Comendant | 34 | |6|Touhid Arastu | 35 | |5|Chris McCormick | 36 | |5|James Cole | 37 | |5|Jean Champémont | 38 | |5|Johannes Zellner | 39 | |5|Karl Coelho | 40 | |5|Kevin Lin | 41 | |5|Max Maischein | 42 | |5|Mohammad Faisal | 43 | |5|Moti Korets | 44 | |5|Muhammad Hussein Fattahizadeh | 45 | |5|Philip Kirkbride | 46 | |5|Surgie Finesse | 47 | |5|azlux | 48 | |5|mestaritonttu | 49 | |4|/c² | 50 | |4|Alejandro Celaya | 51 | |4|AlessioCasco | 52 | |4|Alexander Litreev | 53 | |4|Alexandr Emelin | 54 | |4|AndrewCz | 55 | |4|Andrey Semakin | 56 | |4|Aravindo Wingeier | 57 | |4|Arda Kılıçdağı | 58 | |4|Bob van Luijt | 59 | |4|Christian Bayer | 60 | |4|Cody Heimberger | 61 | |4|Colin Pokowitz | 62 | |4|Colin Pokowitz | 63 | |4|Cory Gibbons | 64 | |4|D | 65 | |4|Dave Lockwood <1261876+deamos@users.noreply.github.com>| 66 | |4|Dominik Pfaffenbauer | 67 | |4|Dr. Azrael Tod | 68 | |4|Eliot Whalan | 69 | |4|Ilya Sevostyanov | 70 | |4|Jan Vlnas | 71 | |4|Jan-Lukas Else | 72 | |4|Jason Robinson | 73 | |4|Jean Elchinger | 74 | |4|Joery Zegers | 75 | |4|Jorge E. Gomez | 76 | |4|Joshua Westerheide | 77 | |4|Koichi MATSUMOTO | 78 | |4|MK | 79 | |4|Mancy | 80 | |4|Marius Voila | 81 | |4|Meitar M | 82 | |4|Rodolfo Berrios | 83 | |4|Sebastian Stehle | 84 | |4|Tony | 85 | |4|Valmik | 86 | |4|apacketofsweets <19573127+apacketofsweets@users.noreply.github.com>| 87 | |4|bysslord | 88 | |4|cthu1hoo <47687909+cthu1hoo@users.noreply.github.com>| 89 | |4|dattaz | 90 | |4|dpfaffenbauer | 91 | |4|dyu | 92 | |4|hebbet | 93 | |4|paddo | 94 | |3|Aguay | 95 | |3|Akhyar Amarullah | 96 | |3|Alexey Velikiy | 97 | |3|BernsteinA <4685390+BernsteinA@users.noreply.github.com>| 98 | |3|Brandon Jones | 99 | |3|Burak Emre Kabakcı | 100 | |3|Conor O'Callaghan | 101 | |3|Cédric Krier | 102 | |3|Daniel Mason | 103 | |3|Danja Vasiliev | 104 | |3|Erik | 105 | |3|Ethan Lowman | 106 | |3|FoxMaSk | 107 | |3|Francisco Gálvez | 108 | |3|François-Xavier Lyonnet du Moutier | 109 | |3|Gabin | 110 | |3|Garrett Martin | 111 | |3|George C. Privon | 112 | |3|Görkem Çetin | 113 | |3|Harvey Kandola | 114 | |3|Ilya Pirozhenko | 115 | |3|IrosTheBeggar | 116 | |3|James Cole | 117 | |3|Jiří Komárek | 118 | |3|Kevin Hinterlong | 119 | |3|Lee Watson | 120 | |3|Leo Gaggl | 121 | |3|Marc Picaud | 122 | |3|MarceauKa | 123 | |3|Mariusz Kozakowski <11mariom+wordpress@gmail.com>| 124 | |3|Martin Gontovnikas | 125 | |3|Mathieu Leplatre | 126 | |3|Matt Baer | 127 | |3|Mitchell Urgero | 128 | |3|Morris Jobke | 129 | |3|Nick Fox | 130 | |3|No GUI | 131 | |3|Ovidiu Dan | 132 | |3|Pavan Yara | 133 | |3|Peter Thaleikis | 134 | |3|Pierre Blanes | 135 | |3|Pierre Tinard | 136 | |3|Prashant Singh | 137 | |3|PrplHaz4 | 138 | |3|Roland Whitehead <4478022+qururoland@users.noreply.github.com>| 139 | |3|Ryan DeShone | 140 | |3|Sergio Brighenti | 141 | |3|Sung Won Cho | 142 | |3|Tobi Schäfer | 143 | |3|Yann Forget | 144 | |3|Ye Lin Aung | 145 | |3|Yuchen Ying | 146 | |3|ddffnn | 147 | |3|icterine | 148 | |3|jungle-boogie | 149 | |3|moba | 150 | |3|oknozor | 151 | |3|pszlazak | 152 | |3|rett gerst | 153 | |3|sapioit | 154 | |3|slauzon | 155 | |3|xBytez | 156 | |2|0xflotus <0xflotus@gmail.com>| 157 | |2|132ikl <132@ikl.sh>| 158 | |2|A. Cynic | 159 | |2|Aditya Nagla | 160 | |2|Adminrezo (Nico Dewaele) | 161 | |2|Albert Cervera i Areny | 162 | |2|Alex Bogdanovski | 163 | |2|Alexander Ryzhov | 164 | |2|Alexis Metaireau | 165 | |2|Amos | 166 | |2|Andrei Poenaru | 167 | |2|Andrew Hayworth | 168 | |2|Andrew Rabert | 169 | |2|Arik Fraimovich | 170 | |2|Ave | 171 | |2|Bartłomiej Kurzeja | 172 | |2|Ben Yanke | 173 | |2|Benjamin Gamard | 174 | |2|Braintelligence | 175 | |2|Brendan Abolivier | 176 | |2|Brian Morin | 177 | |2|Carlo F. Quaglia | 178 | |2|Charles Farence III | 179 | |2|Chris Missal | 180 | |2|Christopher Charbonneau Wells | 181 | |2|Cleberson Ramirio | 182 | |2|Costin Moise | 183 | |2|Daniel Heath | 184 | |2|Daniel Ramirez Grave de Peralta | 185 | |2|David Leonard | 186 | |2|David Wayne Baxter | 187 | |2|Derek Viera | 188 | |2|Deryck | 189 | |2|Dhruv Sharma | 190 | |2|Dillon Stadther | 191 | |2|Dominic Pratt | 192 | |2|Dr. Ridgewell | 193 | |2|Eliot Berriot | 194 | |2|Fabian Schliski | 195 | |2|Feleg | 196 | |2|Felix Bartels | 197 | |2|Gabin Aureche | 198 | |2|Gabriel Cossette | 199 | |2|Gerardo Baez | 200 | |2|Gleb Mazovetskiy | 201 | |2|Gonçalo Valério | 202 | |2|Greg Slepak | 203 | |2|Greg V | 204 | |2|Haukur Rosinkranz | 205 | |2|Henry Ruhs | 206 | |2|Hilmi Tolga Sahin | 207 | |2|Ivan Krutov | 208 | |2|Jake Breindel | 209 | |2|Jake Jarvis | 210 | |2|Jan | 211 | |2|Jan Soendermann | 212 | |2|Jared Shields | 213 | |2|Jipok | 214 | |2|Jonas L | 215 | |2|Jordon Replogle | 216 | |2|Joseph Dykstra | 217 | |2|Julien Bisconti | 218 | |2|Jérémie Astori | 219 | |2|Keith Thibodeaux | 220 | |2|Kevin Vandenborne | 221 | |2|Klaus-Uwe Mitterer | 222 | |2|Kukielka | 223 | |2|Lanre Adelowo | 224 | |2|Liam Demafelix | 225 | |2|Madhu GB | 226 | |2|Malte Kiefer | 227 | |2|Manuel Uberti | 228 | |2|Marc Laporte | 229 | |2|Marcel Brückner | 230 | |2|Marien Fressinaud | 231 | |2|Marius Lindvall | 232 | |2|Markus M. Deuerlein | 233 | |2|MarkusMcNugen | 234 | |2|Martijn | 235 | |2|Massimo Santini | 236 | |2|Mats Estensen | 237 | |2|Matt Hazinski | 238 | |2|Matthieu Aubry | 239 | |2|Melvin Loos | 240 | |2|Michael Tunnell | 241 | |2|Mikael Peigney | 242 | |2|Murali Govardhana | 243 | |2|Nehal Hasnayeen | 244 | |2|Nicolas Carlier | 245 | |2|Oliver Giles | 246 | |2|Patrik Ragnarsson | 247 | |2|Pavel Korotkiy | 248 | |2|Pavel Lobashov | 249 | |2|Pernat1y | 250 | |2|Peter Demin | 251 | |2|Peter Ivanov | 252 | |2|Phil | 253 | |2|Phonic Mouse | 254 | |2|Pierre Buyle | 255 | |2|Pierre Ozoux | 256 | |2|Poorchop | 257 | |2|Prabhanjan | 258 | |2|Raymond Berger | 259 | |2|ReadmeCritic | 260 | |2|Ricardo Torres | 261 | |2|Rid | 262 | |2|Rodolfo Berrios | 263 | |2|Roland Geider | 264 | |2|Ryan Mulligan | 265 | |2|Sam Tuke | 266 | |2|Sameer Al-Sakran | 267 | |2|Sandeep S | 268 | |2|Sandro | 269 | |2|Scot Hacker | 270 | |2|Shane Cooke | 271 | |2|Simon Vieille | 272 | |2|Simone Grignola | 273 | |2|Sjoerd van der Hoorn | 274 | |2|Spark <24642451+Sparkenstein@users.noreply.github.com>| 275 | |2|Stefan Bohacek | 276 | |2|Stefane Fermigier | 277 | |2|Stefano | 278 | |2|Suraj Patil | 279 | |2|Think | 280 | |2|Thomas Citharel | 281 | |2|Tomer | 282 | |2|Tomer Cohen | 283 | |2|Tony Xu | 284 | |2|Vadim Rutkovsky | 285 | |2|Valentino Pesce | 286 | |2|Van-Duyet Le | 287 | |2|Vladimir Avgustov | 288 | |2|Will Bennett | 289 | |2|William Notowidagdo | 290 | |2|Yann | 291 | |2|Zeniic | 292 | |2|agetic | 293 | |2|charsi | 294 | |2|cornerot | 295 | |2|cron410 | 296 | |2|digiou | 297 | |2|emeric | 298 | |2|erdihu | 299 | |2|fengshaun | 300 | |2|fuerbringer | 301 | |2|gseva | 302 | |2|jciskey | 303 | |2|jganobsik <39414138+jganobsik@users.noreply.github.com>| 304 | |2|jimykk | 305 | |2|jtagcat <38327267+jtagcat@users.noreply.github.com>| 306 | |2|markkrj | 307 | |2|maximesrd | 308 | |2|rafael-santiago | 309 | |2|thomasfrivold | 310 | |2|tillarnold | 311 | |2|tomc3 | 312 | |2|xy2z | 313 | |2|yuche | 314 | |2|ziλa sarikaya | 315 | |2|znegva | 316 | |2|Žygimantas Medelis | 317 | |2|王可森 | 318 | |1|4oo4 <4oo4@users.noreply.github.com>| 319 | |1|Aaron <44198148+whalehub@users.noreply.github.com>| 320 | |1|Adam C <39806482+adam-redcort@users.noreply.github.com>| 321 | |1|Adam Johnson | 322 | |1|Adrian Kumpf | 323 | |1|Akos Veres | 324 | |1|Alashov Berkeli | 325 | |1|Alberto Bertogli | 326 | |1|Alejandro Rodríguez | 327 | |1|Alex Fornuto | 328 | |1|Alex Yumashev <33555768+alex-jitbit@users.noreply.github.com>| 329 | |1|Alexandr Nesterenko | 330 | |1|Alexandre Abita | 331 | |1|Alexey Strokach | 332 | |1|Alfred Bez | 333 | |1|Algram | 334 | |1|Alys | 335 | |1|Anders Pitman | 336 | |1|Andre | 337 | |1|Andrew Murray | 338 | |1|Andrew Nesbitt | 339 | |1|Andrew Prokhorenkov | 340 | |1|Andrey | 341 | |1|Andrey Kuznetsov | 342 | |1|André Rodier | 343 | |1|Andy Olsen | 344 | |1|Andyyyyy94 | 345 | |1|Angel Velasquez | 346 | |1|Antoine | 347 | |1|Antoine Gersant | 348 | |1|Anton Troyanov | 349 | |1|Arkady Asuratov | 350 | |1|Armando Lüscher | 351 | |1|Arnold Schrijver | 352 | |1|ArthurHoaro | 353 | |1|Austin | 354 | |1|BN | 355 | |1|Bas | 356 | |1|Bastien Wirtz | 357 | |1|Beard of War | 358 | |1|Ben | 359 | |1|Ben Abbott | 360 | |1|Benj Fassbind | 361 | |1|Benjamin Lange | 362 | |1|Bernd Bestel | 363 | |1|Bharat Kalluri | 364 | |1|Blake Bourque | 365 | |1|Bob "Wombat" Hogg | 366 | |1|Bob Mottram | 367 | |1|Brett | 368 | |1|Brian | 369 | |1|Burung Hantu | 370 | |1|Buster "Silver Eagle" Neece | 371 | |1|C.J. Jameson | 372 | |1|Caleb Xu | 373 | |1|Calle Wolff | 374 | |1|Carlos Rodriguez | 375 | |1|Chanchal Kumar Ghosh | 376 | |1|Chandan Rai | 377 | |1|Charles Barnes | 378 | |1|Charles Barnes | 379 | |1|Charlotte Tan | 380 | |1|Chema | 381 | |1|Chris Legault | 382 | |1|Christoph (Sheogorath) Kern | 383 | |1|Christoph Kappestein | 384 | |1|Christoph Wiechert | 385 | |1|Christophe Hamerling | 386 | |1|Clément AUBIN | 387 | |1|Colin <16247799+cpdevelops@users.noreply.github.com>| 388 | |1|Colin Shea | 389 | |1|Craig Davison | 390 | |1|Cristian Menghi | 391 | |1|CyrilPepito <18053589+CyrilPepito@users.noreply.github.com>| 392 | |1|Cédric | 393 | |1|Damir Gainetdinov | 394 | |1|Dan | 395 | |1|Danny | 396 | |1|Danny van Kooten | 397 | |1|David | 398 | |1|David Baldwynn | 399 | |1|David Ng | 400 | |1|David Stephens | 401 | |1|David Yu | 402 | |1|Denis | 403 | |1|Denis | 404 | |1|Diego Molina | 405 | |1|Dimitri Steinel | 406 | |1|Dirk Krause | 407 | |1|Dmitriy Volkov | 408 | |1|Dmitry Khomutov | 409 | |1|Doğan Çelik | 410 | |1|Dražen Lučanin | 411 | |1|Ed Tewiah | 412 | |1|Edoardo Putti | 413 | |1|Edreih Aldana | 414 | |1|Eike Kettner | 415 | |1|Emeric POUPON | 416 | |1|Emlembow <36314674+Emlembow@users.noreply.github.com>| 417 | |1|Eran Chetz | 418 | |1|Eren Hatırnaz | 419 | |1|Eric Moon | 420 | |1|Eric Nemchik | 421 | |1|Eric Park | 422 | |1|Error1000 <50962908+Error1000@users.noreply.github.com>| 423 | |1|Ethan Hampton | 424 | |1|Ethan Madden | 425 | |1|Eugen | 426 | |1|Evelthon Prodromou | 427 | |1|Evgeny Petrov | 428 | |1|Fabian Patzke | 429 | |1|Fazal Majid | 430 | |1|Florian | 431 | |1|Florian Kaiser | 432 | |1|Florian Kaldowski | 433 | |1|Florian Wilhelm | 434 | |1|FortressBuilder | 435 | |1|François Jacquet | 436 | |1|FreeScout <40499291+freescout-helpdesk@users.noreply.github.com>| 437 | |1|Galen Abell | 438 | |1|Gio | 439 | |1|Girish Ramakrishnan | 440 | |1|Greg Chetcuti | 441 | |1|Guilherme Oenning | 442 | |1|Henrique Holanda | 443 | |1|Herman Zvonimir Došilović | 444 | |1|IAlwaysBeCoding | 445 | |1|Icantcodeatall | 446 | |1|Igor Antun | 447 | |1|Igor Petrov | 448 | |1|Imron RA <42175898+imronra@users.noreply.github.com>| 449 | |1|Isaac | 450 | |1|Izac Lorimer | 451 | |1|Jack | 452 | |1|Jackson Delahunt | 453 | |1|Jakob Gillich | 454 | |1|James Mills | 455 | |1|Jan | 456 | |1|Jannik Anker | 457 | |1|Janos Dobronszki | 458 | |1|Jarek Lipski | 459 | |1|Jay Williams | 460 | |1|Jay Yu <265551+GitHubGeek@users.noreply.github.com>| 461 | |1|Jay Yu | 462 | |1|Jean Menezes da Rocha | 463 | |1|Jelmer Vernooij | 464 | |1|Jeremiah Marks | 465 | |1|Joel Calado | 466 | |1|Jon Schoning | 467 | |1|Jonas | 468 | |1|Jonas Hellmann | 469 | |1|Jordan <15741144+jrdnlc@users.noreply.github.com>| 470 | |1|Jordan Doyle | 471 | |1|Jordan Doyle | 472 | |1|Josh Harmon | 473 | |1|Joshua Hamilton | 474 | |1|José Castro | 475 | |1|Julien | 476 | |1|Julien Bisconti | 477 | |1|Julien Reichardt | 478 | |1|Justin Clift | 479 | |1|Justin O'Reilly | 480 | |1|Kacper | 481 | |1|Karl Gumerlock | 482 | |1|KarloLuiten | 483 | |1|Kaveet Laxmidas | 484 | |1|Kelvin | 485 | |1|Ketrel | 486 | |1|Kevin Lin | 487 | |1|Keyhaku | 488 | |1|Kieran | 489 | |1|Kim Jahn | 490 | |1|Koichi MATSUMOTO | 491 | |1|Konstantin Sorokin | 492 | |1|Kyle Farwell | 493 | |1|Kyle Stetz | 494 | |1|L1Cafe | 495 | |1|LB (Ben Johnston) | 496 | |1|Leonard Thomas Wall | 497 | |1|Lescaudron Mathieu | 498 | |1|Liran Tal | 499 | |1|Lorenz Hübschle-Schneider | 500 | |1|Louis Grenard | 501 | |1|Lukas Masuch | 502 | |1|Luuk Nieuwdorp | 503 | |1|Marcin Karpezo | 504 | |1|Marco Dickert | 505 | |1|Marco Kamner | 506 | |1|Marcus Ramberg | 507 | |1|Mark Ide | 508 | |1|Mark Ide | 509 | |1|Mark Railton | 510 | |1|Markus Dieckmann | 511 | |1|Martin Malinda | 512 | |1|Martin Tournoij | 513 | |1|Marvin | 514 | |1|Marvin Gülker | 515 | |1|MatFluor | 516 | |1|Matt Lee | 517 | |1|Matteo Piccina | 518 | |1|Matthew Dews | 519 | |1|Matthew East | 520 | |1|Matthias De Bie | 521 | |1|Max <2843450+b-m-f@users.noreply.github.com>| 522 | |1|Michael Barrow | 523 | |1|Michael Burns | 524 | |1|Michael Malura | 525 | |1|Michael van Tricht | 526 | |1|Michael van Tricht | 527 | |1|Mike Goodwin | 528 | |1|Mike Steele | 529 | |1|Minghe | 530 | |1|MinorTom | 531 | |1|Mitchell R | 532 | |1|Moritz Kröger | 533 | |1|Murali K G | 534 | |1|Murdoc Bates | 535 | |1|Nick Sweeting | 536 | |1|NicolasCARPi | 537 | |1|Norman Xu | 538 | |1|Nÿco | 539 | |1|Ober7 | 540 | |1|Oleg Agafonov | 541 | |1|Oliver Kopp | 542 | |1|Opeyemi Obembe | 543 | |1|PMK | 544 | |1|Paolo Pustorino | 545 | |1|Pau Kiat Wee | 546 | |1|Paul | 547 | |1|Paul Libbrecht | 548 | |1|Paul Libbrecht | 549 | |1|Pavlo Vodopyan | 550 | |1|Paweł Jakimowski | 551 | |1|Paweł Kapała | 552 | |1|Peter Brunner | 553 | |1|Peter Tonoli | 554 | |1|Peter van den Hurk | 555 | |1|Philipp Kutyla | 556 | |1|Phill | 557 | |1|Phonic Mouse | 558 | |1|Pierre <21216829+pedrom34@users.noreply.github.com>| 559 | |1|Pierre Dubouilh | 560 | |1|Pietro Pe46dro Marangon | 561 | |1|Pouria Ezzati | 562 | |1|Prahalad Belavadi | 563 | |1|Rafael Milewski | 564 | |1|Raphael Fetzer | 565 | |1|Remi Rampin | 566 | |1|Remy Adriaanse | 567 | |1|Remy Honig | 568 | |1|Richard Thornton | 569 | |1|Riddler | 570 | |1|Robert Charusta | 571 | |1|Roberto Rosario | 572 | |1|Rouven Bauer | 573 | |1|RussellAult | 574 | |1|Ryan Halliday | 575 | |1|Ryan Noelk | 576 | |1|Rzeszow <6783135+Rzeszow@users.noreply.github.com>| 577 | |1|Sahin Boydas | 578 | |1|Salvatore Gentile | 579 | |1|Sam Patterson | 580 | |1|Sam Wilson | 581 | |1|Samuel Garneau | 582 | |1|Sartaj | 583 | |1|Scott Humphries | 584 | |1|Scott Miller | 585 | |1|Senan Kelly | 586 | |1|Sergey Bronnikov | 587 | |1|Sergey Ponomarev | 588 | |1|Sheldon Rupp | 589 | |1|Simon Alberny | 590 | |1|Simon Hanna | 591 | |1|Sourabh Joshi <38150665+sourabh-joshi@users.noreply.github.com>| 592 | |1|Spencer McIntyre | 593 | |1|Spencer Muise | 594 | |1|Starbeamrainbowlabs | 595 | |1|Stefan Weil | 596 | |1|Steve Divskinsy | 597 | |1|Sylvain Boily | 598 | |1|THS-on | 599 | |1|Tanner Collin | 600 | |1|The Scorpion | 601 | |1|Thomas Ferney | 602 | |1|Thomas Hansen | 603 | |1|Thomas Rohlik | 604 | |1|Thorsten Rinne | 605 | |1|Tim Allingham | 606 | |1|Timur Bublik | 607 | |1|Tobias Diekershoff | 608 | |1|Tobias Kunze | 609 | |1|Tobias Reich | 610 | |1|Tobias Zeising | 611 | |1|Todd Hoffmann | 612 | |1|Tom Hacohen | 613 | |1|Tomer Shvueli | 614 | |1|Tommy Ku | 615 | |1|Trevor Ford | 616 | |1|Vadim Markovtsev | 617 | |1|Vidas P | 618 | |1|Viktor Geringer | 619 | |1|Vincent Dauce | 620 | |1|Webmasterish | 621 | |1|William Gathoye | 622 | |1|Yurii Rashkovskii | 623 | |1|axeloz | 624 | |1|benmaynard11 | 625 | |1|bitcoinshirt <36959754+bitcoinshirt@users.noreply.github.com>| 626 | |1|bricej13 | 627 | |1|c22 | 628 | |1|cbdev | 629 | |1|costpermille | 630 | |1|cpdev | 631 | |1|dimqua | 632 | |1|disk0x | 633 | |1|domainzero | 634 | |1|dsx | 635 | |1|ePirat | 636 | |1|emmanouil | 637 | |1|evitalis | 638 | |1|fghhfg | 639 | |1|fi78 <31729946+fi78@users.noreply.github.com>| 640 | |1|florianl | 641 | |1|foorb | 642 | |1|ghaseminya | 643 | |1|golangci <35628013+golangci@users.noreply.github.com>| 644 | |1|ice-92 | 645 | |1|ilsi | 646 | |1|itsnotv | 647 | |1|jake | 648 | |1|jarek91 | 649 | |1|jgi | 650 | |1|josh | 651 | |1|lachlan-00 | 652 | |1|lardbit <45122868+lardbit@users.noreply.github.com>| 653 | |1|littleguga | 654 | |1|lsascha | 655 | |1|macmusz | 656 | |1|memorex258 | 657 | |1|mertinop | 658 | |1|mrkpl125 <33229813+mrkpl125@users.noreply.github.com>| 659 | |1|mxroute <37432698+mxroute@users.noreply.github.com>| 660 | |1|n2i | 661 | |1|nodomain | 662 | |1|norstbox | 663 | |1|pastapojken | 664 | |1|phobot | 665 | |1|pips | 666 | |1|pnhofmann | 667 | |1|poVoq | 668 | |1|railscard | 669 | |1|sc0repi0 | 670 | |1|skarphet | 671 | |1|sqozz | 672 | |1|steven jacobs | 673 | |1|stevesbrain | 674 | |1|t1st3 | 675 | |1|teaberryy | 676 | |1|timbe16 | 677 | |1|trebonius0 | 678 | |1|ttoups | 679 | |1|uchchishta | 680 | |1|vincent-clipet | 681 | |1|vinz243 | 682 | |1|wxcafé | 683 | |1|xuansamdinh | 684 | |1|zotlabs | 685 | |1|Руслан Корнев | --------------------------------------------------------------------------------