Membangun produk IoT - apa cara terbaik untuk menghindari berbagi kode kepemilikan in-house?

10

Saya pikir sulit bagi saya untuk merumuskan judul. Namun, saya masih bisa menjelaskan masalah saya lebih detail di sini.

Saya merancang produk tertanam yang terdiri dari layanan cloud dan perangkat keras tertanam. Layanan cloud akan memiliki REST-api (meskipun tersedia bukan titik penjualan) dan akan berkomunikasi dengan perangkat keras yang disematkan. Idealnya, perangkat keras yang disematkan juga akan memiliki antarmuka seperti REST untuk komunikasi. Masalahnya adalah menemukan tumpukan perangkat lunak yang baik untuk itu (atau itulah yang saya pikir masalahnya).

Pilihan terbaik menurut saya akan menjadi semacam distribusi Linux tertanam dengan aplikasi web sendiri diinstal di dalamnya (Ubuntu Core + Django ...?). Apakah mungkin untuk menggunakan kombinasi ini dalam produk komersial tetapi pada saat yang sama menjaga agar webapp tetap tertutup?

Situs web Ubuntu menyediakan beberapa platform yang didukung dan beberapa di antaranya terlihat ideal untuk penggunaan saya. Seperti yang saya katakan sebelumnya, perhatian utama saya saat ini adalah perizinan.

Nikolas
sumber
2
Bisakah Anda mengklarifikasi apa yang mungkin Anda distribusikan, atau jual? Internal / eksternal dan turunan atau hasilnya semuanya relevan ketika menyangkut perizinan.
Sean Houlihane
Maaf, tidak memperhatikan komentar. Perangkat lunak ini akan menjadi server web sederhana yang dibuat dalam django atau nodejs, yang akan berisi segalanya yang penting untuk proyek. Ubuntu Core hanya akan menjadi platform untuk digunakan.
Nikolas

Jawaban:

7

Pertama-tama, perhatikan bahwa saya bukan pengacara. Dapatkan satu jika Anda merasa perlu nasihat hukum. Lisensi adalah salah satu area di mana saya akan merekomendasikan satu.

Lisensi open source sangat bervariasi dalam hal apa yang mereka perbolehkan. Mari kita gunakan contoh perpustakaan yang Anda gunakan (tidak dimodifikasi) dalam proyek Anda. Dua lisensi umum yang mungkin Anda temukan adalah GPL dan LGPL, yang berbeda pada cara mereka menangani masalah ini. Dari artikel ini , misalnya:

Proyek GNU memiliki dua lisensi utama untuk digunakan untuk perpustakaan. Salah satunya adalah GNU Lesser GPL; yang lainnya adalah GNU GPL biasa. Pilihan lisensi membuat perbedaan besar: menggunakan Lesser GPL memungkinkan penggunaan perpustakaan dalam program berpemilik; menggunakan GPL biasa untuk perpustakaan membuatnya hanya tersedia untuk program gratis.

Contoh lisensi lain yang sedikit lebih terbuka dalam hal ini termasuk MIT dan BSD.

Banyak perangkat lunak Linux adalah GPL, dan ini kemungkinan akan mencakup komponen OS apa pun yang Anda pilih (misalnya Ubuntu Core). Namun, selama proyek Anda tidak dianggap sebagai karya turunan dari proyek ini, Anda tidak akan terpengaruh. Info lebih lanjut dalam jawaban ini .

Dari perspektif ini, menggunakan Ubuntu Core untuk produk Anda seharusnya tidak memengaruhi apakah aplikasi yang Anda kirimkan terbuka atau tertutup. Memang, mengemas aplikasi Anda sebagai snap adalah cara yang baik untuk mendistribusikan gumpalan biner.

Anda mungkin telah mempertimbangkan hal ini, tetapi dari sudut pandang teknis, jika Anda mengirim snap Python menggunakan Django, snap tersebut tidak akan menjadi biner blob - secara default kode Anda akan berada di sana untuk siapa saja yang ingin melihatnya (baik oleh membuang konten disk atau dengan mendapatkan akses shell entah bagaimana). Anda mungkin ingin mengaburkan atau mengirim bytecode sebagai gantinya, dll.

Kyle
sumber
1
Ini mungkin sesuatu yang saya cari. Saya kira perangkat lunak dapat dianggap sebagai pekerjaan non-derivatif karena semua fungsi non-sepele terjadi di dalam Django. Selain itu, bukankah mungkin untuk mengirim buncis dari repositori pribadi? Dalam hal ini tidak masalah bahwa akan ada kode python yang tersedia.
Nikolas
2
Oh tentu, Anda dapat menyimpan snap secara pribadi sejauh menyangkut toko, tapi saya katakan pada perangkat itu masih kode Python kecuali jika Anda melakukan sesuatu tentang hal itu. Pertimbangkan bahwa siapa pun yang memiliki akses fisik ke perangkat mungkin dapat melihat apa yang berjalan di dalamnya, termasuk snap Anda.
Kyle
1
Ah, benar juga. Saya sedang berpikir untuk menjalankan perangkat dalam mode tanpa kepala (pikirkan Samsung ARTIK) jadi mungkin ini tidak akan menjadi masalah besar. Tentu saja jika Anda BENAR-BENAR ingin masuk ke perangkat ini mungkin atau mungkin tidak mencegah hal ini. Tetapi dalam skala besar saya pikir solusi ini akan cukup ..
Nikolas