Is there anything I am missing here?
Sì. Ti manca il fatto che sei umano e non hai una perfetta previsione. Un giorno scoprirai che hai fatto molte cose che erano semplicemente sbagliate o che ti impedivano di progredire.
Quando ciò accade (e succede a quasi tutti i progetti software di complessità sufficiente), dovrai interrompere la compatibilità all'indietro. Hai bisogno di un meccanismo per dire ai tuoi utenti che (per esempio) la release # 13 fornisce una serie di nuove funzionalità, corregge un numero enorme di bug precedentemente non risolvibili, ma lo fa a costo di richiedere agli utenti di riscrivere parte del software che usa il tuo pacchetto.
Il numero di build, che conta monotonicamente da uno (o zero) pending di mani, non comunica molto. Hai bisogno di qualcosa che dica agli utenti del tuo pacchetto quanto lavoro debbano fare per trarre vantaggio dalla tua ultima versione. Come minimo, ti consigliamo di utilizzare uno schema di numerazione major.minor
. Questo può essere sufficiente se il progetto rimane piccolo. Nota che il numero di build è assente da questo schema.
Se il tuo progetto ha la possibilità di crescere oltre un progetto di una sola persona, potresti voler passare a uno schema di numerazione major.minor.patch
. Questo è l'approccio adottato nel versioning semantico . Ancora una volta, il numero di build è assente da questo schema.
Dire agli utenti che potrebbero dover riscrivere pezzi significativi del loro software che utilizza il pacchetto (un bump nel numero di versione principale) trasmette molte informazioni. Dire agli utenti che hanno bisogno di osservare il comportamento su cui si sono basati è stato un bug (un bump nel numero di rilascio minore) che trasmette anche molte informazioni. Raccontare ai tuoi utenti quel comportamento che tutti hanno evitato fino ad ora perché tutti sapevano che il software utilizzato per soffocare (un bump nel numero di patch) trasmette anche molte informazioni.
Il numero di build, d'altra parte, non fornisce molte informazioni.