Stiamo provando a decidere un buon modo 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 rispettivo driver per un normale PC (macchina Linux / Windows). Stanno comunicando tra loro usando un protocollo personalizzato. Dal momento che il nostro prodotto è rivolto anche agli sviluppatori, offriremo versioni stabili e instabili (sperimentali) di entrambi i componenti (il firmware è a codice chiuso, mentre il driver è a codice aperto). La nostra più grande difficoltà è come gestire i cambiamenti 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 di diversi modi di numerazione delle versioni.
Abbiamo trovato una soluzione, ma abbiamo anche voluto reinventare la ruota. Ecco perché mi piacerebbe 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 della versione major.minor.patch ampiamente utilizzata e di utilizzare numeri minori pari / dispari per le versioni stabile / instabile. Se introduciamo modifiche nell'API, aumenteremo il numero minore.
Questa convenzione porterà alla seguente situazione di esempio:
Il ramo stabile corrente è 1.2.1 e instabile è 1.3.7. Ora, una nuova patch per unstable modifica l'API, ciò che farà diventare il nuovo numero di versione unstable 1.5.0. Una volta, il ramo instabile è considerato stabile, diciamo in 1.5.3, lo rilasceremo come 1.4.0.
Sarei felice di una risposta a una delle seguenti domande correlate:
- Puoi suggerire una best practice per la gestione dei problemi sopra descritti?
- Pensi che la nostra convenzione "personalizzata" sia buona?
- Quali modifiche applicheresti alla convenzione descritta?