Myślę, że trudno było mi sformułować tytuł. Nadal jednak mogę wyjaśnić mój problem bardziej szczegółowo tutaj.
Projektuję produkt wbudowany, który składa się z usługi w chmurze i wbudowanego sprzętu. Usługa w chmurze będzie miała interfejs API REST (chociaż jej dostępność nie jest zaletą) i będzie komunikować się z wbudowanym sprzętem. Idealnie, wbudowany sprzęt miałby również interfejs podobny do REST do komunikacji. Problemem jest znalezienie odpowiedniego stosu oprogramowania (lub tak myślę, że to jest problem).
Moim zdaniem najlepszą opcją byłaby wbudowana dystrybucja Linuksa z zainstalowaną własną aplikacją internetową (Ubuntu Core + Django ...?). Czy w jakiś sposób można użyć tej kombinacji w produkcie komercyjnym, ale jednocześnie zachować zamkniętą aplikację internetową?
Witryna Ubuntu zapewnia wiele obsługiwanych platform, a niektóre z nich wyglądają idealnie w moim przypadku użycia. Jak powiedziałem wcześniej, moim głównym zmartwieniem w tej chwili jest licencjonowanie.
źródło
Odpowiedzi:
Przede wszystkim zauważ, że nie jestem prawnikiem. Zdobądź je, jeśli uważasz, że potrzebujesz porady prawnej. Licencjonowanie to jeden z takich obszarów, w którym polecam jeden.
Licencje Open Source różnią się znacznie pod względem dozwolonych. Wykorzystajmy przykład biblioteki, której używasz (niezmodyfikowanej) w swoim projekcie. Dwie typowe licencje, które możesz znaleźć, to GPL i LGPL, które różnią się w zależności od tego, jak traktują ten problem. Z tego artykułu , na przykład:
Inne przykłady licencji, które są nieco bardziej otwarte w tym zakresie, to MIT i BSD.
Wiele programów dla systemu Linux jest na licencji GPL, i prawdopodobnie będą zawierać elementy dowolnego wybranego systemu operacyjnego (np. Ubuntu Core). Jednak dopóki twój projekt nie jest uważany za pracę pochodną z tych projektów, nie powinieneś mieć na niego wpływu. Więcej informacji w tej odpowiedzi .
Z tego punktu widzenia używanie Ubuntu Core do swojego produktu nie powinno wpływać na to, czy aplikacja, którą wysyłasz na niego, jest otwarta czy zamknięta. Rzeczywiście, pakowanie aplikacji w mgnieniu oka jest dobrym sposobem na dystrybucję binarnych obiektów blob.
Prawdopodobnie zastanowiłeś się nad tym, ale z technicznego punktu widzenia, jeśli wysyłasz snap Pythona za pomocą Django, snap nie będzie binarnymi obiektami blob - domyślnie twój kod będzie tam dla każdego, kto chce go zobaczyć (albo przez zrzucenie zawartości dysku lub jakoś uzyskać dostęp do powłoki). Zamiast tego możesz zaciemnić lub wysłać kod bajtowy itp.
źródło