Erstellen eines IoT-Produkts - Was ist der beste Weg, um die Weitergabe von internem proprietärem Code zu vermeiden?

10

Ich denke, es war schwer für mich, den Titel zu formulieren. Ich kann mein Problem hier jedoch noch genauer erläutern.

Ich entwerfe ein eingebettetes Produkt, das aus Cloud-Service und eingebetteter Hardware besteht. Der Cloud-Service verfügt über eine REST-API (obwohl diese nicht das Verkaufsargument ist) und kommuniziert mit der eingebetteten Hardware. Idealerweise verfügt die eingebettete Hardware auch über eine REST-ähnliche Schnittstelle für die Kommunikation. Das Problem ist, einen guten Software-Stack dafür zu finden (oder das ist meiner Meinung nach das Problem).

Die beste Option wäre meiner Meinung nach eine Art eingebettete Linux-Distribution mit einer eigenen Web-App (Ubuntu Core + Django ...?). Ist es irgendwie möglich, diese Kombination in einem kommerziellen Produkt zu verwenden und gleichzeitig die Webapp im Inneren geschlossen zu halten?

Die Ubuntu-Website bietet mehrere unterstützte Plattformen, von denen einige für meinen Anwendungsfall ideal sind. Wie ich bereits sagte, ist mein Hauptanliegen im Moment die Lizenzierung.

Nikolas
quelle
2
Können Sie klarstellen, was Sie wahrscheinlich vertreiben oder verkaufen werden? Intern / extern und Derivat oder Ergebnis sind alle relevant für die Lizenzierung.
Sean Houlihane
Entschuldigung, habe den Kommentar nicht bemerkt. Die Software wird ein einfacher Webserver sein, der in Django oder NodeJS erstellt wurde und alles enthält, was für das Projekt wesentlich ist. Ubuntu Core wäre nur die Plattform für die Bereitstellung.
Nikolas

Antworten:

7

Beachten Sie zunächst, dass ich kein Anwalt bin. Holen Sie sich eine, wenn Sie glauben, Rechtsberatung zu benötigen. Die Lizenzierung ist ein solcher Bereich, in dem ich einen empfehlen würde.

Open Source-Lizenzen unterscheiden sich stark darin, was sie zulassen. Verwenden wir das Beispiel einer Bibliothek, die Sie in Ihrem Projekt verwenden (unverändert). Zwei häufig verwendete Lizenzen sind GPL und LGPL, die sich je nach Behandlung dieses Problems unterscheiden. Aus diesem Artikel zum Beispiel:

Das GNU-Projekt verfügt über zwei Hauptlizenzen für Bibliotheken. Eine davon ist die GNU Lesser GPL; Die andere ist die gewöhnliche GNU-GPL. Die Wahl der Lizenz macht einen großen Unterschied: Die Verwendung der Lesser GPL ermöglicht die Verwendung der Bibliothek in proprietären Programmen. Wenn Sie die normale GPL für eine Bibliothek verwenden, steht sie nur für kostenlose Programme zur Verfügung.

Andere Lizenzbeispiele, die in dieser Hinsicht etwas offener sind, sind MIT und BSD.

Bei vielen Linux-Programmen handelt es sich um GPL, und dies umfasst wahrscheinlich Komponenten aller von Ihnen ausgewählten Betriebssysteme (z. B. Ubuntu Core). Solange Ihr Projekt nicht als abgeleitete Arbeit aus diesen Projekten betrachtet wird, sollten Sie nicht betroffen sein. Weitere Infos in dieser Antwort .

Aus dieser Perspektive sollte die Verwendung von Ubuntu Core für Ihr Produkt keinen Einfluss darauf haben, ob die Anwendung, auf der Sie es versenden, geöffnet oder geschlossen ist. In der Tat ist das Packen Ihrer Anwendung als Snap eine gute Möglichkeit, binäre Blobs zu verteilen.

Sie haben dies wahrscheinlich in Betracht gezogen, aber aus technischer Sicht handelt es sich beim Versenden eines Python-Snaps mit Django nicht um binäre Blobs. Standardmäßig befindet sich Ihr Code dort für alle, die ihn sehen möchten (entweder von Dumping des Festplatteninhalts oder durch Erhalten eines Shell-Zugriffs). Möglicherweise möchten Sie stattdessen den Bytecode usw. verschleiern oder versenden.

Kyle
quelle
1
Dies könnte etwas sein, wonach ich gesucht habe. Ich denke, die Software könnte als nicht abgeleitete Arbeit betrachtet werden, da alle nicht trivialen Funktionen in Django stattfinden. Ist es nicht auch möglich, Snaps aus einem privaten Repository zu versenden? In diesem Fall spielt es keine Rolle, dass Python-Code verfügbar ist.
Nikolas
2
Sicher, Sie können den Snap privat halten, was den Store betrifft, aber ich sage auf dem Gerät, dass es immer noch Python-Code ist, es sei denn, Sie tun etwas dagegen. Bedenken Sie, dass jeder, der physischen Zugriff auf das Gerät hat, wahrscheinlich sehen kann, was darauf läuft, einschließlich Ihres Snap.
Kyle
1
Ah, das ist richtig. Ich habe darüber nachgedacht, das Gerät im Headless-Modus zu betreiben (denken Sie an Samsung ARTIK). Vielleicht ist dies kein großes Problem. Wenn Sie WIRKLICH in das Gerät eindringen möchten, kann dies natürlich verhindert werden oder auch nicht. Aber im großen Maßstab denke ich, dass diese Lösung ausreichen wird.
Nikolas