Ignorando per un momento la saggezza di manipolare il codice sorgente, chiediti come dovrebbe funzionare questa filigrana. È necessario disporre di file diversi per ogni sviluppatore. Ciò significa che alcune trasformazioni automatiche del codice non cambiano il significato del codice, ma non sono reversibili. Oh, e non dovrebbe rendere il codice difficile da mantenere. Alla fine della giornata, dovrebbe essere un codice valido, giusto?
Aggiungi spazio bianco? Questo può essere banalmente normalizzato. Cambia i nomi delle variabili? Vuoi dire offuscare il codice sorgente nel tuo albero dei sorgenti?
E se la filigrana dovesse mai fallire: "Ehi, hai rotto la build!" "Alla cassa, forse. Funziona per me. "
Quindi pensaci: devi avere file diversi per ogni sviluppatore . Collaborare alla ricerca di un bug? "Ho rintracciato il problema nel debugger, x
non è inizializzato." "What x
? Ho solo y
e z
nella mia copia. "
Anche se in qualche modo hai trovato un modo per filigranare il codice sorgente, questo può essere utile solo se gli sviluppatori non hanno modo alternativo di ottenere il codice sorgente. Quindi avere il server di generazione di un archivio sorgente è giusto. Non è un modo per fermarti, ma stai camminando su una linea sottile.
Ora pensiamo per un minuto alla saggezza di questo approccio. Stai dicendo agli sviluppatori che ti fidi di loro scrivere codice (e non fare un lavoro scadente, o piantare backdoor), ma non ti fidi di loro per non far trapelare il codice. In primo luogo, questa posizione sembra abbastanza incoerente, quindi non andrà giù bene con il tipico sviluppatore. In secondo luogo, rendi più difficile il loro lavoro (vedi sopra) senza alcun beneficio tangibile. Di nuovo, non sarà popolare. Il prevedibile risultato finale è che i tuoi sviluppatori daranno uno sguardo ai tuoi metodi di codifica, e daranno le loro idee alla competizione, e ti lasceranno con il tuo codice scadente.
Anche se per qualche miracolo sei riuscito a implementare un sistema di filigrana, quanto pensi che potrebbe essere utile? Se la versione di Alice del codice sorgente è trapelata, come fai a sapere che Alice lo ha fatto trapelare? Se Eva vuole far trapelare il codice, supponendo che non possa sbarazzarsi della sua filigrana o cambiarla con quella di Alice, può camuffare le sue tracce perdendo il codice di Alice. Potrebbe accedere furtivamente alla macchina di Alice - quindi è necessario crittografare tutte le unità, addestrare i tuoi sviluppatori contro attacchi di cameriera malvagi, avere politiche rigorose per non condividere macro di editor o patch non impegnate ... Mentre alcune di queste sono buone misure di alta sicurezza, per bloccare tutti gli attacchi percorsi, devi anche limitare severamente l'efficienza del team.
Se possiedi un corpus significativo di codice, ciò che puoi fare è limitare l'accesso al codice sorgente, in modo che ogni squadra veda solo i moduli su cui sta lavorando. Per basi di codice sufficientemente grandi, questo è di fatto una buona igiene in quanto mantiene l'indipendenza tra i componenti. Se la limitazione dell'accesso a parti del codice sorgente non funziona per te, non hai abbastanza codice o non ti serve quasi abbastanza riservatezza per considerare anche questo schema di filigrana.