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 , y cada división en el diagrama se denomina "una 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. El término a menudo implica no sólo 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 bifurcar son las preferencias variables del usuario y el desarrollo estancado o interrumpido del software original.

El software gratuito y de código abierto es aquel que, por definición, puede derivarse del equipo de desarrollo original sin permiso previo y 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, tomar 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 utilizó "fork" en el sentido de crear una " rama " de control de revisión ya 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 ya se utilizaba 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 Berkeley Software Distributions (BSD) (1993-1994); Russ Nelson utilizó el término "destrozar" para este tipo de bifurcación en 1993, atribuyéndolo a John Gilmore . [6] Sin embargo, "fork" se utilizaba en el sentido actual en 1995 para describir la división de XEmacs, [7] y era un uso comprendido en el Proyecto GNU en 1996. [8]

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

El software gratuito 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 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. Obras Derivadas: La licencia debe permitir modificaciones y obras derivadas, y debe permitir su distribución en los mismos términos que la licencia del software original.

En el software libre, las bifurcaciones suelen ser el resultado de un cisma entre diferentes objetivos o choques de personalidad. 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 con la bifurcación. [9] La relación entre los diferentes equipos puede ser cordial o muy amarga. Por otro lado, un fork amigable o un fork suave es un fork que no pretende competir, pero que eventualmente quiere 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 competitivos que luego no pueden intercambiar código, dividiendo a la comunidad de desarrolladores potencial". Él señala en el archivo Jergon : [13]

La bifurcación se considera algo malo, no sólo porque implica una gran cantidad de 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 principales (como la división Gnu-Emacs / XEmacs , la fisión del grupo 386BSD en tres proyectos hijos y la breve división GCC/EGCS) son lo suficientemente raras como para ser recordadas individualmente en el folklore hacker.

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

  1. La muerte del tenedor. 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 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 tiene éxito y XFree86 muere).
  4. Ramificación exitosa, típicamente con diferenciación ( p. ej. , OpenBSD y NetBSD ).

Las herramientas de control de revisiones distribuidas (DVCS) han popularizado un uso menos emotivo del término "bifurcación", desdibujando la distinción con "bifurcación". [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 brindan alojamiento DVCS gratuito que respalda expresamente 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 usa "bifurcación" 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 tenía 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 .

Las licencias BSD permiten que los forks 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 patentadas de Wine , aunque CrossOver sigue a Wine y contribuye considerablemente), EnterpriseDB (una bifurcación de PostgreSQL , que agrega características de compatibilidad con Oracle [16] ), PostgreSQL compatible con su sistema de almacenamiento ESM patentado, [17] y el derivado altamente escalable patentado de Netezza [18] de PostgreSQL. . Algunos de estos proveedores contribuyen con cambios al proyecto comunitario, mientras que otros mantienen sus cambios como sus propias ventajas competitivas.

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 en ventana 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 . Generalmente, dichas bifurcaciones internas se concentrarán en tener la misma apariencia, 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í pagar los costos de desarrollo adicionales asociados creados por la bifurcación.

Una bifurcación propietaria notable 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 Unix .

Ver también

Referencias

  1. ^ "Cisma", con sus connotaciones, es un uso común, p.
    • "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)
    • "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 , 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 'bifurcación' en el Diccionario de etimología 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, 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 .
  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. ^ ¿Alguien puede desprenderse de una "filosofía neta"? ( John Gilmore , net.misc, 18 de enero de 1983)
  6. ^ Destrozado: ¿bueno o malo? (Russell Nelson, gnu.misc.discuss, 1 de octubre de 1993)
  7. ^ Re: Hola Franz: ¡¡¡Windows 32K CHUPA !!!!! (Bill Dubuque, cu.cs.macl.info, 21 de septiembre de 1995)
  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)? ¡Mire los números !: Bifurcación Archivado el 5 de abril de 2006 en Wayback Machine (David A. Wheeler)
  10. ^ 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 .
  11. ^ "La definición de código abierto". La iniciativa de código abierto. 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. ^ 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)
  14. ^ por ejemplo , 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, hasta el punto de que GitHub incluye un botón de "bifurca tu propia copia" en casi todas las páginas.Véase también Nyman, Linus (2015). Comprensión de la bifurcación de código en software de código abierto (Doctor). Escuela de Economía Hanken. pag. 57. hdl : 10138/153135. Si antes los profesionales tenían definiciones bastante estrechas de bifurcación, [...] el término ahora parece usarse de manera mucho más amplia. Acciones que tradicionalmente se habrían llamado bifurcación, nueva distribución, fragmentación de código, pseudobifurcación, etc., ahora algunos desarrolladores pueden llamarlas bifurcaciones. Esto parece deberse en gran medida a la amplia definición y uso del término bifurcación por parte de GitHub.
  15. ^ Bifurcación de un proyecto, ¿dónde comienzan mis 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 bifurcar Archivado el 17 de diciembre de 2012 en Wayback Machine - Un ensayo sobre bifurcación en proyectos de software libre , por Rick Moen

enlaces externos