È legale riutilizzare il codice nei progetti di altri clienti?


22

Sto lavorando come sviluppatore di software indipendente per applicazioni mobili. Un cliente mi chiede di sviluppare un'app mobile. Quindi al momento sto calcolando il tempo e gli sforzi per scrivere un'offerta per questo progetto.

L'app stessa verrà utilizzata per un certo periodo di tempo in quanto è correlata a un determinato evento successivo se sarà inutile. Ma la funzionalità di base dell'app sarà riutilizzabile per altri clienti che desiderano avere un'app simile per il loro evento.

Al momento mi chiedo se sia OK sviluppare l'app per il cliente, lasciargli pagare lo sviluppo e riutilizzare parte del codice sorgente per l'app di un altro cliente?

Quindi quale sarebbe il modo migliore per me di affrontare questo scenario?

  • A chi appartiene il codice sorgente dell'app?
  • Devo fornire il codice sorgente al cliente mentre ha pagato per lo sviluppo?
  • Se devo, posso ancora conservarne una copia e riutilizzarla in seguito?
  • Devo chiedere al cliente di riutilizzare il codice?
  • Devo lavorare con un qualche tipo di modello di licenza qui. E lasciare che il primo cliente paghi solo una determinata parte dello sviluppo in modo da poter riutilizzare il codice senza problemi?

Spero di aver chiarito la mia situazione. Non vedo l'ora di avere risposte.


Hai già stabilito un contratto formale con il cliente?
Thomas Owens

No, al momento sono in fase di progettazione. Fino ad ora ho parlato solo con il cliente dei requisiti.
Flo

5
@Flo - Scrivi un contratto che affronti tutte queste preoccupazioni. Per impostazione predefinita, il copyright viene assegnato all'utente come autore. Ovviamente se accetti un contratto che dice altrimenti che è su di te.
Ramhound,

8
Dovresti consultare un avvocato, invece di fare affidamento sulle supposizioni di un gruppo di programmatori che non conoscono i dettagli della tua situazione e le leggi locali.
Paul Tomblin,

Risposte:


26

Dovresti decidere prima di iniziare il progetto, chi manterrà la proprietà del codice.

Se ti consentono felicemente di mantenere la proprietà, allora puoi utilizzarlo in altri progetti. Se desiderano assumere la proprietà dopo, è un punto di negoziazione.


6
Potrebbe essere nel tuo interesse suggerire un accordo in cui è possibile riutilizzare il codice, ma non in progetti per i concorrenti dei tuoi clienti. Sembra più appetibile dal loro punto di vista.
Emilio M Bumachar,

4
Se si oppongono, la solita opzione è di citare 2 rate. 1 se posso riutilizzare il codice e le librerie esistenti e 2. un importo 10 volte maggiore se devo ricreare tutto da zero solo per questo progetto. In pratica, metti un po 'di "riutilizzo del codice e delle librerie standard" solo per coprire te stesso e nessuno se ne accorge o se ne frega mai.
Martin Beckett,

3
+1 a Martin Beckett. Dovresti avere due codebase in qualsiasi progetto; Un insieme di librerie "comuni" contenenti codice con applicazione globale, che "concedi in licenza" ai tuoi clienti, e il codice "personalizzato" che il tuo cliente sarà effettivamente proprietario al completamento. Nel contratto è possibile stabilire che lo sviluppo delle librerie "comuni" con nuove funzionalità in risposta ai requisiti di questo progetto è ancora fatturabile. Dovrai negoziare caso per caso con il cliente su ciò che si qualifica come "comune"; il cliente potrebbe desiderare una base di codice che non sia totalmente dipendente dal codice concesso in licenza.
KeithS

6

Dal momento che non hai ancora un contratto, devi risolvere questi problemi con il cliente prima di firmare il contratto finale. Dalla mia comprensione, questo accadrà se il cliente concorda con le tue stime su tempi e costi, quindi è qualcosa che dovresti pensare di discutere con il cliente ora, insieme ai requisiti. Queste sono cose che sono spesso incluse in tale documento. Ciò che è incluso dovrebbe essere gradito sia a te che alla persona che paga il prodotto, sebbene a seconda della persona o dell'organizzazione, potresti non ottenere tutto ciò che desideri.

Se non hai molta esperienza nella stesura di contratti, o se hai domande molto specifiche, la persona migliore da chiedere sarebbe un avvocato specializzato in contratti e diritto commerciale - saprebbero se ciò che hai scritto resisterebbe tribunale dovrebbe esserci un problema. Non vorrai che un errore nel tuo contratto causi problemi in seguito.


7
+1 Vorrei aggiungere anche che ottenere una consulenza legale o aiutare a scrivere il tuo primo contratto è una buona idea in modo da poterlo ottenere nel modo giusto. In genere, quindi, la maggior parte delle offerte sono molto simili, quindi è abbastanza facile utilizzare i vecchi contratti come modello per i contratti che scriverai per i nuovi clienti in un secondo momento.
maple_shaft

4

Le risposte finora sono state eccellenti. Sono pienamente d'accordo con il consiglio di:

  • chiedi a un avvocato
  • stipulare un contratto ogni volta che lavori con qualcuno
  • continua a lavorare con il tuo avvocato
  • profitto!

In questa situazione, sai già che la "funzionalità di base dell'app sarà riutilizzabile per altri clienti" e in effetti sono sicuro che tu (e altri) avete già vissuto situazioni in cui conoscete alcune funzionalità o framework di base - Web, dispositivi mobili, desktop o altro - verranno riutilizzati. Voglio dire davvero, perché non dovremmo riutilizzare qualcosa che sappiamo funzionare e con cui abbiamo familiarità? Probabilmente lo facciamo tutti continuamente.

Questo potrebbe non funzionare per te, ma ha funzionato per me nel corso degli anni:

  • Mangia i costi di sviluppo di qualsiasi cosa pensi di riutilizzare, conservare la proprietà e concederla in licenza ai tuoi clienti. Nessun denaro esterno cambia di mano in questo processo, per mantenere la proprietà chiara.

In quella situazione, con l'aiuto di un avvocato, puoi chiarire che i tuoi clienti stanno pagando per tutto ciò che è costruito sulla funzionalità di base che fornisci, possiedono quella personalizzazione ma non la base e continui ad essere libero di sviluppare per gli altri in modo simile.

Se il cliente richiede esclusività di utilizzo, allora si può offrire a loro ad un prezzo che si remunera per il momento, lo sforzo, e l'incapacità di vendere a chiunque altro in futuro.

Il rovescio della medaglia, ovviamente, è che stai sviluppando qualcosa gratuitamente. Devi essere certo che sarà riutilizzabile e che gli altri ti pagheranno, altrimenti è una scommessa sbagliata. Ma se prevedi di diventare uno sviluppatore indipendente per qualche tempo e hai una base di clienti - o almeno vuoi - questa linea di pensiero potrebbe essere qualcosa da considerare a lungo termine.

E parla con un avvocato!


3

A chi appartiene il codice sorgente dell'app? Devo fornire il codice sorgente al cliente mentre ha pagato per lo sviluppo?

Questo dipende dal contratto. In generale, è necessario chiedere al cliente ciò che è noto come esclusività . Ad esempio, potresti pagare molto di più per lo sviluppo esclusivo (e quindi il cliente sarà il proprietario del codice); in alternativa puoi dire loro che il cliente dovrà pagare di meno ma sei legalmente proprietario della fonte. È possibile fornire / installare una versione del software solo binaria per i clienti in modo che i clienti debbano rivolgersi a voi per le modifiche.

Se devo, posso ancora conservarne una copia e riutilizzarla in seguito? Devo chiedere al cliente di riutilizzare il codice?

Generalmente, conservare una copia non è illegale / non etico. Puoi usarlo quando il cliente richiede più sviluppo. Tuttavia, distribuire il codice (a qualcun altro) se l'affare era esclusivo, non è giusto.

Devo lavorare con un qualche tipo di modello di licenza qui. E lasciare che il primo cliente paghi solo una determinata parte dello sviluppo in modo da poter riutilizzare il codice senza problemi?

Non solo dal punto di vista del riutilizzo del codice altrimenti, il processo di licenza deve essere lì per definire tutti gli elementi del cliente e le tue preoccupazioni. Quindi è necessario disporre della licenza a prescindere anche se l'offerta è unilaterale. Inoltre, è necessario includere disposizioni per lo sviluppo futuro in un secondo momento per lo stesso cliente.


1
-1, non vi è alcun motivo per cui non è possibile distribuire il codice sorgente anche se lo si possiede.
user606723

@utente606723 leggerai la frase completa per favore? However, distributing code (to someone else) if the deal was exclusive, is not right.cioè se non hai sviluppato il codice esclusivo per un cliente che distribuisce a qualcun altro non è appropriato!
Dipan Mehta,

"in alternativa puoi dire loro che il cliente dovrà pagare di meno ma sei legalmente proprietario della fonte. Puoi fornire / installare binario solo al cliente. " <- Questo è ciò a cui mi riferisco. Puoi dare diritti non esclusivi al codice sorgente.
user606723

@ user606723 non è incluso anche nella mia risposta? alternatively you can tell them customer will have to pay less but you are legally owning the source- qual è il punto di disaccordo?
Dipan Mehta

1
@DipanMehta: sono d'accordo con l'utente606723; e l'ultima modifica non ha risolto il problema. Il problema è che "[...] in alternativa puoi dire loro che il cliente dovrà pagare di meno ma sei legalmente proprietario della fonte. Puoi fornire / installare una versione binaria del software ai clienti [...]" sembra che non si possa dare ai clienti il ​​codice sorgente se si desidera ancora possederlo. Il fatto è che puoi ancora concedere in licenza il codice sorgente a loro per scopi specifici, senza rinunciare alla proprietà e / o alla rinuncia a tutti i diritti.
Ruakh,

-1

Puoi sempre utilizzare nel tuo codice altre librerie, ad esempio open source. Ovviamente il cliente non avrà diritti d'autore su di essi. In casi speciali, puoi utilizzare le librerie scritte da te. Il cliente paga per la personalizzazione - quella parte, progettata per lui e le sue esigenze aziendali. Tutto ciò che non è specifico dell'utente e deve essere utilizzato in più progetti può essere la tua libreria. Non vedo alcun problema lì.

Il problema sarebbe se riutilizzi l'interfaccia o la logica aziendale o rivendi lo stesso progetto a qualcun altro. Il codice di utilità è qualcosa di cui il client di solito non è a conoscenza e nemmeno a cui importa.


1
Naturalmente, questo dovrebbe essere divulgato al cliente.
user606723

1
No, non lo farebbe. Licenze come Apache o MIT consentono l'uso commerciale.
Danubian Sailor,

-1

Le altre risposte stanno semplificando troppo le cose. Non intendo avere una risposta completa, solo per sottolineare alcune cose.

  1. Puoi dare diritti o puoi dare diritti esclusivi.
  2. Se concedi diritti esclusivi, puoi mantenerlo come parte dell'accordo, manterrai i diritti non esclusivi. (Questo ti permetterà di usare il codice / programma personalmente)
  3. Anche se non fornisci diritti esclusivi, puoi comunque fornire diritti non esclusivi per utilizzare, modificare e distribuire il codice sorgente. Le due cose non si escludono a vicenda.

-1 la tua risposta non copre NESSUN punto che altri non abbiano mai parlato prima!
Dipan Mehta,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.