Quando lavoravo come libero professionista, ho incontrato molti casi in cui i clienti proteggevano le loro idee e il codice sorgente dei loro progetti (come le applicazioni web) il più possibile, indipendentemente da quanto poco importanti, poco interessanti e poco originali fossero i progetti e i concetti dietro.
Ho già postato una domanda su come mantenere segrete le idee e ho ricevuto molte ottime risposte. Ora, la mia preoccupazione riguarda maggiormente il segreto del codice sorgente.
Secondo le mie osservazioni su:
- I codebase su cui ho dovuto lavorare durante la mia carriera
- La mia stessa disponibilità a mantenere alcuni dei miei codici sorgente segreti e:
- Alcuni articoli come, ad esempio, risposta aperta a Simon Stuart dal famoso collaboratore di Programmers.SE Mason Wheeler ,
Concludo che il codice sorgente è tenuto segreto soprattutto per questi motivi:
-
Perché l'autore si vergogna del codice di una tale pessima qualità, o la società teme di perdere la reputazione se qualcuno vede una tale base di codice errata, o che data la bassa qualità della base di codice, non porterà nulla di utile a chiunque l'abbia open source: anche se qualcuno fosse interessato, difficilmente sarebbe in grado di eseguire la soluzione (o, spesso, anche compilare).
-
Poiché parti del codice vengono rubate (principalmente da progetti open source coperti da una licenza che ne limita l'utilizzo in una determinata situazione),
-
Poiché il codice si basa sulla sicurezza per oscurità e all'autore non interessa il principio di Kerckhoffs .
-
Poiché il prodotto è così fragile che la visualizzazione del codice causerebbe troppi danni: se un'app closed-source con tutte quelle fughe di sicurezza resistesse a un hacker principiante, la stessa app open source avrebbe possibilità molto minori, perché anche il l'hacker principiante dovrebbe solo studiare il codice per scoprire tutti i buchi.
Se non è chiaro di cosa sto parlando, ecco un esempio:
if (credentials.password === 'masterPassword12345') { isLoggedIn = true currentUser = credentials.userName } else { authenticate(credentials) }
-
Poiché l'autore ha sovrastimato il codice sorgente (e le sue capacità e competenze). Esempio: credere che un algoritmo basato sulla crittografia fatta in casa (che non è mai stato rivisto da nessuno) è migliore di qualsiasi altro ben noto.
-
Perché l'autore ritiene che l'idea alla base del codice sia ottima e che venga rubata.
-
A causa della sindrome "Non è abbastanza perfetto". In altre parole, lo sviluppatore è disposto a rendere pubblico il codice sorgente quando il codice è "abbastanza buono", ma giorno dopo giorno ci sono ancora cose da migliorare, quindi il codice non verrebbe mai rilasciato.
Tutti questi motivi danno un'immagine negativa delle persone che sono contrarie alla pubblicazione del codice sorgente.
Ci sono casi validi per non rilasciare al pubblico il codice di alta qualità che segue il principio di Kerckhoffs?