Articulo de referencia

Bifurcación (desarrollo de software)

Un diagrama cronológico que muestra la evolución de las distribuciones de Linux , donde cada división en el diagrama se denomina "una bifurcación". En el desarrollo de software ...

Un diagrama cronológico que muestra la evolución de las distribuciones de Linux , donde cada división en el diagrama se denomina "una bifurcación".

En el desarrollo de software , una bifurcación es una base de código que se crea duplicando una base de código existente y, generalmente, se modifica posteriormente de forma independiente de la original. El software creado a partir de una bifurcación inicialmente tiene un comportamiento idéntico al del software creado a partir del código original, pero a medida que el código fuente se modifica cada vez más, el software resultante tiende a tener un comportamiento cada vez más diferente en comparación con el original. Una bifurcación es una forma de ramificación , pero generalmente implica almacenar los archivos bifurcados por separado del original, no en el repositorio . Las razones para bifurcar una base de código incluyen la preferencia del usuario, el estancamiento o la interrupción del desarrollo del software original o una escisión en la comunidad de desarrolladores. [ 1 ] La bifurcación de software propietario (como Unix ) está prohibida por la ley de derechos de autor sin permiso explícito, pero el software libre y de código abierto , por definición, puede bifurcarse sin permiso.

Etimología

La palabra tenedor se ha utilizado para significar "dividir en ramas, tomar caminos separados" ya en el siglo XIV. [ 2 ]

En el contexto del desarrollo de software, Eric Allman utilizó el término fork en el sentido de crear una rama de control de revisiones ya en 1980, en el contexto del Sistema de Control de Código Fuente : [ 3 ]

Crear una rama implica "bifurcar" una versión del programa.

El término se utilizaba en Usenet en 1983 para referirse al proceso de creación de un subgrupo al que trasladar temas de discusión. [ 4 ]

Aunque no se sabe que el término «fork» se haya utilizado en el sentido de cisma comunitario durante los orígenes de Lucid Emacs (ahora XEmacs ) (1991) o las Distribuciones de Software de Berkeley (BSD) (1993-1994), Russ Nelson utilizó el término «shattering» en este sentido en 1993 (atribuyéndolo a John Gilmore ). [ 5 ] En 1995, «fork» se utilizó para describir la división de XEmacs, [ 6 ] y era un uso entendido en el Proyecto GNU en 1996. [ 7 ]

La palabra se usa de manera similar para la llamada al sistema fork() que hace que un proceso en ejecución se divida en dos , normalmente para permitirles realizar diferentes tareas en paralelo. [ 8 ]

Bifurcación de software libre y de código abierto

El software libre y de código abierto puede bifurcarse legalmente sin la aprobación previa de quienes actualmente desarrollan, administran o distribuyen el software según la Definición de Software Libre y la Definición de Código Abierto : [ 9 ]

La libertad de distribuir copias de tus versiones modificadas a otros (libertad 3). De esta forma, puedes brindar a toda la comunidad la oportunidad de beneficiarse de tus cambios. El acceso al código fuente es un requisito previo para ello.

3. Obras derivadas: La licencia debe permitir modificaciones y obras derivadas, y debe permitir que se distribuyan bajo los mismos términos que la licencia del software original.

En el software libre, las bifurcaciones suelen ser resultado de una escisión por objetivos diferentes o choques de personalidades. 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 a la bifurcación. [ 9 ] La relación entre los diferentes equipos puede ser cordial o muy tensa. Por otro lado, una bifurcación amistosa o suave es aquella que no pretende competir, sino fusionarse eventualmente con la original.

Eric S. Raymond , en su ensayo Homesteading the Noosphere , [ 12 ] afirmó que "La característica más importante de una bifurcación es que genera proyectos competidores que posteriormente no pueden intercambiar código, dividiendo así la comunidad potencial de desarrolladores". Señala en el Jargon File : [ 13 ]

La bifurcación se considera algo negativo, no solo porque implica un gran desperdicio de esfuerzo en el futuro, sino porque suele ir acompañada de mucha discordia y acritud entre los grupos sucesores por cuestiones de legitimidad, sucesión y dirección del diseño. Existe una fuerte presión social en contra de la bifurcación. Como resultado, las bifurcaciones importantes (como la división de Gnu-Emacs / XEmacs , la escisión del grupo 386BSD en tres proyectos derivados y la efímera división de GCC/EGCS) son tan raras que se recuerdan individualmente en el folclore hacker.

David A. Wheeler señala [ 9 ] cuatro posibles resultados de una bifurcación, con ejemplos:

  1. La muerte de la bifurcación. Este es, con diferencia, el caso más común. Es fácil declarar una bifurcación, pero se requiere un esfuerzo considerable para continuar el desarrollo y el soporte de forma independiente.
  2. Una nueva fusión de la bifurcación ( por ejemplo , egcs se convierte en "blessed" como la nueva versión de GNU Compiler Collection ).
  3. La muerte del original ( por ejemplo, el éxito del servidor X.Org y la desaparición de XFree86 ).
  4. Ramificación exitosa, típicamente con diferenciación ( por ejemplo , OpenBSD y NetBSD ).

Las herramientas de control de versiones distribuido (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 habitual de contribuir a un proyecto es crear primero una rama personal del repositorio, independiente del repositorio principal, y luego buscar que tus cambios se integren con ella. Sitios como GitHub , Bitbucket y Launchpad ofrecen alojamiento DVCS gratuito que admite expresamente ramas 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 su término para este método de contribución a un proyecto.

Las bifurcaciones a menudo reinician la numeración de versiones a partir de números que normalmente se usan para las versiones iniciales de los programas, como 0.0.1, 0.1 o 1.0, incluso si el software original estaba en otra versión, como 3.0, 4.0 o 5.0. A veces se hace una excepción 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 .

Las licencias BSD permiten que las bifurcaciones se conviertan en software propietario, y los defensores del copyleft afirman que los incentivos comerciales hacen que la propiedad sea prácticamente inevitable. (Sin embargo, las licencias copyleft pueden eludirse mediante una licencia dual con una concesión de propiedad en forma de un Acuerdo de Licencia de Colaborador ). Algunos ejemplos incluyen macOS (basado en el software propietario NeXTSTEP y el software de código abierto FreeBSD ), Cedega y CrossOver (bifurcaciones propietarias de Wine , aunque CrossOver sigue a Wine y contribuye considerablemente), EnterpriseDB (una bifurcación de PostgreSQL , que añade características de compatibilidad con Oracle [ 16 ] ), Supported PostgreSQL con su sistema de almacenamiento propietario ESM [ 17 ] , y el derivado propietario altamente escalable de PostgreSQL de Netezza [ 18 ] . Algunos de estos proveedores contribuyen con cambios al proyecto de la comunidad, mientras que otros conservan sus cambios como ventajas competitivas propias.

Software propietario bifurcado

En el software propietario , los derechos de autor suelen pertenecer a la entidad empleadora, no a los desarrolladores individuales. Por lo tanto, es más común que se cree una bifurcación del código propietario cuando este necesita desarrollar dos o más versiones, como una versión para Windows y otra para línea de comandos , o versiones para diferentes sistemas operativos, como un procesador de textos para ordenadores compatibles con IBM PC y Macintosh . Generalmente, estas bifurcaciones internas se centran en mantener la misma apariencia, funcionamiento, formato de datos y comportamiento entre plataformas, de modo que un usuario familiarizado con una pueda ser productivo o compartir documentos generados en la otra. Esta decisión casi siempre responde a una necesidad económica para aumentar la cuota de mercado y, de este modo, recuperar los costes adicionales de desarrollo derivados de la bifurcación.

Una notable bifurcación propietaria que no es de este tipo son las muchas variedades de Unix propietario , casi todas derivadas de AT&T Unix bajo licencia y todas llamadas "Unix", pero cada vez más incompatibles entre sí. [ 19 ] Véase Guerras de Unix .

Véase también

Referencias

  1. "Cisma", con sus connotaciones, es un uso común, por ejemplo
    • "El cisma Lemacs/FSFmacs" Archivado el 30 de noviembre de 2009 en Wayback Machine ( Jamie Zawinski , 2000)
    • "Detrás de la división de KOffice" Archivado el 6 de julio de 2013 en Wayback Machine (Joe Brockmeier, Linux Weekly News , 14 de diciembre de 2010)
    • "Cesión de derechos de autor: quien se quema con leche, ve la vaca y llora" Archivado el 30 de marzo de 2012 en Wayback Machine (Richard Hillesley, H-Online , 6 de agosto de 2010)
    • "La bifurcación es una característica" Archivado el 29 de febrero de 2012 en Wayback Machine ( Anil Dash , 10 de septiembre de 2010)
    • "El Gran Cisma del Software" Archivado el 6 de enero de 2012 en Wayback Machine ( Glyn Moody , Linux Journal , 28 de septiembre de 2006)
    • "Bifurcar o no bifurcar: lecciones de Ubuntu y Debian" Archivado el 26 de febrero de 2012 en Wayback Machine ( Benjamin Mako Hill , 2005).
  2. Entrada 'fork' en el Diccionario Etimológico en Línea. Archivado el 25 de mayo de 2012 en la Wayback Machine.
  3. Allman, Eric. "Una introducción al sistema de control de código fuente". Archivado el 6 de noviembre de 2014 en el Proyecto Wayback Machine Ingres, Universidad de California en Berkeley, 1980.
  4. ¿Alguien podría crear una "filosofía de la red"? ( John Gilmore , net.misc, 18 de enero de 1983)
  5. ¿ Romperse  ? ¿Es bueno o malo? (Russell Nelson, gnu.misc.discuss, 1 de octubre de 1993)
  6. Re: Hola Franz: ¡¡¡Las versiones de Windows de 32K son una MIERDA!!!!! (Bill Dubuque, cu.cs.macl.info, 21 de septiembre de 1995)
  7. ¿Lignux? (Marcus G. Daniels, gnu.misc.discuss, 7 de junio de 1996)
  8. "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 exhaustivo de las bifurcaciones de software: fechas, razones y resultados (PDF) . OSS 2012 Octava Conferencia Internacional sobre Sistemas de Código Abierto. doi : 10.1007/978-3-642-33442-9_1 . Archivado (PDF) del original el 2 de diciembre de 2013. Recuperado el 20 de octubre de 2012 .
  9. 1 2 3 ¿Por qué software de código abierto/software libre (OSS/FS, FLOSS o FOSS)? ¡Mira las cifras!: Bifurcación Archivada el 5 de abril de 2006 en Wayback Machine (David A. Wheeler)
  10. Stallman, Richard. "La definición de software libre" . Free Software Foundation. Archivado del original el 14 de octubre de 2013. Consultado el 15 de octubre de 2013 .
  11. "La definición de código abierto" . The Open Source Initiative. 7 de julio de 2006. Archivado del original el 15 de octubre de 2013. Recuperado el 15 de octubre de 2013 .
  12. Raymond, Eric S. (15 de agosto de 2002). "Teoría promiscua, práctica puritana" . catb.org . Archivado del original el 6 de octubre de 2006.
  13. Bifurcado Archivado el 8 de noviembre de 2011 en Wayback Machine ( Archivo de jerga ), añadido por primera vez a la v4.2.2 Archivado el 14 de enero de 2012 en Wayback Machine , 20 de agosto de 2000)
  14. p. ej. Willis, Nathan (15 de enero de 2015). "Una bifurcación de "gobernanza abierta" de Node.js" . LWN.net . Archivado del original el 21 de abril de 2015. Recuperado el 15 de enero de 2015. Las bifurcaciones son una parte natural del modelo de desarrollo abierto, tanto es así que GitHub, como es bien sabido, coloca un botón de "bifurca tu propia copia" en casi todas las páginas.Véase también Nyman, Linus (2015). Understanding Code Forking in Open Source Software (PhD). Hanken School of Economics. p. 57. hdl : 10138/153135 . Donde los profesionales anteriormente tenían definiciones bastante estrechas de una bifurcación, [...] el término ahora parece usarse de manera mucho más amplia. Acciones que tradicionalmente habrían sido llamadas una rama, una nueva distribución, fragmentación de código, una pseudobifurcación, etc., ahora pueden ser todas llamadas bifurcaciones por algunos desarrolladores. Esto parece deberse en gran parte a la definición y uso amplios del término bifurcación por parte de GitHub. 
  15. He bifurcado un proyecto, ¿dónde empiezan mis números de versión? Archivado el 26 de agosto de 2011 en la Wayback Machine.
  16. EnterpriseDB Archivado el 13 de noviembre de 2006 en Wayback Machine
  17. Fujitsu soporta PostgreSQL. Archivado el 20 de agosto de 2006 en Wayback Machine.
  18. Netezza Archivado el 13 de noviembre de 2006 en Wayback Machine
  19. Miedo a la bifurcación Archivado el 17 de diciembre de 2012 en Wayback Machine – Un ensayo sobre la bifurcación en proyectos de software libre , por Rick Moen
  • Derecho a usar el tenedor en Meatball Wiki
  • Tesis doctoral sobre la bifurcación de código: (Nyman, 2015) Archivada el 16 de julio de 2023 en Wayback Machine. "Comprender la bifurcación de código en el software de código abierto: un análisis de la bifurcación de código, su efecto en el software de código abierto y cómo la perciben y practican los desarrolladores".