Domanda

Attualmente sto ospitando un'app Django che ho sviluppato per i miei clienti, ma ora sto iniziando a cercare di venderlo alle persone affinché possano ospitarli.

La mia domanda è questa: come posso creare un pacchetto e vendere un'app Django, proteggendo il suo codice dalla pirateria o dal furto? Distribuire un sacco di file .py non sembra una buona idea in quanto anche le persone a cui lo vendo potrebbero semplicemente farne copie e trasmetterli.

Penso che ai fini di questo problema sarebbe lecito ritenere che chiunque acquisti questo esegua la stessa configurazione (LAMP).

È stato utile?

Soluzione

Non cercare di offuscare o crittografare il codice: non funzionerà mai.

Suggerirei di vendere l'applicazione Django "come servizio" - ospitalo per loro o vendendo loro il codice e supportando . Scrivi un contratto che proibisce loro di ridistribuirlo.

Detto questo, se tu fossi determinato a offuscare il codice in qualche modo - puoi distribuire le applicazioni Python interamente come .pyc (codice byte compilato Python) .. È come Py2App funziona.

Sarà ancora ridistribuibile, ma sarà molto difficile modificare i file - quindi potresti aggiungere alcune cose di licenza di base, e non averlo sventato da pochi # s ..

Come ho detto, non credo che riuscirai a combattere la pirateria tramite crittografia o offuscamento, ecc. A seconda dei tuoi clienti, un semplice contratto e forse alcuni controlli davvero basilari andranno molto oltre rispetto ad alcuni sistema di decrittazione complicato (E rendere l'esperienza dell'uso dell'applicazione migliore , invece di speriamo non peggiori )

Altri suggerimenti

Il modo in cui lo farei è questo:

  1. Crittografa tutto il codice
  2. Scrivi un programma di installazione che contatta il server con il nome host e il file di licenza della macchina e ottiene la chiave di decrittazione, quindi decodifica il codice e lo compila in bytecode python
  3. Aggiungi (nel programma di installazione) un modulo che controlla il nome host della macchina e il file di licenza durante l'importazione e muore se non corrisponde

In questo modo l'utente deve contattare il server solo quando il nome host cambia e alla prima installazione, ma si ottiene un piccolo livello di sicurezza. Potresti cambiare il nome host in qualcosa di più complesso, ma non c'è davvero bisogno - chiunque voglia piratare questo lo farà, ma un semplice meccanismo del genere manterrà le persone oneste.

Puoi impacchettare il tutto come un'istanza di Amazon Machine (AMI) e poi farli eseguire la tua app su Amazon EC2 . La cosa bella di questa soluzione è che Amazon si occuperà di fatturazione per te e poiché stai distribuendo l'intera immagine della macchina, puoi essere certo che tutti i tuoi clienti stanno usando lo stesso stack LAMP. L'AMI è un'immagine di una macchina crittografata configurata nel modo desiderato.

Puoi fare in modo che Amazon addebiti al cliente una commissione una tantum, una tariffa basata sull'utilizzo o una tariffa mensile.

Naturalmente, questa soluzione richiede che i tuoi clienti ospitino la loro app su Amazon e paghino le commissioni appropriate.

" crittografia " Il codice sorgente di Python (o bytecode, o davvero bytecode per qualsiasi linguaggio che lo utilizza - non solo Python) è come quelle piccole cose JavaScript che alcune persone inseriscono nelle pagine Web per provare a disabilitare il pulsante destro del mouse, dichiarando " ora tu non posso rubare le mie immagini! "

Le soluzioni alternative sono banali e non fermeranno una persona determinata.

Se sei davvero serio nel vendere un pezzo di software Python, devi agire seriamente. Paga un avvocato per redigere i termini di licenza / contratto, chiedi alle persone di accettarli al momento dell'acquisto, e poi lascia che abbiano il software vero e proprio. Ciò significa che dovrai portare le persone in tribunale se violano i termini di licenza / contratto, ma dovresti farlo a prescindere da quale (ad esempio, se qualcuno rompe la tua "crittografia" e inizia a distribuire il tuo software), e avere la forma effettiva effettiva di parole legali già scritte su carta, con la loro firma, sarà molto meglio per la tua attività a lungo termine.

Se sei davvero quel paranoico sulle persone "rubando" il tuo software, tuttavia, si attacca solo a un modello ospitato e non concede loro l'accesso al server. Molte aziende di successo si basano su quel modello.

Non sarai mai in grado di mantenere il codice sorgente dalle persone che lo vogliono davvero. È meglio venire a conoscenza di questo fatto ora e risparmiarti il ??mal di testa in seguito.

Posso parlare francamente, come amico? A meno che la tua app non sia davvero incredibile, potresti non ottenere molti acquirenti. Perché perdere tempo con avvocati, offuscamento, licenze e quant'altro? Otterrai una migliore reputazione acquistando il tuo codice in modo aperto ... e conservandolo.

Django proviene dall'estremità open source dello spettro dalle licenze (e dall'offuscamento). Concesso, la licenza MIT è più comune della GPL; tuttavia sono entrambi molto lontani da qualcosa come l'EULA di Microsoft. Molti Djangophiles si opporranno al codice sorgente chiuso, semplicemente perché è quello che fa Microsoft.

Inoltre, le persone si fideranno maggiormente del tuo codice, poiché saranno in grado di leggerlo e verificare che non contenga codice dannoso. Ricorda, " offuscante " significa "nascondere;" e chi saprà davvero esattamente cosa hai nascosto?

Concesso, non esiste un modo semplice per monetizzare il codice open source. Ma potresti offrire i tuoi servizi o persino pubblicare una campagna su Pledgie.com, per coloro che sono grati per tutto il tuo fantastico lavoro.

Una cosa che potresti voler considerare è ciò che fa FogBugz. Includi semplicemente un piccolo binario (forse un programma C) che viene compilato per le piattaforme di destinazione e contiene il codice per convalidare la licenza.

In questo modo puoi mantenere oneste le persone oneste con il minimo mal di testa da parte tua.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top