En la ingeniería de software , la bifurcación de un proyecto ocurre cuando los desarrolladores toman una copia del código fuente de un paquete de software y comienzan un desarrollo independiente en él, creando una pieza de software distinta y separada. El término a menudo implica no solo una rama del desarrollo , sino también una división en la comunidad de desarrolladores, una forma de cisma . [1]

El software gratuito y de código abierto es aquel que, por definición, puede obtenerse del equipo de desarrollo original sin permiso previo, sin violar la ley de derechos de autor . Sin embargo, también existen bifurcaciones con licencia de software propietario ( por ejemplo, Unix ).
Etimología
La palabra "tenedor" se ha utilizado para significar "dividir en ramas, ir por caminos separados" ya en el siglo XIV. [2] En el entorno de software, la palabra evoca la llamada al sistema fork , que hace que un proceso en ejecución se divida en dos copias (casi) idénticas que (normalmente) divergen para realizar diferentes tareas. [3]
En el contexto del desarrollo de software, Eric Allman usó "fork" en el sentido de crear una " rama " de control de revisión ya en 1980, en el contexto de SCCS : [4]
La creación de una rama "bifurca" una versión del programa.
El término estaba en uso en Usenet en 1983 para el proceso de creación de un subgrupo al que trasladar los temas de discusión. [5]
No se sabe que "Fork" se haya utilizado en el sentido de un cisma comunitario durante los orígenes de Lucid Emacs (ahora XEmacs ) (1991) o los BSD (1993-1994); Russ Nelson usó el término "romper" para este tipo de bifurcación en 1993, atribuyéndolo a John Gilmore . [6] Sin embargo, "fork" se usaba en el sentido actual en 1995 para describir la división de XEmacs, [7] y era un uso entendido en el Proyecto GNU en 1996. [8]
Bifurcación de software gratuito y de código abierto
El software de código abierto y pueden ser en forma de tenedor legalmente sin la aprobación previa de las actualmente en desarrollo, la gestión, o distribuir el software por tanto Definición El software libre y la definición de Open Source : [9]
La libertad de distribuir copias de sus versiones modificadas a otros (libertad 3). Al hacer esto, puede brindarle a toda la comunidad la oportunidad de beneficiarse de sus cambios. El acceso al código fuente es una condición previa para ello.
3. Trabajos derivados: La licencia debe permitir modificaciones y trabajos derivados, y debe permitir que se distribuyan bajo los mismos términos que la licencia del software original.
En el software libre, las bifurcaciones a menudo son el resultado de un cisma sobre diferentes objetivos o choques de personalidad. En una bifurcación, ambas partes asumen bases de código casi idénticas, pero normalmente solo el grupo más grande, o quien controle el sitio web, conservará el nombre original completo y la comunidad de usuarios asociada. Por lo tanto, existe una penalización de reputación asociada con la bifurcación. [9] La relación entre los diferentes equipos puede ser cordial o muy amarga. Por otro lado, un tenedor amigable o un tenedor suave es un tenedor que no tiene la intención de competir, pero que eventualmente quiere fusionarse con el original.
Eric S. Raymond , en su ensayo Homesteading the Noosphere , [12] declaró que "La característica más importante de una bifurcación es que genera proyectos en competencia que luego no pueden intercambiar código, dividiendo la comunidad de desarrolladores potenciales". Señala en el archivo de jerga : [13]
La bifurcación se considera algo malo, no solo porque implica una gran cantidad de esfuerzo en el futuro, sino porque las bifurcaciones tienden a ir acompañadas de una gran cantidad de disputas y acritud entre los grupos sucesores por cuestiones de legitimidad, sucesión y dirección del diseño. . Existe una gran presión social contra la bifurcación. Como resultado, las bifurcaciones principales (como la división Gnu-Emacs / XEmacs , la división del grupo 386BSD en tres proyectos secundarios y la división GCC / EGCS de corta duración) son lo suficientemente raras como para recordarlas individualmente en el folclore de los piratas informáticos.
David A. Wheeler señala [9] cuatro posibles resultados de una bifurcación, con ejemplos:
- La muerte del tenedor. Este es, con mucho, el caso más común. Es fácil declarar una bifurcación, pero un esfuerzo considerable para continuar con el desarrollo y el soporte independientes.
- Una fusión de la bifurcación ( por ejemplo , egcs se convierte en "bendecido" como la nueva versión de gcc .)
- La muerte del original ( por ejemplo, el X.Org Server tiene éxito y XFree86 muere).
- Bifurcación exitosa, generalmente con diferenciación ( por ejemplo , OpenBSD y NetBSD ).
Las herramientas de control distribuido de revisiones (DVCS) han popularizado un uso menos emotivo del término "fork", difuminando la distinción con "branch". [14] Con un DVCS como Mercurial o Git , la forma normal de contribuir a un proyecto es primero crear una rama personal del repositorio, independiente del repositorio principal, y luego buscar que sus cambios se integren con él. Sitios como GitHub , Bitbucket y Launchpad ofrecen alojamiento DVCS gratuito que respalda expresamente a las sucursales independientes, de modo que las barreras técnicas, sociales y financieras para bifurcar un repositorio de código fuente se reducen enormemente, y GitHub utiliza "fork" como término para este método de contribución a un proyecto.
Las bifurcaciones a menudo reinician la numeración de versiones desde 0.1 o 1.0 incluso si el software original estaba en la versión 3.0, 4.0 o 5.0. Una excepción es cuando el software bifurcado está diseñado para ser un reemplazo directo del proyecto original, por ejemplo , MariaDB para MySQL [15] o LibreOffice para OpenOffice.org .
Bifurcación de software propietario
En el software propietario , los derechos de autor generalmente pertenecen a la entidad empleadora, no a los desarrolladores de software individuales. Por lo tanto, el código propietario se bifurca más comúnmente cuando el propietario necesita desarrollar dos o más versiones, como una versión con ventana y una versión de línea de comandos , o versiones para diferentes sistemas operativos, como un procesador de texto para máquinas compatibles con IBM PC y computadoras Macintosh . Generalmente, estas bifurcaciones internas se concentrarán en tener el mismo aspecto, estilo, formato de datos y comportamiento entre plataformas para que un usuario familiarizado con una también pueda ser productivo o compartir documentos generados en la otra. Esta es casi siempre una decisión económica para generar una mayor participación de mercado y así recuperar los costos de desarrollo adicionales asociados creados por la bifurcación.
Una bifurcación patentada notable que no es de este tipo son las muchas variedades de Unix patentado, casi todas derivadas de AT&T Unix bajo licencia y todas llamadas "Unix", pero cada vez más incompatibles entre sí. [16] Ver guerras de UNIX .
Las licencias BSD permiten que las bifurcaciones se conviertan en software propietario, y los defensores del copyleft dicen que los incentivos comerciales hacen que la propiedad sea casi inevitable. (Las licencias copyleft pueden, sin embargo, ser eludidas a través de una licencia dual con una concesión de propiedad en forma de un Acuerdo de licencia de colaborador ). Los ejemplos incluyen macOS (basado en la propiedad NeXTSTEP y FreeBSD de código abierto ), Cedega y CrossOver (bifurcaciones patentadas de Wine , aunque CrossOver rastrea Wine y contribuye considerablemente), EnterpriseDB (una bifurcación de PostgreSQL , que agrega características de compatibilidad con Oracle [17] ), PostgreSQL compatible con su sistema de almacenamiento ESM patentado, [18] y Netezza [19] derivado altamente escalable de PostgreSQL patentado . Algunos de estos proveedores contribuyen con cambios al proyecto de la comunidad, mientras que otros mantienen sus cambios como sus propias ventajas competitivas.
Ver también
- Lista de bifurcaciones de software
- Puerto de origen
- Downstream (desarrollo de software)
- Toma de decisiones grupal
- Programación modular
- Modificación
- Software personalizado
- Personalización
- Efectividad del equipo
- Código duplicado
- Hackeo de ROM
Referencias
- ^ "Cisma", con sus connotaciones, es un uso común, por ejemplo , "el cisma de Lemacs / FSFmacs" Archivado el 12 de diciembre de 2009 en WebCite ( Jamie Zawinski , 2000), "Behind the KOffice split" Archivado el 6 de julio de 2013 en Wayback Machine ( Joe Brockmeier, Linux Weekly News , 14-12-2010), "Asignación de derechos de autor: una vez mordido, dos veces tímido" Archivado el 30 de marzo de 2012 en Wayback Machine (Richard Hillesley, H-Online , 2010-08-06), "Forking is un artículo " Archivado el 29 de febrero de 2012 en Wayback Machine ( Anil Dash , 2010-09-10), " The Great Software Schism " Archivado el 6 de enero de 2012 en Wayback Machine ( Glyn Moody , Linux Journal , 2006-09-28), "Bifurcar o no bifurcar: lecciones de Ubuntu y Debian" Archivado el 26 de febrero de 2012 en Wayback Machine ( Benjamin Mako Hill , 2005).
- ^ Entrada 'fork' en el diccionario de etimología en línea. Archivado el 25 de mayo de 2012 en Wayback Machine.
- ^ "El término fork se deriva del estándar POSIX para sistemas operativos: la llamada al sistema utilizada para que un proceso genere una copia de sí mismo se llama fork ()". Robles, Gregorio; González-Barahona, Jesús M. (2012). Un estudio completo de las bifurcaciones de software: fechas, motivos y resultados (PDF) . OSS 2012 La Octava Conferencia Internacional sobre Sistemas de Código Abierto. doi : 10.1007 / 978-3-642-33442-9_1 . Archivado (PDF) desde el original el 2 de diciembre de 2013 . Consultado el 20 de octubre de 2012 .
- ^ Allman, Eric. "Introducción al sistema de control de código fuente". Archivado el 6 de noviembre de 2014 en el Wayback Machine Project Ingres, Universidad de California en Berkeley, 1980.
- ^ ¿Alguien puede desembolsar una "net.philosophy"? ( John Gilmore , net.misc, 18 de enero de 1983)
- ^ Rompiendo - ¿bueno o malo? (Russell Nelson, gnu.misc.discuss, 1 de octubre de 1993)
- ^ Re: Hola Franz: ¡¡¡¡32K Windows SUCK !!!!! (Bill Dubuque, cu.cs.macl.info, 21 de septiembre de 1995)
- ^ Lignux? (Marcus G. Daniels, gnu.misc.discuss, 7 de junio de 1996)
- ^ a b c ¿Por qué software de código abierto / software libre (OSS / FS, FLOSS o FOSS)? ¡Mira los números !: Forking Archivado el 5 de abril de 2006 en Wayback Machine (David A. Wheeler)
- ^ Stallman, Richard. "La Definición de Software Libre" . Fundación de Software Libre. Archivado desde el original el 14 de octubre de 2013 . Consultado el 15 de octubre de 2013 .
- ^ "La definición de código abierto" . La iniciativa de código abierto. Archivado desde el original el 15 de octubre de 2013 . Consultado el 15 de octubre de 2013 .
- ^ Raymond, Eric S. (15 de agosto de 2002). "Teoría promiscua, práctica puritana" . Archivado desde el original el 6 de octubre de 2006.
- ^ Forked Archivado el 8 de noviembre de 2011 en Wayback Machine ( archivo de jerga ), agregado por primera vez a v4.2.2 Archivado el 14 de enero de 2012 en Wayback Machine , 20 de agosto de 2000)
- ^ por ejemploWillis, Nathan (15 de enero de 2015). "Una bifurcación de" gobierno abierto "de Node.js" . LWN.net . Archivado desde el original el 21 de abril de 2015 . Consultado el 15 de enero de 2015 .
Las bifurcaciones son una parte natural del modelo de desarrollo abierto, tanto que GitHub es famoso por incluir un botón de "bifurca tu propia copia" en casi todas las páginas.
Ver también Nyman, Linus (2015). Comprensión de la bifurcación de código en software de código abierto (Ph.D.). Escuela de Economía Hanken. pag. 57. hdl : 10138/153135 .Donde los profesionales habían tenido anteriormente definiciones bastante estrechas de una bifurcación, [...] el término ahora parece usarse de manera mucho más amplia. Las acciones que tradicionalmente se habrían llamado bifurcaciones, una nueva distribución, fragmentación de código, pseudo-bifurcación, etc., ahora pueden ser llamadas bifurcaciones por algunos desarrolladores. Esto parece ser en gran parte debido a la amplia definición y uso del término fork por GitHub.
- ^ Bifurqué un proyecto, ¿dónde comienzan mis números de versión? Archivado el 26 de agosto de 2011 en la Wayback Machine.
- ^ Miedo a la bifurcación Archivado el 17 de diciembre de 2012 en Wayback Machine - Un ensayo sobre la bifurcación enproyectos de software libre , por Rick Moen
- ^ EnterpriseDB Archivado el 13 de noviembre de 2006 en Wayback Machine.
- ^ Fujitsu Supported PostgreSQL Archivado el 20 de agosto de 2006 en Wayback Machine.
- ^ Netezza Archivado el 13 de noviembre de 2006 en la Wayback Machine.
enlaces externos
- Derecho al tenedor en Meatball Wiki
- Un doctorado que examina la bifurcación: (Nyman, 2015) "Comprensión de la bifurcación de código en software de código abierto: un examen de la bifurcación de código, su efecto en el software de código abierto y cómo lo ven y practican los desarrolladores"