I due progetti
Lavoro in una piccola azienda di software e attualmente mi trovo in una situazione in cui sono al termine dello sviluppo per "Progetto A", in procinto di avviare lo sviluppo per "Progetto B". Il Progetto B dovrebbe essere una "estensione" del Progetto A (entrambi sono principalmente app web).
Nel Progetto B, il piano è non solo aggiungere nuove funzionalità, ma modificare alcune delle cose esistenti dal Progetto A; per esempio, alcune delle pagine web. La difficoltà è che vogliamo ancora poter distribuire il Progetto A, senza nessuna delle caratteristiche del Progetto B, ma con eventuali correzioni di bug "A" che finiamo mentre facciamo il lavoro "B".
Metodo 1: ramificazione
Il modo in cui sto pensando è che il Progetto A è come il ramo "stabile" e il Progetto B è come il ramo "dev", ma "dev" non viene mai riunito in "stabile". Siamo preoccupati di questo approccio perché sembra che richiederà molta disciplina per garantire che le modifiche alla correzione dei bug vengano sempre applicate al ramo A del progetto e quindi unite al ramo B del progetto (a differenza delle correzioni implementate su il ramo del Progetto B e la necessità di copiarli manualmente nel ramo Progetto A).
Metodo 2: Architettura plugin
In alternativa, potremmo iniziare a trasformare le cose in una sorta di "plug-in" ovunque ci sia bisogno di essere una "differenza" tra il Progetto A e B. In questo modo sembra anche che potrebbe trasformarsi in un disordine aggrovigliato, dal momento che non siamo ancora sapere esattamente quali cambiamenti saranno necessari.
La scelta
In questo momento, lo vedo come una scelta tra il minore dei due mali (leggi 'difficoltà'). In base alla tua esperienza, hai qualche consiglio che ti aiuterà con la mia scelta? Ci sono altri modi per gestire la divisione tra i due progetti che potrei aver trascurato?