Cómo abrir un software de código abierto que usa código propietario que yo poseo, pero también usa otro software de código abierto con diferentes licencias

Para responder a su pregunta, si abre el código fuente de su proyecto completo, cualquier código de propiedad interno ya no será propietario.

Teóricamente, todo lo que se necesita hacer para que un proyecto de código cerrado previamente sea de código abierto es poner el código fuente en línea con una licencia aprobada por OSI o FSF de su elección adjunta. Sin embargo, antes de publicar su código fuente, se deben verificar algunas cosas:

  1. ¿Ha leído y entendido la licencia y la ha verificado con su departamento legal? Es fácil publicar algo bajo una licencia gratuita, pero no puede anular la publicación después de haberlo hecho. Así que piense detenidamente sobre todas las implicaciones.
  2. ¿Tiene los derechos de código abierto? Esto significa que cualquier biblioteca que use debe estar bajo una licencia compatible. Verifique también si hay contribuciones de terceros en la base de código para las que no tenga derechos de autor completos.
  3. ¿Has resuelto algún problema de patentes? Cuando posea cualquier patente de software que se aplique a su proyecto, publique una declaración de que no utilizará su patente para prohibir el desarrollo y la distribución del programa o derivados. Cuando haya licenciado cualquier patente de terceros, asegúrese de que los términos de la licencia tampoco perjudiquen los derechos del proyecto.
  4. ¿Es utilizable sin aplicaciones de código cerrado? A veces, el software depende de componentes de terceros como bases de datos o middleware. Cuando este sea el caso de su aplicación, asegúrese de que estos componentes también estén disponibles bajo licencias de código abierto o asegúrese de que el software sea compatible con alternativas de código abierto o que se pueda usar sin ellas.
  5. ¿Puede la gente construirlo fácilmente? Cuando necesita herramientas personalizadas o una cadena de herramientas muy complicada para construir el software desde la fuente, las personas tendrán problemas para contribuir de manera significativa. Asegúrese de proporcionar todo lo necesario para compilar el proyecto.
  6. ¿Eliminó algún secreto corporativo de la base de código, como contraseñas, claves criptográficas o comentarios difamatorios? Tenga en cuenta que cuando publique el código fuente con su historial de versiones, estos seguirán allí.
  7. ¿Hiciste una auditoría de seguridad? Cuando el código fuente está disponible, es mucho más fácil para terceros encontrar vulnerabilidades. Claro, esto también significa que es más fácil para terceros proporcionar parches para ellos, mejorando la seguridad general a largo plazo. Pero llevará algún tiempo hasta que los parches estén hechos, aplicados y distribuidos. Mientras tanto, todos sus clientes serán vulnerables. Así que asegúrese de que los peores errores de seguridad se solucionen antes de dejar caer sus pantalones a todo el mundo.

Esto debería ser lo mínimo que debe hacer antes de publicar su código fuente. Sin embargo, cuando desea que el proyecto atraiga a una comunidad de desarrolladores para contribuir, también debe proporcionar cierta infraestructura.

  1. Asegúrese de que los desarrolladores puedan comenzar a trabajar fácilmente. Proporcione instrucciones claras sobre cómo extraer el código, compilarlo, configurarlo e implementarlo.
  2. Ofrezca plataformas de comunicación para que su comunidad discuta el desarrollo de su proyecto, como una lista de correo. Un rastreador de errores público también es una herramienta muy útil. Asegúrese de que las personas puedan encontrarlos fácilmente.
  3. Tenga un proceso claro que explique cómo las personas pueden proporcionar parches para resolver errores, qué requisitos formales deben cumplirse para que usted los acepte y cómo se pueden proponer solicitudes de características. Publique las descripciones de dichos procesos para mantenerlo transparente para posibles contribuyentes.
  4. Tenga personal disponible para administrar y moderar sus canales de comunicación y procesos de contribución comunitaria. Es posible que eventualmente pueda subcontratar esto a miembros de la comunidad de confianza (cuando lo desee), pero mientras tanto tendrá que manejar esto por su cuenta.

Solo para agregar a la otra respuesta: obviamente no puede liberar ningún código propietario bajo una licencia de código abierto sin el permiso del autor (¿es usted?). Esta es la razón por la cual la mayoría de los autores de software de código abierto se desviven para no depender de otra cosa que no esté también bajo una licencia compatible (ver la respuesta de Nathaniel Brown).

Si su código es efectivamente inútil sin algún software comercial o propietario con el que debe vincularse, o incluso tener presente para operar, entonces su software no es muy útil para el código abierto. Nadie puede usarlo sin obtener también una licencia para ese otro código propietario.

Aún puede lanzarlo bajo la licencia que elija, pero asegúrese de señalar qué componentes requiere y probablemente cree un plan para eventualmente reemplazar esa dependencia con código libre.

Es posible que no tenga muchas opciones, pero realmente depende de cómo estén vinculados entre sí. Si son programas separados, no hay problema. Si son bibliotecas, debes tener cuidado.

La pregunta más importante es ¿qué licencia están usando las otras bibliotecas? Es posible que no sean compatibles entre sí y es posible que no pueda lanzar su proyecto en absoluto y puede ser ilegal ya que sus licencias son incompatibles. Si ese es el código, debe regresar y cambiar lo que está utilizando.

Asumiendo que todo es compatible (supongamos que hay una biblioteca LGPL y una biblioteca MIT). Luego debe asegurarse de que su licencia sea compatible con ellas (no con la GPL).