Ecco la mia lista di controllo per quanto riguarda la maturità del progetto:
Il progetto ha raggiunto il suo traguardo iniziale?
Eviterei di aggiungere qualsiasi codice se non avesse raggiunto la sua pietra miliare iniziale auto-descritta. Non suggerisco che dovresti sempre fidarti di uno sviluppatore che afferma che il suo progetto è pronto per la produzione e provare sempre a valutare tali affermazioni, ma dovresti sicuramente fidarti di lei quando ti dice che non lo è, cioè etichettare il software come versione 0.x, alpha, beta, release candidate e così via.
Esiste una documentazione adeguata?
Un progetto perfetto offrirebbe:
- Guida per l'utente completa di esempi
- Una guida di integrazione / estensione se è una libreria
- Documentazione API
- Codice sorgente completamente documentato
- Un localizzatore di problemi pubblici
Gli sviluppatori sono ancora impegnati nel progetto?
Non puoi mai dire se gli sviluppatori rimarranno impegnati in futuro, a meno che, naturalmente, non sia un progetto sostenuto dalla fondazione o dall'azienda. Ma puoi quasi sempre dire se sono impegnati in questo momento, controllando:
- Attività di commit recenti
- Funzionalità recenti (non solo correzioni di bug)
- Attività di documentazione recente (aggiornamenti di documenti, post di blog ecc.)
Un buon indicatore della maturità del progetto è una seconda generazione di sviluppatori, sviluppatori attivi che sono stati coinvolti dopo i traguardi iniziali.
Gli sviluppatori sono raggiungibili?
- Rispondono ai bug?
- Forniscono altri mezzi di contatto, oltre a un tracker di problemi generico? Questo è un elemento secondario nella lista di controllo, ma per i progetti di singoli sviluppatori mezzi di contatto alternativi potrebbero aiutare in casi come il "caso dello sviluppatore mancante" .
Ora, per le tue domande più specifiche:
Velocità
In un progetto con un localizzatore di problemi pubblici, controllerei sicuramente per vedere quanto tempo ci vuole per chiudere i problemi. Naturalmente la velocità non significa sempre qualità, quindi probabilmente passerei attraverso problemi chiusi, ne sceglierei alcuni che considererei importanti e valuterei il tempo di risposta e la qualità degli sviluppatori.
Compatibilità della licenza
Per quanto riguarda le questioni 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 dubbi, puoi sempre chiedere agli sviluppatori del progetto o persino chiedere qui.
Campagna pubblicitaria
Dovresti sempre valutare l'hype. Le raccomandazioni dei colleghi sviluppatori sono quasi sempre un indicatore abbastanza buono della maturità del progetto.
Ogni elemento nell'elenco di controllo è facoltativo, tranne la compatibilità delle licenze. Ho integrato molti progetti morti e non documentati nel mio codice, dipende sempre da quali sono le tue esigenze specifiche e da come vedi evolversi il tuo codice.