La mia esperienza è che c'è un equilibrio da raggiungere.
In questo momento, sto lavorando (nel senso di rispondere alle domande e fornire suggerimenti di sviluppo, senza vedere alcun codice) con uno sviluppatore che sta producendo quello che sembra essere un progetto FOSS molto eccitante che utilizza il codice che ho scritto. La versione pubblica è stata ripetutamente ritardata dalle realizzazioni di modifiche del design che renderanno il progetto molto migliore a lungo termine, ma che richiedono riscritture significative del codice che è già stato scritto e che stava già "funzionando". Il mio punto di vista è che, una volta realizzata una versione funzionante ma imperfetta non appena c'era qualcosa da mostrare, le idee per i cambiamenti (e le patch attuali) potevano provenire dalla più ampia comunità interessata a questo progetto, che avrebbe accelerato piuttosto che avere i problemi emergono lentamente, uno alla volta, come lo sviluppatore pensa a loro e chiede il feedback del design da me stesso e da altri membri interessati della comunità. Quindi, da questo punto di vista, sono un sostenitore del "rilascio anticipato, rilascio frequente".
D'altra parte, rilasci di bassa qualità possono far sembrare un nuovo progetto un brutto aspetto prima ancora di decollare. Alcuni trabocchetti che ho visto includono:
- Alberi scheletro con definizioni di interfaccia ma nessun codice.
- Codice che non viene compilato correttamente per nessuno tranne lo sviluppatore.
- Nessuna istruzione su come creare / eseguire il programma.
- Nessuna documentazione su quali aspetti ci si può aspettare che funzionino.
- Descrizione non chiara di ciò che il programma fa o fa anche.
- Mancanza di qualsiasi dimostrazione di utilità.
Per l'ultimo punto, sto pensando a cose come:
- Compilatore / interprete che non può nemmeno compilare / eseguire un programma di tipo ciao-mondo.
- Emulatore che non può almeno eseguire un programma di esempio di qualche tipo o comunque dimostrare che sta facendo qualcosa.
- Strumento di elaborazione delle immagini che non può fare altro che caricare e salvare nuovamente l'immagine non modificata.
- Gioco con nient'altro che una schermata del titolo.
Questi tipi di problemi si prestano a un'immagine "vaporware" che può essere difficile da scuotere a meno che tu non sia molto aperto sulla mancanza di codice di lavoro per cominciare.
Infine, fai in modo che i tuoi numeri di versione abbiano un senso. Non chiamare il tuo progetto "1.0" finché non fa ciò che gli utenti si aspettano che faccia senza arresti anomali. Ho sempre avuto fortuna nell'usare numeri di versione intorno a "0.5" per la versione pubblica iniziale e andare da lì, ma ho anche visto cose come "0.1" o "0.10" che hanno senso.