Ecco la mia lista di controllo relativa alla maturità del progetto:
Il progetto ha raggiunto il traguardo iniziale?
Eviterei di aggiungere qualsiasi codice se non ha raggiunto la pietra miliare iniziale descritta. Non suggerisco che dovresti sempre fidarti di uno sviluppatore che sostiene che il suo progetto è pronto per la produzione e cerca sempre di valutare tali affermazioni, ma dovresti fidarti di lei quando lei ti dice di no, cioè etichettare il software come versione 0.x, alpha, beta, release candidate e così via.
C'è una documentazione adeguata?
Un progetto perfetto offrirebbe:
- Guida completa con esempi
- Una guida di integrazione / estensione se si tratta di una libreria
- Documentazione API
- Codice sorgente completamente documentato
- Un tracker di problemi pubblici
Gli sviluppatori sono ancora impegnati nel progetto?
Non si può mai dire se gli sviluppatori rimarranno impegnati in futuro, a meno che, naturalmente, non si tratti di un progetto finanziato dalla fondazione / azienda. Ma puoi quasi sempre dire se sono impegnati in questo momento, controllando:
- Attività di commit recenti
- Funzioni recenti (non solo correzioni di bug)
- Attività di documentazione recente (aggiornamenti di documenti, post di blog, ecc.)
Anche un buon indicatore della maturità del progetto è una seconda generazione di sviluppatori, sviluppatori attivi che sono stati coinvolti dopo le tappe iniziali.
Gli sviluppatori sono raggiungibili?
- Rispondono ai bug?
- Forniscono altri mezzi di contatto, a parte un tracker generico? Questo è un elemento secondario nella lista di controllo, ma per i singoli progetti degli sviluppatori mezzi di contatto alternativi potrebbero aiutare in casi come " caso dello sviluppatore mancante " .
Ora, per le tue domande più specifiche:
Velocity
In un progetto con un tracker di problemi pubblici controllerò sicuramente per vedere quanto tempo ci vuole per chiudere i problemi. Ovviamente la velocità non è sempre sinonimo di qualità, quindi probabilmente passerei attraverso problemi chiusi, ne selezionerò alcuni che ritengo importanti e valuterò il tempo di risposta e la qualità degli sviluppatori.
Compatibilità della licenza
Per quanto riguarda i problemi legali, non integrare mai un progetto open source nella tua base di codice se non sei sicuro al 100% che il tuo utilizzo sia compatibile con la sua licenza. In caso di dubbio, puoi sempre chiedere agli sviluppatori del progetto, o anche chiedere qui.
Hype della community
Dovresti sempre valutare l'hype. I consigli degli altri sviluppatori sono quasi sempre un indicatore abbastanza buono della maturità del progetto.
Ogni elemento nell'elenco di controllo è facoltativo, tranne la compatibilità con la licenza. Ho integrato molti progetti morti o non documentati nel mio codice, dipende sempre da quali sono le tue esigenze specifiche e da come vedi che il tuo codice si sta evolvendo.