¿Cómo evitar que un contribuyente más poderoso te deje en el olvido?

119

Como se informó recientemente aquí :

Xamarin ha bifurcado Cocos2D-XNA, un marco de desarrollo de juegos 2D / 3D, creando una biblioteca multiplataforma que se puede incluir en proyectos PCL.

Sin embargo, el fundador del proyecto que se bifurcó dice :

El propósito de la licencia MIT es eliminar su uso justo. No para alentarlo a tomar el software, renombrarlo como propio y luego "tomarlo en una nueva dirección" como usted dice.

Si bien no es ilegal, no es ético.

Parece que la página de GitHub del nuevo proyecto ni siquiera indica que es una bifurcación de una manera típica de GitHub, optando por una sección de Historial fácilmente extraíble (ver abajo).

Entonces mis preguntas son:

  1. ¿Fue la acción de Xamarin y la forma en que se hizo la acción ética o no?
  2. ¿Es posible evitar tal situación si usted es un desarrollador único o un pequeño grupo de desarrolladores sin fondos?

Espero que esto pueda ser una pregunta wiki o habrá algunas respuestas objetivas basadas en la ética / filosofía moderna de OSS.

Guarida
fuente
25
Esto es más o menos precisamente para lo que es la GNU GPL, obliga a los falsificadores a permitirle fusionar sus cambios nuevamente si los lanzan, brindándole las mejoras que hicieron más las suyas.
Vality
46
La licencia del MIT se escribió originalmente para el sistema X Window, y se escribió para permitir a las empresas bifurcarla e incluirla en sus productos patentados para la venta.
Alan Shutko
55
@Vality: Realmente no importa si algo está bajo licencia GPL o MIT en lo que respecta a la fusión posterior, y la GPL tiene su propio conjunto de picaduras adjuntas.
DevSolar
66
"El propósito de la licencia MIT es eliminar su uso justo. No alentarlo a tomar el software, renombrarlo como propio y luego" tomarlo en una nueva dirección "como usted dice". - Umm, en realidad, eso es exactamente para lo que sirve. No existe tal cosa como "la Licencia MIT". El MIT usa muchas licencias diferentes. La licencia en cuestión es la Licencia MIT X11, que fue creada específicamente para que los proveedores de Unix puedan integrar MIT X11 en sus Unices, renombrarlo, reescribirlo y tomarlo en la dirección que deseen.
Jörg W Mittag
10
La guía ØMQ tiene una historia interesante sobre casi exactamente este escenario. La conclusión: "BSD hace que la mayoría de la gente nos vea como almuerzo. La fuente cerrada hace que la mayoría de la gente nos vea como enemigos (¿te gusta pagarle a la gente por el software?) Sin embargo, GPL hace que la mayoría de la gente, con la excepción de los Patricks del mundo, nuestros aliados ".
Michael Hampton

Respuestas:

72

¿Fue la acción de Xamarin y la forma en que se hizo la acción ética o no?

Bueno, preguntémosle a un experto: la lista de la Iniciativa de Código Abierto de la Licencia MIT en sí, con la licencia citada en su totalidad:

La licencia MIT (MIT)

Copyright (c)

Por la presente, se otorga permiso, sin cargo, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "Software"), para negociar en el Software sin restricciones, incluidos, entre otros, los derechos de uso, copia, modificación, fusión , publicar, distribuir, sublicenciar y / o vender copias del Software, y permitir a las personas a quienes se les proporciona el Software que lo hagan, sujeto a las siguientes condiciones:

El aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.

EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPLÍCITA O IMPLÍCITA, INCLUYENDO PERO SIN LIMITARSE A LAS GARANTÍAS DE COMERCIABILIDAD, APTITUD PARA UN PROPÓSITO Y NO INFRACCIÓN PARTICULARES. EN NINGÚN CASO, LOS AUTORES O LOS TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGÚN RECLAMO, DAÑOS U OTRA RESPONSABILIDAD, YA SEA EN ACCIÓN DE CONTRATO, TORT O DE OTRA MANERA, DERIVADA DE, FUERA DE, O EN CONEXIÓN CON EL SOFTWARE O EL USO O OTRO TRATO EN EL SOFTWARE.

Si alguien, ya sea una persona o una empresa, publica el código fuente / software con una licencia MIT, significa que cualquier otra persona, ya sea una persona o una empresa, puede "negociar el Software sin restricciones". Mientras el aviso de derechos de autor permanezca intacto, podrán hacer lo que quieran.

Este es uno de esos casos en los que la ética y la legalidad son exactamente iguales. Si una persona o grupo no entendió la licencia o sus implicaciones, entonces no hicieron su diligencia debida. La Open Source Initiative proporciona muchos otros recursos interesantes para ayudarnos a comprender las licencias, como la variante MIT. Veamos algunas cláusulas de su definición de código abierto:

1) Redistribución gratuita: la licencia no debe restringir a ninguna de las partes a vender o regalar el software como un componente de una distribución agregada de software que contiene programas de varias fuentes diferentes. La licencia no requerirá una regalía u otra tarifa por dicha venta.

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.

5) No discriminación contra personas o grupos: la licencia no debe discriminar contra ninguna persona o grupo de personas.

6) No discriminación contra los campos del esfuerzo: la licencia no debe restringir a nadie el uso del programa en un campo específico del esfuerzo. Por ejemplo, no puede restringir que el programa se use en un negocio o que se use para investigación genética.

A mi entender, esto parece muy claro: lanzar algo como código abierto, especialmente con la licencia MIT, permite que alguien tome libremente el software, lo cambie, lo empaquete y lo venda prácticamente a quien quiera, siempre que no lo haga ' T retire el aviso de copyright y afirman que es su propio único trabajo.

Como autor, estás renunciando explícitamente al derecho de ser exigente y exigente. No puede decidir quién o qué puede beneficiarse de su software o hacer uso de él, y no puede decidir por qué lo está utilizando. Usted renuncia explícitamente a ese derecho.

La idea es que está contribuyendo al bien común al renunciar explícitamente a cualquier derecho legal que tenga para controlar y restringir el uso y el cambio de lo que ha hecho. Si Microsoft quiere bifurcar su proyecto FluffBall y venderlo por $ 2k por asiento como WindowsSpongeCake, pueden hacerlo. ¿No estaba permitiendo que las personas hicieran lo que quisieran en primer lugar de su proyecto?

¿Es posible evitar tal situación si usted es un desarrollador único o un pequeño grupo de desarrolladores sin fondos?

¡Mas o menos! Primero, use una licencia que sea apropiada para usted y los objetivos y deseos de su organización. Si no desea que nadie lo use de una manera que no aprueba, probablemente no debería lanzarlo como Open Source, y, francamente, ¡tal vez no debería lanzarlo en absoluto! Si no desea que nadie use un trabajo derivado (como una bifurcación) en un proyecto comercial, probablemente debería optar por una versión copyleft de la GPL . Si desea una licencia no comercial, probablemente debería pedirle a un abogado de derechos de autor / licencia que lo asesore, ya que esto a menudo no se considera software de "código abierto" y no hay ninguna licencia preescrita importante para respaldar este caso.

El problema con el kerfuffle de Xamarin y Coco no es una cuestión de ética o legalidad: se trata de una pelea en Internet entre algunas personas que tienen problemas entre sí. Todos somos humanos, sucede. Parece ser el resultado de no poder colaborar / cooperar, probablemente debido a un conflicto de personalidad o visiones incompatibles de cómo se debe manejar el proyecto.

Entonces, la otra forma de defensa es abrirse a la colaboración y el cambio, pero comprenda que si no funciona y las visiones divergen ... bueno, esa es la razón de la opción de bifurcar y tener su propio proyecto separado.

Es muy humano y comprensible que los sentimientos de propiedad y popularidad hagan que los proyectos de software sean muy, muy complicados. Pero el objetivo del código abierto es intentar trascender eso y permitir que el mejor software esté disponible libremente para todos.

En pocas palabras, sea claro acerca de sus objetivos cuando decida una licencia y comprenda sus implicaciones para su futuro control y dirección del proyecto. Si solo desea donar para el bien común, el código abierto es el camino a seguir. Si desea controlar su proyecto de manera más estricta y tener la propiedad y al menos un caso legal si alguien intenta comercializar su proyecto o absorberlo en su propio (en parte o en su totalidad), necesitará una licencia diferente y probablemente necesite resolverlo con un abogado.

BrianH
fuente
35
Un pequeño truco sobre el lenguaje confuso: el uso de la GPL no restringiría el uso comercial , sino el uso exclusivo . Está perfectamente bien vender copias de software GPLed para obtener ganancias. Solo debe cumplir con las condiciones de la licencia cuando lo haga.
Bernd Jendrissek
55
@BerndJendrissek: Desde un punto de vista teórico, tienes razón. Pero dado que debe proporcionar las fuentes de su software a su cliente junto con el binario, y el cliente es libre de redistribuir su software de forma gratuita si lo desea (y hay muchas personas por ahí que lo considerarían su deber de hacerlo), es muy poco probable que realice muchas ventas.
DevSolar
8
@DevSolar: aunque el código fuente está abierto y es gratuito para que lo distribuyan, eso no significa que lo sean otros activos del proyecto que no sean de código. Con un juego, los medios, mapas, guiones, etc., pueden estar bajo una licencia diferente y puede que no sea legal que el cliente los distribuya. Para ver ejemplos, consulte en.wikipedia.org/wiki/List_of_open-source_video_games
corvec
77
@DevSolar: el propio RMS vendió el software GPL durante muchos años para financiar la FSF.
Martin Schröder
55
Mucha gente vende GPL y otro código fuente abierto. Todo el ecosistema de Joomla se basa en eso, al igual que el de Drupal (en Joomla es más para enchufar y jugar, para Drupal es más para el trabajo personalizado, pero de cualquier manera es todo GPL a la venta). A muchos clientes les gusta tener una factura con las garantías que vienen con una transacción financiera, o les gusta la marca; mira cuántas personas pagan por el agua embotellada.
Elin
119

Lanzar un proyecto bajo la licencia MIT está dando permiso a las personas para bifurcar el proyecto. Parte de la filosofía detrás del software libre es dar a los usuarios y desarrolladores el derecho de usar, modificar y lanzar el software de formas que normalmente no se permitirían. Si no quiere que la gente haga esto, entonces no use la licencia MIT. Realmente no puede quejarse cuando las personas usan el código bajo los términos de la licencia que les ha otorgado.

Las bifurcaciones son algo bastante normal en la comunidad de software libre. Parece que los desarrolladores de la bifurcación intentaron contribuir al proyecto original, y no estuvieron de acuerdo, por lo que contribuyeron a su propio proyecto. El software libre fomenta esto para que no se impida a los desarrolladores modificar el software porque a los propietarios no les gustan sus cambios.

Además, al lanzar algo bajo una licencia de software libre, se beneficia de las contribuciones de otras personas, contribuciones que podría no haber recibido si estuviera bajo una licencia diferente. Si acepta contribuciones bajo una licencia, debe respetar los términos de la licencia usted mismo.

Una forma de mantener el control sobre una versión oficial es confiar en cosas como las marcas registradas. Mozilla Corporation, por ejemplo, tiene una marca registrada en Firefox que les permite dictar lo que las personas pueden hacer con Firefox a pesar de que es de código abierto (ver Iceweasel para más detalles).

Otras licencias como LGPL todavía permiten tenedores, pero mantienen el código abierto. De esta forma, al menos puede incorporar cualquier cambio de la bifurcación en su proyecto original y beneficiarse del desarrollo en la bifurcación. El código LGPL puede usar cualquier código con licencia MIT, por lo que si desea tener más control sobre el proyecto, puede usar LGPL en su lugar.

fgb
fuente
1
Agregaría el MPL como una entrada notable a la lista de otras licencias que todavía permiten tenedores, pero mantienen el código abierto.
mucaho
¿Podría hablar sobre cómo las licencias BSD se relacionan con esto?
jpmc26
2
@ jpmc26: las licencias de software son documentos legales y no soy un abogado, por lo que para obtener una respuesta definitiva debe consultar a un abogado. Sin embargo, el consenso general es que las licencias BSD y MIT X11 son similares en lo que hacen. A menudo se les conoce como las " licencias académicas ".
Scott Whitlock
18

No lo llamaría poco ético. Yo lo llamaría antideportivo. Hay una expectativa no escrita de que harás un esfuerzo de buena fe para mejorar la versión original antes de decidirte a bifurcar, y parece que el autor original siente que no se hizo un esfuerzo de buena fe.

Dicho esto, la mejor manera de evitar que su software se bifurque es responder a las solicitudes de los clientes de tal manera que su software tenga el mayor atractivo posible. Nadie va a dar apoyo a un tenedor si saben que el original es superior. Aparte de eso, su única protección es cambiar los términos de la licencia.

Karl Bielefeldt
fuente
14
Si desea llevar el software en una dirección diferente , es decir, si hay cambios que serían una mejora para sus objetivos pero no son aceptados por el responsable actual, entonces hacer una bifurcación es completamente razonable, así es como sucede generalmente. Cambiar los términos de licencia después es más fácil decirlo que hacerlo: a menos que usted sea el único autor o tenga el acuerdo de todos (no, digamos, el 99%) que contribuyeron, entonces realmente no puede hacerlo.
Peteris
11
  • ¿Fue la acción de Xamarin y la forma en que se hizo la acción ética o no?

Mucha gente está mezclando la situación legal y ética. La licencia X11 permite a cualquier persona "usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y / o vender copias del Software, y permitir a las personas a quienes se les proporciona el Software que lo hagan", por lo que esto es definitivamente legal .

Aunque éticamente, es más complicado. En las comunidades de código abierto, generalmente se considera preferible mejorar el software original en lugar de crear una bifurcación. En el enlace que diste , Miguel de Icaza dice:

Como saben, contribuimos ampliamente a Cocos2D-XNA y simplemente no pudimos continuar trabajando juntos.

Una vez que llegamos a un punto en el que no podíamos colaborar juntos, decidí llevar el proyecto en la dirección que deseaba a expensas de la compatibilidad con versiones anteriores.

No está claro por qué "no pudieron colaborar juntos", pero parece que Xamarin hizo un esfuerzo razonable para trabajar en el proyecto original antes de decidir bifurcarlo.

  • ¿Es posible evitar tal situación si usted es un desarrollador único o un pequeño grupo de desarrolladores sin fondos?

Legalmente, puede optar por usar una licencia que no permita la bifurcación al no permitir la redistribución del código fuente (en este punto, no sería "software libre"). Otra opción es dejar el código sin gravámenes, pero no permitir la redistribución de activos estáticos como imágenes o texto sin código (algunos juegos tienen licencias como esta).

Socialmente, puede evitar la bifurcación:

  • Facilitar que las personas contribuyan con cambios a su proyecto.
  • Revisión de parches rápidamente.
  • Permitir cambios que no lo beneficien directamente.
  • Ser cortés. Una sorprendente cantidad de tenedores se debe a que los contribuyentes ya no están dispuestos a trabajar entre ellos.

El software de bifurcación es mucho trabajo, y la mayoría de las personas sensatas no lo harán si tienen una opción más fácil. Si no tienen otra opción, evitar que bifurquen su código los obligará a bifurcar el código de otra persona o reescribir su software desde cero. Puede ralentizarlos, pero realmente no te ayudará mucho.

Además, el uso de una licencia más restrictiva hará que algunas personas sean menos propensas a contribuir. Al parecer, Xamarin "contribuyó ampliamente a Cocos2D-XNA", y dudo que lo hubieran hecho si la licencia no les permitiera redistribuirlo.

Brendan Long
fuente
1
Usted declara que las personas están mezclando la situación legal y ética e incluso dice que éticamente es más complicado, pero no da ninguna razón para respaldar esas declaraciones. En otras palabras, ¿qué ves como una complicación ética al bifurcar el software?
NotMe
1
Creo que son más normas sociales que éticas. No se trata de moral / inmoral, se trata de "así es como se hacen las cosas". En general, @BrendanLong tiene razón en que las horquillas son una cantidad increíble de trabajo y es por eso que la mayoría de las horquillas fallan, muchas otras terminan volviéndose a fundir cuando prevalecen las cabezas más frías, y en general las personas intentan evitarlas.
Elin
@ChrisLively La situación realmente es "complicada". Lo que estaba tratando de hacer en la respuesta fue señalar que podría ser poco ético bifurcar un software, pero parece que Xamarin hizo lo correcto en este caso. Las razones por las que podría ser poco ético bifurcar el software son porque estar a cargo de un importante proyecto de código abierto le brinda a las personas una cierta cantidad de respeto y, a veces, dinero (a las personas les gusta recibir apoyo de los encargados del mantenimiento de un proyecto). El software de fork generalmente eliminará algo de eso y no debe hacerse solo porque desea ser la persona a cargo.
Brendan Long
2
Por ejemplo, es probable que Cocos2D-XNA pierda muchos desarrolladores, ya que la bifurcación de Xamarin de repente está recibiendo un montón de respaldo corporativo y Cocos2D-XNA está perdiendo el suyo. Es completamente lógico que el mantenedor esté enojado, ya que creó un proyecto de código abierto que probablemente sea un callejón sin salida en este punto. Por otro lado, Xamarin parece tener una buena razón para hacerlo.
Brendan Long
10

Lo que hizo Xamarin es legal y ético ... casi.

Echemos un vistazo a la corrección de confirmación de la licencia y las correcciones de errores tipográficos en el archivo Léame :

LicenseAndCredit.txt (diff)

-Copyright (c) 2010-2012 cocos2d-x.org
-
-Copyright (c) 2008-2010 Ricardo Quesada
-Copyright (c) 2011      Zynga Inc.
-Copyright (c) 2011-2012 openxlive.com
-Copyright (c) 2012      Totally Evil Entertainment, LLC
-Copyright (c) 2012      Gena Minchuk
-Copyright 2012 Xamarin Inc
+Copyright (c) The Cocos2D-XNA Team

Solo hay un requisito en toda la Licencia MIT:

El aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.

Y Xamarin hizo exactamente lo prohibido. Xamarin puede pensar que hace que la licencia sea "más bonita" al tener menos avisos de derechos de autor en la parte superior, pero no tienen permiso (legal o ético) para eliminar la "redundancia".

Por supuesto, si arreglan el archivo de licencia, volverán a estar en el área legal. Es posible que el autor de la biblioteca original no esté de acuerdo, pero eligió la licencia y no puede culpar a nadie de que hicieron lo que la licencia permite explícitamente.

Athari
fuente
3
Este ^ solo uno para ir directamente a la fuente. +1
Ryan
25
Ese cambio no parece originarse en la base de código bifurcada . Más importante aún, fue por Jacob Anderson , miembro del equipo Cocos2D-XNA y el que se opuso a la bifurcación . En contraste, Miguel de Icaza fue quien hizo la bifurcación . ¿Me estoy perdiendo de algo? ¿O ha atribuido los retiros a la persona y el proyecto equivocados?
Eliah Kagan
3
Eso fue en septiembre de 2013? Estoy confundido sobre el tiempo si eso es parte de una bifurcación que acaba de suceder.
Elin
99
@Elin Sí, creo que esa diferencia es un arenque rojo. Por lo que puedo ver, nadie de Xamarin lo hizo y sucedió mucho antes de la bifurcación. No creo que haya ninguna mala fe aquí, pero esta publicación ciertamente parece una falsa acusación de irregularidad.
Eliah Kagan
55
-1. Ese cambio se realizó en Cocos2D-XNA, antes de que ocurriera la bifurcación. Aquí está el cambio idéntico en Cocos2D-XNA.
David Hammen
4

Sería dudoso permitir que las personas saquen conclusiones incorrectas sobre la autoría de cualquier código que envíe la bifurcación, incluso si las legalidades están cubiertas al proporcionar los avisos necesarios y el historial de revisiones para cualquiera que elija mirar de cerca. Entonces, tal vez la presentación de Xamarin no sea ética, tal vez no lo sea, pero creo que esa es la base sobre la cual juzgarla: ¿engaña?

La licencia establece el permiso para usar el código y el requisito de incluir avisos de copyright relevantes con copias del código. Eso es todo a un nivel bastante bajo. No discute cómo debe resumir públicamente quién contribuyó con qué, pero solo porque eso está fuera del alcance de la licencia y no forma parte del acuerdo legal no significa que todo vaya éticamente . La ética varía, pero dar crédito honesto cuando es debido es un principio bastante extendido, por lo que es fácil ver por qué no hacerlo ofende.

Como todos dicen, no hay intención en la licencia del MIT de evitar las horquillas, por lo que no es poco ético en sí mismo. Si "renombrarlo como propio" es un código para "hacer reclamos públicos de crédito que no mereces", entonces seguro que no sería ético si es cierto.

En cuanto a evitar que le suceda a usted: si desea evitar la situación de otra persona que insinúa que su código es suyo, entonces necesita una voz alta cuando solicite crédito. Si desea evitar la situación de alguien que crea una bifurcación de su código que eventualmente podría resultar más popular que su original (ya sea por sus mayores recursos o simplemente por centrarse en las necesidades "correctas" del usuario), entonces creo que está fuera de suerte en OSS. No puede simplemente decidir si está en lo cierto si otro grupo quiere características diferentes en el software de las que desea, y si (en opinión de los usuarios) está equivocado, debería perder independientemente de estar allí primero. Esto es una consecuencia del principio primario de código abierto (o correctamente, el principio del software libre) de que el autor no controla el software, las personas que lo ejecutan lo hacen.

Steve Jessop
fuente
2

Una expansión del tema de la marca registrada:

En la Apache Software Foundation, todo el código es AL. Y, al igual que con la licencia BSD que se está discutiendo aquí, está perfectamente claro que AL permite horquillas. Período. Fin de la discusión. De hecho, como se discutió en otras respuestas, todas las licencias de código abierto verdaderas permiten tenedores. Todo lo que controlan es la licencia / uso del código bifurcado.

La fundación Apache ha optado por registrar y defender las marcas registradas. Si alguna otra entidad que no sea un proyecto básico se bifurca, oh, 'Apache Tomcat', están bien ... pero no pueden llamarlo Apache Tomcat y, cuando podemos defender la marca, no pueden llamarlo Tomcat .

El problema aquí es que las marcas registradas no son para los débiles de corazón. Si usted es un pequeño grupo de personas, sin estructura legal y sin financiación, no puede, prácticamente, utilizar la ley de marcas para proteger su nombre.

Al final, este tipo de cosas es una de las razones de los diversos fundamentos que existen.

Desde un punto de vista ético, bueno, si hay una fisión interna entre los contribuyentes, ¿quién puede decir quién 'merece' mantener el nombre? Si, por otro lado, un extraño se bifurca, probablemente no sea lo más ético del mundo dejar el nombre sin cambios. Tampoco es un acto atroz.

Github está lleno de tenedores . A veces las personas cambian el nombre, o el paquete de Java, o lo que sea, especialmente si quieren publicar en Maven central. A menudo no lo hacen, y los usuarios se quedan navegando por un laberinto de confusión. No es ideal, pero eso es lo que rompe con la anarquía.

bmargulies
fuente