10

I think it was hard for me to formulate the title. However, I can still explain my problem in more detail in here.

I am designing an embedded product which consists of cloud service and embedded hardware. The cloud service will have a REST-api (though it being available is not the selling point) and it will communicate with the embedded hardware. Ideally, the embedded hardware would also have a REST-like interface for communication. The problem is finding good software stack for it (or that's what I think is the problem).

The best option in my opinion would be some kind of embedded Linux distribution with its own web app installed inside (Ubuntu Core + Django...?). Is it somehow possible to use this combination in a commercial product but at the same time keep the webapp inside closed?

The Ubuntu website provides multiple supported platforms and some of them look ideal for my use case. Like I said before, my main concern at the moment is licensing.

2
  • 2
    Can you clarify what you are likely to distribute, or sell? Internal/external and derivative or result are all relevant when it comes to licensing. Feb 20, 2018 at 11:12
  • Sorry, did not notice the comment. The software will be a simple web server made in django or nodejs, which will contain everything essential to the project. Ubuntu Core would just be the platform to deploy on.
    – Nikolas
    Feb 22, 2018 at 11:20

1 Answer 1

7

First of all, note that I'm not a lawyer. Get one if you think you need legal advice. Licensing is one such area where I'd recommend one.

Open source licenses vary greatly in what they allow. Let's use the example of a library that you're using (unmodified) in your project. Two common licenses you might find are GPL and LGPL, which vary on how they treat this issue. From this article, for example:

The GNU Project has two principal licenses to use for libraries. One is the GNU Lesser GPL; the other is the ordinary GNU GPL. The choice of license makes a big difference: using the Lesser GPL permits use of the library in proprietary programs; using the ordinary GPL for a library makes it available only for free programs.

Other license examples which are a bit more open in this regard include MIT and BSD.

A lot of Linux software is GPL, and this will likely include components of any OS you select (e.g. Ubuntu Core). However, as long as your project isn't considered a derivative work from these projects you shouldn't be affected. More info in this answer.

From this perspective, using Ubuntu Core for your product shouldn't affect whether or not the application you ship on it is open or closed. Indeed, packaging your application as a snap is a good way to distribute binary blobs.

You've probably considered this, but from a technical perspective, if you ship a Python snap using Django, the snap won't be binary blobs-- by default your code will be sitting there for anyone who wants to see it (either by dumping the disk contents or by gaining shell access somehow). You may want to obfuscate or ship bytecode instead, etc.

3
  • 1
    This might be something I have been looking for. I guess the software could be considered non-derivative work since all of the non-trivial functionality happens inside Django. Also, isn't it possible to ship snaps from a private repository? In that case it would not matter that there would be python code available.
    – Nikolas
    Feb 19, 2018 at 19:26
  • 2
    Oh sure, you can keep the snap private as far as the store is concerned, but I'm saying on the device it's still Python code unless you do something about it. Consider that whoever has physical access to the device can probably look at what's running on it, including your snap.
    – kyrofa
    Feb 19, 2018 at 20:07
  • 1
    Ah, that is correct. I was thinking of running the device in headless mode (think Samsung ARTIK) so maybe this won't be a big issue. Of course if you REALLY want to get into the device this may or may not prevent this. But in large scale I think this solution will suffice..
    – Nikolas
    Feb 20, 2018 at 11:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.