Stiamo cercando di stabilire un buon metodo per eseguire la numerazione delle versioni per i componenti software, che dipendono l'uno dall'altro.
Siamo più specifici:
Il componente software A è un firmware in esecuzione su un dispositivo incorporato e il componente B è il relativo driver per un normale PC (macchina Linux / Windows). Stanno comunicando tra loro usando un protocollo personalizzato. Poiché il nostro prodotto è rivolto anche agli sviluppatori, offriremo versioni stabili e instabili (sperimentali) di entrambi i componenti (il firmware è closed-source, mentre il driver è open-source). La nostra più grande difficoltà è come gestire le modifiche API nel protocollo di comunicazione.
Mentre stavamo implementando un controllo di compatibilità nel driver - controlla se la versione del firmware è compatibile con la versione del driver - abbiamo iniziato a discutere diversi modi di numerazione delle versioni.
Abbiamo trovato una soluzione, ma ci siamo anche sentiti come reinventare la ruota. Questo è il motivo per cui vorrei ricevere un feedback dalla comunità di programmatori / sviluppatori di software, poiché riteniamo che questo sia un problema comune.
Quindi ecco la nostra soluzione:
Abbiamo in programma di seguire la numerazione delle versioni major.minor.patch ampiamente usata e di usare numeri pari / dispari minori per le versioni stable / unstable. Se introduciamo modifiche nell'API, aumenteremo il numero minore.
Questa convenzione porterà alla seguente situazione esemplificativa:
Il ramo stabile attuale è 1.2.1 e unstable è 1.3.7. Ora, una nuova patch per l'instabilità cambia l'API, cosa causerà il nuovo numero di versione instabile a 1.5.0. Una volta, il ramo instabile è considerato stabile, diciamo in 1.5.3, lo pubblicheremo come 1.4.0.
Sarei felice di rispondere a una delle domande correlate di seguito:
- Puoi suggerire una best practice per gestire i problemi sopra descritti?
- Pensi che la nostra convenzione "personalizzata" sia valida?
- Quali modifiche applicheresti alla convenzione descritta?