24FreelanceMercato freelance che non dorme mai
Carriera freelance 11 min 8 sezioni

Contratto freelance: proprietà del codice sorgente

Guida pratica per definire proprietà, ambito e cessione dei diritti sul codice sorgente in un contratto freelance.

Dmitrymembro di 24 Freelance11 min lettura23 visualizzazioni0
Contenuti 0%
  1. 011. Definisci con precisione l’esito della proprietà del codice
  2. 022. Identifica i beni di codice specifici inclusi nell’ambito
  3. 033. Aggiungi una clausola chiara di cessione della proprietà intellettuale
  4. 044. Separa strumenti preesistenti, template e componenti riutilizzabili
  5. 055. Definisci requisiti di consegna, accesso al repository e handoff
  6. 066. Includi regole su riservatezza, open source e codice di terze parti
  7. 077. Definisci accettazione, pagamento e momento del trasferimento della proprietà
  8. 088. Aggiungi una checklist pronta per la firma prima di inviare il contratto

Come scrivere un contratto freelance per la proprietà del codice sorgente

1. Definisci con precisione l’esito della proprietà del codice

Prima di scrivere una sola clausola, decidi cosa sta davvero acquistando il cliente. Cessione totale, licenza oppure proprietà solo dopo il pagamento finale non sono la stessa cosa, e il contratto dovrebbe riflettere l’accordo commerciale che vuoi davvero. Se il cliente si aspetta di possedere il codice sorgente fin dal primo giorno, dillo chiaramente. Se il freelance mantiene i diritti fino all’incasso dell’ultima fattura, dillo anche questo. Una frase vaga crea mesi di attriti.

Qui “come scrivere un contratto freelance per la proprietà del codice sorgente” diventa concreto, e la formula contratto freelance proprietà codice sorgente aiuta a tenere fermo il punto. Il fondatore di una startup può voler trasferire l’intero repository, mentre una piccola agenzia può aver bisogno solo di una licenza ampia per far girare l’app. Sono accordi diversi. Un contratto che li mescola può lasciare entrambe le parti insoddisfatte e poco protette.

Usa il contratto per rispondere a tre domande dirette: chi possiede il codice, quando cambia la titolarità e se il cliente può modificare o rivendere il lavoro. Se la risposta è “dopo il pagamento finale”, specifica che non avviene alcun trasferimento prima dell’incasso. Se la risposta è “cessione totale dalla creazione”, scrivilo in modo chiaro e senza giri di parole. Qui aiutano le frasi brevi.

Per un buon confronto sull’uso attento delle piattaforme, vedi come assumere un freelance in modo sicuro. Quell’articolo parla di scegliere bene le persone; questo parla di mettere per iscritto l’accordo una volta scelte.

2. Identifica i beni di codice specifici inclusi nell’ambito

Non lasciare che “codice sorgente” resti una formula generica e rassicurante. Nomina gli asset. Se il progetto include codice dell’app, script, repository, file di build, configurazioni di deployment, documentazione e qualsiasi codice refactorizzato o derivato creato durante il progetto, elencali. Un contratto che dice solo “il codice” invita a discutere in seguito. Due parole non bastano.

Pensa in cartelle e file, non in astrazioni. Per esempio, l’ambito può coprire il repository principale dell’applicazione, un repository separato per il pannello admin, script di CI, file di migrazione del database, wrapper API e un README che spiega la configurazione locale. Se il freelance crea una versione corretta di un modulo esistente durante il progetto, decidi se quella patch fa parte della consegna. Quel dettaglio conta.

Ecco un modo semplice per definire l’ambito: “Tutto il codice sorgente e i file di progetto correlati creati per il Progetto X, incluso il codice scritto nel Repository A e qualsiasi codice derivato o refactorizzato prodotto durante la durata del presente accordo.” La frase non è elegante. Funziona perché indica il luogo, il tipo di lavoro e il periodo di tempo; è una vera cessione diritti codice sorgente freelance quando il testo è preciso.

Se il progetto ha più repository, allega un elenco numerato. Un repo, una riga. Due repo, due righe. Il contratto non dovrebbe costringere qualcuno a indovinare se il pacchetto dell’app mobile rientra nel codice sorgente o se è solo un artefatto esportato.

3. Aggiungi una clausola chiara di cessione della proprietà intellettuale

La clausola di cessione della proprietà intellettuale è il cuore del contratto. Deve dire che il freelance cede al cliente tutti i diritti, titoli e interessi sul codice creato. Se il trasferimento avviene alla creazione, dillo. Se avviene al pagamento, dillo invece. La clausola non dovrebbe basarsi su un’ipotesi nascosta; una buona clausola proprietà intellettuale software freelance evita equivoci fin dall’inizio.

Una clausola pratica può suonare così: “Al pagamento completo di tutti gli importi dovuti ai sensi del presente accordo, il Freelance cede al Cliente tutti i diritti di proprietà intellettuale sui deliverable creati specificamente per il Cliente nell’ambito di questo progetto, esclusi eventuali materiali preesistenti elencati nell’Allegato A.” Questa formulazione indica il momento del trasferimento, la condizione di pagamento e un’eccezione. Tre elementi, una sola frase.

Alcuni contratti specificano anche che il trasferimento è efficace a livello mondiale e per l’intera durata della protezione, comprese eventuali proroghe e rinnovi dove consentiti. Un linguaggio del genere è comune perché il software può vivere per anni e nessuno vuole rinegoziare la proprietà quando l’app è già in produzione. Una cessione in una sola riga può essere troppo scarna se la legge della giurisdizione rilevante richiede più dettagli.

Per un approfondimento correlato sui termini e le regole della piattaforma, la pagina regole del sito 24freelance.pro. freelance è un utile contesto. Non scriverà la clausola al posto tuo, ma ricorda che regole formali e linguaggio contrattuale non devono entrare in conflitto.

4. Separa strumenti preesistenti, template e componenti riutilizzabili

I freelance spesso portano con sé strumenti già pronti. Un template, una libreria di utilità personalizzata, un wrapper API privato o uno script di build possono esistere già prima dell’inizio del progetto. Il contratto dovrebbe proteggere quel lavoro preesistente e, allo stesso tempo, garantire al cliente i diritti sul deliverable finale. Senza questa distinzione, il cliente potrebbe credere di aver acquistato l’intera cassetta degli attrezzi.

Il metodo più pulito è nominare i materiali esclusi in un allegato o in un prospetto. Chiamalo Allegato A, Allegato B o Appendice 1. Elenca ogni strumento preesistente, template o componente riutilizzabile che il freelance non cede. Se il cliente può usare uno di questi elementi all’interno del deliverable, indica se l’uso avviene tramite licenza e se la licenza è esclusiva o non esclusiva. Etichette piccole evitano grandi litigi.

Esempio: un freelance costruisce un flusso di pagamento usando una libreria privata di validazione creata due anni prima. Il contratto può stabilire che la libreria resta di proprietà del freelance, mentre il cliente riceve una licenza perpetua per usarla solo incorporata nell’app consegnata. In questo modo si tutela il lavoro precedente del freelance e il cliente ottiene comunque un prodotto utilizzabile. La linea tra “di proprietà” e “in licenza” deve essere visibile.

Questo è uno di quei casi in cui il linguaggio degli allegati batte le promesse vaghe. Se il freelance dice: “Ho del codice riutilizzabile”, non basta. Metti i nomi in un allegato. Metti le eccezioni per iscritto. Metti il numero dell’allegato nel testo principale, così nessuno dimentica di aprirlo più tardi.

5. Definisci requisiti di consegna, accesso al repository e handoff

Le clausole sulla proprietà non bastano se il cliente non può davvero ottenere i file. Il contratto dovrebbe coprire accesso Git, storico dei commit, trasferimento dei branch, passaggio delle credenziali, documentazione e una dichiarazione che tutti i file sorgente finali vengono consegnati al momento dell’accettazione. Una clausola legale ben scritta è utile; una password mancante del repository no.

Spiega cosa significa consegna. Il freelance deve fare push del codice finale nel repository del cliente? Deve fornire un archivio zip dell’intero progetto? L’handoff include note sullo schema del database, variabili d’ambiente e istruzioni di deployment? Se il progetto dipende da un account di servizio privato, il contratto dovrebbe dire quando quelle credenziali passano al cliente o vengono ruotate. Un token dimenticato può bloccare il lancio.

Rendi concreti i termini del repository. Per esempio: “Il Freelance concederà al Cliente accesso amministratore al repository del progetto entro la data di consegna, conserverà lo storico dei commit salvo diversa richiesta del Cliente per un handoff pulito e trasferirà il controllo di tutti i branch usati per il lavoro in produzione.” Questo linguaggio copre accesso, storico e titolarità dei branch in un unico punto. Se il cliente vuole un branch separato per lo staging, nominane anche quello.

Buoni termini di handoff riducono anche le dispute del tipo “ho inviato tutto”. Se l’accettazione dipende dalla consegna dei file sorgente finali, indica quali sono. Se la documentazione finale include note di configurazione, elencale. Se il progetto include il deployment su cloud, allora persino le credenziali di quell’ambiente potrebbero richiedere un passaggio separato, ed è qui che la tecnologia del cloud computing può influire sulla parte pratica della consegna.

6. Includi regole su riservatezza, open source e codice di terze parti

La proprietà del codice sorgente può complicarsi rapidamente quando nel progetto entra codice esterno. Il contratto dovrebbe limitare l’uso di librerie non dichiarate, richiedere approvazione per l’uso di open source e imporre la divulgazione di componenti o dipendenze di terze parti che potrebbero incidere sulla proprietà. Se il freelance inserisce un pacchetto con una licenza che limita l’uso commerciale, il cliente dovrebbe saperlo prima del rilascio, non dopo l’apertura di un ticket di supporto.

Stabilisci una regola per il materiale open source. Per esempio, il freelance può usare codice open source solo se il cliente lo approva per iscritto e solo se i termini di licenza non entrano in conflitto con le aspettative di proprietà del cliente. Ciò significa che il freelance deve identificare eventuali componenti GPL, LGPL, MIT, Apache o simili usati nel progetto e spiegarne l’effetto pratico. I nomi contano.

Anche il codice di terze parti merita la stessa trasparenza. Un SDK a pagamento, uno script proveniente da un precedente datore di lavoro o uno snippet copiato da un repository pubblico possono complicare la titolarità. Il contratto dovrebbe imporre la divulgazione di qualsiasi componente del genere prima che venga incluso. Se serve approvazione, rendi l’approvazione un passaggio formale, non un messaggio in chat. Una nota su Slack si perde facilmente.

La riservatezza dovrebbe coprire anche contenuti del repository, credenziali, note di architettura e logica di business. Non è solo una formalità legale. Un concorrente che vede il processo di build o il flusso di deployment può ottenere più di quanto il cliente intendesse condividere. Se il progetto prevede case study pubblici o uso nel portfolio, il contratto dovrebbe dire se il freelance può mostrare screenshot dopo il lancio.

7. Definisci accettazione, pagamento e momento del trasferimento della proprietà

Il trasferimento della proprietà spesso dipende dal pagamento. È normale. Il contratto dovrebbe stabilire se l’approvazione di una milestone o il pagamento finale fa scattare il trasferimento della proprietà, e dovrebbe dire cosa succede se il progetto termina in anticipo. Se il trasferimento avviene all’accettazione, definisci bene l’accettazione. Se avviene quando la fattura finale viene pagata, scrivi questa condizione in modo semplice.

Non lasciare il timing alla memoria. Una clausola può dire che i deliverable si considerano accettati dopo approvazione scritta o dopo un periodo di revisione stabilito se non arriva alcun avviso di rifiuto. Poi collega il trasferimento della proprietà a quell’evento di accettazione, oppure alla ricezione del pagamento dopo l’accettazione. Un evento, una conseguenza. Questa struttura evita discussioni sull’ordine delle operazioni.

La risoluzione anticipata ha bisogno di una regola propria. Supponiamo che il cliente annulli dopo la milestone 2. Il cliente possiede il codice già pagato? Il freelance conserva i diritti sui moduli non finiti? Il cliente riceve una licenza per usare il lavoro parziale o solo una copia per revisione interna? Il contratto dovrebbe rispondere a tutte e tre queste domande prima che qualcuno inizi a programmare.

Per progetti a rischio più alto, alcuni team separano pagamento e proprietà. Il freelance può ricevere pagamenti parziali a ogni milestone, mentre la proprietà del codice completato si trasferisce solo dopo la chiusura dell’ultima milestone. Può funzionare, ma solo se il contratto spiega se il codice parzialmente pagato è concesso in licenza per uso interno durante il progetto. Se la risposta è no, dillo chiaramente.

8. Aggiungi una checklist pronta per la firma prima di inviare il contratto

Prima di inviare il contratto, fai un controllo finale. Usa nomi, percorsi e date. Nome del progetto, posizione del repository, clausola di proprietà, materiali esclusi, obblighi di consegna e ogni revisione legale necessaria per il linguaggio specifico della giurisdizione dovrebbero essere tutti presenti. Se uno di questi elementi manca, sistemalo prima. Una firma affrettata resta comunque un rischio.

Ecco una lista pratica da verificare prima dell’invio:

  • Il nome del progetto coincide con lo statement of work.
  • La posizione del repository è indicata con URL o percorso esatto.
  • La clausola di proprietà specifica quando avviene il trasferimento.
  • I materiali esclusi sono elencati in un allegato.
  • Gli obblighi di consegna menzionano file sorgente, documentazione e accesso.
  • Le regole su open source e codice di terze parti sono descritte chiaramente.
  • Il timing di accettazione e pagamento è collegato.
  • Il linguaggio specifico della giurisdizione è stato revisionato da un legale.

Se il contratto riguarda un team che tiene anche alla reputazione pubblica, è utile consultare le recensioni sul freelance prima di affidare altro lavoro. Un contratto può proteggere la proprietà del codice, ma non corregge abitudini di handoff scadenti o ritardi ripetuti nelle consegne. Due protezioni sono meglio di una.

Un’ultima nota pratica: se il progetto è legato a un flusso di lavoro di una piattaforma di nicchia, il contratto non dovrebbe entrare in conflitto con le regole operative del sito, la sequenza di pagamento o il percorso di approvazione. Per questo molti clienti tengono una breve checklist interna accanto alla bozza del contratto. Sembra semplice. Semplice è meglio.

Lo hai trovato utile? Condividilo
Autore dell'articolo
Dmitry
membro di 24 Freelance
281 articoli21 661 letturesulla piattaforma dal 2015
24
24 Freelance

Pronto a mettere in pratica questo?

Pubblica un progetto gratuitamente — i freelance rispondono con prezzi e scadenze, e il pagamento avviene tramite un accordo sicuro.

Commenti 0

24Accedi o registrati per lasciare un commento.

Nessun commento ancora — sii il primo.

Cosa risponde questa pagina