Si alguien está tan confundido acerca de las licencias de software como lo estaba yo, aquí está cómo las veo ahora. Las licencias de software controlan lo que las personas pueden hacer con tu código. La licencia MIT permite a las personas hacer cualquier cosa. Supón que construyes una biblioteca de análisis JSON con licencia MIT. Una startup puede tomar tu código, modificarlo y venderlo como parte de su servicio API de pago sin devolverte nada. Solo necesitan mantener tu aviso de copyright en los comentarios del código. React usa MIT, así que Facebook podría haberlo hecho propietario, pero eligieron mantenerlo abierto. Esta es la licencia de "haz lo que quieras". GPL obliga a compartir. Imagina que creas un marco web bajo GPL. Si alguien modifica tu marco para agregar nuevas características, debe liberar esas modificaciones también como GPL. No pueden vender una versión propietaria. WordPress usa GPL, así que todos los temas y plugins de WordPress también deben ser GPL. Si construyes un CMS comercial sobre WordPress, tu CMS completo se convierte en GPL. Esto mantiene todo como código abierto. Apache 2.0 maneja las patentes mejor. Escribes una biblioteca de aprendizaje automático y alguien contribuye con un algoritmo. Más tarde, intentan demandar a los usuarios por infracción de patente sobre ese algoritmo. Con la licencia Apache, automáticamente pierden sus derechos para usar tu biblioteca. Es una protección contra los trolls de patentes. Kubernetes usa Apache 2.0 porque las empresas de la nube se preocupan por los problemas de patentes. BSD es básicamente MIT con diferentes palabras. Creas una biblioteca de redes bajo BSD. Las mismas reglas que MIT, las personas pueden hacer lo que quieran. FreeBSD usa esto, que es por qué Apple pudo tomar el código BSD y ponerlo en macOS sin liberar el código fuente de macOS. La mayoría de los desarrolladores solo usan MIT ahora porque es más claro. LGPL es GPL para bibliotecas. Construyes una biblioteca de generación de PDF bajo LGPL. Las empresas pueden usar tu biblioteca en su software propietario sin hacer que toda su aplicación sea LGPL. Pero si modifican el código de tu biblioteca, esos cambios deben ser LGPL. VLC media player usa LGPL para que otras aplicaciones puedan incluir la reproducción de video sin convertirse en GPL. Propietario significa que controlas todo. Construyes un motor de base de datos y lo mantienes propietario. Las empresas te pagan tarifas de licencia para usarlo. No pueden ver el código fuente, no pueden modificarlo, no pueden redistribuirlo. Oracle Database funciona de esta manera. Ganas dinero con las licencias pero limitas quién puede usarlo. La doble licencia ofrece opciones. Libertas una base de datos bajo licencias GPL y comerciales. Los proyectos de código abierto usan la versión GPL de forma gratuita. Las empresas que no quieren restricciones GPL pagan por la licencia comercial. MySQL hace esto. Las startups usan MySQL gratis, las grandes empresas a menudo compran licencias comerciales. El dominio público renuncia a todos los derechos. Creas una función hash y la pones en dominio público. Cualquiera puede hacer cualquier cosa con ella, sin restricciones, sin atribución requerida. SQLite hace esto. A las agencias gubernamentales les encanta porque no hay riesgo legal. ¿Construyendo una biblioteca que quieres que todos usen? Elige MIT. ¿Quieres asegurarte de que las mejoras regresen a la comunidad? Usa GPL. ¿Preocupado por las patentes en el software empresarial? Opta por Apache. ¿Construyendo un negocio alrededor de tu código? Mantente propietario. ¿Quieres la máxima libertad para los usuarios? Prueba el dominio público. La clave es hacer coincidir tus objetivos con las restricciones de la licencia. No copies simplemente lo que hacen otros proyectos sin entender por qué eligieron esa licencia.
22,17K