Modifica versione semantica (all'applicazione) quando è in corso l'aggiornamento delle librerie

4

Quindi ho un'applicazione che utilizza 14 diverse librerie. È passato un po 'di tempo da quando ho aggiornato questa applicazione e una o più delle librerie coinvolte hanno sperimentato una revisione importante (usando il versioning semantico). Detto questo, ho appena aggiornato l'applicazione per utilizzare tutte le versioni più recenti di queste librerie.

Inoltre, uno dei principali cambiamenti verificatisi da una libreria coinvolta nel progetto è stato il cambio del nome del metodo di interfaccia. L'applicazione utilizzava quel metodo di interfaccia, quindi ora dovevo cambiarla ovunque fosse chiamata la funzione per abbinare la nuova libreria. Quella è una modifica major nella libreria, sicuramente, ma penso che questo sia non una modifica importante alla revisione dell'applicazione.

Il mio ragionamento è corretto? Che tipo di revisione ottiene l'applicazione?

    
posta Snoop 31.03.2017 - 16:27
fonte

2 risposte

8

Le regole di controllo delle versioni semantiche sono applicate al tuo software dal punto di vista dei tuoi utenti. Se la tua API è cambiata e non è retrocompatibile, devi aggiornare il numero di versione principale. Sembra che questo non sia il caso, però. Sembra che la tua API non sia cambiata: i clienti che stavano usando la tua versione precedente possono semplicemente abbandonare la nuova versione senza altre modifiche. Questo sarebbe un aumento di versione minore.

Ciò è confermato nel FAQ sulla versione semantica :

What should I do if I update my own dependencies without changing the public API?

That would be considered compatible since it does not affect the public API. Software that explicitly depends on the same dependencies as your package should have their own dependency specifications and the author will notice any conflicts. Determining whether the change is a patch level or minor level modification depends on whether you updated your dependencies in order to fix a bug or introduce new functionality. I would usually expect additional code for the latter instance, in which case it’s obviously a minor level increment.

In base ai commenti, sembra che si stia utilizzando il Versioning semantico per un'applicazione. Questo non è un tipico caso d'uso. Il versioning semantico è progettato per API e librerie. Un'altra domanda qui su Software Engineering Stack Exchange affronta l'uso di Versioning semantico nelle applicazioni .

Nell'istanza di un'applicazione basata su GUI, la GUI è la tua interfaccia pubblica. Vorrei usare definizioni come questa:

  • Versione MAJOR quando apporti modifiche al flusso di lavoro di un utente o in che modo gli utenti interagiscono con il tuo software in modo non compatibile con le versioni precedenti.
  • Versione MINORE quando aggiungi funzionalità in modo compatibile con le versioni precedenti
  • Versione PATCH quando si apportano correzioni di bug compatibili con le versioni precedenti.

Se aggiungi funzionalità senza modificare flussi di lavoro esistenti, è una versione secondaria. Se si modificano i flussi di lavoro esistenti, è una versione principale. Le versioni di patch sono correzioni di bug che non cambiano il modo in cui gli utenti interagiscono con il tuo software.

    
risposta data 31.03.2017 - 16:34
fonte
2

Se hai modificato i nomi dei metodi pubblici su un'interfaccia pubblica nella tua libreria allora sì. Questo è un cambiamento di versione importante.

Perché? Poiché gli utenti che aggiornano la libreria avranno un codice non compilato se hanno usato uno dei vecchi nomi dei metodi.

Normalmente le librerie di terze parti a cui fai riferimento nel tuo codice non sono esposte agli utenti della tua libreria, quindi, indipendentemente dal fatto che abbiano modifiche principali / secondarie, ti servirà solo una versione point del tuo codice.

Probabilmente era not una buona idea cambiare la tua interfaccia solo per corrispondere allo schema di denominazione della libreria di terze parti

    
risposta data 31.03.2017 - 17:24
fonte

Leggi altre domande sui tag