Learning patterns/Git repository for software

A learning pattern forOnline engagement patterns‎
Git repository for software
problemDealing with multiple versions of software or components of it can easily become messy
solutionUsing a Git repository, having a clone of it publicly available on a service that is known for its speed and stability solves several challenges, including versioning, speed, attribution, availability and tidiness at once.
created on17 September, 2014

What problem does this solve?Edit

  • Non-transparent code development using funds spent for software is disadvantageous as it does not allow tracking activity and progress by the grant maker.
  • Collaborative software engineering easily becomes messy without a source code management system.
  • Most source code management systems require an internet connection to submit.
  • A good way to find out which solution is the best is try&fail but most source code management systems do not have the concept of offline-branches.

What is the solution?Edit

Git and having a repository online, publicly available.

General considerationsEdit

  • Git is probably less intuitive to use than SVN or other popular source code revision management systems. It comes with a lot of features but also has a steep learning curve.
  • All contributors who want to contribute will have to have a basic understanding how to use Git in order to submit a patch or to clone a repo in order to test.
  • Review & Merge frequently if you have multiple collaborators. Otherwise you'll run into merge conflicts and manual re-basing can consume enormous parts of your time.
  • GitHub Desktop is an easy, GUI-based tool for new users who are unfamiliar with Git commands. This may reduce the learning curve involved.

When to useEdit

  • Almost all bigger successful opensource projects host their source code with either git or SVN now: MediaWiki, DokuWiki, WordPress, Drupal.


  • GitHub is especially useful, as it does not only enable version control and external contributions, but also a lightweight yet effective system to manage technical activities.[1][2][3][4] It also integrates issue tracking and feature requests, providing a platform for developers, volunteers, and users to collaborate.[5] On GitHub, you can create an organization[6] to organize all your repository under a common umbrella that will make your project more recognizable and not tied to a single user. You can add team members with different roles that can have different permissions on the repositories of the organization.
  • Wikimedia's Gerrit installation can be used for easy integration with existing infrastructure, including linking to bug reports on Phabricator, translation via Translatewiki.net, easily set up continuous integration, documentation generation on doc.wikimedia.org, and more.[7]

See alsoEdit

Related patternsEdit

External linksEdit



  • Source control (whether Git or any other modern system) is essential for open, participatory technology. Asaf (WMF) (talk) 07:46, 8 November 2014 (UTC)
  • The WIGI project uses git, github specifically, for code control. One thing that allows us to be really integrated is that using the "issues" and "milestones" features, we conduct all our project management there as well as code collaboration. Maximilianklein (talk) 22:01, 21 August 2015 (UTC)
  • The StrepHit codebase is on GitHub as well. Hjfocs (talk) 14:11, 11 April 2016 (UTC)
  • And the Wiki Needs Pictures one too. --AlessioMela (talk) 13:52, 5 August 2016 (UTC)
  • The Wikimedia Commons app for Android uses GitHub for source code management and collaboration. Misaochan (talk) 03:49, 3 October 2016 (UTC)
  • The Wikidata & ETL project uses GitHub for developing a Wikibase loader component in LinkedPipes ETL. Jakub.klimek (talk) 11:58, 1 August 2019 (UTC)
  • If you're writing a MediaWiki component, using Wikimedia's gerrit specifically is also a great way to get it hooked up to TWN for automatically updated translations. Plus a lot of us do check code search to see what all is using particular things in the code. It's helpful for us because we can sometimes see new examples how to do things, and it's also at times useful for you because then we may just fix your thing too when changing some core function it uses, or the like. -— Isarra 16:37, 31 August 2019 (UTC)
  • When developing mw:Extension:GlobalWatchlist using Gerrit made it so much easier to track changes than when I was make edits to a script on-wiki, since individual patch sets for a specific feature were all combined into a single commit in the history. --DannyS712 (talk) 01:43, 6 October 2020 (UTC)
  • Properly using version control is a must nowadays. Git is great, and many will also say that github is great. Personally, I'd like to say that gerrit is great as well. I find it even better than github for certain aspects, in particular for the "patch sets" paradigm, which makes the final product cleaner, hiding old/wrong stuff. --Daimona Eaytoy (talk) 12:04, 29 November 2020 (UTC)
  • For the Community Health Metrics project we set up a GitHub organization (WikiCommunityHealth) to work as an umbrella for all code repositories that we created for the project. --CristianCantoro (talk) 16:43, 28 April 2021 (UTC)