Inoltre, IANAL - quindi consiglierei di consultare un avvocato che in particolare capisce o è specializzato in problemi di proprietà intellettuale del software .
Ma penso che la risposta sia abbastanza semplice:
1. Non penso che sia necessario discutere il termine "open source" con il cliente (leggi avanti prima di formulare un'opinione su tale affermazione)
2. Nel contratto, è necessario indicare chiaramente quanto segue:
un. Qualsiasi lavoro tu crei per il cliente di JOINTLY PROPRIO e ognuno può creare prodotti di lavoro derivati. Ciò significa che ognuno può utilizzarlo come meglio credi, compreso il contributo a un progetto open source (consultare ovviamente i requisiti IP del progetto open source).
b. Conservi la proprietà di qualsiasi prodotto di lavoro preesistente che sei abbastanza gentile da includere gratuitamente e rilasci una licenza illimitata al tuo cliente per usare quel codice per sempre, compresa la creazione di opere derivate
c. Qualsiasi codice o prodotti di terze parti utilizzati appartengono ai rispettivi proprietari e sono soggetti alla loro licenza
Dovrai anche fare in modo che DAMN SURE non sottoscriva mai contratti con una clausola di assegnazione di invenzioni che non è estremamente limitata (non lo sono mai) - o potresti essere legalmente SOL. Si noti che ci sono diversi stati (cioè California) che limitano (ma non eliminano) questo dalla legge indipendentemente da ciò che dice il contratto. Questo è previsto in un contratto di lavoro (ma i limiti possono essere negoziabili), ma IMHO non dovrebbe essere concesso per un contratto di appaltatore indipendente.
La tua più grande sfida sarà convincerli ad accettare la comproprietà del codice sorgente. Ciò è in conflitto con la "Work made for hire" doctrine che è un linguaggio specifico che viene spesso utilizzato nei contratti di sviluppo software quando si usa appaltatori.
Se capiscono l'IP, potrebbero non essere d'accordo, ma suppongo che quelli non siano il tipo di clienti con cui hai a che fare. Posso dirti con certezza che c'è almeno una società di software estremamente grande che fa questo per qualsiasi consulenza / codice personalizzato scritto per qualsiasi cliente - e se non lo accetteranno, allora non lo faranno - periodo ( ma li faranno riferimento ad un partner).
Se possiedi una comproprietà dovresti essere bravo a livello IP per contribuire con quel codice a un progetto open source, fatte salve eventuali restrizioni apportate da quel progetto.
Dovrai anche essere selettivo in ciò che apri l'origine. Faresti un cattivo servizio al tuo cliente se apri un codice specifico del settore che sarebbe utile ai loro concorrenti diretti. Il tuo cliente sarà anche meno contento se si renderà conto che l'intera app che ti ha pagato per scrivere in modo personalizzato per loro è disponibile gratuitamente e potrebbe anche pensare di averlo appena installato invece di scriverlo da zero. Hai anche diminuito il loro valore percepito dei tuoi servizi.
Penso che questo copra le tue domande 1,2 e 4.
La domanda 3 potrebbe essere un problema: a seconda del modello di licenza del progetto open source da cui stai creando un lavoro derivato, il cliente può sicuramente pagarti per farlo, ma potrebbe non avere una proprietà completa o addirittura quel codice per il modello di licenza del progetto open source. Questo non vuol dire che non puoi farlo - ma potresti volerlo coprire con una clausola aggiuntiva nel tuo contratto - ed eseguirlo da un legale IP - o farlo solo dopo che un cliente ti ha chiesto di farlo - e allora potresti essere in grado di riaddebitare i costi di avere una revisione legale di un addendum al tuo contratto che copre questa situazione.