NHibernate è OSS. È possibile scaricare il codice sorgente gratuitamente, apportare le proprie modifiche, ricompilarlo, reinserire il codice sorgente nel VCS, ecc. Ecc. Ayende richiede di scavare attraverso il codice e quello di DynamicProxy di Castle, per poter utilizzare in modo efficace la sua libreria per implementare il tuo livello di persistenza? Ovviamente no. La community di NHibernate fornisce un insieme di documentazione e buone pratiche per l'utilizzo della libreria NHibernate. Allo stesso modo, l'add-on Fluent NH ha una documentazione decente; non devi scavare nel codice della biblioteca per capire cosa fa e come usarlo.
In breve, anche l'OSS dovrebbe conformarsi al "principio della scatola nera" dal punto di vista dell'utente finale.
I codificatori si aspettano che le loro librerie siano impacchettate come le loro apparecchiature elettroniche: si aspettano di ricevere un manuale di istruzioni insieme a questa "scatola nera", che dice loro come collegarlo e come comunicare con esso. Se non ricevono un manuale, il più intelligente tra loro esaminerà ciò che entra nel pacchetto, si aspetterà di vedere etichette molto chiare per il punto in cui le cose si collegano ad esso, e non assumerà alcuna conoscenza specialistica richiesta per il funzionamento una volta è impostato correttamente. Se nessuno di questi è vero, il programmatore probabilmente chiamerà gli sviluppatori della biblioteca come aiuto, proprio come se tu avessi il supporto tecnico se non avessi tutte le informazioni necessarie per configurare TiVo. La ultima cosa che faresti è spezzare il sigillo su un pezzo di equipaggiamento nuovo di zecca e provare a tracciarlo da sé, proprio come l'ultima cosa che farebbe il programmatore è tirare su e tracciare il codice sorgente della biblioteca per un indizio sul suo funzionamento interno.
Allo stesso modo, i progetti OSS che non sono documentati in modo efficace in altro modo rispetto al codice rientrano in una delle tre categorie:
-
progetti per bambini - la documentazione è semplicemente non ancora ben sviluppata perché l'attenzione si concentra su un proof-of-concept e quindi su un codice funzionante. Gli utenti del codice in questa fase sono tester "beta" e comprendono la sua natura "così com'è" su tutti i fronti inclusa la documentazione.
-
estremamente semplice - lo scopo dichiarato della libreria, i nomi e le firme delle classi e dei membri della classe visualizzati da qualche browser degli oggetti o JavaDocing the JAR, più forse una semplice demo, dire all'utente tutti loro bisogno di sapere.
-
morto o morente - nessuno vuole prendersi il tempo per capire come utilizzare la libreria per tentativi, o per ispezione, quindi nessuno la sta usando.