GitHub
Note: This page is a work in progress. GitHub support is not fully functional. |
The authoritative repository for nearly all Wikimedia projects is https://gerrit.wikimedia.org. It is where we conduct code review with Gerrit software and trigger Continuous integration tests.
There is some integration with the commercial service https://github.com.
GitHub mirrors
editMost Wikimedia projects are mirrored on GitHub under https://github.com/wikimedia (phab:T37429), e.g.
- the core MediaWiki software is mediawiki/core in gerrit, with a mirror wikimedia/mediawiki on GitHub.
- the Flow extension is mediawiki/extensions/Flow in gerrit, with a mirror wikimedia/mediawiki-extensions-Flow on GitHub.
You can browse these projects on GitHub and even fork them.
Pull requests for mirrors
editPull requests on GitHub for projects mirrored from Gerrit will be automatically closed by a bot. In order to propose changes to a repository hosted on Gerrit, you will have to create a gerrit change for review from your pull request, or ask someone else to.
Projects on GitHub
editdate | count | change |
---|---|---|
2020-12-03 | 153 | - |
2022-03-22 | 178 | +25 |
2022-08-08 | 186 | +8 |
2023-02-03 | 180 | -6 |
2023-03-21 | 170 | -10 |
2024-06-24 | 186 | +16 |
- wikimedia/Armadillo
- wikimedia/CommonsNotifier
- wikimedia/CopyPatrol
- wikimedia/DarkCosmos
- wikimedia/DeadlinkChecker
- wikimedia/FlameGraph
- wikimedia/InteractionTimeline
- wikimedia/Jony
- wikimedia/KafkaSSE
- wikimedia/Leaflet.Sleep
- wikimedia/NYTPhotoViewer
- wikimedia/SurveyCop
- wikimedia/ToolforgeBundle
- wikimedia/WhoWroteThat
- wikimedia/WikiContrib
- wikimedia/WikidataQueryServiceR
- wikimedia/WikimediaUI-Style-Guide
- wikimedia/abaculus
- wikimedia/abstract-wiki-schemata-generator
- wikimedia/abstract-wikimedia-helpers
- wikimedia/abstract-wikipedia-data-science
- wikimedia/alertreview
- wikimedia/apiclient-wiki
- wikimedia/apigateway-rate-limit-tests
- wikimedia/apps-android-wikipedia-imagerecs
- wikimedia/articlequality
- wikimedia/banana-i18n
- wikimedia/brand-openedx
- wikimedia/buildkit
- wikimedia/bunyan-syslog-udp
- wikimedia/cassandra
- wikimedia/cert-manager
- wikimedia/cfssl
- wikimedia/color-contrast-checker
- wikimedia/commit-message-validator
- wikimedia/commtech-musikbot
- wikimedia/composer-merge-plugin
- wikimedia/content-type
- wikimedia/contest-tools-wordpress-plugin
- wikimedia/database-reports
- wikimedia/descartes
- wikimedia/design-playground-ios
- wikimedia/diff-blog
- wikimedia/docker-library-images
- wikimedia/draftquality
- wikimedia/drafttopic
- wikimedia/dump-scheduler-eval
- wikimedia/dumpgrepper
- wikimedia/editquality
- wikimedia/edittypes
- wikimedia/edx-frontend-app-learning
- wikimedia/edx-frontend-component-footer
- wikimedia/edx-ora2
- wikimedia/edx-platform
- wikimedia/enterprise
- wikimedia/eslint-config-wikimedia
- wikimedia/eslint-docgen
- wikimedia/eslint-plugin-mediawiki
- wikimedia/eslint-plugin-no-jquery
- wikimedia/eventgate
- wikimedia/eventmetrics
- wikimedia/eveskin
- wikimedia/geojson-mapnikify
- wikimedia/getID3
- wikimedia/git-fat
- wikimedia/hdfs-tools
- wikimedia/html-metadata
- wikimedia/htmldumper
- wikimedia/hyperswitch
- wikimedia/incubator-superset
- wikimedia/interconnection-wordpress-theme
- wikimedia/jmx_exporter
- wikimedia/jquery.i18n
- wikimedia/jquery.ime
- wikimedia/jquery.uls
- wikimedia/jquery.webfonts
- wikimedia/json-schema
- wikimedia/json-stable-stringify
- wikimedia/jsonschema-compatibility
- wikimedia/jsonschema-tools
- wikimedia/kad
- wikimedia/kartodock
- wikimedia/kartotherian-tilelive-switch
- wikimedia/kserve
- wikimedia/language-data
- wikimedia/less-plugin-clean-css
- wikimedia/less.js
- wikimedia/liftwing-python
- wikimedia/limitation
- wikimedia/makizushi
- wikimedia/mapnik-reference
- wikimedia/maps-config
- wikimedia/mediawiki-api-demos
- wikimedia/mediawiki-dgraph-skin
- wikimedia/mediawiki-docker
- wikimedia/mediawiki-oauth-client-wordpress-plugin
- wikimedia/mediawiki-skins-Wisky
- wikimedia/mediawiki-skins-cli
- wikimedia/mediawiki-title
- wikimedia/mediawiki-types
- wikimedia/mw-node-qunit
- wikimedia/nlwiki_articlequality
- wikimedia/node-apn
- wikimedia/node-htcp-purge
- wikimedia/node-rdkafka-prometheus
- wikimedia/node-repo-template
- wikimedia/node-url-get
- wikimedia/oauth2-server
- wikimedia/ocean
- wikimedia/openedx-frontend-component-header
- wikimedia/ores
- wikimedia/ores-support-checklist
- wikimedia/ores-wmflabs-deploy
- wikimedia/ores_bias_project
- wikimedia/osm-bright.tm2
- wikimedia/osm-bright.tm2source
- wikimedia/pcs-html-converter
- wikimedia/phoenix
- wikimedia/pi-playbook
- wikimedia/pixel
- wikimedia/pixel-seed-data
- wikimedia/poppy-cli
- wikimedia/popularpages
- wikimedia/preq
- wikimedia/pretty-json
- wikimedia/research-api-endpoint-template
- wikimedia/research-api-interface-template
- wikimedia/restbase
- wikimedia/restbase-mod-table-cassandra
- wikimedia/restbase-mod-table-mysql
- wikimedia/restbase-mod-table-spec
- wikimedia/restbase-mod-table-sqlite
- wikimedia/revscoring
- wikimedia/rsyslog_exporter
- wikimedia/sentencex
- wikimedia/sentencex-js
- wikimedia/service-runner
- wikimedia/service-template-node
- wikimedia/shiro-wordpress-theme
- wikimedia/shop-theme
- wikimedia/simplei18n
- wikimedia/stylelint-config-wikimedia
- wikimedia/svgtranslate
- wikimedia/swagger-router
- wikimedia/takedown-tools
- wikimedia/tilelive-bridge
- wikimedia/tilelive-overlay
- wikimedia/tilelive-promise
- wikimedia/tilelive-tmsource
- wikimedia/tilelive-tmstyle
- wikimedia/tilelive-vector
- wikimedia/tool-gridengine-status
- wikimedia/tool-keystone-browser
- wikimedia/tool-my-first-flask-oauth-tool
- wikimedia/toolhunt
- wikimedia/toolhunt-ui
- wikimedia/tools-global-search
- wikimedia/typescript-types
- wikimedia/unused-resources
- wikimedia/vegalite-wordpress-plugin
- wikimedia/vllm
- wikimedia/waxer
- wikimedia/wikibase-changes
- wikimedia/wikilabels
- wikimedia/wikilabels-wmflabs-deploy
- wikimedia/wikilearn-edx-theme
- wikimedia/wikimedia-fundraising-FineDiff
- wikimedia/wikimedia-ocr
- wikimedia/wikimedia-soundlogo-site
- wikimedia/wikimedia-wordpress-annual-report-plugin
- wikimedia/wikimedia-wordpress-security-plugin
- wikimedia/wikimediafoundation-org
- wikimedia/wikipedia-android-lite
- wikimedia/wikipedia-ios
- wikimedia/wikipedia-ios-Tweaks
- wikimedia/wikipedia-ios-codemirror
- wikimedia/wikipedia-ios-lite
- wikimedia/wikipedia-ios-liter
- wikimedia/wikipedia-kaios
- wikimedia/wikipedia-preview
- wikimedia/wikipediapreview-wordpress
- wikimedia/wikitax
- wikimedia/wikiwho_api
- wikimedia/wmfdata-python
- wikimedia/ws-export
- wikimedia/yamlconf
Setting up the GitHub triangular workflow
editThis is a guide on contributing to Wikimedia's Gerrit-hosted projects with a GitHub-based workflow. This guide is aimed mainly at Windows-based users that use GitHub for Windows (GitHub Desktop), but should also be usable for contributors who work from the console. However, for this last group, contributing using Gerrit/git-review is probably easier.
In this guide, I'm using the pywikibot repository as an example, but the same workflow can be applied to any repository hosted in WMF's Gerrit. The GitHub for Windows workflow has some issues (notably GHfW reporting an error while pushing).
The normal GitHub workflow is as follows:
- Clone from the original repository
- Push to your own repository
- Submit a pull request
We will set up this using GitHub for Windows:
Cloning the repository
edit- Go to wikimedia/pywikibot
- Click 'Clone in Desktop'
GitHub desktop will now launch, and clone pywikibot, including all submodules.
Forking the repository
edit- Go to wikimedia/pywikibot
- Click 'Fork'
A fork is now created under your GitHub username, e.g. wikimedia/pywikibot
Setting up push options
editWe now want to configure git to pull from the central repository (wikimedia/pywikibot) and to push to your own repository (https://github.com/<username>/pywikibot). For this, follow these steps:
- In GitHub for Windows, click tools » open a shell here
- In this shell, type these commands:
- git config remote.origin.pushurl https://github.com/<username>/pywikibot.git
- git config remote.origin.push +refs/heads/*:refs/heads/*
The first command configures your own GitHub repository as place to push, the second sets 'force push' as default - this will result in your fork to be always equal to what you have locally in GitHub for Windows.
Submitting a patch
edit- Make some changes
- In GitHub for Windows, click 'master' and type a branch name in the 'Filter or create new' field. Press Enter to create it.
- Select files to commit and press 'commit'
- Press 'publish'. Your changes are now pushed to your own repository on GitHub.
- Browse to wikimedia/pywikibot
- Under 'Your recently pushed branches' click 'Compare & pull request'
- Add a note, then click 'Send pull request'
Updating a patch
edit- Make some changes
- Commit to the relevant branch
- Click 'sync'
- If you get an error message, click tools » open a shell here, and run 'git push'. This should always succeed.
- The change is automatically added to your pull request
Other GitHub organizations
editIt's a mess! Here are a few of the existing Wikimedia-focused group repositories.
- https://github.com/wikimedia
- https://github.com/mediawiki-utilities (Wikimedia Research)
- https://github.com/toolforge
- https://github.com/toollabs
- https://github.com/tool-labs
- https://github.com/wiki-ai (Wikimedia Research)
- https://github.com/Wikidata (WMDE)
- https://github.com/Wikidata-lib (WMDE)
- https://github.com/WikidataQuality (WMDE)
- https://github.com/DataValues (WMDE)
- https://github.com/wikimediadc
- https://github.com/wikimedia-research (Wikimedia Research)
- https://github.com/wikisource
- https://github.com/wmde (WMDE)
- https://github.com/WoCUG
- https://github.com/wikimedia-gadgets
- https://github.com/wikimedia-enterprise (WMF)
See also https://github.com/MWStake/nonwmf-extensions for a super-repository of MediaWiki extensions not hosted at Wikimedia.
Plus countless personal repositories.
See Also
edit- phab:T37497 - Implement a way to bring GitHub pull requests into Gerrit.
- G2G, a set of scripts that make Gerrit / GitHub interoperability possible.
- sync-gerrit.bash script to move GitHub pull requests to Gerrit Changeset manually (discussion).