Creación de un producto IoT: ¿cuál es la mejor manera de evitar compartir código propietario interno?

10

Creo que fue difícil para mí formular el título. Sin embargo, todavía puedo explicar mi problema con más detalle aquí.

Estoy diseñando un producto integrado que consiste en servicio en la nube y hardware integrado. El servicio en la nube tendrá una API REST (aunque estar disponible no es el punto de venta) y se comunicará con el hardware incorporado. Idealmente, el hardware integrado también tendría una interfaz similar a REST para la comunicación. El problema es encontrar una buena pila de software (o eso es lo que creo que es el problema).

La mejor opción en mi opinión sería algún tipo de distribución Linux integrada con su propia aplicación web instalada dentro (Ubuntu Core + Django ...?). ¿De alguna manera es posible usar esta combinación en un producto comercial pero al mismo tiempo mantener cerrada la aplicación web?

El sitio web de Ubuntu ofrece múltiples plataformas compatibles y algunas de ellas se ven ideales para mi caso de uso. Como dije antes, mi principal preocupación en este momento son las licencias.

Nikolas
fuente
2
¿Puede aclarar qué es probable que distribuya o venda? Interno / externo y derivado o resultado son relevantes cuando se trata de licencias.
Sean Houlihane
Lo sentimos, no noté el comentario. El software será un servidor web simple hecho en django o nodejs, que contendrá todo lo esencial para el proyecto. Ubuntu Core solo sería la plataforma para implementar.
Nikolas

Respuestas:

7

En primer lugar, tenga en cuenta que no soy abogado. Obtenga uno si cree que necesita asesoramiento legal. La licencia es una de esas áreas donde recomendaría una.

Las licencias de código abierto varían mucho en lo que permiten. Usemos el ejemplo de una biblioteca que está utilizando (sin modificar) en su proyecto. Dos licencias comunes que puede encontrar son GPL y LGPL, que varían en la forma en que tratan este problema. De este artículo , por ejemplo:

El Proyecto GNU tiene dos licencias principales para usar en bibliotecas. Uno es la GNU Lesser GPL; el otro es la GNU GPL ordinaria. La elección de la licencia hace una gran diferencia: el uso de Lesser GPL permite el uso de la biblioteca en programas propietarios; el uso de la GPL ordinaria para una biblioteca lo hace disponible solo para programas gratuitos.

Otros ejemplos de licencia que son un poco más abiertos a este respecto incluyen MIT y BSD.

Una gran cantidad de software de Linux es GPL, y esto probablemente incluirá componentes de cualquier sistema operativo que seleccione (por ejemplo, Ubuntu Core). Sin embargo, mientras su proyecto no se considere un trabajo derivado de estos proyectos, no debería verse afectado. Más información en esta respuesta .

Desde esta perspectiva, el uso de Ubuntu Core para su producto no debería afectar si la aplicación que envía está abierta o cerrada. De hecho, empaquetar su aplicación como complemento es una buena forma de distribuir blobs binarios.

Probablemente lo haya considerado, pero desde una perspectiva técnica, si envía un complemento de Python con Django, el complemento no será blobs binarios; de forma predeterminada, su código estará allí para cualquiera que quiera verlo (ya sea por volcar el contenido del disco o obtener acceso de shell de alguna manera). Es posible que desee ofuscar o enviar bytecode, etc.

Kyle
fuente
1
Esto podría ser algo que he estado buscando. Supongo que el software podría considerarse un trabajo no derivado ya que toda la funcionalidad no trivial ocurre dentro de Django. Además, ¿no es posible enviar instantáneas desde un repositorio privado? En ese caso, no importaría que hubiera código python disponible.
Nikolas
2
Claro, puedes mantener el complemento privado en lo que respecta a la tienda, pero estoy diciendo en el dispositivo que todavía es código Python a menos que hagas algo al respecto. Tenga en cuenta que quien tenga acceso físico al dispositivo probablemente pueda ver lo que se está ejecutando en él, incluido su complemento.
Kyle
1
Ah, eso es correcto. Estaba pensando en ejecutar el dispositivo en modo sin cabeza (piense en Samsung ARTIK), así que tal vez esto no sea un gran problema. Por supuesto, si REALMENTE desea ingresar al dispositivo, esto puede o no evitarlo. Pero a gran escala creo que esta solución será suficiente ..
Nikolas