Création d'un produit IoT - quelle est la meilleure façon d'éviter de partager du code propriétaire en interne?

10

Je pense qu'il m'a été difficile de formuler le titre. Cependant, je peux toujours expliquer mon problème plus en détail ici.

Je conçois un produit embarqué qui se compose d'un service cloud et d'un matériel embarqué. Le service cloud aura une API REST (bien qu'il ne soit pas disponible) et il communiquera avec le matériel embarqué. Idéalement, le matériel embarqué aurait également une interface de type REST pour la communication. Le problème est de trouver une bonne pile logicielle pour cela (ou c'est ce que je pense être le problème).

La meilleure option à mon avis serait une sorte de distribution Linux embarquée avec sa propre application web installée à l'intérieur (Ubuntu Core + Django ...?). Est-il possible d'utiliser cette combinaison dans un produit commercial tout en gardant la webapp à l'intérieur fermée?

Le site Web Ubuntu fournit plusieurs plates-formes prises en charge et certaines d'entre elles semblent idéales pour mon cas d'utilisation. Comme je l'ai déjà dit, ma principale préoccupation pour le moment est l'octroi de licences.

Nikolas
la source
2
Pouvez-vous clarifier ce que vous êtes susceptible de distribuer ou de vendre? Interne / externe et dérivé ou résultat sont tous pertinents en matière de licence.
Sean Houlihane
Désolé, je n'ai pas remarqué le commentaire. Le logiciel sera un simple serveur web réalisé en django ou nodejs, qui contiendra tout ce qui est essentiel au projet. Ubuntu Core ne serait que la plate-forme sur laquelle déployer.
Nikolas

Réponses:

7

Tout d'abord, notez que je ne suis pas avocat. Obtenez-en un si vous pensez avoir besoin de conseils juridiques. La licence est un de ces domaines où je recommanderais un.

Les licences open source varient considérablement dans ce qu'elles autorisent. Prenons l'exemple d'une bibliothèque que vous utilisez (non modifiée) dans votre projet. Deux licences courantes que vous pourriez trouver sont GPL et LGPL, qui varient selon la façon dont elles traitent ce problème. De cet article , par exemple:

Le projet GNU dispose de deux licences principales à utiliser pour les bibliothèques. L'un est la GNU Lesser GPL; l'autre est la GNU GPL ordinaire. Le choix de la licence fait une grande différence: l'utilisation de la Lesser GPL permet d'utiliser la bibliothèque dans des programmes propriétaires; l'utilisation de la GPL ordinaire pour une bibliothèque la rend disponible uniquement pour les programmes gratuits.

D'autres exemples de licence qui sont un peu plus ouverts à cet égard incluent le MIT et BSD.

De nombreux logiciels Linux sont de la GPL, et cela inclura probablement des composants de tout système d'exploitation que vous sélectionnez (par exemple Ubuntu Core). Cependant, tant que votre projet n'est pas considéré comme un travail dérivé de ces projets, vous ne devriez pas être affecté. Plus d'informations dans cette réponse .

De ce point de vue, l'utilisation d'Ubuntu Core pour votre produit ne devrait pas affecter l'ouverture ou la fermeture de l'application que vous y expédiez. En effet, empaqueter votre application en un clin d'œil est un bon moyen de distribuer des blobs binaires.

Vous avez probablement envisagé cela, mais d'un point de vue technique, si vous expédiez un snap Python à l'aide de Django, le snap ne sera pas un blob binaire - par défaut, votre code sera là pour quiconque veut le voir (soit par en vidant le contenu du disque ou en obtenant un accès shell d'une manière ou d'une autre). Vous voudrez peut-être masquer ou expédier du bytecode à la place, etc.

Kyle
la source
1
C'est peut-être quelque chose que je cherchais. Je suppose que le logiciel pourrait être considéré comme un travail non dérivé puisque toutes les fonctionnalités non triviales se produisent dans Django. De plus, n'est-il pas possible d'expédier des snaps depuis un référentiel privé? Dans ce cas, peu importe qu'il y ait du code python disponible.
Nikolas
2
Oh bien sûr, vous pouvez garder le snap privé en ce qui concerne le magasin, mais je dis sur l'appareil que c'est toujours du code Python à moins que vous ne fassiez quelque chose. Considérez que quiconque a un accès physique à l'appareil peut probablement regarder ce qui y fonctionne, y compris votre snap.
Kyle
1
Ah, c'est vrai. Je pensais faire fonctionner l'appareil en mode sans tête (pensez à Samsung ARTIK), alors ce ne sera peut-être pas un gros problème. Bien sûr, si vous voulez vraiment entrer dans l'appareil, cela peut ou non empêcher cela. Mais à grande échelle, je pense que cette solution suffira ..
Nikolas