diff --git a/.bowerrc b/.bowerrc new file mode 100644 index 0000000000..09244a6b8a --- /dev/null +++ b/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "app/js/libs" +} \ No newline at end of file diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..c2cdfb8ada --- /dev/null +++ b/.editorconfig @@ -0,0 +1,21 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + + +[*] + +# Change these settings to your own preference +indent_style = space +indent_size = 2 + +# We recommend you to keep these unchanged +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore index 9b126f5c24..be91f5ab7e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,18 +4,22 @@ *.egg *.egg-info dist +data build eggs parts sdist develop-eggs .installed.cfg +Gemfile.lock +node_modules/ +app/js/libs/ # Installer logs pip-log.txt -# git repo that we parsing -drupal/ -pages/ - cores.db +app/data/company_infos.yml +app/data/company_mapping.yml +app/drupalcore +tmp/ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..3098b37eee --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "pages"] + path = dist + url = https://github.com/lauriii/drupalcores.git + branch = gh-pages diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000000..f2e9c58392 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,56 @@ +{ + /* + * ENVIRONMENTS + * ================= + */ + + // Define globals exposed by modern browsers. + "browser": true, + + // Define globals exposed by jQuery. + "jquery": true, + + // Define globals exposed by Node.js. + "node": true, + + /* + * ENFORCING OPTIONS + * ================= + */ + + // Force all variable names to use either camelCase style or UPPER_CASE + // with underscores. + "camelcase": true, + + // Prohibit use of == and != in favor of === and !==. + "eqeqeq": true, + + // Enforce tab width of 2 spaces. + "indent": 2, + + // Prohibit use of a variable before it is defined. + "latedef": true, + + // Require capitalized names for constructor functions. + "newcap": true, + + // Enforce use of single quotation marks for strings. + "quotmark": "single", + + // Enforce placing 'use strict' at the top function scope + "strict": true, + + // Prohibit use of explicitly undeclared variables. + "undef": true, + + // Warn when variables are defined but never used. + "unused": true, + + /* + * RELAXING OPTIONS + * ================= + */ + + // Suppress warnings about == null comparisons. + "eqnull": true +} \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..8e0e53f35b --- /dev/null +++ b/.travis.yml @@ -0,0 +1,9 @@ +sudo: false +language: node_js +node_js: + - "8" +install: + - npm install gulp -g + - npm install + - bundle install +script: gulp test diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000000..00656260f7 --- /dev/null +++ b/Gemfile @@ -0,0 +1,4 @@ +source 'https://rubygems.org' + +gem 'open_uri_redirections' +gem 'nokogiri', '~> 1.6.4.1' \ No newline at end of file diff --git a/app/bin/build.sh b/app/bin/build.sh new file mode 100755 index 0000000000..49654e4ddc --- /dev/null +++ b/app/bin/build.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +git pull + +echo "Updating Sub Repos" + +if [ ! -d "./app/drupalcore" ]; then + git clone https://git.drupalcode.org/project/drupal.git ./app/drupalcore +else + cd ./app/drupalcore + git remote update + git remote set-head origin -a + git checkout origin/HEAD + cd ../bin +fi + +./cores.rb > ../../dist/next.html +./json.rb > ../../dist/next.json + +cd ../../dist +mv next.html index.html +mv next.json index.json diff --git a/app/bin/companies.rb b/app/bin/companies.rb new file mode 100755 index 0000000000..bfdac819b3 --- /dev/null +++ b/app/bin/companies.rb @@ -0,0 +1,163 @@ +#!/usr/bin/env ruby + +Encoding.default_external = Encoding::UTF_8 +require 'erb' +require 'yaml' +require 'open_uri_redirections' +require 'time' +require 'net/http' +require 'json' + +COMPANY_NOT_FOUND='not_found' +COMPANY_NOT_DEFINED='not_defined' +COMPANY_NOT_SPECIFIED='Not specified' +UPDATE_NONE=0 +UPDATE_NOT_FOUND=1 +UPDATE_ALL=2 + +name_variants = Hash.new(0) +Dir.mkdir('../data') unless Dir.exist?('../data') +if File.exists? ('../data/company_infos.yml') + companies_info = YAML::load_file('../data/company_infos.yml') +else + companies_info = Hash.new(0) +end +if File.exists? ('../data/company_mapping.yml') + company_mapping = YAML::load_file('../data/company_mapping.yml') || Hash.new(0) +else + company_mapping = Hash.new(0) +end +update=UPDATE_NONE +if ARGV.length == 1 + if ARGV[0] == '--update-all' + update=UPDATE_ALL + else + if ARGV[0] == '--update-not-found' + update=UPDATE_NOT_FOUND + end + end +end + +i = 1; +lastOrder = -1; +lastMentions = 0; +file = file = File.read('../../tmp/data.json') +data = JSON.parse(file) +contributors = data['contributors'] +companies = Hash.new(0) + +def ensure_company(companies, companies_info, key, title, link, id) + unless companies.key? key + companies[key] = Hash.new(0) + companies[key]['contributors'] = Hash.new(0) + if companies_info.key? key + companies[key]['title'] = companies_info[key]['title'] + companies[key]['link'] = companies_info[key]['link'] + companies[key]['id'] = companies_info[key]['id'] + else + companies[key]['title'] = title + companies[key]['link'] = link + companies[key]['id'] = id + end + end +end + +contributors.sort_by {|k, v| v }.reverse.each do |name,mentions| + next if name == COMPANY_NOT_SPECIFIED + + if company_mapping.key? name + if update == UPDATE_NONE or (update == UPDATE_NOT_FOUND and company_mapping[name] != COMPANY_NOT_FOUND) + ensure_company(companies, companies_info, company_mapping[name], 'should be filled via company infos', 'should be filled via company infos', 0) + companies[company_mapping[name]]['mentions'] += mentions + companies[company_mapping[name]]['contributors'][name] = mentions + next + end + end + if name_variants.key? name + urlname = name_variants[name] + else + urlname = name + end + url = URI::encode("https://www.drupal.org/api-d7/user.json?name=#{urlname}") + uri = URI(url) + begin + response = Net::HTTP.get(uri) + user = JSON.parse(response) + rescue + next + end + found = false + if user['list'].count > 0 + found = true + end + unless found + ensure_company(companies, companies_info, COMPANY_NOT_FOUND, 'Users not found', 'Users not found', 0) + companies[COMPANY_NOT_FOUND]['mentions'] += mentions + companies[COMPANY_NOT_FOUND]['contributors'][name] = mentions + else + found = false + organization = '' + for organization in user['list'][0]['field_organizations'] + organization_uri = URI(organization['uri'].concat('.json')); + begin + organization_response = Net::HTTP.get(organization_uri) + organization = JSON.parse(organization_response) + if organization['field_current'] + found = true + break + end + rescue + next + end + end + if found + company = organization['field_organization_name'] + if company.nil? + company = COMPANY_NOT_SPECIFIED + end + if organization['field_organization_reference'].nil? + company_id = 0; + else + company_id = organization['field_organization_reference']['id'].to_i + end + else + company = COMPANY_NOT_SPECIFIED + company_id = 0 + end + company_key = company.downcase + ensure_company(companies, companies_info, company_key, company, company, company_id) + companies[company_key]['mentions'] += mentions + companies[company_key]['contributors'][name] = mentions + end +end + +companies = companies.sort_by {|k, v| v['mentions'] }.reverse +companies.each do |k, values| + unless companies_info.key? k + companies_info[k] = Hash.new(0) + companies_info[k]['title'] = values['title'] + companies_info[k]['link'] = values['link'] + companies_info[k]['id'] = values['id'] + end + values['contributors'].each do |name, mentions| + company_mapping[name] = k + end + if values['contributors'].length == 0 + companies_info.delete(k) + end +end +File.open('../data/company_infos.yml', 'w') { |f| YAML.dump(companies_info, f) } +File.open('../data/company_mapping.yml', 'w') { |f| YAML.dump(company_mapping, f) } + +sum = contributors.values.reduce(:+).to_f +puts ERB.new(DATA.readlines.join, 0, '>').result + +time = Time.now() +description = "A simple table of all contributors to Drupal 8 core" +header = ERB.new(File.new("../templates/partials/header.html.erb").read).result(binding) +footer = ERB.new(File.new("../templates/partials/footer.html.erb").read).result(binding) +companies_template = File.open("../templates/companies.html.erb", 'r').read +renderer = ERB.new(companies_template) +puts output = renderer.result() + +__END__ diff --git a/app/bin/cores.rb b/app/bin/cores.rb new file mode 100755 index 0000000000..d9c5215c82 --- /dev/null +++ b/app/bin/cores.rb @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby + +Encoding.default_external = Encoding::UTF_8 +require 'erb' +require 'yaml' +require 'time' +require 'json' + +i = 1; +lastOrder = -1; +lastMentions = 0; + +file = file = File.read('../../tmp/data.json') +data = JSON.parse(file) +contributors = data['contributors'] +sum = contributors.values.reduce(:+).to_f +puts ERB.new(DATA.readlines.join, 0, '>').result + +time = Time.now() +description = "A very basic table of all contributors to Drupal 9 Core" +header = ERB.new(File.new("../templates/partials/header.html.erb").read).result(binding) +footer = ERB.new(File.new("../templates/partials/footer.html.erb").read).result(binding) +index_template = File.open("../templates/index.html.erb", 'r').read +renderer = ERB.new(index_template) +puts output = renderer.result() + +__END__ diff --git a/app/bin/countries.rb b/app/bin/countries.rb new file mode 100755 index 0000000000..bcf0de8a5d --- /dev/null +++ b/app/bin/countries.rb @@ -0,0 +1,136 @@ +#!/usr/bin/env ruby + +Encoding.default_external = Encoding::UTF_8 +require 'erb' +require 'yaml' +require 'open_uri_redirections' +require 'time' +require 'net/http' +require 'json' + +COMPANY_NOT_FOUND='not_found' +COMPANY_NOT_DEFINED='not_defined' +COMPANY_NOT_SPECIFIED='Not specified' +UPDATE_NONE=0 +UPDATE_NOT_FOUND=1 +UPDATE_ALL=2 + +country_names = YAML::load_file('../config/country_names.yml') +name_variants = Hash.new(0) +Dir.mkdir('../data') unless Dir.exist?('../data') +if File.exists? ('../data/country_infos.yml') + companies_info = YAML::load_file('../data/country_infos.yml') +else + companies_info = Hash.new(0) +end +if File.exists? ('../data/country_mapping.yml') + company_mapping = YAML::load_file('../data/country_mapping.yml') || Hash.new(0) +else + company_mapping = Hash.new(0) +end +update=UPDATE_NONE +if ARGV.length == 1 + if ARGV[0] == '--update-all' + update=UPDATE_ALL + else + if ARGV[0] == '--update-not-found' + update=UPDATE_NOT_FOUND + end + end +end + +i = 1; +lastOrder = -1; +lastMentions = 0; +file = file = File.read('../../tmp/data.json') +data = JSON.parse(file) +contributors = data['contributors'] +companies = Hash.new(0) + +def ensure_company(companies, companies_info, key, title) + unless companies.key? key + companies[key] = Hash.new(0) + companies[key]['contributors'] = Hash.new(0) + if companies_info.key? key + companies[key]['title'] = companies_info[key]['title'] + else + companies[key]['title'] = title + end + end +end + +contributors.sort_by {|k, v| v }.reverse.each do |name,mentions| + next if name == COMPANY_NOT_SPECIFIED + + if company_mapping.key? name + if update == UPDATE_NONE or (update == UPDATE_NOT_FOUND and company_mapping[name] != COMPANY_NOT_FOUND) + ensure_company(companies, companies_info, company_mapping[name], country_names[company_mapping[name].upcase]) + companies[company_mapping[name]]['mentions'] += mentions + companies[company_mapping[name]]['contributors'][name] = mentions + next + end + end + if name_variants.key? name + urlname = name_variants[name] + else + urlname = name + end + url = URI::encode("https://www.drupal.org/api-d7/user.json?name=#{urlname}") + uri = URI(url) + begin + response = Net::HTTP.get(uri) + user = JSON.parse(response) + rescue + next + end + found = false + if user['list'].count > 0 + found = true + end + unless found + ensure_company(companies, companies_info, COMPANY_NOT_FOUND, 'Users not found') + companies[COMPANY_NOT_FOUND]['mentions'] += mentions + companies[COMPANY_NOT_FOUND]['contributors'][name] = mentions + else + company = user['list'][0]['field_country'] + if company.nil? + company = COMPANY_NOT_SPECIFIED + title = company + else + title = country_names[company] + end + company_key = company.downcase + ensure_company(companies, companies_info, company_key, title) + companies[company_key]['mentions'] += mentions + companies[company_key]['contributors'][name] = mentions + end +end + +companies = companies.sort_by {|k, v| v['mentions'] }.reverse +companies.each do |k, values| + unless companies_info.key? k + companies_info[k] = Hash.new(0) + companies_info[k]['title'] = values['title'] + end + values['contributors'].each do |name, mentions| + company_mapping[name] = k + end + if values['contributors'].length == 0 + companies_info.delete(k) + end +end +File.open('../data/country_infos.yml', 'w') { |f| YAML.dump(companies_info, f) } +File.open('../data/country_mapping.yml', 'w') { |f| YAML.dump(company_mapping, f) } + +sum = contributors.values.reduce(:+).to_f +puts ERB.new(DATA.readlines.join, 0, '>').result + +time = Time.now() +description = "A simple table of all contributors to Drupal 8 core" +header = ERB.new(File.new("../templates/partials/header.html.erb").read).result(binding) +footer = ERB.new(File.new("../templates/partials/footer.html.erb").read).result(binding) +companies_template = File.open("../templates/countries.html.erb", 'r').read +renderer = ERB.new(companies_template) +puts output = renderer.result() + +__END__ diff --git a/app/bin/json.rb b/app/bin/json.rb new file mode 100755 index 0000000000..bbf82a7b9c --- /dev/null +++ b/app/bin/json.rb @@ -0,0 +1,72 @@ +#!/usr/bin/env ruby + +log_args = ARGV[0] || '--since=2011-03-09' +git_command = <<-COMMANDS +cd ../drupalcore +git fetch +git remote update +git remote set-head origin -a +git log origin/HEAD #{log_args} -s --format=%s +cd ../bin +COMMANDS + +Encoding.default_external = Encoding::UTF_8 +require 'erb' +require 'yaml' +require 'json' + +name_mappings = YAML::load_file('../config/name_mappings.yml') +contributors = Hash.new(0) +commits = Array.new +reverts = Array.new +issue_regexp = Regexp.new '#[0-9]+' +reverts_regexp = Regexp.new '^Revert \"(?.+#[0-9]+.* by [^:]+:).*' +reverts_regexp_loose = Regexp.new '^Revert .*(?#[0-9]+).*' + +%x[#{git_command}].split("\n").each do |c| + if c =~ reverts_regexp then + reverts.push(c[reverts_regexp, "credits"]) + elsif c =~ reverts_regexp_loose then + reverts.push(c[reverts_regexp_loose, "issue"]) + else + commits.push(c) + end +end + +commits.each_with_index do |c, i| + if r = reverts.index{ |item| c.index(item) == 0 } + commits.delete_at(i) + reverts.delete_at(r) + end +end + +commits.to_enum.with_index.reverse_each do |c, i| + if r = reverts.index{ |item| item[issue_regexp] == c[issue_regexp] } + commits.delete_at(i) + reverts.delete_at(r) + end +end + +commits.each do |m| + m.scan(/\s(?:by\s?)([[:word:]\s,.@|\-]+):[^:]/i).each do |people| + people[0].split(/(?:,|\||\band\b|\bfollow[-]?up(?:\sby)?\b|\bet al(?:.)?)/).compact.reject(&:empty?).each do |p| + name = p.strip + contributors[name_mappings[name.downcase] || name] += 1 unless p.nil? + end + end +end + +contributors = Hash[contributors.sort_by {|k, v| v }.reverse] + +output = { + :date => Time.new, + :count => contributors.length, + :graph => { + :one => contributors.select {|k,v| v < 2}.length, + :twoTen => contributors.select {|k,v| (v > 1 && v < 11) }.length, + :TenOver => contributors.select {|k,v| v > 10}.length + }, + :contributors => contributors +} + +puts output.to_json diff --git a/app/config/country_names.yml b/app/config/country_names.yml new file mode 100644 index 0000000000..cb1301451d --- /dev/null +++ b/app/config/country_names.yml @@ -0,0 +1,252 @@ +AF: Afghanistan +AX: Åland Islands +AL: Albania +DZ: Algeria +AS: American Samoa +AD: Andorra +AO: Angola +AI: Anguilla +AQ: Antarctica +AG: Antigua and Barbuda +AR: Argentina +AM: Armenia +AW: Aruba +AU: Australia +AT: Austria +AZ: Azerbaijan +BS: Bahamas +BH: Bahrain +BD: Bangladesh +BB: Barbados +BY: Belarus +BE: Belgium +BZ: Belize +BJ: Benin +BM: Bermuda +BT: Bhutan +BO: Bolivia +BA: Bosnia and Herzegovina +BW: Botswana +BV: Bouvet Island +BR: Brazil +IO: British Indian Ocean Territory +VG: British Virgin Islands +BN: Brunei +BG: Bulgaria +BF: Burkina Faso +BI: Burundi +KH: Cambodia +CM: Cameroon +CA: Canada +CV: Cape Verde +BQ: Caribbean Netherlands +KY: Cayman Islands +CF: Central African Republic +TD: Chad +CL: Chile +CN: China +CX: Christmas Island +CC: Cocos (Keeling) Islands +CO: Colombia +KM: Comoros +CG: Republic of the Congo +CD: DR of the Congo +CK: Cook Islands +CR: Costa Rica +HR: Croatia +CU: Cuba +CW: Curaçao +CY: Cyprus +CZ: Czech Republic +DK: Denmark +DJ: Djibouti +DO: Dominican Republic +DM: Dominica +EC: Ecuador +EG: Egypt +SV: El Salvador +GQ: Equatorial Guinea +ER: Eritrea +EE: Estonia +ET: Ethiopia +FK: Falkland Islands +FO: Faroe Islands +FJ: Fiji +FI: Finland +FR: France +GF: French Guiana +PF: French Polynesia +TF: French Southern Territories +GA: Gabon +GM: The Gambia +GE: Georgia +DE: Germany +GH: Ghana +GI: Gibraltar +GR: Greece +GL: Greenland +GD: Grenada +GP: Guadeloupe +GU: Guam +GT: Guatemala +GG: Guernsey +GW: Guinea-Bissau +GN: Guinea +GY: Guyana +HT: Haiti +HM: Heard Island and McDonald Islands +HN: Honduras +HK: Hong Kong +HU: Hungary +IS: Iceland +IN: India +ID: Indonesia +IR: Iran +IQ: Iraq +IE: Ireland +IM: Isle of Man +IL: Israel +IT: Italy +CI: Ivory Coast +JM: Jamaica +JP: Japan +JE: Jersey +JO: Jordan +KZ: Kazakhstan +KE: Kenya +KI: Kiribati +XK: Kosovo +KW: Kuwait +KG: Kyrgyzstan +LA: Laos +LV: Latvia +LB: Lebanon +LS: Lesotho +LR: Liberia +LY: Libya +LI: Liechtenstein +LT: Lithuania +LU: Luxembourg +MO: Macau +MK: Macedonia +MG: Madagascar +MW: Malawi +MY: Malaysia +MV: Maldives +ML: Mali +MT: Malta +MH: Marshall Islands +MQ: Martinique +MR: Mauritania +MU: Mauritius +YT: Mayotte +MX: Mexico +FM: Micronesia +MD: Moldova +MC: Monaco +MN: Mongolia +ME: Montenegro +MS: Montserrat +MA: Morocco +MZ: Mozambique +MM: Myanmar +NA: Namibia +NR: Nauru +NP: Nepal +AN: Netherlands Antilles +NL: Netherlands +NC: New Caledonia +NZ: New Zealand +NI: Nicaragua +NG: Nigeria +NE: Niger +NU: Niue +NF: Norfolk Island +KP: North Korea +MP: Northern Mariana Islands +'NO': Norway +OM: Oman +PK: Pakistan +PW: Palau +PS: Palestine +PA: Panama +PG: Papua New Guinea +PY: Paraguay +PE: Peru +PH: Philippines +PN: Pitcairn +PL: Poland +PT: Portugal +PR: Puerto Rico +QA: Qatar +RE: Réunion +RO: Romania +RU: Russia +RW: Rwanda +BL: Saint Barthélemy +SH: Saint Helena +KN: Saint Kitts and Nevis +LC: Saint Lucia +MF: Saint Martin (French) +PM: Saint Pierre and Miquelon +VC: Saint Vincent and the Grenadines +WS: Samoa +SM: San Marino +ST: São Tomé and Príncipe +SA: Saudi Arabia +SN: Senegal +RS: Serbia +SC: Seychelles +SL: Sierra Leone +SG: Singapore +SX: Sint Maarten (Dutch) +SK: Slovakia +SI: Slovenia +SB: Solomon Islands +SO: Somalia +ZA: South Africa +GS: South Georgia and the South Sandwich Islands +KR: South Korea +SS: South Sudan +ES: Spain +LK: Sri Lanka +SD: Sudan +SR: Suriname +SJ: Svalbard and Jan Mayen +SZ: Swaziland +SE: Sweden +CH: Switzerland +SY: Syria +TW: Taiwan +TJ: Tajikistan +TZ: Tanzania +TH: Thailand +TL: Timor-Leste +TG: Togo +TK: Tokelau +TO: Tonga +TT: Trinidad and Tobago +TN: Tunisia +TR: Turkey +TM: Turkmenistan +TC: Turks and Caicos Islands +TV: Tuvalu +VI: U.S. Virgin Islands +UG: Uganda +UA: Ukraine +AE: United Arab Emirates +GB: United Kingdom +UM: United States Minor Outlying Islands +US: United States +UY: Uruguay +UZ: Uzbekistan +VU: Vanuatu +VA: Vatican +VE: Venezuela +VN: Vietnam +WF: Wallis and Futuna Islands +EH: Western Sahara +YE: Yemen +YU: Yugoslavia +ZM: Zambia +ZW: Zimbabwe diff --git a/app/config/name_mappings.yml b/app/config/name_mappings.yml new file mode 100644 index 0000000000..c9dcd53901 --- /dev/null +++ b/app/config/name_mappings.yml @@ -0,0 +1,59 @@ +_nod: nod_ +and damien tournoud: Damien Tournoud +berdir: Berdir +bleen18: bleen +cam8001: Cameron Tod +daffodil_naveen: naveenvalecha +damz: Damien Tournoud +dan reinders: SpartyDan +davereid: Dave Reid +david rothstein: David_Rothstein +davinder.snehi: snehi +dereine: dawehner +developermitesh: miteshmap +dmitrydrozdik: ddrozdik +dominique clause: Dom. +ellatheharpy: shnark +emma_maria: emma.maria +floydm: floydm +follow up yched: yched +fubhy the cat: fubhy +gnugeti: gnuget +hardik.p: hardikpandya +heyrocker: gdd +ianmthomasuk: ianthomas_uk +janstoeckler: jan.stoeckler +javier.alejandr...: Not specified +jcventura: jcnventura +jeroen12345: JeroenT +joelpitett: joelpittet +john@johncook.me.uk: John Cook +juampy: juampynr +juanmamr: jmmarquez +lewis nyman: LewisNyman +lewisnyman: LewisNyman +lewisnyman bartik: LewisNyman +lokeoke: l0ke +long wave: longwave +malavya: imalabya +mark carver: markcarver +mark conroy: markconroy +moshe weitzmann: moshe weitzman +nguerrero: nesta_ +nick_daffodil: naveenvalecha +niklas: Niklas Fiekas +no_commit_credit: xjm +nod: nod_ +PerthSam152: Sam152 +rhm50: rhm5000 +rob loach: RobLoach +rocket_nova: drupal_was_my_past +rootatwc: ParisLiakos +sam152: Sam152 +sivaji@knackforge.com: Sivaji +shashi1028: shashikant_chauhan +smiro: smira +tim.plunket: tim.plunkett +typhonius: adammalone +yogesh pawar: yogeshmpawar +drpal: alwaysworking diff --git a/app/images/bg_hr.png b/app/images/bg_hr.png new file mode 100755 index 0000000000..7973bd6988 Binary files /dev/null and b/app/images/bg_hr.png differ diff --git a/app/images/blacktocat.png b/app/images/blacktocat.png new file mode 100755 index 0000000000..6e264fe57a Binary files /dev/null and b/app/images/blacktocat.png differ diff --git a/app/images/icon_download.png b/app/images/icon_download.png new file mode 100755 index 0000000000..a2a287f642 Binary files /dev/null and b/app/images/icon_download.png differ diff --git a/app/images/icon_info.png b/app/images/icon_info.png new file mode 100755 index 0000000000..d08d959131 Binary files /dev/null and b/app/images/icon_info.png differ diff --git a/img.jpg b/app/images/img.jpg similarity index 100% rename from img.jpg rename to app/images/img.jpg diff --git a/app/images/sprite_download.png b/app/images/sprite_download.png new file mode 100755 index 0000000000..f2babd575d Binary files /dev/null and b/app/images/sprite_download.png differ diff --git a/app/js/reveal-employees.js b/app/js/reveal-employees.js new file mode 100644 index 0000000000..2710a1ec09 --- /dev/null +++ b/app/js/reveal-employees.js @@ -0,0 +1,6 @@ +$(function() { + 'use strict'; + $('table.companies tr td .toggle').click(function() { + $(this).parent().find('.employees').toggle(); + }); +}); \ No newline at end of file diff --git a/app/js/timeago.js b/app/js/timeago.js new file mode 100644 index 0000000000..fd667f1a76 --- /dev/null +++ b/app/js/timeago.js @@ -0,0 +1,4 @@ +$(function() { + 'use strict'; + $('.timeago').timeago(); +}); \ No newline at end of file diff --git a/app/scss/_pygment_trac.scss b/app/scss/_pygment_trac.scss new file mode 100755 index 0000000000..e65cedff6e --- /dev/null +++ b/app/scss/_pygment_trac.scss @@ -0,0 +1,70 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f0f3f3; } +.highlight .c { color: #0099FF; font-style: italic } /* Comment */ +.highlight .err { color: #AA0000; background-color: #FFAAAA } /* Error */ +.highlight .k { color: #006699; font-weight: bold } /* Keyword */ +.highlight .o { color: #555555 } /* Operator */ +.highlight .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #009999 } /* Comment.Preproc */ +.highlight .c1 { color: #0099FF; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #003300; font-weight: bold } /* Generic.Heading */ +.highlight .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */ +.highlight .go { color: #AAAAAA } /* Generic.Output */ +.highlight .gp { color: #000099; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #003300; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #99CC66 } /* Generic.Traceback */ +.highlight .kc { color: #006699; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #006699 } /* Keyword.Pseudo */ +.highlight .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #007788; font-weight: bold } /* Keyword.Type */ +.highlight .m { color: #FF6600 } /* Literal.Number */ +.highlight .s { color: #CC3300 } /* Literal.String */ +.highlight .na { color: #330099 } /* Name.Attribute */ +.highlight .nb { color: #336666 } /* Name.Builtin */ +.highlight .nc { color: #00AA88; font-weight: bold } /* Name.Class */ +.highlight .no { color: #336600 } /* Name.Constant */ +.highlight .nd { color: #9999FF } /* Name.Decorator */ +.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #CC0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #CC00FF } /* Name.Function */ +.highlight .nl { color: #9999FF } /* Name.Label */ +.highlight .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #330099; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #003333 } /* Name.Variable */ +.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #FF6600 } /* Literal.Number.Float */ +.highlight .mh { color: #FF6600 } /* Literal.Number.Hex */ +.highlight .mi { color: #FF6600 } /* Literal.Number.Integer */ +.highlight .mo { color: #FF6600 } /* Literal.Number.Oct */ +.highlight .sb { color: #CC3300 } /* Literal.String.Backtick */ +.highlight .sc { color: #CC3300 } /* Literal.String.Char */ +.highlight .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #CC3300 } /* Literal.String.Double */ +.highlight .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #CC3300 } /* Literal.String.Heredoc */ +.highlight .si { color: #AA0000 } /* Literal.String.Interpol */ +.highlight .sx { color: #CC3300 } /* Literal.String.Other */ +.highlight .sr { color: #33AAAA } /* Literal.String.Regex */ +.highlight .s1 { color: #CC3300 } /* Literal.String.Single */ +.highlight .ss { color: #FFCC33 } /* Literal.String.Symbol */ +.highlight .bp { color: #336666 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #003333 } /* Name.Variable.Class */ +.highlight .vg { color: #003333 } /* Name.Variable.Global */ +.highlight .vi { color: #003333 } /* Name.Variable.Instance */ +.highlight .il { color: #FF6600 } /* Literal.Number.Integer.Long */ + +.type-csharp .highlight .k { color: #0000FF } +.type-csharp .highlight .kt { color: #0000FF } +.type-csharp .highlight .nf { color: #000000; font-weight: normal } +.type-csharp .highlight .nc { color: #2B91AF } +.type-csharp .highlight .nn { color: #000000 } +.type-csharp .highlight .s { color: #A31515 } +.type-csharp .highlight .sc { color: #A31515 } diff --git a/app/scss/stylesheet.scss b/app/scss/stylesheet.scss new file mode 100755 index 0000000000..b5cffac0d4 --- /dev/null +++ b/app/scss/stylesheet.scss @@ -0,0 +1,340 @@ +@import "pygment_trac"; + +/******************************************************************************* +MeyerWeb Reset +*******************************************************************************/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +ol, ul { + list-style: none; +} +blockquote, q { +} +table { + border-collapse: collapse; + border-spacing: 0; +} +a:focus { + outline: none; +} +/******************************************************************************* +Theme Styles +*******************************************************************************/ + +body { + box-sizing: border-box; + color:#373737; + background: #212121; + font-size: 16px; + font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif; + line-height: 1.5; + -webkit-font-smoothing: antialiased; +} +h1, h2, h3, h4, h5, h6 { + margin: 10px 0; + font-weight: 700; + color:#222222; + font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif; + letter-spacing: -1px; +} +h1 { + font-size: 36px; + font-weight: 700; +} +h2 { + padding-bottom: 10px; + font-size: 32px; + background: url('../images/bg_hr.png') repeat-x bottom; +} +h3 { + font-size: 24px; +} +h4 { + font-size: 21px; +} +h5 { + font-size: 18px; +} +h6 { + font-size: 16px; +} +p { + margin: 10px 0 15px 0; +} +footer p { + color: #f2f2f2; +} +a { + text-decoration: none; + color: #007edf; + text-shadow: none; + + transition: color 0.5s ease; + transition: text-shadow 0.5s ease; + -webkit-transition: color 0.5s ease; + -webkit-transition: text-shadow 0.5s ease; + -moz-transition: color 0.5s ease; + -moz-transition: text-shadow 0.5s ease; + -o-transition: color 0.5s ease; + -o-transition: text-shadow 0.5s ease; + -ms-transition: color 0.5s ease; + -ms-transition: text-shadow 0.5s ease; +} +.main-content a:hover { + color: #0069ba; +} +footer a:hover { + color: #43adff; +} +em { + font-style: italic; +} +strong { + font-weight: bold; +} +img { + position: relative; + margin: 0 auto; + max-width: 739px; + padding: 5px; + margin: 10px 0 10px 0; + border: 1px solid #ebebeb; + + box-shadow: 0 0 5px #ebebeb; + -webkit-box-shadow: 0 0 5px #ebebeb; + -moz-box-shadow: 0 0 5px #ebebeb; + -o-box-shadow: 0 0 5px #ebebeb; + -ms-box-shadow: 0 0 5px #ebebeb; +} +pre, code { + width: 100%; + color: #222; + background-color: #fff; + + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; + font-size: 14px; + + border-radius: 2px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + + + +} +pre { + width: 100%; + padding: 10px; + box-shadow: 0 0 10px rgba(0,0,0,.1); + overflow: auto; +} +code { + padding: 3px; + margin: 0 3px; + box-shadow: 0 0 10px rgba(0,0,0,.1); +} +pre code { + display: block; + box-shadow: none; +} +blockquote { + color: #666; + margin-bottom: 20px; + padding: 0 0 0 20px; + border-left: 3px solid #bbb; +} +ul, ol, dl { + margin-bottom: 15px +} +ul li { + list-style: inside; + padding-left: 20px; +} +ol li { + list-style: decimal inside; + padding-left: 20px; +} +dl dt { + font-weight: bold; +} +dl dd { + padding-left: 20px; + font-style: italic; +} +dl p { + padding-left: 20px; + font-style: italic; +} +hr { + height: 1px; + margin-bottom: 5px; + border: none; + background: url('../images/bg_hr.png') repeat-x center; +} +table { + border: 1px solid #373737; + margin-bottom: 20px; + text-align: left; + } +th { + font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif; + padding: 10px; + background: #373737; + color: #fff; + } +td { + padding: 10px; + border: 1px solid #373737; + } +form { + background: #f2f2f2; + padding: 20px; +} +img { + width: 100%; + max-width: 100%; +} +/******************************************************************************* +Full-Width Styles +*******************************************************************************/ + +.outer { + width: 100%; +} +.inner { + position: relative; + max-width: 640px; + padding: 20px 10px; + margin: 0 auto; +} +.forkme-banner { + display: block; + position: absolute; + top:0; + right: 10px; + z-index: 10; + padding: 10px 50px 10px 10px; + color: #fff; + background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%; + font-weight: 700; + box-shadow: 0 0 10px rgba(0,0,0,.5); + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} +.header-wrap { + background: #212121; + background: -moz-linear-gradient(top, #373737, #212121); + background: -webkit-linear-gradient(top, #373737, #212121); + background: -ms-linear-gradient(top, #373737, #212121); + background: -o-linear-gradient(top, #373737, #212121); + background: linear-gradient(top, #373737, #212121); +} +.header-wrap .inner { + padding: 50px 10px 30px 10px; +} +.project-title { + margin: 0; + color: #fff; + font-size: 42px; + font-weight: 700; + text-shadow: #111 0px 0px 10px; +} +.project-tagline { + color: #fff; + font-size: 24px; + font-weight: 300; + background: none; + text-shadow: #111 0px 0px 10px; +} +.main-content-wrap { + background: #f2f2f2; + border-top: 1px solid #111; + border-bottom: 1px solid #111; +} +.main-content { + padding-top: 20px; +} +.footer-wrap { + background: #212121; +} + + +/******************************************************************************* +Small Device Styles +*******************************************************************************/ + +@media screen and (max-width: 480px) { + body { + font-size:14px; + } + .inner { + min-width: 320px; + max-width: 480px; + } + .project-title { + font-size: 32px; + } + h1 { + font-size: 28px; + } + h2 { + font-size: 24px; + } + h3 { + font-size: 21px; + } + h4 { + font-size: 18px; + } + h5 { + font-size: 14px; + } + h6 { + font-size: 12px; + } + code, pre { + min-width: 320px; + max-width: 480px; + font-size: 11px; + } +} +/********* +Custom Changes +************/ +tr:target { + background: #FFFFE0; + font-size: 1.3em; +} +td img { + width: auto; + display: inline-block; +} +img.toggle { + float: right; + width: 24px; +} +.employees { + width: 100%; +} \ No newline at end of file diff --git a/app/templates/companies.html.erb b/app/templates/companies.html.erb new file mode 100644 index 0000000000..86e47b6a71 --- /dev/null +++ b/app/templates/companies.html.erb @@ -0,0 +1,65 @@ +<%= header %> +
+
+
+
    +
  • The exposed data only takes into account the company name that contributors have set as current + in their drupal.org profile at the time the list was curated. Only the first company marked as + current will be used, with the order being determined by drupal.org. It may not be an accurate + representation of the company that actually sponsored their contribution.
  • +
  • This list only reflects commit mentions by individuals. Not every commit mention is a valuable + as others. Is just a metric, so be careful when interpreting it.
  • +
  • There are plenty of other ways of contribution to the Drupal community as an individual or + organization. Please check https://drupal.org/contribute + for ways of getting involved.
  • +
+ Total: <%= companies.length %> companies listed + +
+ +

Last updated <%= time %>

+ + + + + + + + + + + + + + <% companies.each do |name, values| %> + + + + + + + <% if lastMentions != values['mentions'] %> + <% lastOrder = i %> + <% end %> + <% i += 1 %> + <% lastMentions = values['mentions'] %> + + <% end %> + +
#CompanyContributorsMentionsPercent
<%= (lastMentions == values['mentions']) ? lastOrder : i %><%= values['link'] %> Info + + <% values['contributors'].each do |contributor, mentions| %> + + + + + <% end %> + + <%= values['contributors'].length %><%= values['mentions'] %> (~<%= values['mentions'] / values['contributors'].length %>)<%= ((values['mentions']/sum)*100).round(4) %>%
+
+
+<%= footer %> diff --git a/app/templates/countries.html.erb b/app/templates/countries.html.erb new file mode 100644 index 0000000000..bf98853f9d --- /dev/null +++ b/app/templates/countries.html.erb @@ -0,0 +1,54 @@ +<%= header %> +
+
+
+ Total: <%= companies.length %> countries listed + +
+ +

Last updated <%= time %>

+ + + + + + + + + + + + + + <% companies.each do |name, values| %> + + + + + + + <% if lastMentions != values['mentions'] %> + <% lastOrder = i %> + <% end %> + <% i += 1 %> + <% lastMentions = values['mentions'] %> + + <% end %> + +
#CountryContributorsMentionsPercent
<%= (lastMentions == values['mentions']) ? lastOrder : i %><%= values['title'] %> Info + + <% values['contributors'].each do |contributor, mentions| %> + + + + + <% end %> + + <%= values['contributors'].length %><%= values['mentions'] %> (~<%= values['mentions'] / values['contributors'].length %>)<%= ((values['mentions']/sum)*100).round(4) %>%
+
+
+<%= footer %> diff --git a/app/templates/index.html.erb b/app/templates/index.html.erb new file mode 100644 index 0000000000..06dade7dbd --- /dev/null +++ b/app/templates/index.html.erb @@ -0,0 +1,44 @@ +<%= header %> +
+
+
+ Total: <%= contributors.length %> contributors + +
+ +

Last updated <%= time %>

+ + + + + + + + + + + + + <% contributors.each do |name, mentions| %> + <% notSpecified = (name === 'Not specified') %> + + + + + + <% if lastMentions != mentions %> + <% lastOrder = i %> + <% end %> + <% i += 1 %> + <% lastMentions = mentions %> + <% end %> + +
#Drupal.org UsernameMentionsPercent
<%= (lastMentions == mentions) ? lastOrder : i %><% if !notSpecified %><%= name %><% else %><%= name %><% end %> + <% if !notSpecified %><%= mentions %><% else %><%= mentions %><% end %><%= ((mentions/sum)*100).round(4) %>%
+
+
+<%= footer %> diff --git a/app/templates/partials/footer.html.erb b/app/templates/partials/footer.html.erb new file mode 100644 index 0000000000..8108e6ee6f --- /dev/null +++ b/app/templates/partials/footer.html.erb @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/templates/partials/header.html.erb b/app/templates/partials/header.html.erb new file mode 100644 index 0000000000..66fba973b2 --- /dev/null +++ b/app/templates/partials/header.html.erb @@ -0,0 +1,22 @@ + + + + + + + DrupalCores + + + + + + + + +
+
+ View on GitHub +

DrupalCores

+

<%= description %>

+
+
diff --git a/bower.json b/bower.json new file mode 100644 index 0000000000..ea2da4a943 --- /dev/null +++ b/bower.json @@ -0,0 +1,21 @@ +{ + "name": "drupalcores", + "version": "0.0.0", + "homepage": "https://github.com/lauriii/drupalcores", + "authors": [ + "Lewis Nyman " + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "app/js/libs", + "test", + "tests" + ], + "dependencies": { + "jquery-timeago": "~1.4.1", + "jquery": "~2.1.1" + } +} diff --git a/build.sh b/build.sh deleted file mode 100755 index 3911b6b796..0000000000 --- a/build.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -git pull - -echo "Updating Sub Repos" - -if [ ! -d "./drupal" ]; then - git clone --branch 8.x http://git.drupal.org/project/drupal.git -else - cd ./drupal - git pull - cd ../ -fi - -if [ ! -d "./pages" ]; then - git clone --branch gh-pages git@github.com:ericduran/drupalcores.git pages -else - cd ./pages - git pull - cd .. -fi - -./cores.rb > ./pages/index.html -./json.rb > ./pages/data.json - -cd pages -git commit -am "Update bump." -git push diff --git a/companies.rb b/companies.rb deleted file mode 100755 index d18609fac3..0000000000 --- a/companies.rb +++ /dev/null @@ -1,264 +0,0 @@ -#!/usr/bin/env ruby - -Encoding.default_external = Encoding::UTF_8 -require 'erb' -require 'yaml' -require 'nokogiri' -require 'open_uri_redirections' - -COMPANY_NOT_FOUND='not_found' -COMPANY_NOT_DEFINED='not_defined' -UPDATE_NONE=0 -UPDATE_NOT_FOUND=1 -UPDATE_ALL=1 - -name_mappings = YAML::load_file('./name_mappings.yml') -$companies_info = YAML::load_file('./company_infos.yml') || Hash.new(0) -company_mapping = YAML::load_file('./company_mapping.yml') || Hash.new(0) -contributors = Hash.new(0) -name_variants = Hash.new(0) -update=UPDATE_NONE -if ARGV.length == 1 - if ARGV[0] == '--update-all' - update=UPDATE_ALL - else - if ARGV[0] == '--update-not-found' - update=UPDATE_NOT_FOUND - end - end -end - -i = 1; -lastOrder = -1; -lastMentions = 0; -%x[git --git-dir=drupal/.git --work-tree=drupal log 8.0.x --since=2011-03-09 -s --format=%s].split("\n").each do |m| - m.scan(/\s(?:by\s?)([[:word:]\s,.|]+):/i).each do |people| - people[0].split(/(?:,|\||\band\b|\bet al(?:.)?)/).each do |p| - name = p.gsub(/\-/, '_').strip.downcase - name_variants[name] = p.strip unless p.strip == name - contributors[name_mappings[name] || name] += 1 unless p.nil? - end - end -end - -companies = Hash.new(0) - -def ensure_company(companies, key, title, link) - unless companies.key? key - companies[key] = Hash.new(0) - companies[key]['contributors'] = Hash.new(0) - if $companies_info.key? key - companies[key]['title'] = $companies_info[key]['title'] - companies[key]['link'] = $companies_info[key]['link'] - else - companies[key]['title'] = title - companies[key]['link'] = link - end - end -end - -contributors.sort_by {|k, v| v }.reverse.each do |name,mentions| - if company_mapping.key? name - if update == UPDATE_NONE or (update == UPDATE_NOT_FOUND and company_mapping[name] != COMPANY_NOT_FOUND) - ensure_company(companies, company_mapping[name], 'should be filled via company infos', 'should be filled via company infos') - companies[company_mapping[name]]['mentions'] += mentions - companies[company_mapping[name]]['contributors'][name] = mentions - next - end - end - if name_variants.key? name - url = "http://dgo.to/@#{name_variants[name]}" - else - url = "http://dgo.to/@#{name}" - end - url = URI::encode(url) - begin - html = open(url, :allow_redirections => :safe) - doc = Nokogiri::HTML(html) - rescue - next - end - found = true - doc.css('title').each do |title| - if title.text == 'Users | Drupal.org' - found = false - results = doc.css('ol.user-results li h3 a') - # If we only have one results, its found ;) - if results.length == 1 - begin - html = open(results.first['href'], :allow_redirections => :safe) - doc = Nokogiri::HTML(html) - found = true - rescue - found = false - end - end - unless found - ensure_company(companies, COMPANY_NOT_FOUND, 'Users not found', 'Users not found') - companies[COMPANY_NOT_FOUND]['mentions'] += mentions - companies[COMPANY_NOT_FOUND]['contributors'][name] = mentions - end - end - end - if found - found = false - doc.css('dt').each do |dt| - if dt.content == 'Current company or organization' - link = dt.next_element.child - if link.at_css('img') - company = link.at_css('img')['title'] - else - company = link.child.text - end - company = company.strip - company_key = company.downcase - link['href'] = 'https://drupal.org' + link['href'] - ensure_company(companies, company_key, company, link.to_s) - companies[company_key]['mentions'] += mentions - companies[company_key]['contributors'][name] = mentions - found = true - end - end - unless found - ensure_company(companies, COMPANY_NOT_DEFINED, 'Not specified', 'Not specified') - companies[COMPANY_NOT_DEFINED]['mentions'] += mentions - companies[COMPANY_NOT_DEFINED]['contributors'][name] = mentions - end - end -end - -companies = companies.sort_by {|k, v| v['mentions'] }.reverse -companies.each do |k, values| - unless $companies_info.key? k - $companies_info[k] = Hash.new(0) - $companies_info[k]['title'] = values['title'] - $companies_info[k]['link'] = values['link'] - end - values['contributors'].each do |name, mentions| - company_mapping[name] = k - end - if values['contributors'].length == 0 - $companies_info.delete(k) - end -end -File.open('./company_infos.yml', 'w') { |f| YAML.dump($companies_info, f) } -File.open('./company_mapping.yml', 'w') { |f| YAML.dump(company_mapping, f) } - -sum = contributors.values.reduce(:+).to_f -puts ERB.new(DATA.readlines.join, 0, '>').result - -__END__ - - - - - - - DrupalCores - - - - - - -
-
- View on GitHub -

DrupalCores

-

A very basic table of all companies with contributors to Drupal 8 Core

-
-
- -
-
-
-
-
    -
  • The exposed data only takes into account the company name that contributors have listed - in their drupal.org profile at the time the list was curated. It may not be an accurate - representation of the company that actually sponsored their contribution.
  • -
  • This list only reflects commit mentions by individuals. Not every commit mention is a valuable - as others. Is just a metric, so be careful when interpreting it.
  • -
  • There are plenty of other ways of contribution to the Drupal community as an individual or - organization. Please check https://drupal.org/contribute - for ways of getting involved.
  • -
- Total: <%= companies.length %> companies listed - -
- - - - - - - - - - - - - - - <% companies.each do |name, values| %> - - - - - - - <% if lastMentions != values['mentions'] %> - <% lastOrder = i %> - <% end %> - <% i += 1 %> - <% lastMentions = values['mentions'] %> - - <% end %> - -
#CompanyContributorsMentionsPercent
<%= (lastMentions == values['mentions']) ? lastOrder : i %><%= values['link'] %> Info<%= values['contributors'].length %><%= values['mentions'] %> (~<%= values['mentions'] / values['contributors'].length %>)<%= ((values['mentions']/sum)*100).round(4) %>%
-
-
- - - - - - - - - - diff --git a/company_infos.yml b/company_infos.yml deleted file mode 100644 index f2a71c7845..0000000000 --- a/company_infos.yml +++ /dev/null @@ -1,2649 +0,0 @@ ---- -stanford university: - title: Stanford University - link: Stanford University -erdfisch: - title: erdfisch - link: erdfisch -acquia: - title: Acquia - link: Acquia -unleashed mind: - title: unleashed mind - link: unleashed mind -not_found: - title: Users not found - link: Users not found -nascom: - title: Nascom - link: Nascom -tag1 consulting: - title: Tag1 Consulting - link: Tag1 Consulting -freelance: - title: Freelance - link: Freelance -vit-al interactive: - title: Vit-al Interactive - link: Vit-al - Interactive -eps & kaas: - title: eps & kaas - link: eps - & kaas -skilld: - title: SkillD - link: SkillD -capgemini: - title: Capgemini - link: Capgemini -previousnext: - title: PreviousNext - link: PreviousNext -not_defined: - title: Not specified - link: Not specified -myplanet digital: - title: Myplanet Digital - link: Myplanet Digital -advomatic: - title: Advomatic - link: Advomatic -yes! training and education: - title: Yes! Training and Education - link: Yes! - Training and Education -md systems: - title: MD Systems - link: MD Systems -psegno: - title: psegno - link: psegno -square63: - title: Square63 - link: Square63 -digital echidna: - title: Digital Echidna - link: Digital Echidna -lullabot: - title: Lullabot - link: Lullabot -wunderkraut: - title: Wunderkraut - link: - Wunderkraut -drunomics: - title: drunomics - link: drunomics -cocomore ag: - title: Cocomore AG - link: Cocomore AG -openconcept consulting inc.: - title: OpenConcept Consulting Inc. - link: OpenConcept Consulting Inc. -joel pittet code & design: - title: Joel Pittet Code & Design - link: Joel - Pittet Code & Design -poplar productivityware: - title: Poplar ProductivityWare - link: Poplar ProductivityWare -one agency: - title: ONE Agency - link: ONE Agency -examiner.com: - title: Examiner.com - link: Examiner.com -epiqo: - title: epiqo - link: epiqo -propeople: - title: Propeople - link: Propeople -self: - title: self - link: self -nbcuniversal: - title: NBCUniversal - link: NBCUniversal -the nerdery: - title: The Nerdery - link: The - Nerdery -ymbra: - title: Ymbra - link: Ymbra -jeneration web development: - title: Jeneration Web Development - link: Jeneration Web Development -asaleo jsc: - title: ASALEO jsc - link: ASALEO - jsc -commerce guys: - title: Commerce Guys - link: Commerce Guys -ueberbit gmbh: - title: UEBERBIT GmbH - link: UEBERBIT GmbH -attiks: - title: Attiks - link: Attiks -ideup!: - title: ideup! - link: ideup! -mtech, llc: - title: MTech, LLC - link: MTech, LLC -opensourcery: - title: OpenSourcery - link: OpenSourcery -codework designs: - title: CODEwork Designs - link: CODEwork - Designs -godel: - title: Godel - link: Godel -code enigma: - title: Code Enigma - link: Code Enigma -palantir.net: - title: Palantir.net - link: Palantir.net -freelancer: - title: freelancer - link: freelancer -classic graphics: - title: Classic Graphics - link: Classic - Graphics -amazee labs: - title: Amazee Labs - link: Amazee Labs -reload!: - title: Reload! - link: Reload! -webikon: - title: Webikon - link: Webikon -berlingske media a/s: - title: Berlingske Media A/S - link: Berlingske - Media A/S -rock creek strategic marketing: - title: Rock Creek Strategic Marketing - link: Rock - Creek Strategic Marketing -diputació de barcelona: - title: Diputació de Barcelona - link: Diputació - de Barcelona -apqc: - title: APQC - link: APQC -wisconsin public radio: - title: Wisconsin Public Radio - link: Wisconsin - Public Radio -mediacurrent: - title: Mediacurrent - link: Mediacurrent -ci-services - jan und sven lauer gbr: - title: CI-Services - Jan und Sven Lauer GbR - link: CI-Services - Jan und Sven Lauer GbR -tilt factory: - title: tilt factory - link: tilt - factory -aten design group: - title: Aten Design Group - link: Aten Design Group -last call media: - title: Last Call Media - link: Last Call Media -phase2: - title: Phase2 - link: Phase2 -condurre, inc.: - title: Condurre, Inc. - link: Condurre, - Inc. -sensio labs uk ltd: - title: Sensio Labs UK Ltd - link: Sensio - Labs UK Ltd -blisstering solutions: - title: Blisstering Solutions - link: Blisstering Solutions -caffaro s.r.l.: - title: Caffaro S.r.l. - link: Caffaro - S.r.l. -ericsson: - title: Ericsson - link: Ericsson -build2be: - title: build2be - link: build2be -systemseed: - title: SystemSeed - link: SystemSeed -fuse interactive: - title: Fuse Interactive - link: Fuse Interactive -bluedroplet: - title: Bluedroplet - link: Bluedroplet -gosbook: - title: Gosbook - link: Gosbook -unicon.net: - title: Unicon.net - link: Unicon.net -pfizer: - title: Pfizer - link: Pfizer -bluespark: - title: Bluespark - link: Bluespark -globant: - title: Globant - link: Globant -promet solutions inc.: - title: Promet Solutions Inc. - link: Promet Solutions Inc. -annertech: - title: Annertech - link: Annertech -evolving web: - title: Evolving Web - link: Evolving Web -appliedtrust: - title: AppliedTrust - link: AppliedTrust -it patrol inc.: - title: IT Patrol inc. - link: IT Patrol inc. -metal toad media: - title: Metal Toad Media - link: Metal Toad Media -card.com: - title: CARD.com - link: CARD.com -forum one communications: - title: Forum One Communications - link: Forum One Communications -ombu: - title: OMBU - link: OMBU -chapter three: - title: Chapter Three - link: Chapter Three -bitsprout llc: - title: BitSprout LLC - link: BitSprout - LLC -intracto: - title: Intracto - link: Intracto -3281d consulting: - title: 3281d Consulting - link: 3281d - Consulting -sensiolabs: - title: SensioLabs - link: SensioLabs -a 'long tail' developer (or sasktel, if you're looking for the 'day job'): - title: A 'Long Tail' Developer (or SaskTel, if you're looking for the 'day job') - link: A - 'Long Tail' Developer (or SaskTel, if you're looking for the 'day job') -osinet: - title: OSInet - link: OSInet -ifrik: - title: ifrik - link: ifrik -srijan technologies, india: - title: Srijan Technologies, India - link: Srijan Technologies, India -tecidoweb: - title: TecidoWeb - link: TecidoWeb -dotprojects: - title: dotProjects - link: dotProjects -kenneth copeland ministries: - title: Kenneth Copeland Ministries - link: Kenneth - Copeland Ministries -google: - title: Google - link: Google -brightec: - title: Brightec - link: Brightec -new signature: - title: New Signature - link: New Signature -maloon: - title: maloon - link: maloon -disability rights education and defense fund: - title: Disability Rights Education and Defense Fund - link: Disability - Rights Education and Defense Fund -un ocha (reliefweb.int): - title: UN OCHA (reliefweb.int) - link: UN - OCHA (reliefweb.int) -national agricultural library: - title: National Agricultural Library - link: National - Agricultural Library -inlinemanual.com: - title: InlineManual.com - link: InlineManual.com -michigan state university: - title: Michigan State University - link: Michigan - State University -kosada, inc: - title: Kosada, Inc - link: Kosada, - Inc -code drop: - title: Code Drop - link: Code Drop -flink solutions: - title: flink solutions - link: flink - solutions -zivtech: - title: Zivtech - link: Zivtech -education development center: - title: Education Development Center - link: Education - Development Center -drewish.com: - title: drewish.com - link: drewish.com -snake hill: - title: Snake Hill - link: Snake Hill -agaric: - title: Agaric - link: Agaric -eutopia, mobiqos: - title: Eutopia, mobiQos - link: Eutopia, - mobiQos -family education network, pearson education: - title: Family Education Network, Pearson Education - link: Family - Education Network, Pearson Education -flatt and sons: - title: Flatt and Sons - link: Flatt - and Sons -loom gmbh: - title: LOOM GmbH - link: LOOM GmbH -undpaul: - title: undpaul - link: undpaul -midwestern mac, llc: - title: Midwestern Mac, LLC - link: Midwestern Mac, LLC -stimul.ch: - title: Stimul.ch - link: Stimul.ch -four kitchens: - title: Four Kitchens - link: Four Kitchens -merlin education: - title: Merlin Education - link: Merlin - Education -red hat: - title: Red Hat - link: Red - Hat -linagora: - title: Linagora - link: Linagora -looking for a job: - title: Looking for a job - link: Looking - for a job -exed internet: - title: EXED internet - link: EXED - internet -attestation legale: - title: Attestation Legale - link: Attestation - Legale -cti digital: - title: CTI Digital - link: CTI Digital -creative contingencies: - title: Creative Contingencies - link: Creative Contingencies -demotix: - title: Demotix - link: Demotix -comm-press: - title: comm-press - link: comm-press -reinblau: - title: reinblau - link: reinblau -pronovix: - title: Pronovix - link: Pronovix -charles river web: - title: Charles River Web - link: Charles - River Web -hewlett-packard: - title: Hewlett-Packard - link: Hewlett-Packard -screenshare training: - title: ScreenShare Training - link: ScreenShare Training -amplexor: - title: Amplexor - link: Amplexor -trellon, llc: - title: Trellon, LLC - link: Trellon, LLC -triquanta: - title: Triquanta - link: Triquanta -pixo: - title: Pixo - link: Pixo -integral vision ltd: - title: Integral Vision Ltd - link: Integral Vision Ltd -electronic frontier foundation: - title: Electronic Frontier Foundation - link: Electronic - Frontier Foundation -ucsf: - title: UCSF - link: UCSF -crowd communications group, llc: - title: Crowd Communications Group, LLC - link: Crowd - Communications Group, LLC -koumbit.org: - title: Koumbit.org - link: Koumbit.org -infinity interactive: - title: Infinity Interactive - link: Infinity - Interactive -time inc.: - title: Time Inc. - link: Time - Inc. -university of bergen: - title: University of Bergen - link: University - of Bergen -datasphere: - title: Datasphere - link: Datasphere -plantijn hogeschool: - title: Plantijn Hogeschool - link: Plantijn - Hogeschool -goethe university frankfurt: - title: Goethe University Frankfurt - link: Goethe - University Frankfurt -drupal estonia: - title: Drupal Estonia - link: Drupal - Estonia -brunello inc: - title: Brunello Inc - link: Brunello - Inc -geek röyale: - title: geek Röyale - link: geek - Röyale -tp1: - title: TP1 - link: TP1 -comic relief: - title: Comic Relief - link: Comic - Relief -knackforge soft solutions private limited: - title: KnackForge Soft Solutions Private Limited - link: KnackForge Soft Solutions Private Limited -chuva inc.: - title: Chuva Inc. - link: Chuva Inc. -commercial progression: - title: Commercial Progression - link: Commercial Progression -emergya: - title: Emergya - link: Emergya -triple smart: - title: Triple Smart - link: Triple - Smart -absyx: - title: Absyx - link: Absyx -druler: - title: Druler - link: Druler -simitive: - title: Simitive - link: Simitive -rootwork.org: - title: Rootwork.org - link: Rootwork.org -major league soccer: - title: Major League Soccer - link: Major League Soccer -mapbox / development seed: - title: MapBox / Development Seed - link: MapBox - / Development Seed -dave hall consulting: - title: Dave Hall Consulting - link: Dave - Hall Consulting -techito: - title: Techito - link: Techito -xio: - title: XIO - link: XIO -reea: - title: Reea - link: Reea -giammi gmbh: - title: Giammi GmbH - link: Giammi - GmbH -open web solutions: - title: Open Web Solutions - link: Open - Web Solutions -boran consulting sarl: - title: Boran Consulting Sarl - link: Boran - Consulting Sarl -substrate websoft: - title: Substrate Websoft - link: Substrate - Websoft -dqxtech.net / tttp.eu: - title: dqxtech.net / tttp.eu - link: dqxtech.net - / tttp.eu -boldium: - title: Boldium - link: Boldium -catalyst it: - title: Catalyst IT - link: Catalyst IT -garza web design, llc: - title: Garza Web Design, LLC - link: Garza - Web Design, LLC -uw-platteville: - title: UW-Platteville - link: UW-Platteville -christian counseling and education foundation: - title: Christian Counseling and Education Foundation - link: Christian - Counseling and Education Foundation -synodes: - title: Synodes - link: Synodes -crossfunctional: - title: CrossFunctional - link: CrossFunctional -drupalway: - title: Drupalway - link: Drupalway -qed42: - title: QED42 - link: QED42 -socha dev: - title: Socha Dev - link: Socha - Dev -alfred nutile, inc.: - title: Alfred Nutile, Inc. - link: Alfred - Nutile, Inc. -realityloop: - title: Realityloop - link: Realityloop -precedent: - title: Precedent - link: Precedent -babson college: - title: Babson College - link: Babson - College -microserve: - title: Microserve - link: Microserve -kansas state university: - title: Kansas State University - link: Kansas - State University -miles: - title: Miles - link: Miles -university of pennsylvania: - title: University of Pennsylvania - link: University - of Pennsylvania -imoney: - title: iMoney - link: iMoney -alpha web group: - title: Alpha Web Group - link: Alpha - Web Group -tui travel plc: - title: TUI Travel PLC - link: TUI - Travel PLC -freelancer, contractor: - title: Freelancer, Contractor - link: Freelancer, - Contractor -iq solutions: - title: IQ Solutions - link: IQ - Solutions -terra eclipse: - title: Terra Eclipse - link: Terra - Eclipse -dlc solutions: - title: DLC Solutions - link: DLC - Solutions -department of agriculture and food wa: - title: Department of Agriculture and Food WA - link: Department - of Agriculture and Food WA -leaping bytes: - title: Leaping Bytes - link: Leaping - Bytes -2bits.com, inc.: - title: 2bits.com, Inc. - link: 2bits.com, Inc. -dmg radio: - title: DMG Radio - link: DMG - Radio -kwall: - title: KWALL - link: KWALL -valtech: - title: Valtech - link: Valtech -osscube: - title: OSSCube - link: OSSCube -shvets group: - title: Shvets Group - link: Shvets Group -eclipse foundation: - title: Eclipse Foundation - link: Eclipse - Foundation -spartup: - title: SpartUp - link: SpartUp -bmc2: - title: BMC2 - link: BMC2 -drupal connect: - title: Drupal Connect - link: Drupal Connect -wedlinkmedia: - title: Wedlinkmedia - link: Wedlinkmedia -www.drupalmill.com: - title: www.drupalmill.com - link: www.drupalmill.com -click click click: - title: Click Click Click - link: Click - Click Click -wvu foundation: - title: WVU Foundation - link: WVU - Foundation -eye street solutions: - title: Eye Street Solutions - link: Eye - Street Solutions -adapt a/s: - title: Adapt A/S - link: Adapt A/S -antistatique: - title: Antistatique - link: Antistatique -kntnt: - title: Kntnt - link: Kntnt -unimity solutions pvt limited: - title: UniMity Solutions Pvt Limited - link: UniMity Solutions Pvt Limited -let it rock: - title: Let IT Rock - link: Let - IT Rock -common nonsense: - title: Common Nonsense - link: Common - Nonsense -go1: - title: GO1 - link: GO1 -artsmith media llc: - title: Artsmith Media LLC - link: Artsmith Media LLC -atos, pune: - title: AtoS, Pune - link: AtoS, - Pune -minimal media: - title: Minimal Media - link: Minimal Media -tekriti software: - title: Tekriti Software - link: Tekriti Software -drupal association: - title: Drupal Association - link: Drupal Association -h+w design: - title: h+w design - link: h+w design -newmedia!: - title: NewMedia! - link: NewMedia! -ci&t: - title: CI&T - link: CI&T -nuams (new amsterdam ideas): - title: Nuams (New Amsterdam Ideas) - link: Nuams (New Amsterdam Ideas) -360innovate: - title: 360innovate - link: 360innovate -chirojeugd-vlaanderen vzw: - title: Chirojeugd-Vlaanderen vzw - link: Chirojeugd-Vlaanderen - vzw -top shelf modules: - title: Top Shelf Modules - link: Top Shelf Modules -wikijob: - title: WikiJob - link: WikiJob -purkiss ltd.: - title: purkiss ltd. - link: purkiss - ltd. -bio.logis gmbh: - title: bio.logis GmbH - link: bio.logis - GmbH -cameron and wilding ltd: - title: Cameron and Wilding Ltd - link: Cameron and Wilding Ltd -shomeya inc: - title: Shomeya Inc - link: Shomeya - Inc -drupaljedi: - title: DrupalJedi - link: DrupalJedi -io1 and logrus, inc: - title: iO1 and Logrus, Inc - link: iO1 - and Logrus, Inc -brickhouse development: - title: BrickHouse Development - link: BrickHouse - Development -liip ag: - title: Liip AG - link: Liip AG -this little duck: - title: This Little Duck - link: This Little Duck -california science center: - title: California Science Center - link: California - Science Center -message agency: - title: Message Agency - link: Message - Agency -drucode: - title: Drucode - link: Drucode -achieve internet: - title: Achieve Internet - link: Achieve Internet -world economic forum: - title: World Economic Forum - link: World - Economic Forum -university of york: - title: University of York - link: University - of York -netconsult ab: - title: NetConsult AB - link: NetConsult - AB -reveal it: - title: Reveal IT - link: Reveal IT -university of colorado boulder: - title: University of Colorado Boulder - link: University - of Colorado Boulder -digitaria: - title: digitaria - link: digitaria -red bee media: - title: Red Bee Media - link: Red - Bee Media -genero digital agency: - title: Genero Digital Agency - link: Genero - Digital Agency -accenture: - title: Accenture - link: Accenture -ninjitsu web development: - title: Ninjitsu Web Development - link: Ninjitsu Web Development -pure sign: - title: Pure Sign - link: Pure Sign -door3: - title: DOOR3 - link: DOOR3 -cheppers ltd.: - title: Cheppers Ltd. - link: Cheppers Ltd. -isite design: - title: ISITE Design - link: ISITE - Design -finnovatec: - title: Finnovatec - link: Finnovatec -cooperia: - title: Cooperia - link: Cooperia -olindata bv: - title: OlinData BV - link: OlinData BV -.vdmi/: - title: .VDMi/ - link: .VDMi/ -sparks interactive: - title: Sparks Interactive - link: Sparks - Interactive -university of iowa: - title: University of Iowa - link: University - of Iowa -doña ana county, new mexico, usa: - title: Doña Ana County, New Mexico, USA - link: Doña - Ana County, New Mexico, USA -drupalsquad: - title: DrupalSquad - link: DrupalSquad -allora media: - title: Allora Media - link: Allora - Media -open source lab: - title: Open Source Lab - link: Open - Source Lab -axai: - title: Axai - link: Axai -marker seven: - title: Marker Seven - link: Marker - Seven -breakthrough technologies: - title: Breakthrough Technologies - link: Breakthrough - Technologies -frontkom: - title: frontkom - link: frontkom -licel llc: - title: Licel LLC - link: Licel - LLC -livelink new media: - title: Livelink New Media - link: Livelink - New Media -switchback: - title: Switchback - link: Switchback -actency: - title: Actency - link: Actency -azri solutions: - title: Azri Solutions - link: Azri Solutions -internet society: - title: Internet Society - link: Internet - Society -vink: - title: Vink - link: Vink -appirio: - title: Appirio - link: Appirio -music city networks: - title: Music City Networks - link: Music City Networks -mariquecalcus: - title: MARIQUECALCUS - link: MARIQUECALCUS -redfin solutions, llc: - title: Redfin Solutions, LLC - link: Redfin Solutions, LLC -quizent technologies pvt ltd: - title: Quizent Technologies Pvt Ltd - link: Quizent - Technologies Pvt Ltd -taoti: - title: Taoti - link: Taoti -cxpartners: - title: cxpartners - link: cxpartners -central european university: - title: Central European University - link: Central - European University -geobits ltd: - title: Geobits Ltd - link: Geobits - Ltd -forward-media.de: - title: forward-media.de - link: forward-media.de -kwd digital: - title: KWD Digital - link: KWD - Digital -affinity bridge: - title: Affinity Bridge - link: Affinity - Bridge -enjoy creativity: - title: Enjoy Creativity - link: Enjoy Creativity -tinymcesupport.com: - title: TinymceSupport.com - link: TinymceSupport.com -top right group: - title: Top Right Group - link: Top - Right Group -independent adoption center: - title: Independent Adoption Center - link: Independent - Adoption Center -wizone solutions: - title: WizOne Solutions - link: WizOne - Solutions -cleverway: - title: Cleverway - link: Cleverway -orange digital ltd: - title: Orange Digital Ltd - link: Orange - Digital Ltd -dagbladet information: - title: Dagbladet Information - link: Dagbladet - Information -independent: - title: Independent - link: Independent -saint mary's college of california: - title: Saint Mary's College of California - link: Saint - Mary's College of California -rei systems: - title: REI Systems - link: REI - Systems -ygl consulting: - title: YGL Consulting - link: YGL - Consulting -digital bridge solutions: - title: Digital Bridge Solutions - link: Digital - Bridge Solutions -digital garden: - title: Digital Garden - link: Digital - Garden -government of canada - statistics canada: - title: Government of Canada - Statistics Canada - link: Government - of Canada - Statistics Canada -pink triangle press: - title: Pink Triangle Press - link: Pink - Triangle Press -intel: - title: Intel - link: Intel -dbc a/s: - title: DBC A/S - link: DBC - A/S -ny media as: - title: Ny Media AS - link: Ny - Media AS -srm: - title: SRM - link: SRM -intense communications network: - title: Intense Communications Network - link: Intense - Communications Network -airadvice: - title: AirAdvice - link: AirAdvice -independent software developer: - title: Independent software developer - link: Independent - software developer -thinkshout: - title: ThinkShout - link: ThinkShout -cleveland state university: - title: Cleveland State University - link: Cleveland - State University -purencool website development: - title: Purencool Website Development - link: Purencool - Website Development -integral vision ltd.: - title: Integral Vision Ltd. - link: Integral - Vision Ltd. -mindcore: - title: Mindcore - link: Mindcore -lildrop consulting: - title: LilDrop Consulting - link: LilDrop - Consulting -dzlv: - title: DZLV - link: DZLV -guanxin | design+development: - title: Guanxin | Design+Development - link: Guanxin - | Design+Development -burujabetech: - title: burujabetech - link: burujabetech -designhammer: - title: DesignHammer - link: DesignHammer -colugo: - title: colugo - link: colugo -digibrij: - title: Digibrij - link: Digibrij -oseds: - title: OSEDS - link: OSEDS -blue tent marketing: - title: Blue Tent Marketing - link: Blue - Tent Marketing -qualcomm: - title: Qualcomm - link: Qualcomm -icf international: - title: ICF International - link: ICF International -echoditto: - title: EchoDitto - link: EchoDitto -philipp-schaffner.com: - title: PHILIPP-SCHAFFNER.COM - link: PHILIPP-SCHAFFNER.COM -bidx: - title: BiDx - link: BiDx -bluehost: - title: BlueHost - link: BlueHost -6 mile tech: - title: 6 Mile Tech - link: 6 Mile Tech -fh flensburg / wechselwirkung: - title: FH Flensburg / Wechselwirkung - link: FH - Flensburg / Wechselwirkung -blink reaction: - title: Blink Reaction - link: Blink Reaction -oregon state university: - title: Oregon State University - link: Oregon - State University -clarity innovations, inc.: - title: Clarity Innovations, Inc. - link: Clarity - Innovations, Inc. -tvo: - title: TVO - link: TVO -brian green consultancy cic/uk ltd: - title: Brian Green Consultancy CIC/UK Ltd - link: Brian - Green Consultancy CIC/UK Ltd -pheromone: - title: Pheromone - link: Pheromone -western governors university: - title: Western Governors University - link: Western - Governors University -aristotle select: - title: Aristotle Select - link: Aristotle - Select -louisville web group: - title: Louisville Web Group - link: Louisville - Web Group -hubert burda media: - title: Hubert Burda Media - link: Hubert - Burda Media -princeton university library: - title: Princeton University Library - link: Princeton - University Library -alter way: - title: Alter Way - link: Alter - Way -electric citizen: - title: Electric Citizen - link: Electric Citizen -jbs international, inc.: - title: JBS International, Inc. - link: JBS - International, Inc. -california academy of sciences: - title: California Academy of Sciences - link: California - Academy of Sciences -umass amherst: - title: UMass Amherst - link: UMass - Amherst -self employed: - title: Self employed - link: Self - employed -new target: - title: New Target - link: New - Target -popolo: - title: Popolo - link: Popolo -fuzz productions: - title: Fuzz Productions - link: Fuzz - Productions -allplayers.com: - title: AllPlayers.com - link: AllPlayers.com -martha stewart living omnimedia: - title: Martha Stewart Living Omnimedia - link: Martha - Stewart Living Omnimedia -catch digital: - title: Catch Digital - link: Catch Digital -montenasoft: - title: MontenaSoft - link: MontenaSoft -sage tree solutions: - title: Sage Tree Solutions - link: Sage Tree Solutions -centresource interactive agency: - title: Centresource Interactive Agency - link: Centresource Interactive Agency -sift digital: - title: Sift Digital - link: Sift Digital -devengineering inc: - title: devEngineering Inc - link: devEngineering Inc -clever-systems.net, machbarmacher, reinblau: - title: Clever-Systems.net, Machbarmacher, Reinblau - link: Clever-Systems.net, - Machbarmacher, Reinblau -new leaf digital, antiquesnearme.com: - title: New Leaf Digital, AntiquesNearMe.com - link: New - Leaf Digital, AntiquesNearMe.com -elephant ventures: - title: Elephant Ventures - link: Elephant - Ventures -fleetthought: - title: FleetThought - link: FleetThought -wavecloud: - title: WaveCloud - link: WaveCloud -sublime technologies: - title: Sublime Technologies - link: Sublime - Technologies -origin eight: - title: Origin Eight - link: Origin Eight -faichi solutions pvt ltd.: - title: Faichi Solutions Pvt Ltd. - link: Faichi - Solutions Pvt Ltd. -kodamera ab: - title: Kodamera AB - link: Kodamera AB -arizona state university: - title: Arizona State University - link: Arizona - State University -public works and government services canada: - title: Public Works and Government Services Canada - link: Public - Works and Government Services Canada -inclind inc: - title: Inclind Inc - link: Inclind Inc -university of washington: - title: University of Washington - link: University - of Washington -traktek partners: - title: Traktek Partners - link: Traktek - Partners -texas creative: - title: Texas Creative - link: Texas Creative -glo digital: - title: Glo Digital - link: Glo Digital -common media, inc: - title: Common Media, Inc - link: Common - Media, Inc -codeloom: - title: codeloom - link: codeloom -community forge: - title: Community Forge - link: Community - Forge -lastminute.com: - title: Lastminute.COM - link: Lastminute.COM -internetdevels: - title: InternetDevels - link: InternetDevels -ownsourcing: - title: OwnSourcing - link: OwnSourcing -florida hospital: - title: Florida Hospital - link: Florida - Hospital -rock river star: - title: Rock River Star - link: Rock - River Star -jenkins law library: - title: Jenkins Law Library - link: Jenkins - Law Library -justin kelly (self employed): - title: Justin Kelly (self employed) - link: Justin - Kelly (self employed) -georgia tech: - title: Georgia Tech - link: Georgia - Tech -fureigh consulting and civicactions: - title: Fureigh Consulting and CivicActions - link: Fureigh - Consulting and CivicActions -jysk: - title: Jysk - link: Jysk -yuba studios: - title: Yuba Studios - link: Yuba - Studios -hecho en drupal: - title: Hecho en Drupal - link: Hecho - en Drupal -institute for advanced study: - title: Institute for Advanced Study - link: Institute - for Advanced Study -college of william & mary: - title: College of William & Mary - link: College - of William & Mary -chocolate lily: - title: Chocolate Lily - link: Chocolate Lily -faichi solutions pvt ltd: - title: Faichi Solutions Pvt Ltd - link: Faichi - Solutions Pvt Ltd -apigee: - title: Apigee - link: Apigee -antolabs: - title: AntoLabs - link: AntoLabs -agence propal: - title: Agence Propal - link: Agence Propal -vardot: - title: Vardot - link: Vardot -british council: - title: British Council - link: British - Council -agavee: - title: Agavee - link: Agavee -crowd-creation ug (haftungsbeschränkt): - title: crowd-creation UG (haftungsbeschränkt) - link: crowd-creation UG (haftungsbeschränkt) -xcubicle: - title: xCubicle - link: xCubicle -elonisas: - title: ELONISAS - link: ELONISAS -pixel onion pte ltd: - title: Pixel Onion Pte Ltd - link: Pixel Onion Pte Ltd -rooty hollow: - title: Rooty Hollow - link: Rooty - Hollow -hannemyr nye medier as: - title: Hannemyr Nye Medier AS - link: Hannemyr - Nye Medier AS -plexitynet: - title: PlexityNet - link: PlexityNet -exact target: - title: Exact Target - link: Exact - Target -druid: - title: Druid - link: Druid -the new group: - title: The New Group - link: The - New Group -bright solutions gmbh: - title: Bright Solutions GmbH - link: Bright Solutions GmbH -dallas museum of art: - title: Dallas Museum of Art - link: Dallas - Museum of Art -kosada: - title: Kosada - link: Kosada -contemporary fusion computer services limited: - title: Contemporary Fusion Computer Services Limited - link: Contemporary - Fusion Computer Services Limited -dosomething.org: - title: DoSomething.org - link: DoSomething.org -crown: - title: Crown - link: Crown -faichi solutions pvt. ltd: - title: Faichi Solutions PVT. LTD - link: Faichi - Solutions PVT. LTD -axxes: - title: Axxes - link: Axxes -common nonsense ltd: - title: Common Nonsense Ltd - link: Common - Nonsense Ltd -daily racing form: - title: Daily Racing Form - link: Daily - Racing Form -self-contracting: - title: self-contracting - link: self-contracting -webinform kft.: - title: WebInform Kft. - link: WebInform - Kft. -digital deployment, inc.: - title: Digital Deployment, Inc. - link: Digital - Deployment, Inc. -morpht: - title: Morpht - link: Morpht -paragon executive services gmbh: - title: PARAGON Executive Services GmbH - link: PARAGON - Executive Services GmbH -aeopus: - title: Aeopus - link: Aeopus -western michigan university: - title: Western Michigan University - link: Western - Michigan University -atlarge: - title: atLarge - link: atLarge -moorfields eye hospital: - title: Moorfields Eye Hospital - link: Moorfields - Eye Hospital -kanuschule versam: - title: Kanuschule Versam - link: Kanuschule - Versam -anexus it: - title: Anexus IT - link: Anexus IT -rocom solutions limited: - title: Rocom Solutions Limited - link: Rocom - Solutions Limited -zyxware technologies: - title: Zyxware Technologies - link: Zyxware Technologies -civicactions: - title: CivicActions - link: CivicActions -kybest: - title: KYbest - link: KYbest -lliures.cat: - title: Lliures.cat - link: Lliures.cat -august ash inc.: - title: August Ash Inc. - link: August - Ash Inc. -northpoint: - title: NorthPoint - link: NorthPoint -high rock media: - title: High Rock Media - link: High - Rock Media -springer publishing company: - title: Springer Publishing Company - link: Springer - Publishing Company -blue-bag ltd: - title: Blue-Bag Ltd - link: Blue-Bag - Ltd -university of hawai'i at manoa: - title: University of Hawai'i at Manoa - link: University - of Hawai'i at Manoa -wellnet s.r.l.: - title: WELLNET S.r.l. - link: WELLNET S.r.l. -mcneese state university: - title: McNeese State University - link: McNeese - State University -rufzeichen webdesign: - title: rufzeichen Webdesign - link: rufzeichen Webdesign -gluky group: - title: Gluky Group - link: Gluky - Group -pantheon systems: - title: Pantheon Systems - link: Pantheon - Systems -jp result: - title: JP Result - link: JP - Result -atd travel services: - title: ATD Travel Services - link: ATD - Travel Services -previon plus ag: - title: Previon Plus AG - link: Previon - Plus AG -five mile media: - title: Five Mile Media - link: Five - Mile Media -data in transit: - title: Data in Transit - link: Data in Transit -bantanova: - title: Bantanova - link: Bantanova -inner file software: - title: Inner File Software - link: Inner - File Software -vela solaris ag: - title: Vela Solaris AG - link: Vela - Solaris AG -us department of education - office of federal student aid: - title: US Department of Education - Office of Federal Student Aid - link: US - Department of Education - Office of Federal Student Aid -torchbox ltd: - title: Torchbox Ltd - link: Torchbox - Ltd -workhabit inc: - title: Workhabit Inc - link: Workhabit - Inc -fiercemarkets: - title: FierceMarkets - link: FierceMarkets -yale university: - title: Yale University - link: Yale - University -extensible catalog organization: - title: eXtensible Catalog Organization - link: eXtensible - Catalog Organization -western ascent, inc: - title: Western Ascent, Inc - link: Western Ascent, Inc -bits 'n bolts: - title: Bits 'n Bolts - link: Bits - 'n Bolts -archer software: - title: Archer software - link: Archer - software -the economist: - title: The Economist - link: The - Economist -open development limited: - title: Open Development Limited - link: Open - Development Limited -holistic systems: - title: Holistic Systems - link: Holistic - Systems -oxide interactive: - title: Oxide Interactive - link: Oxide - Interactive -brainbender.org - my portfolio website: - title: Brainbender.org - My Portfolio Website - link: Brainbender.org - - My Portfolio Website -mcgill university: - title: McGill University - link: McGill - University -redweb s.r.o.: - title: RedWeb s.r.o. - link: RedWeb - s.r.o. -mystic lake casino & hotel: - title: Mystic Lake Casino & Hotel - link: Mystic - Lake Casino & Hotel -boyle software: - title: Boyle Software - link: Boyle - Software -network limited: - title: Network Limited - link: Network - Limited -4site interactive studios: - title: 4Site Interactive Studios - link: 4Site - Interactive Studios -chocchip digital: - title: ChocChip Digital - link: ChocChip - Digital -praxis labs coop: - title: Praxis Labs Coop - link: Praxis Labs Coop -digital bungalow: - title: Digital Bungalow - link: Digital - Bungalow -imagex: - title: ImageX - link: ImageX -ruijsenaars development: - title: Ruijsenaars Development - link: Ruijsenaars - Development -xplain hosting: - title: Xplain Hosting - link: Xplain Hosting -factionw: - title: FactionW - link: FactionW -squishymedia: - title: Squishymedia - link: Squishymedia -daycrom software factory - www.daycrom.com: - title: Daycrom Software Factory - www.daycrom.com - link: Daycrom - Software Factory - www.daycrom.com -linnovate: - title: Linnovate - link: Linnovate -techreprieve: - title: TechReprieve - link: TechReprieve -nemein: - title: Nemein - link: Nemein -chromatic: - title: CHROMATIC - link: CHROMATIC -connect-i: - title: Connect-i - link: Connect-i -inflowmotion: - title: inflowmotion - link: inflowmotion -wyz: - title: Wyz - link: Wyz -american media inc: - title: American Media Inc - link: American - Media Inc -youthbuild usa: - title: YouthBuild USA - link: YouthBuild - USA -isovera: - title: Isovera - link: Isovera -arkic: - title: arkic - link: arkic -mogdesign: - title: Mogdesign - link: Mogdesign -squaretrade: - title: SquareTrade - link: SquareTrade -city of olathe, ks: - title: City of Olathe, KS - link: City - of Olathe, KS -quax(r) medien- und verlagsagentur gmbh: - title: Quax(r) Medien- und Verlagsagentur GmbH - link: Quax(r) - Medien- und Verlagsagentur GmbH -highlights: - title: Highlights - link: Highlights -2020 company: - title: 2020 Company - link: 2020 - Company -jagriti innovations: - title: Jagriti Innovations - link: Jagriti Innovations -lawrence university: - title: Lawrence University - link: Lawrence - University -heydon consulting: - title: Heydon Consulting - link: Heydon - Consulting -cal state monterey bay: - title: Cal State Monterey Bay - link: Cal - State Monterey Bay -merge: - title: Merge - link: Merge -ixis it: - title: Ixis IT - link: Ixis IT -detroit venture partners: - title: Detroit Venture Partners - link: Detroit - Venture Partners -monarch digital: - title: Monarch Digital - link: Monarch Digital -lingotek: - title: Lingotek - link: Lingotek -live axle llc: - title: Live Axle LLC - link: Live - Axle LLC -pg installasjon: - title: PG Installasjon - link: PG - Installasjon -integrated microelectronics inc.: - title: Integrated Microelectronics Inc. - link: Integrated - Microelectronics Inc. -riot games: - title: Riot Games - link: Riot - Games -allegro group: - title: Allegro Group - link: Allegro - Group -dspeak: - title: dSpeak - link: dSpeak -bioworld products: - title: BioWorld Products - link: BioWorld - Products -code culture: - title: Code Culture - link: Code - Culture -innoraft: - title: Innoraft - link: Innoraft -osseed technologies: - title: OSSeed Technologies - link: OSSeed Technologies -recidive networks: - title: Recidive Networks - link: Recidive Networks -birbl.com: - title: Birbl.com - link: Birbl.com -duke university: - title: Duke University - link: Duke - University -exaltation of larks: - title: Exaltation of Larks - link: Exaltation of Larks -internet simplicity: - title: Internet Simplicity - link: Internet - Simplicity -aclu: - title: ACLU - link: ACLU -superstar media: - title: SuperStar Media - link: SuperStar - Media -rhea systems: - title: Rhea Systems - link: Rhea - Systems -fedict - belgian federal public service ict: - title: Fedict - Belgian Federal Public Service ICT - link: Fedict - - Belgian Federal Public Service ICT -sean dunaway llc: - title: Sean Dunaway LLC - link: Sean - Dunaway LLC -torchbox: - title: Torchbox - link: Torchbox -radiant blue technologies: - title: Radiant Blue Technologies - link: Radiant - Blue Technologies -portable studios: - title: Portable Studios - link: Portable Studios -favish: - title: Favish - link: Favish -riancallahan.com: - title: riancallahan.com - link: riancallahan.com -opencurriculum: - title: OpenCurriculum - link: OpenCurriculum -increnta.com: - title: Increnta.com - link: Increnta.com -madcap: - title: Madcap - link: Madcap -pingv: - title: PINGV - link: PINGV -delicious creative: - title: Delicious Creative - link: Delicious - Creative -commercify.it: - title: Commercify.it - link: Commercify.it -zengenuity: - title: Zengenuity - link: Zengenuity -heehaw digital: - title: Heehaw Digital - link: Heehaw - Digital -columbia law school: - title: Columbia Law School - link: Columbia - Law School -impronta: - title: iMpronta - link: iMpronta -mediehuset ingeniøren a/s: - title: Mediehuset Ingeniøren A/S - link: Mediehuset Ingeniøren A/S -kollegorna: - title: Kollegorna - link: Kollegorna -stupil: - title: Stupil - link: Stupil -atomic ant ltd: - title: Atomic Ant Ltd - link: Atomic - Ant Ltd -webpartners: - title: WebPartners - link: WebPartners -peytz & co.: - title: Peytz & Co. - link: Peytz - & Co. -genuine interactive: - title: Genuine Interactive - link: Genuine - Interactive -wizzlern: - title: wizzlern - link: wizzlern -lewis nyman design ltd: - title: Lewis Nyman Design ltd - link: Lewis - Nyman Design ltd -yogarik: - title: Yogarik - link: Yogarik -cherry hill company: - title: Cherry Hill Company - link: Cherry Hill Company -themery: - title: Themery - link: Themery -oysterlabs: - title: OysterLabs - link: OysterLabs -ustima: - title: Ustima - link: Ustima -o&p digital technologies: - title: O&P Digital Technologies - link: O&P - Digital Technologies -limoengroen: - title: LimoenGroen - link: LimoenGroen -competa it: - title: Competa IT - link: Competa - IT -freelancing: - title: Freelancing - link: Freelancing -softartisans: - title: SoftArtisans - link: SoftArtisans -immobilier stock exchange: - title: Immobilier Stock Exchange - link: Immobilier - Stock Exchange -trasys: - title: Trasys - link: Trasys -tableau software: - title: Tableau Software - link: Tableau - Software -vaiste productions oy: - title: Vaiste Productions Oy - link: Vaiste Productions Oy -gizra: - title: Gizra - link: Gizra -makina corpus: - title: Makina Corpus - link: Makina Corpus -wdg: - title: WDG - link: WDG -ncode: - title: nCode - link: nCode -university of new brunswick: - title: University of New Brunswick - link: University - of New Brunswick -mongodb: - title: MongoDB - link: MongoDB -stryker enterprise: - title: Stryker Enterprise - link: Stryker Enterprise -npr: - title: NPR - link: NPR -ferratum: - title: Ferratum - link: Ferratum -arher software: - title: Arher Software - link: Arher - Software -amgrade: - title: AMgrade - link: AMgrade -softec spa: - title: Softec Spa - link: Softec - Spa -zen doodles inc: - title: Zen Doodles Inc - link: Zen Doodles Inc -adsupply: - title: AdSupply - link: AdSupply -ezcompany: - title: ezCompany - link: ezCompany -origineight: - title: OriginEight - link: OriginEight -western washington university: - title: Western Washington University - link: Western - Washington University -krimson: - title: Krimson - link: Krimson -proximity london: - title: Proximity London - link: Proximity - London -ingram innovation: - title: Ingram Innovation - link: Ingram - Innovation -packweb: - title: PackWeb - link: PackWeb -3-gis: - title: 3-GIS - link: 3-GIS -deeson online: - title: Deeson Online - link: Deeson Online -nia technique, inc.: - title: Nia Technique, Inc. - link: Nia - Technique, Inc. -webizat: - title: Webizat - link: Webizat -awave ab: - title: Awave AB - link: Awave - AB -dsfederal: - title: DSFederal - link: DSFederal -datascape: - title: Datascape - link: Datascape -tektronix: - title: Tektronix - link: Tektronix -dan chadwick consulting / kindred cocktails: - title: Dan Chadwick Consulting / Kindred Cocktails - link: Dan - Chadwick Consulting / Kindred Cocktails -nvision: - title: nvision - link: nvision -getpantheon: - title: GetPantheon - link: GetPantheon -combell group nv: - title: Combell Group NV - link: Combell - Group NV -wiredpea: - title: WiredPea - link: WiredPea -res telæ: - title: Res Telæ - link: Res - Telæ -photon infotech: - title: Photon Infotech - link: Photon - Infotech -lucks digital, inc.: - title: Lucks Digital, Inc. - link: Lucks - Digital, Inc. -shenzhen computer services: - title: Shenzhen Computer Services - link: Shenzhen - Computer Services -hochschule karlsruhe - technik und wirtschaft: - title: Hochschule Karlsruhe - Technik und Wirtschaft - link: Hochschule - Karlsruhe - Technik und Wirtschaft -art of living/iahv: - title: Art Of Living/IAHV - link: Art - Of Living/IAHV -blackmesh: - title: BlackMesh - link: BlackMesh -flink: - title: flink - link: flink -odd hill: - title: Odd Hill - link: Odd Hill -appneta: - title: AppNeta - link: AppNeta -alfresco: - title: Alfresco - link: Alfresco -odense centralbibliotek (library): - title: Odense Centralbibliotek (library) - link: Odense - Centralbibliotek (library) -insready inc. (引锐信息科技有限公司): - title: INsReady Inc. (引锐信息科技有限公司) - link: INsReady Inc. (引锐信息科技有限公司) -thoughtworks: - title: Thoughtworks - link: Thoughtworks -pixelpark ag: - title: Pixelpark AG - link: Pixelpark - AG -your source: - title: Your Source - link: Your Source -ausy/dataflow: - title: Ausy/DataFlow - link: Ausy/DataFlow -harvest software solutions: - title: Harvest Software Solutions - link: Harvest - Software Solutions -aktek: - title: AKTEK - link: AKTEK -state of mn: - title: State of MN - link: State - of MN -dilygent: - title: Dilygent - link: Dilygent -episcopal diocese of long island: - title: Episcopal Diocese of Long Island - link: Episcopal - Diocese of Long Island -idynamic: - title: IDYNAMIC - link: IDYNAMIC -sabancı university: - title: Sabancı University - link: Sabancı - University -cabinet office: - title: Cabinet Office - link: Cabinet - Office -smile: - title: Smile - link: Smile -coldfront labs inc.: - title: Coldfront Labs Inc. - link: Coldfront Labs Inc. -triodor software: - title: Triodor Software - link: Triodor - Software -blackstone technology group: - title: Blackstone Technology Group - link: Blackstone - Technology Group -kontextwork: - title: KontextWork - link: KontextWork -endless summer gmbh: - title: Endless Summer GmbH - link: Endless - Summer GmbH -softheme: - title: Softheme - link: Softheme -caddyx: - title: CaddyX - link: CaddyX -mallard service, inc: - title: Mallard Service, Inc - link: Mallard - Service, Inc -devia: - title: Devia - link: Devia -university of waterloo: - title: University of Waterloo - link: University - of Waterloo -agence inovae: - title: Agence Inovae - link: Agence Inovae -brightlemon ltd: - title: BrightLemon Ltd - link: BrightLemon - Ltd -io1 limited: - title: iO1 Limited - link: iO1 Limited -web wash media: - title: Web Wash Media - link: Web - Wash Media -computerminds: - title: ComputerMinds - link: ComputerMinds -adaptivethemes: - title: Adaptivethemes - link: Adaptivethemes -university of california davis - information and educational technology: - title: University of California Davis - Information and Educational Technology - link: University - of California Davis - Information and Educational Technology -kafei interactive inc.: - title: Kafei Interactive Inc. - link: Kafei - Interactive Inc. -hook 42: - title: Hook 42 - link: Hook - 42 -state university of new york @ geneseo: - title: State University of New York @ Geneseo - link: State - University of New York @ Geneseo -sopra group: - title: Sopra Group - link: Sopra - Group -motor productions: - title: Motor Productions - link: Motor - Productions -double prime: - title: Double Prime - link: Double - Prime -io1: - title: iO1 - link: iO1 -resonetrics, llc: - title: Resonetrics, LLC - link: Resonetrics, LLC -thinkdrop consulting: - title: ThinkDrop Consulting - link: ThinkDrop - Consulting -intelliswift: - title: Intelliswift - link: Intelliswift -! ']init[ ag for digital communication': - title: ! ']init[ AG for Digital Communication' - link: ]init[ - AG for Digital Communication -drs: - title: DRS - link: DRS -netiva: - title: Netiva - link: Netiva -xinjiang agricultural university: - title: Xinjiang Agricultural University - link: Xinjiang - Agricultural University -monsoon consulting: - title: Monsoon Consulting - link: Monsoon - Consulting -visual obsession: - title: Visual Obsession - link: Visual - Obsession -one shoe: - title: One Shoe - link: One Shoe -media done right: - title: Media Done Right - link: Media - Done Right -webschuur.com: - title: webschuur.com - link: webschuur.com -me (artdeptdedesign.com): - title: me (artdeptdedesign.com) - link: me - (artdeptdedesign.com) -brandopoly: - title: Brandopoly - link: Brandopoly -happiness: - title: Happiness - link: Happiness -cando: - title: Cando - link: Cando -axelerant: - title: Axelerant - link: Axelerant -entityone: - title: EntityOne - link: EntityOne -code your dream: - title: Code Your Dream - link: Code Your Dream -vanilla devs llc: - title: Vanilla Devs LLC - link: Vanilla - Devs LLC -dream production: - title: Dream Production - link: Dream Production -ivimeycom: - title: IvimeyCom - link: IvimeyCom -epam systems: - title: EPAM Systems - link: EPAM Systems -access-interactive: - title: Access-Interactive - link: Access-Interactive -initfour websolutions: - title: Initfour websolutions - link: Initfour - websolutions -tv2 denmark: - title: TV2 Denmark - link: TV2 - Denmark -full fat things: - title: Full Fat Things - link: Full - Fat Things -coderblvd: - title: CoderBlvd - link: CoderBlvd -kanooh: - title: Kanooh - link: Kanooh -chronos interactive media: - title: Chronos Interactive Media - link: Chronos Interactive Media -itc, municipality of aarhus: - title: ITC, Municipality of Aarhus - link: ITC, - Municipality of Aarhus -itk, aarhus kommune: - title: ITK, Aarhus Kommune - link: ITK, - Aarhus Kommune -up key: - title: Up Key - link: Up - Key -meedan: - title: Meedan - link: Meedan -daffodil software ltd.: - title: Daffodil Software Ltd. - link: Daffodil Software Ltd. -http://thebigbluehouse.com: - title: http://thebigbluehouse.com - link: http://thebigbluehouse.com -norway opening universities: - title: Norway Opening Universities - link: Norway - Opening Universities diff --git a/company_mapping.yml b/company_mapping.yml deleted file mode 100644 index a31e12b1b5..0000000000 --- a/company_mapping.yml +++ /dev/null @@ -1,1813 +0,0 @@ ---- -tim.plunkett: stanford university -dawehner: erdfisch -damiankloip: acquia -xjm: acquia -sun: unleashed mind -berdir: md systems -gabor_hojtsy: acquia -aspilicious: nascom -chx: tag1 consulting -amateescu: freelance -alexpott: vit-al interactive -swentel: eps & kaas -nod_: acquia -effulgentsia: acquia -wim leers: acquia -andypost: skilld -vijaycs85: capgemini -larowlan: previousnext -robloach: myplanet digital -yesct: yes! training and education -david_rothstein: advomatic -parisliakos: not_defined -yched: not_defined -droplet: not_defined -pwolanin: acquia -jessebeach: acquia -catch: tag1 consulting -plach: psegno -cottser: digital echidna -jibran: square63 -tstoeckler: not_defined -disasm: not_defined -beejeebus: not_defined -xano: not_defined -pillarsdotnet: not_defined -acf: not_defined -fubhy: not_defined -bfroehle: not_defined -internetdevels: not_defined -echoz: not_defined -legolasbo: not_defined -joachim: not_defined -pancho: not_defined -c4rl: not_defined -chrisjlee: not_defined -longwave: not_defined -rocket_nova: not_defined -pwieck: not_defined -lyricnz: not_defined -kathyh: not_defined -nathangervais: not_defined -rhm50: not_defined -falcon03: not_defined -pounard: not_defined -mjonesdinero: not_defined -gaelan: not_defined -barbi: not_defined -phenaproxima: not_defined -hass: not_defined -foopang: not_defined -karschsp: not_defined -mondrake: not_defined -socketwench: not_defined -no_commit_credit: not_defined -nonprofit: not_defined -hydra: not_defined -zschmid: not_defined -herom: not_defined -smiro: not_defined -theladebug: not_defined -kenianbei: not_defined -fietserwin: not_defined -mitron: not_defined -gnuget: not_defined -casey: not_defined -brianv: not_defined -superspring: not_defined -twistor: not_defined -dcrocks: not_defined -marvil07: not_defined -marthinal: not_defined -znerol: not_defined -n3or: not_defined -danylevskyi: not_defined -stalski: not_defined -jlindsey15: not_defined -mjohnq3: not_defined -adamcowboy: not_defined -samvel: not_defined -deneo: not_defined -mbrett5062: not_defined -likin: not_defined -theborg: not_defined -stevel: not_defined -sandhya.m: not_defined -keichee: not_defined -ronan.orb: not_defined -makara: not_defined -beowulf1416: not_defined -jesse.d: not_defined -bforchhammer: not_defined -2ndmile: not_defined -ekes: not_defined -jrchamp: not_defined -alexander.ilivanov: not_defined -elachlan: not_defined -mitchell: not_defined -rlmumford: not_defined -rahuldolas123: not_defined -julien: not_defined -tarekdj: not_defined -phiit: not_defined -manningpete: not_defined -somepal: not_defined -aroq: not_defined -salvis: not_defined -gdf: not_defined -mdrummond: not_defined -moe4715: not_defined -hugo.lallo: not_defined -connork: not_defined -lund.mikkel: not_defined -osopolar: not_defined -ericthelast: not_defined -jvns: not_defined -johnv: not_defined -greg.1.anderson: not_defined -spearhead93: not_defined -naveenvalecha: not_defined -vegantriathlete: not_defined -joe9: not_defined -pmelab: not_defined -mari3.14: not_defined -vito_a: not_defined -joates: not_defined -maxis: not_defined -kkaefer: not_defined -rgristroph: not_defined -jerdavis: not_defined -laurentchardin: not_defined -jensimmons: not_defined -balagan: not_defined -transition: not_defined -tankerjoe: not_defined -mdm: not_defined -mariacha1: not_defined -edrupal: not_defined -jvc26: not_defined -krishworks: not_defined -bartlantz: not_defined -helga.chb: not_defined -helenkim: not_defined -ekl1773: not_defined -k4v: not_defined -jdefay: not_defined -kenneth.venken: not_defined -mariusz.slonina: not_defined -brunodbo: not_defined -ohnobinki: not_defined -isay: not_defined -ancamp: not_defined -shixish: not_defined -hansfn: not_defined -guregori: not_defined -royal121: not_defined -areke: not_defined -udaksh: not_defined -montesq: not_defined -adrinux: not_defined -deviance: not_defined -cha0s: not_defined -lilou: not_defined -nanotube: not_defined -8thom: not_defined -nicholaspaun: not_defined -babbage: not_defined -daniels220: not_defined -musicnode: not_defined -davidwhthomas: not_defined -jpsoto: not_defined -scorchio: not_defined -remon: not_defined -willmoy: not_defined -mikestefff: not_defined -theduke: not_defined -dotoree: not_defined -robmc: not_defined -izmeez: not_defined -ruloweb: not_defined -petrpo: not_defined -dsnopek: not_defined -yhahn: not_defined -nikhilasrani: not_defined -monochrome: not_defined -mojzis: not_defined -jamesk: not_defined -c4doug: not_defined -asimmonds: not_defined -fjd: not_defined -brockjo: not_defined -azinoman: not_defined -ditcheva: not_defined -mhagedon: not_defined -jaskho: not_defined -sjbassett: not_defined -arlinsandbulte: not_defined -marcin.wosinek: not_defined -mikewink: not_defined -siccababes: not_defined -sphism: not_defined -nikkubhai: not_defined -jox: not_defined -billk2: not_defined -prabhug: not_defined -gary4gar: not_defined -esunger: not_defined -brad.bulger: not_defined -bshaffer: not_defined -lotyrin: not_defined -recrit: not_defined -seddonym: not_defined -solotandem: not_defined -yashadev: not_defined -brentaar: not_defined -cperg: not_defined -mototribe: not_defined -ralf.strobel: not_defined -mikedotexe: not_defined -trevjs: not_defined -rdrh555: not_defined -jhr: not_defined -brandon_beeler: not_defined -lirantal: not_defined -barbun: not_defined -sarahdavies: not_defined -delmarr: not_defined -kevin.dutra: not_defined -gmclelland: not_defined -drupali: not_defined -marthaflour: not_defined -ubercomp: not_defined -dodorama: not_defined -gregtorok: not_defined -misselbeck: not_defined -bjarkig82: not_defined -hansenm: not_defined -chellman: not_defined -mrp: not_defined -lunaris: not_defined -kerasai: not_defined -rjleigh: not_defined -aviindub: not_defined -romaingar: not_defined -alimac: not_defined -gaslkn: not_defined -sahain: not_defined -jeroen: not_defined -5kot: not_defined -jschrab: not_defined -blauerberg: not_defined -yaoweizhen: not_defined -dnotes: not_defined -jax: not_defined -alanmoo: not_defined -gillbates: not_defined -josaku: not_defined -hardik.patel99: not_defined -mxwitkowski: not_defined -pmz: not_defined -hiddenfellon: not_defined -hackwater: not_defined -djroshi: not_defined -mcpuddin: not_defined -bjorpe: not_defined -ryanprice: not_defined -lxs: not_defined -jbucks: not_defined -chia: not_defined -earnie: not_defined -guile2912: not_defined -bvanmeurs: not_defined -anzi31: not_defined -ivansf: not_defined -trrroy: not_defined -ogi: not_defined -alextataurov: not_defined -peterx: not_defined -crispiatico: not_defined -marknorris: not_defined -neilnz: not_defined -siharris: not_defined -designesse: not_defined -gapa: not_defined -hosef: not_defined -dellintosh: not_defined -pix: not_defined -sag_13684: not_defined -eromero1: not_defined -echeese: not_defined -lemark: not_defined -narragansett: not_defined -jamesm6162: not_defined -dsdart: not_defined -tobiassjosten: not_defined -bunthorne: not_defined -colan: not_defined -bstoppel: not_defined -naught101: not_defined -shiff2kl: not_defined -e2tha_e: not_defined -irunflower: not_defined -myke: not_defined -hgurol: not_defined -caecus: not_defined -bzitzow: not_defined -hlieberman: not_defined -yang_yi_cn: not_defined -szantog: not_defined -cconrad: not_defined -blueshadow2911: not_defined -sabsbrain: not_defined -andymartha: not_defined -rabbit_media: not_defined -5ven: not_defined -carolyn: not_defined -mandarmbhagwat78: not_defined -ldweeks: not_defined -nirbhasa: not_defined -druplet: not_defined -jepster: not_defined -likewhoa: not_defined -yoshi: not_defined -dwees: not_defined -redcell: not_defined -mattdanger: not_defined -kushrohra: not_defined -andrewsl: not_defined -asrob: not_defined -jorap: not_defined -r_morgan: not_defined -j0rd: not_defined -x2x3x2: not_defined -aparnakondala123: not_defined -adagio: not_defined -chriscalip: not_defined -sym: not_defined -jweowu: not_defined -colette: not_defined -jm.federico: not_defined -smortimore: not_defined -coolestdude1: not_defined -cfennell: not_defined -lorique: not_defined -petyovsky: not_defined -dmoore: not_defined -ralf: not_defined -rutcreate: not_defined -swastik1608: not_defined -ju1iet: not_defined -axyjo: not_defined -jonathan1055: not_defined -dropfen: not_defined -bendev: not_defined -lkiss80: not_defined -greenrover33: not_defined -ben.kyriakou: not_defined -willyk: not_defined -yuradoc: not_defined -exratione: not_defined -jramby: not_defined -bergie: not_defined -aiwata55: not_defined -mithrandir: not_defined -desbeers: not_defined -dvinegla: not_defined -dermario: not_defined -cirage: not_defined -akamaus: not_defined -luk.stoops: not_defined -henwan: not_defined -janipuni: not_defined -stkrzysiak: not_defined -trawekp: not_defined -bgano: not_defined -deimos: not_defined -anenkov: not_defined -blake.thompson: not_defined -k3vin: not_defined -jwineinger: not_defined -ebrowet: not_defined -magicmyth: not_defined -mjpa: not_defined -scott.gonzalez: not_defined -aenw: not_defined -nevergone: not_defined -wzoom: not_defined -litwol: not_defined -adsw12: not_defined -radimklaska: not_defined -wwalc: not_defined -nigel: not_defined -lsenzee: not_defined -yingtho: not_defined -vangorra: not_defined -cloud2006: not_defined -zymsys: not_defined -wedge: not_defined -bradweikel: not_defined -foripepe: not_defined -treyhunner: not_defined -michelle: not_defined -jose.guevara: not_defined -kanchuraji: not_defined -stevenx: not_defined -andremolnar: not_defined -jsst: not_defined -aasarava: not_defined -dropcube: not_defined -piersonr: not_defined -champlin: not_defined -sree: not_defined -pyrollo: not_defined -intuited: not_defined -darrellulm: not_defined -gpk: not_defined -dudycz: not_defined -rych: not_defined -adrian: not_defined -bvirtual: not_defined -alonpeer: not_defined -jwlogemann: not_defined -schildi: not_defined -daniel92: not_defined -fiftyz: not_defined -bradpeabody: not_defined -jbomb: not_defined -ls206: not_defined -meshkinsoft: not_defined -v1nce: not_defined -boydjd: not_defined -kjartan: not_defined -capuleto: not_defined -jneubert: not_defined -elcuco: not_defined -tomyouds: not_defined -grwgreg: not_defined -esoteric1: not_defined -alex_ustinov: not_defined -rlnorthcutt: not_defined -tjhellmann: not_defined -jlscott: not_defined -yuri: not_defined -alexanderpas: not_defined -assert0: not_defined -totten: not_defined -janz: not_defined -peruvianidol: not_defined -ti2m: not_defined -neoglez: not_defined -pebosi: not_defined -sarah_p: not_defined -joelcollinsdc: not_defined -iliphil: not_defined -ctibor: not_defined -weboide: not_defined -cliff: not_defined -ellishettinga: not_defined -drifter: not_defined -ajiang: not_defined -cck: not_defined -thoufek: not_defined -deneo2: not_defined -vzima: not_defined -avior: not_defined -joosts: not_defined -joelstein: not_defined -ainigma32: not_defined -agi.novanta: not_defined -mattyoung: not_defined -mustafau: not_defined -dboulet: not_defined -cayci1: not_defined -klavs: not_defined -akahn: not_defined -ceefour: not_defined -mark.lindsey: not_defined -adorsk: not_defined -ceardach: not_defined -dinknaround: not_defined -andybroomfield: not_defined -ttaylor249: not_defined -adam.hammouda: not_defined -turboflash: not_defined -dinarcon: not_defined -jergason: not_defined -edhaber: not_defined -jpmckinney: not_defined -robertom: not_defined -alpritt: not_defined -darkadept: not_defined -cross: not_defined -cygri: not_defined -guidocecilio: not_defined -jredding: not_defined -starsinmypockets: not_defined -mathroc: not_defined -kfogel: not_defined -kvanderw: not_defined -gregmac: not_defined -msonnabaum: acquia -katbailey: acquia -scor: acquia -webchick: acquia -cam8001: acquia -ksenzee: acquia -brantwynn: acquia -pdrake: acquia -typhonius: acquia -jastraat: acquia -tkoleary: acquia -dstol: acquia -timmillwood: acquia -chrispomeroy: acquia -mikeryan: acquia -janusman: acquia -eporama: acquia -japerry: acquia -erikwebb: acquia -nagwani: acquia -bryanbraun: acquia -psynaptic: acquia -dokumori: acquia -eatings: acquia -anavarre: acquia -gcassie: acquia -repsy: acquia -glennpratt: acquia -ghazlewood: acquia -grasmash: acquia -schnippy: acquia -meba: acquia -jrbeeman: acquia -beretta627: acquia -pbull: acquia -coltrane: acquia -timhilliard: acquia -dicix: acquia -dcmistry: acquia -james.elliott: acquia -albert volkman: mediacurrent -crell: palantir.net -niklas fiekas: not_defined -bojhan: freelance -damien tournoud: commerce guys -dave reid: lullabot -lars toomre: not_defined -das_peter: cando -dan reinders: mallard service, inc -eclipsegc: commerce guys -sutharsan: wizzlern -olli: not_defined -lewisnyman: lewis nyman design ltd -tr: not_defined -schnitzel: amazee labs -johnalbin: lullabot -traviscarden: not_defined -everett zufelt: myplanet digital -linl: not_defined -fabianx: tag1 consulting -stephaneq: yogarik -moshe weitzman: acquia -btmash: cherry hill company -jacine: themery -tor arne thune: devia -jose reyero: not_defined -dmitrydrozdik: oysterlabs -devin carlson: acquia -heine: ustima -jelle_s: attiks -mark carver: tag1 consulting -'': not_found -liam morland: university of waterloo -psikik: o&p digital technologies -ellatheharpy: not_defined -nrotc_webmaster: not_defined -jody lynn: zivtech -mile23: not_defined -barisw: limoengroen -pedro lozano: bluespark -eric_a: competa it -kevin morse: not_defined -letharion: the economist -chi: not_defined -manuel garcia: not_defined -floydm: freelancing -pp: not_found -sweetchuck: cheppers ltd. -tim_e: not_defined -ishadakota: not_defined -dean reilly: brightlemon ltd -alan evans: acquia -aron novak: agence inovae -_enzo_: anexus it -alan d.: glo digital -ivan zugec: web wash media -james_stallings: softartisans -kars_t: not_found -david hernández: io1 limited -ianmthomasuk: not_found -damienmckenna: mediacurrent -pol: trasys -jeff burnz: adaptivethemes -lsu_jbob: phase2 -duaelfr: immobilier stock exchange -steven jones: computerminds -boobaa: kybest -drunken monkey: not_defined -rosk0: trellon, llc -oresh: not_found -juliend: commerce guys -outi: osinet -ayelet_cr: not_defined -iameap: tableau software -tsi: not_found -twod: not_defined -bladedu: one agency -les lim: not_defined -amitaibu: gizra -ajits: qed42 -risse: vaiste productions oy -garrett albright: propeople -pete b: deeson online -shyamala: unimity solutions pvt limited -haza: commerce guys -brockboland: lullabot -shawn dearmond: university of california davis - information and educational technology -lomo: cocomore ag -tim bozeman: independent -désiré: integral vision ltd -jorrit: ncode -stborchert: undpaul -mac_weber: not_defined -ryan weal: kafei interactive inc. -kristen pol: hook 42 -zendoodles: the nerdery -jacobsingh: acquia -sylvain lecoy: sopra group -artusamak: commerce guys -thund3rbox: not_found -barrett: acquia -daffodil_naveen: not_found -davidjdagino: not_found -dlu: not_found -mike wacker: not_defined -rok Žlender: acquia -gang wang: state university of new york @ geneseo -akaoni: not_defined -foobar3000: not_found -hozt: not_defined -elc: freelance -dmitriy.trt: not_defined -andi_d: not_found -istryker: stryker enterprise -artistconk: acquia -jacobsanford: university of new brunswick -jamesan: not_defined -scuts: not_found -carsten müller: cocomore ag -owen barton: civicactions -darren oh: double prime -sheldon rampton: not_found -garbar: not_defined -deciphered: realityloop -sean charles: not_defined -sebcorbin: makina corpus -orb: not_found -lukas von blarer: motor productions -crashtest_: nbcuniversal -josh waihi: not_defined -reidsy: not_defined -krisbulman: lullabot -steve dondley: not_defined -freemantus: wdg -pasqualle: ferratum -karens: lullabot -dyannenova: mongodb -zeta ζ: not_defined -kiphaas7: not_defined -hugo wetterberg: not_defined -crookednumber: npr -soul88: arher software -edb: not_found -bellhead: not_defined -scott falconer: not_defined -justinrandell: not_found -berdart: amgrade -mark theunissen: not_defined -bès: not_defined -slashrm: not_found -cashwilliams: acquia -10oclock: not_found -robw: not_defined -nod: not_found -jasonrsavino: not_found -jeroent: intracto -dragan eror: md systems -angry dan: deeson online -djebbz: freelance -docuant: not_defined -rob c: not_found -onkeltem: not_defined -r.hendel: comm-press -mrharolda: ezcompany -john morahan: io1 -seeschloss: makina corpus -cyberschorsch: undpaul -chaulky: adsupply -moderate: not_defined -b_prod: not_found -jimmyax: not_defined -zgear: zen doodles inc -alexander pyle: not_defined -patrizio: softec spa -niko_: not_found -stefan freudenberg: agaric -christian biggins: not_found -unitoch: origineight -themusician: western washington university -johnny vd laar: ezcompany -jamesoakley: not_defined -cristinawithout: not_found -nick_vh: acquia -_cedric_: krimson -john bickar: stanford university -worldfallz: not_defined -crimblecrumble: proximity london -david strauss: getpantheon -dave.ingram: ingram innovation -coornail: pronovix -spleshka: bright solutions gmbh -davy van den bremt: not_found -eviiilj: digital deployment, inc. -simon georges: makina corpus -darthdrupal: not_defined -chinggizkhan: four kitchens -eli_t: not_found -yorirou: pronovix -bwpanda: packweb -froelund: not_defined -joshuarogers: 3-gis -annikac: deeson online -hanspolo: not_defined -ignigena: acquia -a_l_p: nia technique, inc. -luukyb: webizat -laurentajdnik: not_defined -thomasvi: not_defined -pierre paul lefebvre: pheromone -designdolphin: not_found -miroling: not_defined -birk: not_defined -thijsferyn: combell group nv -staratel: not_defined -storah: awave ab -the caught exception in sql: not_found -mixologic: not_defined -hurukan: not_defined -superxren: not_defined -jimsmith: dsfederal -gekkokammen: not_defined -raycascella: dlc solutions -jfm2k1: not_found -smiletr: freelancer -hanno: datascape -k15.multik: not_defined -fr0s7: the nerdery -sam moore: resonetrics, llc -kcarlile: tektronix -danchadwick: dan chadwick consulting / kindred cocktails -lukyluke_ch: md systems -followup damiankloip: not_found -ggiammi: not_found -giorgosk: not_defined -vivienletang: nvision -danzi: not_defined -rami attallah: not_defined -marshell: not_found -emma_maria: not_found -xxalhixx: wdg -madmatter23: not_found -jon pugh: thinkdrop consulting -noyz: acquia -danemacaulay: favish -elijah lynn: nbcuniversal -fluxsauce: getpantheon -alearner: not_defined -webdevdude: lucks digital, inc. -noe_: wiredpea -fmb: res telæ -neetu morwani: qed42 -sagar ramgade: intelliswift -mauhg: not_defined -mandakini_kumari: photon infotech -iztok: not_found -tim.plunket: stanford university -kingdutch: not_defined -jaesin: chapter three -boze: not_found -waltemath: not_defined -andy.hails: not_found -marcus maihoff: not_defined -fatguylaughing: not_defined -intergalactic overlords: wunderkraut -wormfood: shenzhen computer services -s.daniel: hochschule karlsruhe - technik und wirtschaft -justin m. woodum: not_defined -follow_up by soulston: not_found -c. lee: not_defined -deelay: the economist -thomas brekelmans: wunderkraut -finex: not_defined -bußmeyer: ! ']init[ ag for digital communication' -rob.black: not_found -ken hawkins: drs -mantask: art of living/iahv -webevt: amgrade -netiva jak: netiva -xenza: not_defined -ceikermann: not_defined -bmdan: blackmesh -shuairan: not_defined -kathryn531: not_found -jthan: not_defined -saranraj.g: knackforge soft solutions private limited -emin sulaiman: xinjiang agricultural university -nicolash: not_defined -rdeboer: flink -adamgerthel: odd hill -empee584: not_defined -sean buscay: not_found -sborsody: not_defined -m_abshir: not_found -eronarn: appneta -caseledde: comm-press -michaelcole: not_defined -bassistjimmyjam: allplayers.com -mark conroy: monsoon consulting -jeremyfrench: alfresco -chris gillis: visual obsession -cms dude: not_defined -gnugeti: not_found -scottgonzalez: not_found -erik erskine: brightec -georgique: not_defined -sumeetsingh: not_defined -runephilosof: odense centralbibliotek (library) -tharna: wunderkraut -jerenus: insready inc. (引锐信息科技有限公司) -august1914: thoughtworks -bj___: not_defined -littlecoding: not_defined -jberges: not_defined -parislaikos: not_found -volx: pixelpark ag -erno: not_found -danielfbrg: not_defined -merilainen: wunderkraut -travis_echidna: not_found -bakus: not_defined -javier.alejandr...: not_found -alexandrtodorozhko: not_defined -oostie: your source -ravi.j: harvest software solutions -g.i.joe: ausy/dataflow -vikas negi: not_defined -dereremit: maloon -nephele: not_defined -seankelly: state of mn -develcuy: dilygent -dave cohen: not_defined -perthsam152: code drop -yaron tal: one shoe -cosmiccreams: not_found -therec: not_defined -pameela: not_found -gurpartap singh: not_defined -maxmendez: aktek -npiacentine: not_found -dan silver: not_defined -megachriz: not_defined -joergm: not_defined -fathershawn: episcopal diocese of long island -jej: not_defined -vvvi: not_defined -nor4a: idynamic -justin_kleinkeane: not_defined -abhishek_r_shah: not_defined -moshe weitzmann: not_found -miroslavbanov: propeople -stepankuzmin: not_defined -island usurper: not_defined -zoltán balogh: not_defined -kendall totten: mediacurrent -snugug: nbcuniversal -pat redmond: not_defined -ojohansson: not_defined -pawelr: cabinet office -kartagis: sabancı university -bartvb: not_defined -mike stewart: media done right -zen master: not_found -ncl: not_found -vibjerg: not_defined -digital fire: not_defined -marcing: examiner.com -bèr kessels: webschuur.com -mohammed j. razem: vardot -plazik: not_defined -elvar: reload! -sumeet.pareek: innoraft -manjit.singh: srijan technologies, india -oddjob: not_defined -mrfelton.: not_found -kevin hankens: not_defined -denes.szabo: finnovatec -roger saner: not_found -marcus777: me (artdeptdedesign.com) -ralt: smile -ezra_g: not_found -andreymaximov: gosbook -minoroffense: coldfront labs inc. -mark trapp: brandopoly -o govinda: not_defined -iruslan: drupaljedi -tomimikola: wunderkraut -francescoq: not_defined -ñull: not_defined -david lesieur: not_found -dipper: not_defined -bodo maass: not_defined -merco: triodor software -dipen chaudhary: qed42 -deweyoxberger: not_defined -jian he: not_defined -meyerweb: not_found -nneka: blackstone technology group -vincent giersch: not_defined -irk: not_found -traverus: not_defined -eugenmayer: kontextwork -e_anima: not_found -paul simard: self -lenz grimmer: not_found -sp.shut: not_defined -bayermeister: not_defined -pisco: endless summer gmbh -marie wendel: not_found -captainwonky: not_defined -peter törnstrand: happiness -krasnyj: softheme -mirabuck: mcgill university -einewton: not_defined -freekymage: one agency -nowarninglabel: not_found -gerhard killesreiter: not_defined -setca: not_defined -lewis nyman: not_found -frando: not_defined -analogfile: not_defined -bok choy: not_found -kim_day: not_found -jyyna: not_found -illin: caddyx -azol: not_defined -josh the geek: not_defined -dead_arm: stanford university -redndahead: stanford university -irinaz: stanford university -michaellenahan: erdfisch -sanduhrs: erdfisch -corvus_ch: md systems -miro_dietiker: md systems -s_leu: md systems -rfay: tag1 consulting -bdragon: tag1 consulting -douggreen: tag1 consulting -kim.pepper: previousnext -nick_schuch: previousnext -pameeela: previousnext -rcaracaus: previousnext -boztek: previousnext -keyhitman: previousnext -xtfer: previousnext -hannah.burgess: previousnext -malc0mn: nascom -sidharthap: capgemini -sandipmkhairnar: capgemini -tsphethean: capgemini -tayzlor: capgemini -malcomio: capgemini -wesleydv: capgemini -manu4543: capgemini -abghosh82: capgemini -sandykadam: capgemini -alarcombe: capgemini -kshama_deshmukh: capgemini -aries: capgemini -mahaprasad: capgemini -wouter.adem: capgemini -urwen: capgemini -chrishks: capgemini -kafitz: capgemini -peterpoe: freelance -mikeker: freelance -bas.hr: freelance -trevorkjorlien: freelance -drupal_sensei: freelance -betz: freelance -chrischinchilla: freelance -jyve: eps & kaas -sebsebseb123: myplanet digital -gapple: myplanet digital -emarchak: myplanet digital -heyrocker: lullabot -quicksketch: lullabot -juampy: lullabot -justafish: lullabot -eojthebrave: lullabot -carwin: lullabot -deviantintegral: lullabot -blakehall: lullabot -webthingee: lullabot -e0ipso: lullabot -q0rban: lullabot -dalin: advomatic -aaron: advomatic -peximo: psegno -lbainbridge: digital echidna -waynethayer: digital echidna -yoroy: wunderkraut -zuuperman: wunderkraut -seutje: wunderkraut -reglogge: wunderkraut -g.oechsler: wunderkraut -corbacho: wunderkraut -floretan: wunderkraut -pixelmord: wunderkraut -30equals: wunderkraut -sannejanssen: wunderkraut -danielnolde: wunderkraut -exlin: wunderkraut -pontus_nilsson: wunderkraut -dbeheydt: wunderkraut -fago: drunomics -dasjo: drunomics -penyaskito: cocomore ag -kfritsche: cocomore ag -jsbalsera: cocomore ag -japicoder: cocomore ag -mtunay: cocomore ag -asaal: cocomore ag -ahdiaz: cocomore ag -amatzies: cocomore ag -gloob: cocomore ag -ela.m: cocomore ag -mgifford: openconcept consulting inc. -mparker17: openconcept consulting inc. -mducharme: openconcept consulting inc. -joelpittet: joel pittet code & design -jhodgdon: poplar productivityware -mr.baileys: one agency -pfrenssen: one agency -sandergo90: one agency -marcingy: examiner.com -slashrsm: examiner.com -klausi: epiqo -franz: propeople -cweagans: propeople -m1r1k: propeople -beltofte: propeople -ygerasimov: propeople -undertext: propeople -skek: propeople -sergiu.savva: propeople -linclark: self -ericduran: nbcuniversal -bleen18: nbcuniversal -sdboyer: nbcuniversal -scottrigby: nbcuniversal -cosmicdreams: the nerdery -pcambra: ymbra -rvilar: ymbra -mordonez: ymbra -ckrina: ymbra -pakmanlh: ymbra -jenlampton: jeneration web development -mrsinguyen: asaleo jsc -bojanz: commerce guys -kotnik: commerce guys -rszrama: commerce guys -balintk: commerce guys -jsacksick: commerce guys -dpolant: commerce guys -maciej.zgadzaj: commerce guys -goldorak: commerce guys -theo_: commerce guys -megensel: commerce guys -webflo: ueberbit gmbh -speely: ueberbit gmbh -maggo: ueberbit gmbh -attiks: attiks -plopesc: ideup! -juanolalla: ideup! -heddn: mtech, llc -jhedstrom: opensourcery -adamdicarlo: opensourcery -jessehs: opensourcery -chertzog: codework designs -thedavidmeister: godel -meeli: godel -mcjim: code enigma -slv_: code enigma -galooph: code enigma -matason: code enigma -bellesmanieres: code enigma -stevecowie: code enigma -agentrickard: palantir.net -stevector: palantir.net -becw: palantir.net -robeano: palantir.net -kbentham: palantir.net -arthurf: palantir.net -smiletrl: freelancer -grisendo: freelancer -iflista: freelancer -dietmarg: freelancer -bdone: classic graphics -tlattimore: classic graphics -deekayen: classic graphics -shrop: classic graphics -vasi1186: amazee labs -sxnc: amazee labs -dagmita: amazee labs -borisbaldinger: amazee labs -naxoc: reload! -ramlev: reload! -rasmusluckow: reload! -gielfeldt: reload! -trogels: reload! -arnested: reload! -kasperg: reload! -claudiu.cristea: webikon -c960657: berlingske media a/s -gumanist: berlingske media a/s -kgoel: rock creek strategic marketing -oriol_e9g: diputació de barcelona -neclimdul: apqc -lostkangaroo: apqc -mtift: wisconsin public radio -kbasarab: mediacurrent -drupalninja99: mediacurrent -grndlvl: mediacurrent -derek.deraps: mediacurrent -micnap: mediacurrent -sven.lauer: ci-services - jan und sven lauer gbr -batigolix: tilt factory -kid_icarus: aten design group -rballou: aten design group -sreynen: aten design group -killtheliterate: aten design group -rbayliss: last call media -jiff: last call media -tidrif: last call media -ksm.apw: last call media -mcrittenden: phase2 -hefox: phase2 -arithmetric: phase2 -bradwade: phase2 -e2thex: phase2 -tekante: phase2 -steveoliver: condurre, inc. -shanethehat: sensio labs uk ltd -hussainweb: blisstering solutions -vyasamit2007: blisstering solutions -charmi: blisstering solutions -rachit_gupta: blisstering solutions -kiamlaluno: caffaro s.r.l. -rteijeiro: ericsson -babruix: ericsson -clemens.tolboom: build2be -fastangel: systemseed -mrfelton: systemseed -ry5n: fuse interactive -drclaw: fuse interactive -jbrown: bluedroplet -duozersk: gosbook -andyceo: gosbook -maximpodorov: gosbook -toddtomlinson: unicon.net -dixon_: pfizer -jwilson3: bluespark -acrollet: bluespark -citlacom: bluespark -dagmar: globant -johnnygamba: globant -wamilton: promet solutions inc. -dsdeiz: promet solutions inc. -craychee: promet solutions inc. -andrewmacpherson: annertech -stella: annertech -alanburke: annertech -edward_or: annertech -loganfsmyth: evolving web -pixelite: evolving web -tarmstrong: evolving web -aaronott: appliedtrust -sergeypavlenko: it patrol inc. -grendzy: metal toad media -kronda: metal toad media -danlinn: metal toad media -greggles: card.com -dcmouyard: forum one communications -arh1: forum one communications -setvik: forum one communications -duellj: ombu -sillygwailo: chapter three -mrf: chapter three -baldwinlouie: bitsprout llc -tvlooy: intracto -borisson_: intracto -jeff.maes: intracto -dww: 3281d consulting -fabpot: sensiolabs -jthorson: a 'long tail' developer (or sasktel, if you're looking for the 'day job') -fgm: osinet -ifrik: ifrik -nmudgal: srijan technologies, india -a_thakur: srijan technologies, india -crazyrohila: srijan technologies, india -fotuzlab: srijan technologies, india -rajneeshb: srijan technologies, india -nit3ch: srijan technologies, india -nitvirus: srijan technologies, india -drupaldrop: srijan technologies, india -barraponto: tecidoweb -c31ck: dotprojects -klaasvw: dotprojects -elvis2: kenneth copeland ministries -boombatower: google -jzacsh: google -chris.leversuch: brightec -markie: new signature -patrickd: maloon -leschekfm: maloon -pplantinga: disability rights education and defense fund -lazysoundsystem: un ocha (reliefweb.int) -dcam: national agricultural library -wojtha: inlinemanual.com -marlatt: michigan state university -mradcliffe: kosada, inc -benjy: code drop -frega: flink solutions -lliss: zivtech -dags: zivtech -tizzo: zivtech -sheise: zivtech -benjifisher: education development center -drewish: drewish.com -valthebald: snake hill -schiavone: snake hill -mlncn: agaric -amontero: eutopia, mobiqos -ebeyrent: family education network, pearson education -oadaeh: flatt and sons -yannickoo: loom gmbh -derhasi: undpaul -aschiwi: undpaul -geerlingguy: midwestern mac, llc -idflood: stimul.ch -rupl: four kitchens -elliotttf: four kitchens -mkadin: merlin education -skottler: red hat -izus: linagora -good_man: looking for a job -h3rj4n: exed internet -underq: attestation legale -splatio: cti digital -westie: cti digital -cafuego: creative contingencies -kattekrab: creative contingencies -valdo: demotix -a_c_m: demotix -janstoeckler: comm-press -tobiasb: reinblau -kalman.hosszu: pronovix -hairqles: pronovix -xenophyle: charles river web -drupalmonkey: hewlett-packard -mfer: hewlett-packard -jn2: screenshare training -zero2one: amplexor -vollepeer: amplexor -pingers: trellon, llc -cr0ss: trellon, llc -sanchiz: trellon, llc -marcvangend: triquanta -pgrond: triquanta -bowersox: pixo -thamas: integral vision ltd -csakiistvan: integral vision ltd -mfb: electronic frontier foundation -widukind: ucsf -ursula: ucsf -crowdcg: crowd communications group, llc -mvc: koumbit.org -urlisse: koumbit.org -anarcat: koumbit.org -sfyn: koumbit.org -rjgoldsborough: infinity interactive -jmarkel: time inc. -steinmb: university of bergen -mikeytown2: datasphere -oenie: plantijn hogeschool -cburschka: goethe university frankfurt -kika: drupal estonia -balsama: brunello inc -mortendk: geek röyale -alberto56: tp1 -andreiashu: comic relief -sivaji: knackforge soft solutions private limited -danillonunes: chuva inc. -ao5357: commercial progression -tomgeekery: commercial progression -jlbellido: emergya -nguerrero: emergya -lucascaro: triple smart -anrikun: absyx -podarok: druler -chrisdolby: simitive -rootwork: rootwork.org -hansyg: major league soccer -lajical: major league soccer -alex_b: mapbox / development seed -skwashd: dave hall consulting -manarth: techito -netsensei: xio -frankbaele: xio -nyirocsaba: reea -giammi: giammi gmbh -jcisio: open web solutions -boran: boran consulting sarl -jeffschuler: substrate websoft -donquixote: dqxtech.net / tttp.eu -dmitrig01: boldium -wiifm: catalyst it -frederico: garza web design, llc -dwieeb: uw-platteville -ryanissamson: christian counseling and education foundation -pguillard: synodes -geoffreyr: crossfunctional -rcross: crossfunctional -drupalway: drupalway -vlad.dancer: drupalway -piyuesh23: qed42 -saki007ster: qed42 -kmcculloch: socha dev -yurtboy: alfred nutile, inc. -realityloop: realityloop -emma.maria: precedent -lokapujya: babson college -markpavlitski: microserve -claar: kansas state university -bxtaylor: miles -cwells73: university of pennsylvania -edmund.kwok: imoney -alweb: alpha web group -ianthomas_uk: tui travel plc -paranojik: freelancer, contractor -webbykat: iq solutions -carlos8f: terra eclipse -djdevin: dlc solutions -samhassell: department of agriculture and food wa -atchijov: leaping bytes -kbahey: 2bits.com, inc. -cbiggins: dmg radio -frob: kwall -voxpelli: valtech -vineet.osscube: osscube -neochief: shvets group -chrisguindon: eclipse foundation -maxtorete: spartup -brennanmh: bmc2 -ezeedub: drupal connect -fmizzell: wedlinkmedia -tsvenson: www.drupalmill.com -diarmy: click click click -endorn: wvu foundation -jrglasgow: eye street solutions -dbcollies: eye street solutions -lslinnet: adapt a/s -dysrama: adapt a/s -gagarine: antistatique -fabsor: kntnt -bobodrone: kntnt -jaffaralia: unimity solutions pvt limited -ramkumarr: unimity solutions pvt limited -filijonka: let it rock -yanniboi: common nonsense -mattimck: go1 -univate: go1 -a.mikheychik: artsmith media llc -drupee: atos, pune -davidtrainer: minimal media -amitgoyal: tekriti software -drumm: drupal association -jpamental: h+w design -rickmanelius: newmedia! -caiovlp: ci&t -handrus: ci&t -acouch: nuams (new amsterdam ideas) -johnmcc: 360innovate -mallezie: chirojeugd-vlaanderen vzw -kscheirer: top shelf modules -mrded: wikijob -stevepurkiss: purkiss ltd. -cspitzlay: bio.logis gmbh -mkalkbrenner: bio.logis gmbh -eddie_c: cameron and wilding ltd -mikey_p: shomeya inc -eugene.ilyin: drupaljedi -merlinofchaos: io1 and logrus, inc -benjf: brickhouse development -mikl: liip ag -gollyg: this little duck -jstoller: california science center -aaronbauman: message agency -drupalrv: drucode -csevb10: achieve internet -mdupont: world economic forum -nburles: university of york -adnasa: netconsult ab -googletorp: reveal it -ultimateboy: university of colorado boulder -zhuber: digitaria -aaron.r.carlton: digitaria -jayboodhun: red bee media -oxyc: genero digital agency -stijnbe: accenture -matt2000: ninjitsu web development -svendecabooter: pure sign -seanr: door3 -sgtsaughter: door3 -csg: cheppers ltd. -segi: cheppers ltd. -jeckman: isite design -mr.york: finnovatec -alvar0hurtad0: cooperia -richardj: olindata bv -matglas86: .vdmi/ -dman: sparks interactive -bneil: university of iowa -xeniak: doña ana county, new mexico, usa -dmitrii: drupalsquad -tars16: allora media -basic: open source lab -jackbravo: axai -willvincent: marker seven -evilehk: breakthrough technologies -roborn: frontkom -kalabro: licel llc -richthegeek: livelink new media -stephen.colson: switchback -nicl: actency -pflame: azri solutions -brenda003: internet society -vitalsouto: vink -indytechcook: appirio -joestewart: music city networks -targoo: mariquecalcus -cwells: redfin solutions, llc -shameemkm: quizent technologies pvt ltd -richard.c.allen2386: taoti -lisarex: cxpartners -zserno: central european university -geodaniel: geobits ltd -derjochenmeyer: forward-media.de -lauriii: kwd digital -tnightingale: affinity bridge -stpaultim: enjoy creativity -fizk: tinymcesupport.com -justinchev: top right group -rschwab: independent adoption center -wizonesolutions: wizone solutions -jfhovinne: cleverway -greyrhino: orange digital ltd -wulff: dagbladet information -mmilano: independent -gbrands: saint mary's college of california -ykhadilkar: rei systems -perusio: ygl consulting -themic8: digital bridge solutions -thsutton: digital garden -sylus: government of canada - statistics canada -wuinfo: pink triangle press -gwynnebaer: intel -hrmoller: dbc a/s -eiriksm: ny media as -bserem: srm -damien_vancouver: intense communications network -marcp: airadvice -javier_: independent software developer -nadavoid: thinkshout -bartmcpherson: cleveland state university -purencool: purencool website development -alippai: integral vision ltd. -afeijo: mindcore -jiv_e: lildrop consulting -pascalduez: dzlv -h4rrydog: guanxin | design+development -aitiba: burujabetech -kostajh: designhammer -soulston: colugo -vuzzbox: digibrij -savithac: oseds -alexweber: blue tent marketing -infiniteluke: qualcomm -junedkazi: icf international -ethanw: echoditto -the_phi: philipp-schaffner.com -franskuipers: bidx -jaredsmith: bluehost -tedbow: 6 mile tech -derheap: fh flensburg / wechselwirkung -dealancer: blink reaction -ricky.middaugh: oregon state university -illeace: clarity innovations, inc. -farfanfelipe: tvo -bdgreen: brian green consultancy cic/uk ltd -mongolito404: pheromone -tyjamessmith: western governors university -x.algorithm: aristotle select -jazzdrive3: louisville web group -chr.fritsch: hubert burda media -kevin.reiss: princeton university library -gaspaio: alter way -broeker: electric citizen -laszlocore: jbs international, inc. -web.dev.cas: california academy of sciences -druderman: umass amherst -taslett: self employed -davmorr: new target -leanderl: popolo -alexh58: fuzz productions -bdlangton: allplayers.com -scottalan: allplayers.com -apotek: martha stewart living omnimedia -blisteringherb: martha stewart living omnimedia -netol: catch digital -ed.hollinghurst: catch digital -pivica: montenasoft -vladan.me: montenasoft -rich.yumul: sage tree solutions -johnnydarkko: sage tree solutions -evanmwillhite: centresource interactive agency -micahredding: centresource interactive agency -rsaddington: sift digital -zhgenti: devengineering inc -axel.rutz: clever-systems.net, machbarmacher, reinblau -thebuckst0p: new leaf digital, antiquesnearme.com -drhino: elephant ventures -attheshow: fleetthought -ptocheia: wavecloud -tmckeown: sublime technologies -sethviebrock: origin eight -suhel.rangnekar: faichi solutions pvt ltd. -ollu: kodamera ab -arielqgold: arizona state university -wilco: public works and government services canada -kevinquillen: inclind inc -jtwalters: university of washington -modulist: traktek partners -artis: texas creative -mstrelan: glo digital -pdcarto: common media, inc -jim0203: codeloom -matslats: community forge -juan.brein: lastminute.com -redfoxxx.ua: internetdevels -kay_v: ownsourcing -ggroves: florida hospital -shoptalk: rock river star -dkinzer: jenkins law library -nilnullvoid: justin kelly (self employed) -phl3tch: georgia tech -fureigh: fureigh consulting and civicactions -shlapa: jysk -yuriy.babenko: yuba studios -dmouse: hecho en drupal -cilefen: institute for advanced study -quartsize: college of william & mary -nedjo: chocolate lily -rahul.shinde: faichi solutions pvt ltd -daniel_j: apigee -antojose: antolabs -tostinni: agence propal -artofeclipse: vardot -pbz1912: british council -mavimo: agavee -slowflyer: crowd-creation ug (haftungsbeschränkt) -duckx: xcubicle -ideogram_nl: elonisas -ironkiat: pixel onion pte ltd -bigjim: rooty hollow -gisle: hannemyr nye medier as -fenstrat: plexitynet -dougvann: exact target -bfr: druid -tkrajcar: the new group -bechtold: bright solutions gmbh -cangeceiro: dallas museum of art -smokris: kosada -cferthorney: contemporary fusion computer services limited -desmondmorris: dosomething.org -nrambeck: crown -ashwinikumar: faichi solutions pvt. ltd -j.somers: axxes -andrewbelcher: common nonsense ltd -kmoll: daily racing form -sauravshrestha: self-contracting -hron84: webinform kft. -naquah: digital deployment, inc. -marji: morpht -jurgenhaas: paragon executive services gmbh -nlisgo: aeopus -muriqui: western michigan university -sjhuda: atlarge -swing4cat: moorfields eye hospital -sirtet: kanuschule versam -estebanvalerio.h: anexus it -sayela: rocom solutions limited -zyxware: zyxware technologies -sumitk: civicactions -czigor: kybest -eloiv: lliures.cat -dandaman: august ash inc. -rabellamy: northpoint -highrockmedia: high rock media -joeystern: springer publishing company -guy_schneerson: blue-bag ltd -figureone: university of hawai'i at manoa -kmox83: wellnet s.r.l. -thekevinday: mcneese state university -eigentor: rufzeichen webdesign -jaimealsilva: gluky group -sukotto100: pantheon systems -a.ross: jp result -lilster66: atd travel services -weri: previon plus ag -kjay: five mile media -gobilo: data in transit -anthbel: bantanova -tedstein: inner file software -scito: vela solaris ag -bornholtz: us department of education - office of federal student aid -johan.gant: torchbox ltd -nrussell: workhabit inc -carsonevans: fiercemarkets -vinmassaro: yale university -pkiraly: extensible catalog organization -tmsimont: western ascent, inc -thijsvdanker: bits 'n bolts -ershov.andrey: archer software -djbobbydrake: the economist -rachel_norfolk: open development limited -simg: holistic systems -rooby: oxide interactive -brainbender: brainbender.org - my portfolio website -lambic: mcgill university -pokurek: redweb s.r.o. -wildflower_0002: mystic lake casino & hotel -anpolimus: boyle software -akamustang: network limited -johnshortess: 4site interactive studios -acausing: chocchip digital -ergonlogic: praxis labs coop -emclaughlin: digital bungalow -amcgowanca: imagex -stefan.r: ruijsenaars development -berenddeboer: xplain hosting -caktux: factionw -ezheidtmann: squishymedia -daycrom: daycrom software factory - www.daycrom.com -z.stolar: linnovate -monan: techreprieve -henribergius: nemein -guschilds: chromatic -wadmiraal: connect-i -sender: inflowmotion -roderik: wyz -jair: american media inc -adharris: youthbuild usa -illmasterc: isovera -markdorison: arkic -m1n0: mogdesign -mcm.guaba: squaretrade -aloyr: city of olathe, ks -jjchinquist: quax(r) medien- und verlagsagentur gmbh -brandenlhamilton: highlights -mottihoresh: 2020 company -amitsedaiz: jagriti innovations -jay.dansand: lawrence university -gordon: heydon consulting -kevee: cal state monterey bay -askibinski: merge -budda: ixis it -m3avrck: detroit venture partners -draenen: monarch digital -robertdbailey: lingotek -nonsie: live axle llc -olamaekle: pg installasjon -arpeggio: integrated microelectronics inc. -helior: riot games -gdud: allegro group -eliza411: dspeak -philbar: bioworld products -basvredeling: code culture -gaurav.goyal: innoraft -sushantpaste: osseed technologies -recidive: recidive networks -aacraig: birbl.com -iaha: duke university -christefano: exaltation of larks -balintd: internet simplicity -mcarbone: aclu -rasskull: superstar media -jcnventura: rhea systems -bart.hanssens: fedict - belgian federal public service ict -rump: sean dunaway llc -jp.stacey: torchbox -bhosmer: radiant blue technologies -claudinec: portable studios -michaelfavia: favish -rc_100: riancallahan.com -varunarora: opencurriculum -carsato: increnta.com -p.brouwers: madcap -jenpasch: pingv -jeni_dc: delicious creative -zambrey: commercify.it -zengenuity: zengenuity -makemineatriple: heehaw digital -amanaplan: columbia law school -massimoi: impronta -fangel: mediehuset ingeniøren a/s -ximo: kollegorna -ben.bunk: stupil -sign: atomic ant ltd -jherencia: webpartners -achton: peytz & co. -pamatt: not_defined -jstanton: not_defined -enxebre: capgemini -mpgeek: opensourcery -mikemiles86: genuine interactive -andreas radloff: not_defined -schwern: not_defined -nebel54: not_defined -philipz: not_defined -nagba: acquia -janip: wunderkraut -ceng: deeson online -natemow: socha dev -epari.siva: axelerant -maartendeblock: entityone -codeyourdream: code your dream -dstorozhuk: vanilla devs llc -martin107: not_defined -webwarrior: not_defined -bzrudi71: not_defined -luka zitnik: not_defined -tgeller: not_defined -lz1irq: not_defined -foxtrotcharlie: not_defined -takafumi: not_defined -adnen: not_defined -enginpost: not_defined -emok: not_defined -jacintocapote: not_found -joelpitett: not_found -axe312: wunderkraut -jānis bebrītis: wunderkraut -arknoll: newmedia! -vasiliy grotov: drucode -mariancalinro: dream production -bohart: internetdevels -rivimey: ivimeycom -simanjan: epam systems -micahw156: access-interactive -helmo: initfour websolutions -falkendk: tv2 denmark -nicholasthompson: full fat things -danilenko_dn: coderblvd -angel.h: kanooh -drastik: chronos interactive media -zorp: itc, municipality of aarhus -magnify: itk, aarhus kommune -dustin currie: up key -infojunkie: meedan -nick_daffodil: daffodil software ltd. -jrockowitz: http://thebigbluehouse.com -kaare: norway opening universities diff --git a/cores.rb b/cores.rb deleted file mode 100755 index f477db0d7d..0000000000 --- a/cores.rb +++ /dev/null @@ -1,142 +0,0 @@ -#!/usr/bin/env ruby - -log_args = ARGV[0] || '--since=2011-03-09' -git_command = 'git --git-dir=drupal/.git --work-tree=drupal log 8.0.x ' + log_args + ' -s --format=%s' - -Encoding.default_external = Encoding::UTF_8 -require 'erb' -require 'yaml' - -name_mappings = YAML::load_file('./name_mappings.yml') -contributors = Hash.new(0) -i = 1; -lastOrder = -1; -lastMentions = 0; -commits = Array.new -reverts = Array.new - -%x[#{git_command}].split("\n").each do |c| - if c.index('Revert') == 0 then - reverts.push(c.scan(/#([0-9]+)/)) - else - commits.push(c) - end -end - -commits.each_with_index do |c, i| - if r = reverts.index{ |item| item == c.scan(/#([0-9]+)/) } - commits.delete_at(i) - reverts.delete_at(r) - end -end - -commits.each do |m| - m.gsub(/\-/, '_').scan(/\s(?:by\s?)([[:word:]\s,.|]+):/i).each do |people| - people[0].split(/(?:,|\||\band\b|\bet al(?:.)?)/).each do |p| - name = p.strip.downcase - contributors[name_mappings[name] || name] += 1 unless p.nil? - end - end -end - -sum = contributors.values.reduce(:+).to_f -contributors = Hash[contributors.sort_by {|k, v| v }.reverse] -puts ERB.new(DATA.readlines.join, 0, '>').result - -__END__ - - - - - - - DrupalCores - - - - - - -
-
- View on GitHub -

DrupalCores

-

A very basic table of all contributors to Drupal 8 Core

-
-
- -
-
-
-
- Total: <%= contributors.length %> contributors - -
- - - - - - - - - - - - - <% contributors.each do |name, mentions| %> - - - - - - <% if lastMentions != mentions %> - <% lastOrder = i %> - <% end %> - <% i += 1 %> - <% lastMentions = mentions %> - <% end %> - -
#Drupal.org UsernameMentionsPercent
<%= (lastMentions == mentions) ? lastOrder : i %><%= name %><%= mentions %><%= ((mentions/sum)*100).round(4) %>%
-
-
- - - - - - - - - diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000000..36c273908b --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,180 @@ +/*jshint strict:false */ +var gulp = require('gulp'); +var usemin = require('gulp-usemin'); +var minifycss = require('gulp-minify-css'); +var uglify = require('gulp-uglify'); +var imagemin = require('gulp-imagemin'); +var del = require('del'); +var sass = require('gulp-sass'); +var bower = require('gulp-bower'); +var runSequence = require('run-sequence'); +var shell = require('gulp-shell'); +var minifyHTML = require('gulp-minify-html'); +var uncss = require('gulp-uncss'); +var jshint = require('gulp-jshint'); +var stylish = require('jshint-stylish'); +var gulpif = require('gulp-if'); + +var paths = { + scripts: 'app/js/**/*.js', + images: 'app/images/**/*', + scss: 'app/scss/**/*.scss', + drupal: 'app/drupalcore' +}; + +// Run bower install +gulp.task('bower', function() { + return bower(); +}); + +gulp.task('lint', function() { + return gulp.src([paths.scripts, 'gulpfile.js']) + .pipe(jshint()) + .pipe(jshint.reporter(stylish)); +}); + +// Clone or update drupalcore repo +gulp.task('drupalcore', function () { + var fs = require('fs'); + + return gulp.src('') + .pipe(gulpif(!fs.existsSync(paths.drupal), shell(['git clone http://git.drupal.org/project/drupal.git ' + paths.drupal]))) + .pipe(shell(['git remote update', 'git remote set-head origin -a', 'git checkout origin/HEAD'],{ 'ignoreErrors': true, 'cwd': './app/drupalcore'})); +}); + +// Build contributors page +gulp.task('buildcontributors', function () { + return gulp.src('') + .pipe(shell(['./cores.rb > ../../tmp/index.html'], { 'cwd': './app/bin'})); +}); + +// Build companies page +gulp.task('buildcompanies', function () { + return gulp.src('') + .pipe(shell(['./companies.rb > ../../tmp/companies.html'], { 'cwd': './app/bin'})); +}); + +// Build companies page +gulp.task('companyinfo', function () { + return gulp.src('') + .pipe(shell(['./companies.rb --update-all'], { 'cwd': './app/bin'})); +}); + +// Build countries page +gulp.task('buildcountries', function () { + return gulp.src('') + .pipe(shell(['./countries.rb > ../../tmp/countries.html'], { 'cwd': './app/bin'})); +}); + +// Build json data +gulp.task('buildjson', function () { + return gulp.src('') + .pipe(shell(['mkdir ../../tmp', './json.rb > ../../tmp/data.json'], { 'cwd': './app/bin'})); +}); + +// Populate test json data +gulp.task('testjson', function () { + return gulp.src('') + .pipe(shell(['mkdir ./tmp', 'cp ./test/data.json ./tmp/data.json'], { 'cwd': './'})); +}); + +// Clean dist assets +gulp.task('cleandist', function(cb) { + return del(['dist'], cb); +}); + +// Clean tmp assets +gulp.task('cleantmp', function(cb) { + return del(['tmp'], cb); +}); + +// Copy tmp to dist +gulp.task('copytmpdist', function(cb) { + return gulp.src(['./tmp/**/*']) + .pipe(gulp.dest('./dist')); +}); + +// Copy all javascripts +gulp.task('javascripts', function() { + return gulp.src(paths.scripts) + .pipe(gulp.dest('tmp/js')); +}); + +// Copy all static images +gulp.task('images', function() { + return gulp.src(paths.images) + // Pass in options to the task + .pipe(imagemin({optimizationLevel: 5})) + .pipe(gulp.dest('tmp/images')); +}); + +// Compile Sass +gulp.task('sass', function() { + return gulp.src(paths.scss) + .pipe(sass()) + .pipe(gulp.dest('./tmp/css')); +}); + +// Parse the html for groups of assets and compress +gulp.task('usemin', ['sass', 'javascripts'], function () { + return gulp.src('./tmp/*.html') + .pipe(usemin({ + js: [uglify()], + css: [minifycss({keepBreaks:true})] + })) + .pipe(gulp.dest('tmp/')); +}); + +// UNCSS +gulp.task('uncss', function() { + return gulp.src('./css/style.css') + .pipe(uncss({ + html: ['./tmp/*.html'] + })) + .pipe(gulp.dest('./css')); +}); + +// Minify HTML +gulp.task('minifyhtml', function() { + var opts = {comments:true,spare:true}; + + gulp.src('./tmp/*.html') + .pipe(minifyHTML(opts)) + .pipe(gulp.dest('./tmp')); +}); + +// The whole shebang +gulp.task('default', function(callback) { + runSequence(['cleantmp', 'bower', 'drupalcore'], + 'buildjson', + ['buildcontributors', 'buildcompanies', 'buildcountries', 'javascripts', 'images', 'sass'], + 'usemin', + 'minifyhtml', + 'cleandist', + 'copytmpdist', + callback); +}); + +// Run contributors only, because companies can take ages the first time +gulp.task('contributors', function(callback) { + runSequence(['cleantmp', 'bower', 'drupalcore'], + 'buildjson', + ['buildcontributors', 'javascripts', 'images', 'sass'], + 'usemin', + 'minifyhtml', + 'cleandist', + 'copytmpdist', + callback); +}); + +// The load test data instead of real data. +gulp.task('test', function(callback) { + runSequence(['cleantmp', 'bower', 'drupalcore'], + 'testjson', + ['buildcontributors', 'buildcompanies', 'buildcountries', 'javascripts', 'images', 'sass'], + 'usemin', + 'minifyhtml', + 'cleandist', + 'copytmpdist', + callback); +}); diff --git a/json.rb b/json.rb deleted file mode 100755 index 4d089eb1a7..0000000000 --- a/json.rb +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env ruby - -Encoding.default_external = Encoding::UTF_8 -require 'erb' -require 'yaml' -require 'json' - -name_mappings = YAML::load_file('./name_mappings.yml') -contributors = Hash.new(0) -%x[git --git-dir=drupal/.git --work-tree=drupal log 8.0.x --since=2011-03-09 -s --format=%s].split("\n").each do |m| - m.gsub(/\-/, '_').scan(/\s(?:by\s?)([[:word:]\s,.|]+):/i).each do |people| - people[0].split(/[,|]/).each do |p| - name = p.strip.downcase - contributors[name_mappings[name] || name] += 1 unless p.nil? - end - end -end - -sum = contributors.values.reduce(:+).to_f -contributors = Hash[contributors.sort_by {|k, v| v }.reverse] - - -output = { - :date => Time.new, - :count => contributors.length, - :graph => { - :one => contributors.select {|k,v| v < 2}.length, - :twoTen => contributors.select {|k,v| (v > 1 && v < 11) }.length, - :TenOver => contributors.select {|k,v| v > 10}.length - }, - :contributors => contributors -} - -puts output.to_json diff --git a/name_mappings.yml b/name_mappings.yml deleted file mode 100644 index af0001920b..0000000000 --- a/name_mappings.yml +++ /dev/null @@ -1,28 +0,0 @@ -dereine: dawehner -dereine et al: dawehner -rob loach: robloach -david rothstein: david_rothstein -davereid: dave reid -niklas: niklas fiekas -gábor hojtsy: gabor_hojtsy -rootatwc: parisliakos -tim.plunkett et al: tim.plunkett -tim.plunket: tim.plunkett -ianmthomasuk: ianthomas_uk -jessebeach et al: jessebeach -aspilicious et al: aspilicious -andypost et al: andypost -neclimdul et al: neclimdul -sun et al: sun -droplet et al: droplet -podarok et al: podarok -damien tournoud et al: damien tournoud -and damien tournoud: damien tournoud -damz: damien tournoud -mrfelton. et al: mrfelton -jasonrsavino et al: jasonrsavino -marcp et all: marcp -fubhy the cat: fubhy -jeroen12345: jeroent -no_commit_credit: xjm -joelpitett: joelpittet diff --git a/package.json b/package.json new file mode 100644 index 0000000000..c3184ef19a --- /dev/null +++ b/package.json @@ -0,0 +1,29 @@ +{ + "name": "drupalcores", + "version": "0.0.1", + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/laurii/drupalcores.git" + }, + "devDependencies": { + "del": "^0.1.3", + "gulp": "^3.8.10", + "gulp-bower": "0.0.7", + "gulp-if": "^1.2.5", + "gulp-imagemin": "^2.0.0", + "gulp-jshint": "^1.9.0", + "gulp-minify-css": "0.3.11", + "gulp-minify-html": "0.1.7", + "gulp-sass": "*", + "gulp-shell": "^0.6.5", + "gulp-uglify": "^1.0.1", + "gulp-uncss": "^0.5.1", + "gulp-usemin": "0.3.8", + "jscs": "*", + "jshint": "*", + "jshint-stylish": "^1.0.0", + "run-sequence": "^2.2", + "svgo": "*" + } +} diff --git a/readme.md b/readme.md index 5e9940eb60..1113038d8e 100644 --- a/readme.md +++ b/readme.md @@ -1,36 +1,50 @@ +[![Build Status](https://travis-ci.org/lauriii/drupalcores.svg?branch=master)](https://travis-ci.org/lauriii/drupalcores) # DrupalCores ![count all the git commits](https://github.com/ericduran/drupalcores/raw/pystart/img.jpg) - Ruby script to parse all the git commit, aggregate every users commit count and generate a flat html page for easy viewing for all the contributes and commit counts. ## Instructions -First you need to clone a copy of the drupal 8 branch into your drupalcores directory +Install Ruby dependancies: + +Make sure you have [Bundler](http://bundler.io/) installed. + + bundle install + +Install node dependancies: + + npm install - git clone --branch 8.0.x http://git.drupal.org/project/drupal.git - git clone --branch gh-pages git@github.com:ericduran/drupalcores.git pages +Install gulp globally: -Once you have a git repo of drupal core in the drupal directory then you can run the cores.rb script + npm install gulp -g - ./cores.rb +Install bower globally: -For the company list do: + npm install bower -g - ./companies.rb > pages/companies.html +Once you've done that you run: -Takes a long time for the first parsing... (~1.5h) -After that it uses the company_mapping.yml and company_infos.yml. + gulp -The companies.rb accepts a parameter to either force a update of all people and companies (--update-all) -or to update people, which were not found (--update-not-found). +This might take a long time for the first parsing... (~1.5h) + +To update contributor > company mapping info, run: + + gulp companyinfo View online: - [DrupalCores](http://ericduran.github.com/drupalcores/) + [DrupalCores.com](http://www.drupalcores.com/) Do you only want the data? - [BAM!!!](http://ericduran.github.io/drupalcores/data.json) + [BAM!!!](http://www.drupalcores.com/data.json) + +## FAQ + +### My credits are split between two or more names. +[Name_mappings.yml](https://github.com/lauriii/drupalcores/blob/master/app/config/name_mappings.yml) is used to map incorrect names to the correct name. You can edit the file and submit a pull request. -##Help: +## I've changed companies but my commit credits are still listed under my old company. +The contributor > company mappings are cached, which doesn't get updated automatically at the moment. It takes a long time to parse the data from drupal.org. -If you want to help please just fork the project and issue a pull request. diff --git a/test/data.json b/test/data.json new file mode 100644 index 0000000000..2f367edca4 --- /dev/null +++ b/test/data.json @@ -0,0 +1 @@ +{"date":"2015-11-12 10:54:12 +0000","count":3302,"graph":{"one":1555,"twoTen":1314,"TenOver":433},"contributors":{"dawehner":1589,"tim.plunkett":1213,"alexpott":814,"berdir":804,"wim leers":762,"sun":705,"damiankloip":633,"xjm":548,"gábor hojtsy":502,"chx":437,"larowlan":437,"andypost":426,"jhodgdon":401,"amateescu":384,"joelpittet":360,"yched":353,"effulgentsia":351,"yesct":346,"cottser":340,"swentel":337,"nod_":323,"vijaycs85":300,"pwolanin":287,"aspilicious":252,"tstoeckler":239,"xano":231,"lewisnyman":225,"plach":225,"catch":224,"jibran":222,"lauriii":214,"droplet":206,"hussainweb":194,"parisliakos":191,"david_rothstein":186,"cilefen":180,"benjy":168,"fago":163,"mgifford":160,"phenaproxima":159,"neclimdul":157,"jessebeach":155,"crell":154,"robloach":154,"internetdevels":147,"rpayanm":144,"martin107":143,"stefan.r":141,"jhedstrom":137,"penyaskito":135,"fabianx":135,"mile23":132,"olli":127,"joshi.rohit100":126,"znerol":124,"rteijeiro":122,"bojhan":122,"er.pushpinderrana":122,"klausi":114,"longwave":113,"jeroent":109,"kim.pepper":108,"mikeryan":108,"davidhernandez":106,"webflo":104,"pfrenssen":103,"pcambra":101,"webchick":101,"jenlampton":101,"kgoel":98,"emma.maria":96,"disasm":96,"sutharsan":89,"marcingy":88,"albert volkman":87,"beejeebus":86,"cosmicdreams":86,"dave reid":78,"plopesc":77,"lokapujya":76,"ianthomas_uk":76,"idebr":76,"damien tournoud":76,"amitgoyal":76,"claudiu.cristea":75,"mortendk":75,"msonnabaum":74,"herom":74,"linclark":71,"mr.baileys":70,"attiks":70,"mrsinguyen":69,"ifrik":69,"niklas fiekas":68,"scor":67,"joachim":67,"mpdonadio":66,"lars toomre":65,"batigolix":64,"pillarsdotnet":63,"eclipsegc":62,"borisson_":61,"acf":61,"mdrummond":61,"heddn":55,"fubhy":55,"duaelfr":54,"heyrocker":54,"linl":54,"thedavidmeister":53,"geertvd":51,"manjit.singh":51,"pjonckiere":50,"quicksketch":49,"daffie":49,"mradcliffe":49,"slashrsm":48,"bfroehle":48,"chertzog":48,"shanethehat":48,"legolasbo":47,"yoroy":47,"nlisgo":47,"eiriksm":47,"googletorp":47,"steveoliver":46,"tr":46,"devin carlson":46,"mondrake":46,"katbailey":45,"jelle_s":45,"schnitzel":45,"mtift":45,"akalata":45,"tadityar":44,"manuel garcia":44,"clemens.tolboom":44,"c4rl":44,"bojanz":44,"ultimike":43,"nick_schuch":43,"mparker17":43,"das_peter":42,"bzrudi71":42,"quietone":42,"traviscarden":41,"pancho":41,"cs_shadow":40,"oriol_e9g":40,"fgm":39,"echoz":37,"dan reinders":37,"moshe weitzman":37,"johnalbin":37}}