En las comunidades de desarrollo de software libre y de código abierto (FOSS) , una forja es una plataforma de software colaborativo basada en la web para desarrollar y compartir aplicaciones informáticas.
Para los desarrolladores de software, es un servicio en línea que aloja las herramientas que necesitan para trabajar y comunicarse con sus compañeros de trabajo. Proporciona un flujo de trabajo para proponer modificaciones y participar en debates. El objetivo es llegar a un acuerdo que permita que estas modificaciones se fusionen en el repositorio de software.
Para los usuarios, una forja es un repositorio de aplicaciones informáticas , un lugar donde se pueden reportar errores , un canal para estar informado de problemas de seguridad , etc.
El código fuente en sí se almacena en un sistema de control de revisión y se vincula a una amplia gama de servicios, como una revisión de código , una base de datos de errores , una integración continua , etc. Cuando una comunidad de desarrollo realiza un forge, duplica el contenido del forge y luego puede modificarlo sin pedir permiso. Una comunidad puede depender de servicios dispersos en varios forges: no necesariamente están alojados bajo el mismo dominio.
El término forja se refiere a un prefijo o sufijo común adoptado por varias plataformas creadas siguiendo el ejemplo de SourceForge en 2001. [1] Este uso de la palabra proviene de la forja de metales , utilizada para dar forma a piezas de metal .
En 2023, las dos plataformas de desarrollo colaborativo más utilizadas no se publicitan como forges . El lema de GitHub [2] es "La plataforma completa para desarrolladores para crear, escalar y entregar software seguro" . El lema de GitLab [3] es "la plataforma DevSecOps impulsada por IA más completa" . Aunque comparten todos los aspectos técnicos de lo que constituye un forge, la documentación y el material de marketing no hacen uso del término forges .
Sin embargo, en las comunidades de desarrollo de FOSS y desde el inicio de la primera bifurcación de SourceForge en 2001, el término forge todavía se usa comúnmente para designar plataformas de software colaborativo en línea.
Algunos servicios en línea no se pueden considerar como una forja, incluso cuando comparten algunos de sus aspectos esenciales. Por ejemplo, un servicio de revisión de código independiente como Gerrit a veces se integra en una forja que carece de revisión de código integrada, pero no se puede utilizar para distribuir el software a los usuarios finales.
De manera similar, los servicios en línea que se centran en la gestión de proyectos o el seguimiento de problemas, como Trac , Redmine u OpenProject, no ofrecen un flujo de trabajo que los desarrolladores de software puedan utilizar para analizar los cambios que proponen y fusionar el resultado en el repositorio de software. Estos servicios pueden incluir una integración limitada con una variedad de sistemas de control de versiones, para visualizar y citar el código que contienen, pero eso por sí solo es más una característica que un flujo de trabajo que un desarrollador puede utilizar.
El término forja suele hacer referencia a dos tipos diferentes de conceptos :
Todas estas plataformas proporcionan herramientas similares que resultan útiles para los desarrolladores de software que trabajan en los proyectos alojados:
Algunos también ofrecen otras funciones:
Además de la interfaz de usuario web , es común que un forge proporcione una API REST con la documentación ( GitHub , [4] GitLab , [5] Gitea , [6] etc.) para permitir la interoperabilidad con otros productos. Los usuarios de Forge también pueden instalar webhooks para notificar a un servicio en línea de terceros cuando ocurre un evento en su proyecto de software (por ejemplo, se puede llamar al webhook cuando se crea un nuevo problema [7] ).
La federación y el protocolo asociado ActivityPub (introducido en 2018) permiten que las forjas se comuniquen entre sí sobre sus actividades (por ejemplo, cuando se crean problemas [8] o se envía una confirmación [9] ). Aunque a veces se habla de la compatibilidad con la federación nativa [10] o está en proceso [11], todavía no está disponible. Surgieron proyectos de terceros para cerrar la brecha, como un complemento para la forja de pagure [12] o un proxy que admita ActivityPub y lo traduzca a llamadas de API REST a la forja designada. [13]
No existe un SSO en el que las aplicaciones y los usuarios puedan confiar para autenticarse en todas las forjas. En cambio, es común que una forja admita varios proveedores de autenticación: si un usuario ya tiene una cuenta, puede usarla para autenticarse en la forja y no necesita crear una cuenta nueva (por ejemplo, GitLab admite proveedores de OAuth2 como GitHub [14] ). Algunas forjas pueden actuar como proveedores de autenticación (por ejemplo, Gitea es un proveedor de OAuth2 [15] al igual que GitLab [16] ).
Para mejorar la experiencia del usuario y del administrador del sistema al utilizar múltiples servicios en línea, algunas forjas están integradas con software y servicios de terceros populares, como el chat en línea (por ejemplo, Mattermost tiene un complemento para GitHub [17] y cuenta con soporte nativo de GitLab [18] ).