Skip to content
This repository was archived by the owner on Feb 1, 2023. It is now read-only.

Github vs Gitlab vs trac

Matthias Köppe edited this page Sep 16, 2022 · 22 revisions

This page compares Github, Gitlab and Trac, focusing on the specific differences that are important to the Sage community.

Github vs trac

In favor of github

  • We are struggling with various aspects of self hosting. Several Sage developers have spend a lot of time over the last month working to upgrade trac and the underlying virtual machine. Hosting on Github means that someone else with more experience and economies of scale is providing this service for us. Moreover, we are currently paying money for trac's servers, while Github would be free.
  • Github is the largest source code host, making it far more likely to be familiar to new developers than trac. We are losing many potential developers by having a workflow that is unfamiliar to them (though it is hard to measure this effect due to selection bias). Conversely, the use of github a more transferrable skill, which may help draw in younger developers who may want to build a resume, or donors to Sage.
  • Github provides many features that trac doesn't (or that are superior to the corresponding trac feature). For example:
  • We've already added some continuous integration checks to trac; these will be clearer when using Github.
  • Github is actively developed with a very large user base, and new features are being added regularly; trac is far less active (18 posts in 6 threads on their mailing list since the beginning of 2022, all upcoming releases are over a year overdue and mainly seem concerned with updating dependencies rather than implementing new features, their list of users includes many dead links and some that have migrated to other systems like gitlab). With trac becoming less and less maintained we're likely to face further security issues and compatibility issues with other software going forward.
  • It is possible in github to make small changes via the web interface, which lowers the barrier for fixing typos.
  • Github supports two-factor authentication, reducing the chance of someone sneaking malicious code into Sage.
  • Various Sage dependencies have migrated to github already, making automatic cross repository links helpful when reporting bugs upstream.
  • Due to its popularity, many IDEs provide plugins for Github. For example, it is possible to do the complete fork-clone-branch-pr workflow and review PRs completely from within VS Code without using Github's web interface.

In favor of trac

  • While git and Trac are entirely open source, the GitHub software as a whole is closed source (although GitHub has published many of its components as open source)
  • We don't have control of Github's policies, procedures and prices. Github's prices for providing hosting and continuous integration services may increase (they're currently free). Copyright laws can have unfortunate consequences causing downtime and possible legal costs. As a large company, Github has to be more cautious about obeying US export control laws and has thus blocked access in various countries (though it has since restored access in Iran).
  • Backing up or migrating issues and wiki pages off of github takes some work, making it harder to switch away from github if they raise prices or make changes that we don't like.
  • Various aspects of the github workflow will be different (the separation of tickets into Issues and PRs for example, switching from git-trac to Github's CLI), requiring current Sage developers to devote time and effort into learning new systems

Github vs Gitlab

This section is still in progress. Here are some links to help flesh it out:

In favor of Github

  • We are heavily invested in using Github Actions, having spent a lot of time incorporating them into our current workflow.

In favor of Gitlab

  • Since Gitlab's core software is open source, it is easier to switch to self hosting if we become unhappy with gitlab.com.
Clone this wiki locally