Skip Navigation

Difference between Github, Gitlab, Forgejo ?

Another "Differences in Linux" question :)

I often wonder, what exactly is the difference between this services?

I understand, that:

  • github.com is a company, where as gitlab and forgejo are (softwares)?
  • They all "manage/wrap/interface with" git?

Questions:

  • what software does github.com use?
  • whats the difference between them (pros/cons)?
  • what about self-hosting? Possibilities/Preferences?

As always, thanks beforehand :)

46 comments
  • Github: Microsoft code hosting site that feeds all your code through AI training and tries to lock you in through their pull request and related machinery. Once used a motto like "social coding", but let go of that when they realized Facebook for nerds didn't sound that great. Software is mostly proprietary besides Git itself.

    Gitlab: 1) a Github competitor (gitlab.com, code hosting site with somewhat similar features; 2) the software for that site, huge and bloaty and slow, written with Ruby on Rails. You can self host it if you want, but yecch.

    Forgejo: Git front end software, fork of Gitea and/or Gogs. Small and fast and written in Go. Fewer features than Github or Gitlab. If you want to self-host, I'd use this or some variant. Quite easy to install and run.

    Gitweb: comes with git, pretty rudimentary but has old school attractiveness at least for me. Really just a browsing interface. No pull requests or anything like that.

    Git, just plain Git: if you are self-hosting a project for yourself and maybe a few friends/collaborators, it's fine to just use git with no web stuff, and push/pull by ssh. You'd manually install account credentials for your friends. This is really the simplest, but NO fluffy UI or other creature comforts.

    Fossil: amazingly small and fast alternative to all the above (fossil-scm.org) but uses its own VCS (Fossil) that doesn't interoperate with Git. I think the author said he might convert it over sometime. It's written in C! Uses sqlite as repo backend instead of the file system like git uses. Has built in wiki, bug tracking, documentation viewer, etc. and used about 2MB of ram last time I tried it, ridiculously small (Gogs used around 40MB and Gitlab uses gigabytes).

    Sourceforge (sf.net), very old school code hosting site, not of much relevance any more. They released an old old version of the software a long time ago and that got forked to become Savannah.

    Savannah (savannah.gnu.org) hosting site for GNU and related software. Also savannah.nongnu.org for non-GNU stuff in the same spirit. I don't know the exact criteria for putting stuff on nongnu but I think it's on a project-approval basis, rather than letting everyone upload whatever they want.

    Darcs (darcs.net), another alternative to git, better in some ways, written in Haskell, lost most of its users after a self-inflicted footbullet around 5y ago. There was a hosting site (darcsweb?) for it but that looks to be gone now.

    There are a few more of them too, none of much importance these days even though some were interesting.

  • All three are web based frontends for git repositories; you use git to send and receive code to/from them for storage and sharing. They all also provide other things useful to developers such as issue tracking, wikis and such. They are different products that fulfill the same role.

    what software does github.com use?

    It's all proprietary software (presumably) written in-house. We don't have access to it.

    whats the difference between them (pros/cons)?

    Github:
    Pro: Wider reach, everyone knows about Github.
    Con: Proprietary; your code is hosted based on the whims of Microsoft.

    Forgejo:
    Pro: Open source, selfhostable. There's a big instance on https://codeberg.org/ which a lot of open source projects are starting to move to.
    Con: It's smaller and not as well known as Github. In theory it may also lack features, but I've not seen any that have gotten in my way.

    Gitlab:
    Pro: It's... I guess in second place in terms of popularity? It's also selfhostable.
    Con: It's one of those open source projects with paid closed source features, so not really appealing to either group. It's also had questionable management decisions recently.

    what about self-hosting? Possibilities/Preferences?

    If you want to selfhost a git server, I'd recommend Forgejo; it seems to be the most friendly towards the open source and selfhosting communities.

  • In the same order you asked:

    Safe, easy to use, polished and reliable ; Someone else tried to emulate the first one success ; Poorly executed open-source alternative you can selfhost.

    All of them speak the git and are essentially web UIs made to manage it and the creation of repositories and setting up permissions.

  • Ha, I was thinking this is a perfect llm question so I tried. And I was right.

    Great questions! Let's break down the differences between GitHub, GitLab, and Forgejo, and address your specific queries.

    Overview

    1. GitHub:
      • Company: GitHub, Inc. (owned by Microsoft since 2018).
      • Software: GitHub is a proprietary platform. The software running GitHub.com is not open-source.
      • Primary Use: Hosting Git repositories, collaboration, CI/CD, project management, and more.
    2. GitLab:
      • Company: GitLab Inc.
      • Software: GitLab is an open-core platform, meaning the core functionality is open-source (GitLab Community Edition), but there are proprietary features in the Enterprise Edition.
      • Primary Use: Similar to GitHub, but with a stronger emphasis on CI/CD and DevOps.
    3. Forgejo:
      • Software: Forgejo is a fork of Gitea, which is a lightweight, open-source Git service.
      • Primary Use: Self-hosted Git repository management with a focus on simplicity and community-driven development.

    Detailed Differences

    Software Used by GitHub

    GitHub.com uses proprietary software developed by GitHub, Inc. The exact details of their software stack are not publicly available, but it is known to be highly customized and optimized for their scale.

    Pros and Cons

    GitHub:

    • Pros:
      • Largest user base, making it the de facto standard for open-source projects.
      • Extensive integrations with third-party services.
      • Robust features for collaboration, including Issues, Pull Requests, and Actions (CI/CD).
    • Cons:
      • Proprietary software, so you cannot self-host it.
      • Limited customization compared to open-source alternatives.

    GitLab:

    • Pros:
      • Open-source core (Community Edition).
      • Comprehensive DevOps lifecycle support, including CI/CD, monitoring, and security.
      • Can be self-hosted.
    • Cons:
      • Can be resource-intensive to self-host.
      • Some advanced features are only available in the Enterprise Edition.

    Forgejo:

    • Pros:
      • Fully open-source and community-driven.
      • Lightweight and easy to self-host.
      • Simple and user-friendly interface.
    • Cons:
      • Smaller ecosystem compared to GitHub and GitLab.
      • Fewer built-in features for CI/CD and DevOps.

    Self-Hosting

    GitHub:

    • Self-Hosting: Not possible. GitHub is a cloud service only.

    GitLab:

    • Self-Hosting: Yes, GitLab offers both a cloud service (GitLab.com) and self-hosted options. You can download and install GitLab Community Edition or Enterprise Edition on your own infrastructure.

    Forgejo:

    • Self-Hosting: Yes, Forgejo is designed to be self-hosted. It is lightweight and can be run on modest hardware.

    Preferences

    • For Open-Source Projects: GitHub is often preferred due to its large community and visibility.
    • For DevOps and CI/CD: GitLab is a strong choice due to its comprehensive feature set.
    • For Lightweight Self-Hosting: Forgejo (or Gitea) is ideal if you need a simple, self-hosted Git service without the overhead of more complex platforms.

    Conclusion

    Each platform has its strengths and is suited to different use cases. GitHub is great for visibility and collaboration, GitLab excels in DevOps and CI/CD, and Forgejo is perfect for lightweight, self-hosted Git management. Your choice will depend on your specific needs, whether it's community size, feature set, or the ability to self-host.

46 comments