Construindo um produto de IoT - qual é a melhor maneira de evitar o compartilhamento de código proprietário interno?

10

Eu acho que foi difícil para mim formular o título. No entanto, ainda posso explicar meu problema com mais detalhes aqui.

Estou projetando um produto incorporado que consiste em serviço em nuvem e hardware incorporado. O serviço de nuvem terá uma REST-api (embora esteja disponível não seja o ponto de venda) e se comunicará com o hardware incorporado. Idealmente, o hardware incorporado também teria uma interface semelhante a REST para comunicação. O problema é encontrar uma boa pilha de software para ele (ou é o que eu acho que é o problema).

A melhor opção, na minha opinião, seria algum tipo de distribuição Linux embutida com seu próprio aplicativo da Web instalado (Ubuntu Core + Django ...?). De alguma forma, é possível usar essa combinação em um produto comercial, mas ao mesmo tempo manter o webapp fechado?

O site Ubuntu fornece várias plataformas suportadas e algumas delas parecem ideais para o meu caso de uso. Como eu disse antes, minha principal preocupação no momento é o licenciamento.

Nikolas
fonte
2
Você pode esclarecer o que é provável que distribua ou venda? Interno / externo e derivado ou resultado são todos relevantes quando se trata de licenciamento.
Sean Houlihane
Desculpe, não percebi o comentário. O software será um servidor web simples, feito em django ou nodejs, que conterá tudo o que é essencial para o projeto. O Ubuntu Core seria apenas a plataforma para implantar.
Nikolas

Respostas:

7

Antes de mais nada, note que não sou advogado. Compre um se achar que precisa de aconselhamento jurídico. O licenciamento é uma dessas áreas em que eu recomendaria uma.

As licenças de código aberto variam muito de acordo com o que permitem. Vamos usar o exemplo de uma biblioteca que você está usando (não modificada) em seu projeto. Duas licenças comuns que você pode encontrar são GPL e LGPL, que variam de como tratam esse problema. A partir deste artigo , por exemplo:

O Projeto GNU possui duas licenças principais para usar em bibliotecas. Uma é a GNU Lesser GPL; o outro é o GNU GPL comum. A escolha da licença faz uma grande diferença: o uso da Lesser GPL permite o uso da biblioteca em programas proprietários; o uso da GPL comum para uma biblioteca a torna disponível apenas para programas gratuitos.

Outros exemplos de licença que são um pouco mais abertos nesse sentido incluem o MIT e o BSD.

Muitos softwares Linux são GPL, e isso provavelmente incluirá componentes de qualquer sistema operacional que você selecionar (por exemplo, Ubuntu Core). No entanto, contanto que seu projeto não seja considerado um trabalho derivado desses projetos, você não deverá ser afetado. Mais informações nesta resposta .

Nesta perspectiva, o uso do Ubuntu Core para o seu produto não deve afetar se o aplicativo que você envia é aberto ou fechado. De fato, empacotar seu aplicativo rapidamente é uma boa maneira de distribuir blobs binários.

Você provavelmente já considerou isso, mas de uma perspectiva técnica, se você enviar um snap em Python usando Django, o snap não será blobs binários - por padrão, seu código estará lá para quem quiser vê-lo (por despejar o conteúdo do disco ou obter acesso ao shell de alguma forma). Você pode ofuscar ou enviar o bytecode, etc.

Kyle
fonte
11
Isso pode ser algo que eu estava procurando. Eu acho que o software pode ser considerado um trabalho não derivado, já que toda a funcionalidade não trivial acontece dentro do Django. Além disso, não é possível enviar snaps a partir de um repositório privado? Nesse caso, não importaria que houvesse código python disponível.
Nikolas
2
Ah, claro, você pode manter o snap privado no que diz respeito à loja, mas estou dizendo que no dispositivo ainda é código Python, a menos que você faça algo a respeito. Considere que quem tem acesso físico ao dispositivo provavelmente pode ver o que está sendo executado nele, incluindo o seu snap.
Kyle
11
Ah, isso está correto. Eu estava pensando em rodar o dispositivo no modo sem cabeça (acho que o Samsung ARTIK) talvez não seja um grande problema. Obviamente, se você REALMENTE quiser entrar no dispositivo, isso pode ou não impedir isso. Mas em grande escala Acho que esta solução será suficiente ..
Nikolas