¿Cómo se licencian los parches de software?
Considere el proyecto de software dwm de Suckless . El proyecto está claramente licenciado bajo la Licencia del Consorcio MIT / X, que incluye la cláusula
El aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.
El proyecto se complementa habitualmente con parches de código fuente . Suponga que alguien desea distribuir sus modificaciones o su versión modificada de dwm. Sin el acuerdo de Suckless, me queda claro que cualquier bifurcación de dwm también debe tener una licencia compatible con MIT / X. Pero dado que los parches son material nuevo en sí mismos, me parece que a los parches en sí mismos se les podría otorgar (patológicamente) una licencia incompatible, lo que prohibiría a cualquiera crear o distribuir una bifurcación de dwm que incluyera esos parches. No asumo la importancia de los parches: podrían ser un cambio menor o podrían cambiar la naturaleza del programa por completo.
Tengo curiosidad por varias situaciones diferentes:
Suponga que Alice escribe un parche de dwm y explícitamente autoriza sus cambios bajo una licencia de copyright restrictiva. Alice podía distribuir sus cambios a quien quisiera, pero no podía distribuir una bifurcación de dwm que incluyera esos cambios [1]. Bob (a quien se le otorgan legalmente los cambios de Alice) podría aplicarlos a dwm, pero no podría distribuir ni esos cambios ni su versión de dwm a nadie más. ¿Es esto exacto?
Supongamos que Alice escribe un parche y no lo licencia explícitamente. Si no asumimos nada en absoluto sobre el trabajo de Alice, entonces el copyright es de ella y solo de ella , y estamos en la misma situación que 1. Supongamos que se "sabe" [2] que el trabajo de Alice está destinado a ser un parche de dwm . ¿La situación predeterminada cambia en este caso o requiere un acuerdo explícito de Alice?
Supongamos que Alice escribe un parche y lo licencia explícitamente bajo una licencia como la GPL, que también incluye una cláusula que requiere que las versiones modificadas estén bajo la misma licencia [3]. ¿Están prohibidas las versiones bifurcadas en la práctica, como en la situación 1?
Estas restricciones suenan como un gran obstáculo para aplicar parches a los programas de código abierto y requieren el acuerdo de todos los contribuyentes para someterse a la licencia principal. ¿Son estos acuerdos habituales en proyectos que aceptan contribuciones?
Aclaraciones
[1]: Alice, por supuesto, podría distribuir una bifurcación de dwm siempre que incluyera una copia de la licencia MIT / X. Creo que, en la práctica, esto haría que los cambios en sí estuvieran sujetos a esa misma licencia, anulando efectivamente su licencia restrictiva simultánea.
[2]: Por "conocido", me refiero a cualquier criterio preciso que indique que una pieza de software está destinada a ser utilizada como una modificación de un programa existente, y no como un nuevo proyecto en sí mismo. Por ejemplo, si la página de host oficial del parche dice algo como "Este archivo consiste en un parche para la versión 6.1 de dwm". Algo que es una mención directa de que el trabajo es una modificación, pero no hace declaraciones específicas sobre los derechos de autor del trabajo.
[3]: Tengo la impresión de que el código no se puede licenciar simultáneamente bajo MIT / X y GPL.
Respuestas
Para mí está claro que cualquier bifurcación de dwm también debe tener una licencia compatible con MIT / X
De hecho, eso no está claro. En primer lugar, si lees esta pregunta , verás que hay una gran cantidad de opiniones que dicen que es perfectamente aceptable cambiar las condiciones de la licencia en el código si se compartió contigo en términos que no lo prohíben. Las licencias libres de copyleft requieren que las copias y los derivados se distribuyan bajo la misma licencia (ver, por ejemplo, GPLv3 ss 4 y 5c, GPLv2 ss 1 y 2b) pero las licencias libres que no son de copyleft simplemente no tienen un lenguaje similar; solo requieren la distribución del texto especificado. Ciertamente, se sabe que los derivados del código con licencia BSD se utilizan en productos comerciales distribuidos bajo licencias propietarias.
En segundo lugar, no aborda el problema de que es muy difícil escribir un parche para un software sin examinar cuidadosamente dicho software y copiar las interfaces para que su parche pueda reemplazar o complementar el código existente. Esos son argumentos muy sólidos de que el parche es un derivado en términos de derechos de autor, ya sea que se envíe con el software original o no. Lo que eso implica para la distribución depende de la licencia original.
Dicho esto, examinemos sus preguntas específicas.
Suponga que Alice escribe un parche de dwm y explícitamente autoriza sus cambios bajo una licencia de copyright restrictiva. Alice podía distribuir sus cambios a quien quisiera, pero no podía distribuir una bifurcación de dwm que incluía esos cambios.
Suponiendo que dwm tiene una licencia libre sin copyleft (como MIT), Alice es completamente libre de distribuir dicha bifurcación. Es, como he dicho, una práctica comercial bastante común.
Supongamos que Alice escribe un parche [que pretendía ser un parche de dwm] y no lo licencia explícitamente en absoluto.
Como se ha dicho aquí antes , si el código se distribuye sin términos de licencia específicos, y no se requiere que sea gratuito, por ejemplo, siendo un derivado de un trabajo con copyleft fuerte de terceros, no puede hacer suposiciones sobre lo que puede hacer con eso. El parche es propietario y, por lo tanto, no puede ser utilizado por la comunidad de software libre.
Supongamos que Alice escribe un parche y lo licencia explícitamente bajo una licencia como la GPL ... ¿Las versiones bifurcadas están prohibidas en la práctica, al igual que en la situación 1?
No, eso estaría bien. Estas combinaciones están permitidas siempre que la licencia original sea compatible con la GPL .
Sin el acuerdo de Suckless, me queda claro que cualquier bifurcación de dwm también debe tener una licencia compatible con MIT / X.
Dado que la licencia MIT / X también otorga a los destinatarios el derecho de sublicenciar el trabajo, es casi trivial cumplir con ese requisito.
Las únicas licencias que serían incompatibles son las que yo llamaría La única que las gobierna todas las licencias: licencias que requieren que todas las copias del código estén bajo la misma licencia, La única licencia. Que yo sepa, tal licencia no existe actualmente y obtendría muy poca tracción si alguien creara tal licencia.
Suponga que Alice escribe un parche de dwm y explícitamente autoriza sus cambios bajo una licencia de copyright restrictiva. Alice podía distribuir sus cambios a quien quisiera, pero no podía distribuir una bifurcación de dwm que incluyera esos cambios [1]. Bob (a quien se le otorgan legalmente los cambios de Alice) podría aplicarlos a dwm, pero no podría distribuir ni esos cambios ni su versión de dwm a nadie más. ¿Es esto exacto?
No, eso no es exacto.
La licencia del MIT no se aplica (afirma) al código que no tenía licencia. Siempre que la licencia de Alice no prohíba combinar el trabajo de Alice con dwm, no hay problema en tener una bifurcación que contenga el resultado de aplicar los cambios de Alice a dwm. Las diferentes partes de esa bifurcación estarán sujetas a diferentes términos de licencia y para que Bob pueda distribuir esa bifurcación (o incluso solo los cambios de Alice), la licencia utilizada por Alice deberá permitirlo.
Supongamos que Alice escribe un parche y no lo licencia explícitamente. Si no asumimos nada en absoluto sobre el trabajo de Alice, entonces los derechos de autor son de ella y solo de ella, y estamos en la misma situación que 1. Supongamos que se "sabe" [2] que el trabajo de Alice está destinado a ser un parche de dwm . ¿La situación predeterminada cambia en este caso o requiere un acuerdo explícito de Alice?
Solo hay una situación en la que la "licencia" de copyright predeterminada cambia si se sabe que los cambios pretenden ser un parche para otro trabajo. Es decir, si los cambios se ofrecen en una solicitud de extracción a un repositorio que tiene la política de que la licencia entrante (la licencia de contribuciones) es la misma que la licencia saliente (la licencia bajo la cual se ofrece el repositorio). En ese caso, al hacer una solicitud de extracción, Alice acordó licenciar sus cambios bajo la licencia del repositorio, incluso cuando no se indica explícitamente entre los cambios.
Los repositorios alojados en GitHub son un ejemplo de repositorios con esa política.
Supongamos que Alice escribe un parche y lo licencia explícitamente bajo una licencia como la GPL, que también incluye una cláusula que requiere que las versiones modificadas estén bajo la misma licencia [3]. ¿Están prohibidas las versiones bifurcadas en la práctica, como en la situación 1?
[3]: Tengo la impresión de que el código no se puede licenciar simultáneamente bajo MIT / X y GPL.
Su impresión sobre la licencia simultánea bajo MIT / X y GPL es incorrecta.
Por un lado, generalmente se sostiene que la licencia MIT / X no prohíbe la redistribución del código con condiciones adicionales adjuntas. Y la GPL tampoco requiere que vuelva a licenciar todo el código para que esté bajo la licencia GPL.
La GPL requiere que
- el resultado de combinar el código GPL y el código no GPL se distribuye bajo la GPL, y
- que los requisitos de distribución de código fuente de la GPL también se observan para el código que no es GPL
otros puntos están permitidos por la licencia MIT / X, lo que la hace compatible con la licencia GPL, con el resultado de que puede combinar trabajos bajo ambas licencias en una única base de código.
Y si eso no es suficiente, la sublicencia otorgada por la licencia MIT / X permite distribuir dwm bajo la propia licencia GPL.