Non è necessario avere una comprensione approfondita del progetto intero per poterlo mantenere. Di solito con un software grande e complesso, le persone avranno le loro "aree" particolari che si occupano di loro e hanno solo una conoscenza "passante" del resto del sistema.
SQLite è in realtà relativamente piccolo sulla scala dei "progetti software di grandi dimensioni", ma se si guarda qualcosa come il sistema operativo Windows, ci sono persone che solo lavorano sul kernel, persone che solo funzionano sulla shell, le persone che solo lavorano su Internet Explorer, le persone che solo lavorano su Window manager, ecc. ecc. Qualcuno che lavora nella "shell" non è possibile correggere un bug nel kernel alla caduta di un cappello.
C'è anche il vantaggio che questi progetti evolvono nel tempo: non sono sempre partiti da questo complicato. Ciò significa che un nuovo sviluppatore di solito può essere "addestrato" da sviluppatori più esperti.
Quando ti unisci a un grande team di sviluppatori, ti verrà dato un aspetto particolare del progetto su cui lavorare (forse un bug o una nuova funzionalità) e avrai un altro sviluppatore che sarai "amico" per i primi iterazioni. Il tuo amico avrà una buona conoscenza dell'area in cui lavori e può aiutarti a orientarti.
Per i progetti open source come SQLite, è in realtà un po 'più difficile perché non ci sono motivi per gli sviluppatori esistenti di "addestrare" i nuovi sviluppatori. Quindi troverai di essere da solo un po 'di più. Ma puoi ancora trovare aiuto nei forum degli sviluppatori o nelle mailing list (ad esempio, pubblicando semplicemente una domanda come "Mi piacerebbe implementare tale e così caratteristica" o "Ho trovato bug XYZ, da dove comincio a cercare?" E probabilmente sei per ottenere una qualche forma di aiuto.