Ho visto molti progetti che menzionano solo la licenza nel file README o in un file LICENZA o COPIA.
Il tuo software è automaticamente coperto da copyright, come concordato nel diritto internazionale. (A meno che non lavori per il governo degli Stati Uniti o qualche altra organizzazione per la quale il copyright non si applica.)
Se qualcuno utilizza il tuo software, deve accertarsi di seguire il contratto di licenza o seguire le restrizioni sull'uso corretto su ciò che può fare.
Supponiamo che quella persona voglia utilizzare uno dei file nella distribuzione del codice, che ovviamente richiede una copia e quindi si applica la legge sul copyright. Di default NON hanno il diritto di usare il tuo software secondo la legge sul copyright. È solo quando sanno e seguono le restrizioni della licenza che sono autorizzati a usarlo.
Quindi, se usano un file senza una licenza software, violano la legge sul copyright. Poiché tutte le licenze dicono qualcosa come "La suddetta nota sul copyright e questa nota di autorizzazione devono essere incluse in tutte le copie o parti sostanziali del Software", sono obbligate a mettere questa licenza da qualche parte.
Questo può essere nel file stesso, o quando ho usato il codice come libreria ho inserito le parti rilevanti nella sua directory e aggiunto un "README" o "LICENCE" in quella sottodirectory.
In breve, non è necessario inserire la licenza in ogni file. Penso che sia eccessivo. Non c'è alcuna protezione legale aggiuntiva nel farlo. Aiuta un utente downstream in qualche modo, ma non di molto.
Penso che la tradizione di molti metadati basati sui commenti (licenza, data di creazione di ogni funzione, registro delle modifiche, ecc.) siano tradizioni molto antiche che esistono perché sono facili da fare e che più un talismano che utile.
Ad esempio, il modello Eclipse predefinito aggiunge quelli che considero come metadati inutili prima di ogni funzione, il che penso sia catturato molto meglio dal controllo della versione. Ma questa pratica è comune in molti negozi.