master-fork-clone

El titular, `Googlebifurcó a Swift’, es preciso y confuso al mismo tiempo. ¿Por qué causó tanto alboroto? Porque en el software libre y de código abierto, la palabra “fork” tiene dos significados. Profundicemos en esto un poco más.

Fork

El concepto de bifurcar un proyecto ha existido durante décadas en software libre y de código abierto. “Fork” significa tomar una copia del proyecto, cambiarle el nombre y comenzar un nuevo proyecto y una comunidad alrededor de la copia. Aquellos que se dedican a un proyecto rara vez, o nunca, contribuyen al proyecto principal nuevamente.

Puede haber muchas razones para un proyecto fork. Tal vez el proyecto ha estado en barbecho por un tiempo y alguien quiere revivirlo. Quizás la compañía que ha suscrito el proyecto ha sido adquirida y la comunidad teme que la nueva empresa matriz cierre el proyecto. O tal vez hay un cisma dentro de la propia comunidad, donde una parte de la comunidad ha decidido tomar una dirección diferente con el proyecto. A menudo, una bifurcación del proyecto va acompañada de una gran cantidad de discusiones y posiblemente también de luchas comunitarias. Cualquiera que sea el motivo, un proyecto fork es la copia de un proyecto con el propósito de crear una comunidad nueva y separada a su alrededor. Si bien el fork requiere algún trabajo técnico, es principalmente una acción social.

Han habido muchos forks a lo largo de la historia del software libre y de código abierto. Algunos notables son bifurcación de MariaDB de MySQL, bifurcación de NextCloud de OwnCloud, y bifurcación de Jenkins de Hudson.

El clon

En Ye Olden Days, aquellos de nosotros que queríamos trabajar en una base de código activaríamos nuestro CVS o nuestro Subversion y verificaríamos el código para crear una copia de trabajo en nuestro entorno limitado.

Entonces git llegó a la escena (Mercurial, también, pero no es directamente cómplice en este tema). Como sistema de control de versiones distribuidas (también conocido como DVCS), ya no “echa un vistazo a una copia de trabajo” del repositorio principal. En cambio, cada copia del repositorio puede ser primaria para alguien. Para trabajar en un DVCS, aún debe adquirir una copia del código, pero ese código copiado es tan válido y potencialmente tan primario como el original. Por lo tanto, en lugar de hacer un checkout del código, debe clonarlo. Al igual que en “Orphan Black” o cualquier otro buen programa de ciencia ficción, el clon es idéntico a la fuente original y tiene el potencial de convertirse en el repositorio principal, aunque rara vez ocurre.

Si desea contribuir a un proyecto que usa git como su sistema de control de versiones, deberá crear un clon de él. Por ejemplo, para contribuir al repositorio Public_Speaking, primero debería crear un clon con este comando git:

git clone https://github.com/vmbrasseur/Public_Speaking.git

Esto creará un clon local del repositorio, contra el cual puede hacer los cambios que desee. Si desea contribuir con los cambios al repositorio original, debe enviar una solicitud de extracción. A menos que los mantenedores del repositorio original le otorguen acceso directo, no puede contribuir a ese repositorio sin una clonación y una solicitud de extracción en su contra.

Los clones, a diferencia de los forks, son acciones técnicas y no necesitan involucrar a la comunidad ni a ningún cambio social.

La complicación

Nada es realmente simple con el software libre y de código abierto, por lo que, naturalmente, hay una complicación en todo este proceso.

Cuando GitHub se lanzó en 2008, eligió la palabra fork para representar la acción de un comando git clone. Cuando bifurca un proyecto en GitHub, en realidad está creando un clon de él, una copia en la que puede realizar su trabajo. Es muy posible que desde aquí pueda elegir dividir el proyecto en el sentido original: crear un proyecto separado y una comunidad asociada en lugar de simplemente enviar solicitudes de extracción al proyecto original. Sin embargo, casi todas las personas que usan un proyecto de GitHub solo intentan crear una copia de trabajo personal, un clon. Esta sobrecarga de la palabra fork ha causado más que un poco de confusión en las comunidades de software libre y de código abierto, creando recientemente el temor de que Google haya bifurcado (en el sentido original) el lenguaje de programación Swift (lo que implica que estaba creando un proyecto nuevo y separado), en lugar de lo que realmente hizo: clonar el proyecto para contribuir de nuevo a él, como cualquier buen ciudadano de fuente abierta y gratuita.

Como puede ver, usualmente su fork es un clon, pero a veces es un fork. Todo depende de si simplemente está contribuyendo a la comunidad original (clonar) o tratando de formar una nueva (bifurcación) … o si está usando GitHub, en cuyo caso su fork es un clon y viceversa.

 

Fuente: Brasseur | maslinux

¿Quién está en línea?

Hay 1824 invitados y ningún miembro en línea