stringtranslate.com

Bifurcación (desarrollo de software)

Un gráfico de línea de tiempo que muestra la evolución de las distribuciones de Linux , donde cada división en el diagrama se denomina "bifurcación".

En ingeniería de software , una bifurcación de 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. [ ejemplo necesario ] El término a menudo implica no solo una rama de desarrollo , sino también una división en la comunidad de desarrolladores; como tal, es una forma de cisma . [1] Los motivos para la bifurcación son las diferentes preferencias de los usuarios y el desarrollo estancado o discontinuado del software original.

El software libre y de código abierto es aquel que, por definición, puede ser derivado del equipo de desarrollo original sin permiso previo y sin violar la ley de derechos de autor . Sin embargo, también se producen derivaciones con licencia de software propietario ( por ejemplo , Unix ).

Etimología

La palabra "fork" se ha utilizado para significar "dividir en ramas, seguir caminos separados" desde 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 tareas diferentes. [3]

En el contexto del desarrollo de software, Eric Allman utilizó "fork" en el sentido de crear una " rama " de control de revisión en 1980, en el contexto del Sistema de Control de Código Fuente : [4]

La creación de una rama "bifurca" una versión del programa.

El término se utilizó en Usenet en 1983 para designar el proceso de creación de un subgrupo al que trasladar temas de discusión. [5]

No se sabe que "fork" haya sido usado en el sentido de un cisma de la comunidad durante los orígenes de Lucid Emacs (ahora XEmacs ) (1991) o las distribuciones de software de Berkeley (BSD) (1993-1994); Russ Nelson usó el término "shattering" 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 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 sus versiones modificadas a otros (libertad 3). Al hacer esto, puede darle a toda la comunidad la oportunidad de beneficiarse de sus cambios. El acceso al código fuente es una condición previa para esto.

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 suelen ser el resultado de un cisma sobre objetivos diferentes o enfrentamientos de personalidades. En una bifurcación, ambas partes asumen bases de código casi idénticas, pero normalmente sólo 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 amarga. Por otro lado, una bifurcación amistosa o una bifurcación suave es una bifurcación que no tiene la intención de competir, sino que quiere eventualmente fusionarse con el 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 en competencia que luego no pueden intercambiar código, dividiendo la comunidad potencial de desarrolladores". Señala en Jargon File : [13]

La bifurcación se considera algo malo, no sólo porque implica mucho esfuerzo desperdiciado en el futuro, sino porque las bifurcaciones tienden a ir acompañadas de una gran cantidad de conflictos y acritud entre los grupos sucesores sobre 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 importantes (como la división de Gnu-Emacs / XEmacs , la división del grupo 386BSD en tres proyectos hijos y la efímera división de GCC/EGCS) son lo suficientemente raras como para que se las recuerde individualmente en el folclore hacker.

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

  1. La muerte del fork. Este es, con diferencia, el caso más habitual. Es fácil declarar un fork, pero se requiere un esfuerzo considerable para continuar con el desarrollo y el soporte independientes.
  2. Una nueva fusión de la bifurcación ( por ejemplo , egcs pasa a ser "bendecido" como la nueva versión de GNU Compiler Collection ).
  3. La muerte del original ( por ejemplo, el servidor X.Org que tiene éxito y la muerte de XFree86 ).
  4. Ramificación exitosa, generalmente con diferenciación ( por ejemplo , OpenBSD y NetBSD ).

Las herramientas de control de revisión distribuida (DVCS) han popularizado un uso menos emotivo del término "bifurcación", desdibujando la distinción con "rama". [14] Con un DVCS como Mercurial o Git , la forma normal de contribuir a un proyecto es crear primero 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 proporcionan alojamiento gratuito de DVCS 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 usa "bifurcación" 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 los números que se usan normalmente para las versiones iniciales de los programas, como 0.0.1, 0.1 o 1.0, incluso si el software original era de 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 dicen que los incentivos comerciales hacen que la propiedad sea casi inevitable. (Sin embargo, las licencias copyleft se pueden eludir mediante una licencia dual con una concesión de propiedad en forma de un Acuerdo de Licencia de Colaborador ). Los ejemplos incluyen macOS (basado en el propietario NeXTSTEP y el código abierto FreeBSD ), Cedega y CrossOver (bifurcaciones propietarias de Wine , aunque CrossOver rastrea Wine y contribuye considerablemente), EnterpriseDB (una bifurcación de PostgreSQL , que agrega características de compatibilidad con Oracle [16] ), Supported PostgreSQL con su sistema de almacenamiento ESM propietario, [17] y el derivado altamente escalable propietario de PostgreSQL de Netezza [18] . Algunos de estos proveedores contribuyen con cambios al proyecto de la comunidad, mientras que otros mantienen sus cambios como sus propias ventajas competitivas.

Bifurcación de software propietario

En el software propietario , los derechos de autor suelen estar en manos de la entidad que lo emplea, no de los desarrolladores de software individuales. Por lo tanto, el código propietario se bifurca con mayor frecuencia cuando el propietario necesita desarrollar dos o más versiones, como una versión con ventanas y una versión de línea de comandos , o versiones para diferentes sistemas operativos, como un procesador de textos para máquinas compatibles con IBM PC y computadoras Macintosh . Por lo general, estas bifurcaciones internas se concentrarán en tener la misma apariencia, sensación, 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 en el mercado y, por lo tanto, recuperar los costos de desarrollo adicionales asociados creados por 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 Unix wars .

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: una vez que se muerde, se vuelve tímido" 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)
    • "Bizquear 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 Wayback Machine.
  3. ^ "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 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 .
  4. ^ Allman, Eric. "Introducción al sistema de control de código fuente". Archivado el 6 de noviembre de 2014 en Wayback Machine Project Ingres, Universidad de California en Berkeley, 1980.
  5. ^ ¿ Puede alguien crear una "filosofía de la red"? ( John Gilmore , net.misc, 18 de enero de 1983)
  6. ^ La destrucción, ¿buena o mala? (Russell Nelson, gnu.misc.discuss, 1 de octubre de 1993)
  7. ^ Re: Hola Franz: ¡¡ ...
  8. ^ Lignux? (Marcus G. Daniels, gnu.misc.discuss, 7 de junio de 1996)
  9. ^ abc ¿Por qué software de código abierto/software libre (OSS/FS, FLOSS o FOSS)? ¡Miren los números!: Bifurcación Archivado el 5 de abril de 2006 en Wayback Machine. (David A. Wheeler)
  10. ^ Stallman, Richard. «La definición del software libre». Free Software Foundation. Archivado desde el 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 desde el original el 15 de octubre de 2013. Consultado el 15 de octubre de 2013 .
  12. ^ Raymond, Eric S. (15 de agosto de 2002). "Teoría promiscua, práctica puritana". catb.org . Archivado desde el original el 6 de octubre de 2006.
  13. ^ Bifurcado Archivado el 8 de noviembre de 2011 en Wayback Machine ( Archivo de jerga ), agregado por primera vez en v4.2.2 Archivado el 14 de enero de 2012 en Wayback Machine , 20 de agosto de 2000)
  14. ^ eg Willis, Nathan (15 de enero de 2015). "Una bifurcación de "gobernanza abierta" 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 coloca un botón "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. Si bien antes los profesionales tenían definiciones bastante estrechas de una bifurcación, [...] ahora el término parece usarse de manera mucho más amplia. Acciones que tradicionalmente se habrían llamado una rama, una nueva distribución, fragmentación de código, una pseudobifurcación, etc., ahora pueden llamarse bifurcaciones por algunos desarrolladores. Esto parece deberse en gran parte a la amplia definición y uso del término bifurcación por parte de GitHub.
  15. ^ He bifurcado un proyecto, ¿dónde empiezan los números de versión? Archivado el 26 de agosto de 2011 en Wayback Machine
  16. ^ EnterpriseDB Archivado el 13 de noviembre de 2006 en Wayback Machine.
  17. ^ PostgreSQL compatible con Fujitsu 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

Enlaces externos