Dipende dal software.
Migliore se si mantiene la piena retrocompatibilità e tutto il supporto prevede l'aggiornamento obbligatorio. A meno che il tuo modello di business non dipenda dalla vendita di nuove versioni ogni pochi anni.
Richiede un equilibrio precario: rendere il periodo di supporto troppo breve e le persone andranno in favore di una migliore competizione supportata. Rendilo molto lungo e i costi ti divoreranno.
Il solito approccio di "mantenere la versione precedente supportata fino a quando ne viene rilasciato uno nuovo (più alcuni)" va bene se il ciclo di rilascio non è troppo veloce, come una nuova versione all'anno o più. Quindi, se si rilascia 4.x, si mantiene il supporto di 2.x per un altro paio di mesi per incoraggiare la migrazione e continuare a supportare 3.x fino a qualche mese dopo il rilascio di 5.x. Ma se rilasci una nuova versione ogni 6 mesi, dovresti mantenere il supporto più a lungo.
Tuttavia, le specifiche del lavoro potrebbero richiedere un periodo di supporto molto più lungo. Supponiamo che si tratti di un software embedded industriale, un software che gestisce molti milioni di dollari. Quindi qualcosa si rompe e non puoi dire "questo non è più supportato" tre anni dopo la distribuzione. OTOH, il mantenimento dell'assistenza in garanzia gratuita, sebbene piacevole, non è obbligatorio. Un'ulteriore opzione contro i clienti scontenti che non desiderano o non possono effettuare l'aggiornamento è un supporto a pagamento, valutato al costo di tenerlo aggiornato più un profitto.