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]

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)