Rilascio del software open source troppo presto [chiuso]


37

Qual è la responsabilità morale di rilasciare software open source troppo presto? Ad esempio, un prodotto quasi completo che non è stato completamente testato.

Qual è l'aspettativa del programmatore? Attendere fino a quando non è completamente testato o rilasciare su open source e quindi continuare ulteriori sviluppi, test e progressi?

Il timore è che il software sia open source e potrebbe potenzialmente causare problemi ai consumatori.

È una paura infondata?


10
Aggiungi un disclaimer se sei preoccupato. :)
Vaughan Hilts

18
Uno svantaggio di rilasciare troppo presto sarebbe che la spinta pubblicitaria che si ottiene quando si rilascia potrebbe essere persa se il software è inutilizzabile. Quindi, le versioni successive "sì, l'ho provato, ha fatto schifo". Dipende ovviamente da quanto più è necessario per metterlo in forma e dal pubblico di destinazione.
Davidmh,

@VaughanHilts Non mi preoccupo che qualcuno si arrabbi, la preoccupazione sta solo nel desiderio di migliorare la distribuzione e il consumo del software. È quest'ultimo che non vorrei soffrire a causa di un rilascio troppo desideroso.
Thomas Stringer

@Davidmh: Anche questa sarebbe la mia principale preoccupazione, "una volta bruciato, due volte timido".
Matthieu M.

8
Rilasciare la fonte ma non i file binari potrebbe essere un buon modo per impedire alle persone con aspettative errate di utilizzare il software prima che sia pronto.
Ripristina Monica

Risposte:


56

Credo al contrario che dovresti rilasciare un software open source il prima possibile. Non c'è "troppo presto" per quello (ma dovrebbe compilare).

O almeno pubblicare il codice sorgente molto presto e continuamente (ad es. Con frequenti spinte su github ), senza rilasciare formali .

Tuttavia, è molto importante contrassegnarlo come fase alfa o beta e, se possibile, dire (ad esempio in un file READMEo TODO, su alcuni blog, ecc ...) cosa manca, non testato o in cattiva forma. È inoltre necessario utilizzare il numero di versione per trasmettere tali informazioni.

Con il software libero , il meglio che dovrebbe accadere è che qualcuno dia un'occhiata al codice sorgente e ti proponga una piccola patch per migliorarlo. Ecco perché rendi il tuo software gratuito!

Quindi, devi rendere visibile il tuo lavoro quotidiano sul tuo software gratuito! I collaboratori esterni sarebbero incazzati se la loro patch non funzionasse o è un duplicato del tuo recente codice sorgente del software.

Ciò di cui dovresti aver paura è che nessuno si interessi al tuo software (e contribuisca ad esso). Attrarre l'interesse esterno verso un software libero (in particolare, attirare collaboratori esterni) è un lungo viaggio.


33

TL; DR:

Rilascio anticipato. Rilascio spesso.

Aneddoto personale:

Ero davvero entusiasta del progetto a cui stavo lavorando. Mi piace davvero. Non riuscivo a dormire la notte eccitato. Quindi, ho spinto il mio co-sviluppatore a rilasciare v1.0 più velocemente di quanto volesse.

È stato terribile. Niente ha funzionato come doveva. Ci sono stati bug ad ogni turno, ma li abbiamo registrati e risolti. Abbiamo anche avuto alcuni dei primi ad adottare bug che potremmo non aver trovato. Una o due settimane dopo abbiamo rilasciato una nuova versione che risolveva molti problemi e poi è tornata alla creazione di nuove funzionalità.

Rilasciare presto è stata la cosa migliore che avremmo potuto fare. Mette il nostro prodotto di fronte a utenti reali. Facendo questo bug esposti potremmo aver trovato o meno e reso migliore il nostro progetto. Inoltre ha fatto sapere ai primi utenti che siamo seri riguardo a questo progetto. Ci saranno più rilasci e sviluppo attivo.

Tuttavia, avrebbe potuto facilmente andare nell'altra direzione. Avremmo potuto ignorare quelle segnalazioni di bug. O non avremmo potuto reagire rapidamente. Potrebbe essere stata una storia diversa se ci volessero 3 mesi per rilasciare v1.1 invece di alcune settimane.


9
Sembra che il tuo unico grande errore sia stato chiamarlo "v1.0". Generalmente gli utenti si aspettano che indicare un prodotto "finito" nel senso che è utilizzabile per il suo scopo presunto, privo di bug evidenti, ecc. "Rilascio anticipato" è buono, ma gli utenti dovrebbero essere informati che sono cavie.
R ..

3
Sì. Concordo con ciò a posteriori. Ad essere sinceri, ho pensato di averlo testato a fondo. Ho pensato che fosse 1.0 al momento @R ... mi sbagliavo.
RubberDuck,

12

È lo stesso del software a sorgente chiuso. La comunicazione è importante

Informare gli utenti su quale sia lo stato del software e perché è disponibile per il download.

Il software porterà sempre a problemi dei clienti, indipendentemente dal fatto che sia completamente testato o meno. La maggior parte dei clienti accetta questo fatto e alcuni clienti non lo fanno mai. Ma se il software porterà a più problemi di quanto ci si possa ragionevolmente aspettare, c'è un obbligo morale di informare il cliente del rischio che stanno correndo. Le informazioni dovrebbero essere sia in forma abbreviata (etichette "Alpha / Beta / EarlyAccess") * sia in dettaglio: un elenco di problemi noti, soluzioni alternative e considerazioni speciali, ad esempio se è probabile che i dati possano essere danneggiati.

* Essere consapevoli del fatto che gli utenti sono stati addestrati da alcune grandi società di software a pensare a "Beta" come uno stato in cui il software è piuttosto solido, quindi dire all'utente che il software è "Beta" spesso non è sufficiente informazione.


3
Dovremmo dedurre che "beta" non dovrebbe essere piuttosto solido? Immagino che "grandi società di software" lo chiamino "beta" quando sta per essere pronto per la produzione, per confrontare il software con i dati del mondo reale. Forse chiamarlo un prototipo ?
Pierre Arlaud,

2
L'etichetta "Beta" ora significa cose diverse per persone diverse, quindi secondo me non possiamo dedurre molto dall'etichetta "Beta" se non che il software si trova tra "un po 'utilizzabile" e "quasi finito". Alcuni clienti dedurranno qualcosa, e non tutti inferiranno la stessa cosa. Ecco perché ho messo l'osservazione.
Peter

3
Tendo a usare il termine "build alpha" ora per build prototipo. Dà alla gente la sensazione che "Questa cosa non è nemmeno beta ancora gente! Non aspettarti che sia quasi finito."
RubberDuck

2
Potresti distribuirlo in una forma diversa, ad esempio solo in forma sorgente, senza pacchetti binari.
el.pescado

3
@SteveJessop prima che l'industria dei giochi cambiasse cosa intendevamo per "beta", sarei stato d'accordo con te. =)
RubberDuck

7

Non esiste alcuna responsabilità morale. Nessuno è costretto a usare il tuo software cotto a metà.

L'unica cosa di cui preoccuparsi sarebbe la tua credibilità.


2
senza una spiegazione, questa risposta potrebbe diventare inutile nel caso in cui qualcun altro invii un'opinione opposta. Ad esempio, se qualcuno pubblica un reclamo del tipo "Esiste una responsabilità morale. Qualcuno potrebbe essere tentato di usare il tuo software cotto a metà. La tua credibilità non sarebbe l'unica cosa di cui preoccuparti". , in che modo questa risposta aiuterebbe il lettore a scegliere due opinioni opposte? Valuta di modificarlo in una forma migliore, per adattarlo alle linee guida su Come rispondere .
moscerino del

6
@gnat: Non è vero che questa risposta sia senza spiegazione - la spiegazione è la frase successiva: "Nessuno è costretto a usare il tuo software cotto a metà". È una breve spiegazione, sì, ma è ancora LA RAGIONE per dire "non c'è alcuna responsabilità morale"
slebetman

@gnat: lo stesso può dire della maggior parte delle risposte. "Non credo che dovresti rilasciare [...] Non è molto importante contrassegnarlo [...]". Ti aspetti più fonti esterne per questa risposta?
Pierre Arlaud,

2
C'è buona supposizione e cattiva opinione. Sono d'accordo con te, ma sarebbe bello vederti sostenere un argomento più forte.
RubberDuck

6

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.


1

C'è un caso in cui il rilascio di software libero può avere conseguenze negative. Alcune specifiche sono concesse in licenza al pubblico a condizione che tutte le implementazioni distribuite al pubblico siano completamente conformi alle specifiche alla prima pubblicazione. L'editore ti proibisce legalmente di distribuire un'implementazione work-in-progress della specifica. Senza una specifica licenza negoziata dall'editore della specifica, è necessario condividerlo con nessuno fino a quando non ha superato tutti i test. Ciò impone un "modello di cattedrale" (come lo chiamava Eric S. Raymond) sulle implementazioni della specifica.

Una specifica in virtù di tale licenza è la specifica del linguaggio Java . Questa restrizione si applica agli sviluppatori di macchine virtuali compatibili con la JVM, ma fortunatamente non agli sviluppatori di applicazioni eseguite in una JVM.

L'articolo " 4 Shifty Details About" Open Source ".NET di Microsoft " di Liu Qihao e Ciaran O'Riordan menziona la possibilità di interpretare la promessa di brevetto Microsoft per le librerie .NET e i componenti di runtime per escludere implementazioni incomplete del CLR in modo simile . Ma ancora una volta, questo non si applica alle applicazioni eseguite nel CLR.


2
Ciò è importante solo se si desidera creare un'implementazione JRE / JDK, non qualsiasi programma java in esecuzione su di esso, AFAIK.
sjas,

@sjas Stai cercando di insinuare che JLS è l'unica specifica che è probabile che si verifichi che abbia questa restrizione "completa o tienila per te"?
Damian Yerrick,

Stai provando a sottintendere che io implichi questo. ;)
sjas,

@sjas Grazie. C'è un altro modo in cui posso rendere utile questa risposta?
Damian Yerrick,

Non ho sottovalutato a proposito. Ho già chiarito il malinteso, che ho avuto quando ho letto la tua risposta per la prima volta. Potresti includerlo nel tuo post se vuoi cambiare qualcosa.
sjas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.