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. Il rilascio pubblico è stato ripetutamente ritardato dalla realizzazione di modifiche alla progettazione che renderanno il progetto molto migliore a lungo termine, ma che richiedono significative riscritture di codice che è già stato scritto e che già "funzionava". La mia opinione è che, se fosse stata rilasciata una versione funzionante ma imperfetta non appena ci fosse stato qualcosa da mostrare, le idee per i cambiamenti (e le patch effettive) sarebbero potute venire dalla più ampia comunità interessata a questo progetto e accelerarla invece di avere i problemi affiorano lentamente, uno alla volta, mentre lo sviluppatore ci pensa e chiede feedback sul design da me stesso e da altri membri interessati della comunità. Quindi, da questo punto di vista, sono un sostenitore di "rilascio anticipato, rilascio frequente".
D'altra parte, rilasci di bassa qualità possono far sembrare un nuovo progetto prima che decida di decollare. Alcune insidie 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 compilare / eseguire il programma.
- Nessuna documentazione su quali aspetti ci si può aspettare che funzionino.
- Descrizione poco chiara di ciò che il programma fa o farà.
- 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 dimostrare in altro modo 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 funzionante all'inizio.
Infine, fai in modo che i tuoi numeri di versione abbiano un senso. Non chiamare il tuo progetto "1.0" fino a quando non fa ciò che gli utenti si aspettano che faccia senza crash. Ho sempre avuto fortuna con l'uso dei numeri di versione intorno a "0,5" per la versione pubblica iniziale e andando da lì, ma ho anche visto cose come "0.1" o "0.10" che hanno senso.