Domanda

Il nostro team si sta muovendo in progetti molto più grandi in termini di dimensioni, molti dei quali utilizzano diversi progetti open source all'interno di essi.

Qualche consiglio o le migliori pratiche per mantenere librerie e dipendenze relativamente modulari e facilmente aggiornabile quando nuove uscite per loro sono fuori?

Per dirla in altro modo, diciamo che fare un programma che è un fork di un progetto open source. Come entrambi i progetti si sviluppano, qual è il modo più semplice per mantenere e aggiornamenti azionari fino al midollo?

Consigli per quanto riguarda quello che sto chiedendo solo per favore ... non ho bisogno "così si dovrebbe fare questo, invece" o "perché sei" .. grazie.

È stato utile?

Soluzione

Con cloni di progetti open source uno dei vostri più grandi mal di testa sarà mantenere in sincronia / patch secondo le fonti a monte. Potrebbe non preoccupano nuove funzionalità, ma avrete sicuramente bisogno di correzioni di bug critici applicate.

Il mio suggerimento sarebbe quello di spostare con attenzione tali progetti interni in librerie condivise, in modo da poter più o meno indolore l'aggiornamento solo quelle parti se l'ABI non è rotto dai cambiamenti.

Una cosa di più - se si trova e bug fix in un progetto open source - non mantenere le correzioni a te stesso. Spingere le patch a monte. Che renderà il progetto migliore e vi farà risparmiare giorni di fusione con una nuova versione.

Altri suggerimenti

In ordine di preferenza

  1. Fare il minor numero di modifiche possibile alle librerie di terze parti. Cercare di aggirare i loro limiti all'interno del codice. Documentare le modifiche e poi inviare una patch.
  2. Se non è possibile aggirare i loro limiti, presentare il vostro cambiamento come una patch (questo può essere idealista con il ritmo glaciale di alcuni progetti).
  3. Se non si può fare nessuna di queste cose, il documento cosa si è cambiato in una posizione centralizzata in modo che la persona povera che fa l'integrazione di nuove versioni riesce a capire cosa diavolo stavi facendo, e se le modifiche apportate sono ancora necessari.

1 e 2 sono notevolmente preferito (tuttavia, veloce e molto lento, rispettivamente), mentre la terza opzione sarà solo portare a mal di testa e gli insetti come le vostre devia base di codice dalla base di codice le dipendenze. Nel mio codice, non ho neanche avere il codice 3rd party caricata nella IDE meno che non devo esaminare un file di intestazione. Ciò elimina la tentazione di cambiare le cose che non sono mie.

Per quanto riguarda la modularità, e questo è supponendo che si sta utilizzando le librerie 3a parte relativamente stabili, unico programma al pubblico rivolto interfaccia. Solo perché avete la fonte non significa che si deve utilizzare su tutto il codice. Questo dovrebbe consentire aggiornamenti di essere essenzialmente drag and drop. Ora, questo è completamente idealistica, ma la sua quello che si sforzano per il lavoro con il codice che ho su.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top