# Forge (informatique)

En informatique, une forge est un système de gestion et de maintenance collaborative de texte (de la documentation, des données alimentées collaborativement, des textes de loi, etc.). Ces outils ont été créés pour les besoins du développement, qui reste aujourd'hui l'usage largement majoritaire.

## Objectifs

L'objectif d'une forge est de permettre à plusieurs développeurs de participer ensemble au développement d'un ou plusieurs logiciels, le plus souvent à travers le réseau Internet.
De fait, une forge permet de rassembler des projets et des développeurs. Mais la plupart des forges permettent aussi à des personnes ne pratiquant pas la programmation informatique de participer, par exemple les traducteurs ou les graphistes, ou les utilisateurs qui s'entraident dans des forums ou soumettent des rapports de bogues. Une forge permet donc de rassembler tous ces gens autour d'un projet de développement de logiciel.
Les forges représentent donc un bon moyen d'assurer la transparence du développement d'un projet et de trouver des contributeurs afin que le projet soit actif.

## Fonctions disponibles

Les outils offerts par une forge sont principalement :
* système de gestion des versions (par exemple, via Git ou Mercurial) ;
* gestionnaire de listes de discussion (et/ou de forums) ;
* outil de suivi des bugs ;
* gestionnaire de documentation (souvent sur le principe du wiki) ;
* gestion des tâches ;
* traduction en ligne.
L'avantage d'une forge est de rassembler tous ces outils en un seul ensemble intégré et cohérent, et de les mettre à disposition de plusieurs personnes afin qu'elles puissent développer ensemble leurs projets. En effet, avant l'apparition des forges, les développeurs souhaitant collaborer pour le développement d'un projet devaient installer chaque application séparément, ce qui demande bien plus de travail et de temps.
Ensuite, la forge peut aussi permettre de présenter son projet (ce qui peut être utile pour attirer des contributeurs potentiels) grâce à des outils comme :
* la présentation de captures d'écran ;
* l'écriture d'actualités ;
* la mise à disposition d'un hébergement ou de quelques pages web descriptives.
Cela peut être organisé sur une page de présentation du projet, qui rassemble aussi la licence de logiciel du projet, les technologies utilisées, la compatibilité…
Plus largement, les forges tendent à intégrer de plus en plus d'outils également présents sur d'autres plates-formes collaboratives facilitant le travail de groupe, l'organisation et la synchronisation dans les projets, mais aussi des outils plus spécifiques au développement de logiciels (outils d'intégration continue : de tests, packaging, etc.).

## Services en ligne d'hébergement de projets

Il existe plusieurs forges actuellement disponibles sur le Web dans lesquelles des développeurs peuvent faire héberger gratuitement leurs projets.
Souvent, ces forges sont dédiées à l'hébergement de projets de développement de logiciel libre, parfois elles acceptent des projets développant des logiciels non libres (mais dont les sources sont accessibles).
On peut par exemple citer SourceForge, qui est historiquement la première forge à avoir proposé ce type de service à grande échelle. Des forges comme GNU Savannah sont dédiées à l'hébergement exclusif de projets de logiciels libres.

## Logiciels intégrés pour le déploiement d'une forge

Il est également possible de déployer sa propre plate-forme de forge pour y héberger ses projets. La plupart des grands projets collaboratifs ont aujourd'hui adopté cette stratégie plutôt que d'utiliser les services externes d'hébergement.
Différentes forges sont disponibles sous forme intégrée pour ce faire. Elles reprennent en général des fonctions similaires à celles des services d'hébergement. Par rapport à l'utilisation d'un service externe, elles apportent une certaine indépendance aux projets qui s'en dotent, mais aux dépens d'un coût de mise en place et d'administration pour l'organisation qui met la forge en ligne.

## Forges libres pour développer du logiciel libre

Les plates-formes de forges ne fonctionnent pas toutes elles-mêmes à base de logiciels libres, ou dans un cadre bénévole, ce qui pose évidemment la question de l'utilisation et du stockage des données des projets déposés sur ces forges. Un article de la Free Software Foundation Europe résume cette question en s'intéressant à la « dérive de SourceForge ».
De même, le fait que le logiciel SourceForge soit devenu un logiciel propriétaire a poussé la création de nombreux « forks ». Ainsi, plusieurs forges libres sont basées sur une version antérieure de SourceForge, il s'agit de :
* Gforge, qui a ensuite donné naissance à sa propre variante propriétaire GForge AS, mais dont l'ancien code libre a été maintenu puis renommé en FusionForge ;
* Savane, qui a été développé pour faire fonctionner GNU Savannah ;
* Codex de Xerox, initialement déployée seulement dans quelques grandes entreprises, qui a par la suite donné naissance au produit Codendi, ainsi qu'à Tuleap, qui sont désormais portées par des éditeurs indépendants.

### Liste de forges publiques

* Framagit (utilisant GitLab) (fr)
* Sourcesup (utilisant FusionForge) (fr)

### Liste de logiciels de forges

En logiciel libre :
* NovaForge .
* Apache Allura (en) (utilisé par SourceForge)
* ChiliProject
* Codendi (anciennement CodeX)
* CodingTeam
* Forgejo (utilisé par Codeberg)
* FusionForge (reprise du code sous GPL de GForge)
* GitBucket, clone de GitHub.
* Gitea
* GitLab
* Gogs
* Indefero
* JasForge
* Launchpad (développé par Canonical)
* LibreSource
* Pagure
* Phabricator
* Redmine
* Savane, utilisé par GNU Savannah et Gna.
* Sourcehut
* Trac
* Tuleap
* VHFFS, utilisé par TuxFamily
En logiciel propriétaire :
* Bitbucket (repris par Atlassian)
* CodePlex
* GitHub
* GForge Advanced Server (en)
* TeamForge (anciennement SourceForge Enterprise Edition)
* Team Foundation Server
Archive de forges :
* Software Heritage, porté par l'INRIA