Forge (software)

In FOSS development communities, a forge is a web-based collaborative software platform for both developing and sharing computer applications. The term forge refers to a common prefix or suffix adopted by various platforms created after the example of SourceForge. This usage of the word stems from the metalworking forge, used for shaping metal parts.

For software developers it is an online service to host the tools they need to communicate with their coworkers. The source code itself is stored in a revision control system and linked to a wide range of services such as a bug database, continuous integration, etc. When a FOSS development community forks, it duplicates the content of the forge and is then able to modify it without asking permission. A community may rely on services scattered on multiple forges: they are not necessarily hosted under the same domain. For instance it is not uncommon for discussions to be hosted on Discourse while the source code is hosted on Gitea.

For users, a forge is a repository of computer applications, a place where bugs can be reported, a channel to be informed of security issues, etc.

Software forges became popular in 2001,[1] and have proven successful as a software development environment for millions of software projects.

TechnologyEdit

Two different kinds of concepts are commonly referred to by the term forge:

  • a service offered on a Web platform to host software development projects;
  • an integrated set of software elements which produce such platforms, ready for deployment.

All these platforms provide similar tools helpful to software developers working in the hosted projects:

Some provide other features as well:

InteroperabilityEdit

API and webhooksEdit

In addition to the web user interface, it is common for a forge to provide a REST API with the a documentation (GitHub,[2] GitLab,[3] Gitea,[4] etc.) to enable interoperability with other products. Forge users can also install webhooks to notify a third party online service when an event happens on their software project (for instance the webhook can be called when a new issue is created[5]).

FederationEdit

Federation and the associated protocol ActivityPub (introduced in 2018) allows forges to communicate with each other about their activities (for instance when issues are created[6] or a commit is pushed[7]). Although native federation support is sometime discussed[8] or in progress[9] it is not yet available. Third party projects emerged to bridge the gap such as a plugin for the pagure forge[10] or a proxy supporting ActivityPub and translating it to REST API calls to the designated forge.[11]

AuthenticationEdit

There is no SSO that applications and users could rely on to authenticate with all forges. Instead it is common for a forge to support a number of authentication providers: if a user already has an account they can use it to authenticate on the forge and do not need to create a new account (for instance GitLab supports OAuth2 providers such as GitHub[12]). Some forges can can act as an authentication provider (for instance Gitea is an OAuth2 provider[13] as well as GitLab[14]).

IntegrationEdit

To improve the user and the system administrator experience when using multiple online services, some forges are integrated with popular third-party software and services such as online chat (for instance mattermost has a plugin for GitHub[15] and is natively support by GitLab[16]).

ExamplesEdit

Free softwareEdit

Freemium softwareEdit

Free online servicesEdit

Freemium online servicesEdit

Discontinued softwareEdit

  • Savane (software)
  • GForge Community Edition (last release April 23, 2010), not to be confused with the proprietary GForge first released October 1, 2018.

Discontinued online servicesEdit

See alsoEdit

ReferencesEdit

  1. ^ Maguire, James (October 17, 2007). "The SourceForge Story". Archived from the original on July 16, 2011. Retrieved April 12, 2012.
  2. ^ "GitHub REST API". Retrieved 31 August 2021.
  3. ^ "GitLab REST API". Retrieved 31 August 2021.
  4. ^ "Gitea REST API". Retrieved 31 August 2021.
  5. ^ "Gitea webhook". Retrieved 31 August 2021.
  6. ^ "forgefed issue". Retrieved 31 August 2021.
  7. ^ "forgefed commit". Retrieved 31 August 2021.
  8. ^ "Federated GitLab". Retrieved 31 August 2021.
  9. ^ "Gitea federation theme". Retrieved 31 August 2021.
  10. ^ "Forgefed pagure plugin". Retrieved 31 August 2021.
  11. ^ "Fedeproxy forge federation". Retrieved 31 August 2021.
  12. ^ "GitLab sign-in with GitHub". Retrieved 31 August 2021.
  13. ^ "Gitea OAuth2 provider". Retrieved 31 August 2021.
  14. ^ "GitLab OAuth2 provider". Retrieved 31 August 2021.
  15. ^ "GitHub Mattermost Plugin". Retrieved 31 August 2021.
  16. ^ "GitLab Mattermost". Retrieved 31 August 2021.
  17. ^ "Launchpad Suite in Launchpad". launchpad.net.
  18. ^ "Phabricator".
  19. ^ "sourcehut - the hacker's forge". 2021-03-31.
  20. ^ "Product". GitLab.
  21. ^ "sourcehut pricing". 2021-03-31. Archived from the original on 2021-03-31.
  22. ^ "GitLab Pricing". GitLab.
  23. ^ "Pricing · Plans for every developer". GitHub.
  24. ^ "The end of Gna?". 2016-11-20. Archived from the original on 2017-05-05. Retrieved 2017-09-13.