Qual è la replica canonica di "è open source, invia una patch"? [chiuso]


215

Il pericolo di suggerire mai qualche funzionalità su un prodotto, in particolare open source, è che otterrai la risposta "perché non lo fai?".

È valido ed è bello poter apportare le modifiche da soli. Ma sappiamo praticamente che i prodotti spesso migliorano quando i programmatori ascoltano la voce degli utenti, anche se tali utenti sono altri programmatori. Inoltre, il modo efficace per apportare tali modifiche può includere qualcuno che sta già lavorando al progetto, accettando l'idea e implementandola.

Ci sono alcuni termini comuni usati per riferirsi a problemi di sviluppo del software. ad esempio Bikeshedding . Esiste un termine comune che essenzialmente risponde: "Sì, lo so che posso cambiare praticamente qualsiasi cosa nel mondo - anche a fonte chiusa. Potrei essere assunto e andare a scrivere quel codice. Ma in questo caso sto solo facendo un'osservazione che potrebbe in effetti essere utile per un altro programmatore già adatto per apportare facilmente quel cambiamento - o semplicemente per discutere delle possibilità ".

[ps (tra qualche giorno) - Avrei dovuto sottolineare che "inviare una patch" è spesso detto con ironia ironica e sto cercando una risposta spiritosa appropriata.]


16
Vorrei poter votare questo più di una volta! (E questo proviene da qualcuno che ha inviato patch a una manciata di progetti diversi e li ha fatti accettare. Questo atteggiamento che descrivi è semplicemente fastidioso!)
Mason Wheeler,

62
Suppongo "Che aspetto ho, una scimmia di codice disoccupata? Ho una vita!" non è una replica accettabile ;-)
Steven A. Lowe,

12
Nella mia esperienza, la risposta "invia una patch" di solito arriva dopo che lo sviluppatore ha già spiegato perché aggiungere la funzionalità non sarebbe pratico.
user16764,

7
@Steven, dipende dal fatto che vuoi solo completare l'insulto o effettivamente farli fare ciò di cui hai bisogno. Credo che non sia una strategia ottimale se si desidera quest'ultima.

12
@orokusaki: oppure D) Considerano la funzione meno preziosa di altre su cui potrebbero lavorare e hanno risorse limitate.
David Thornley,

Risposte:


115

È un punto difficile: poiché l'utente non paga direttamente o indirettamente un prodotto, non può chiedere l'implementazione di una funzione. Non è come se tu fossi un stakeholder o un cliente diretto che ha ordinato il prodotto e nemmeno un utente finale di un prodotto commerciale.

Detto questo, "invia una patch" non è una risposta valida. Non è educato. Non è corretto Anche per un prodotto open source. "Invia una patch" è la versione breve di:

"Non ci importa se ti piace il nostro prodotto o no. Vai e modificalo se vuoi, ma non disturbarci con le tue richieste dei clienti."

Che ne dici di inviare una patch?

Bene, non è così facile. Per farlo:

  • Devi conoscere le lingue utilizzate nel progetto open source.

  • Devi essere in grado di caricare il codice sorgente dal controllo versione per poterlo modificare.

  • È necessario disporre di tutte le versioni corrette di eventuali dipendenze di build installate (incluse sia le librerie di runtime che gli strumenti di compilazione).

  • Devi essere in grado di compilare questo codice sorgente , che in alcuni casi non è così ovvio. Soprattutto, quando un enorme progetto richiede alcune ore per la compilazione e visualizza 482 errori e migliaia di avvisi, potresti essere coraggioso di andare a cercare la fonte di quegli errori.

  • Dovresti capire molto bene come viene fatto il progetto , quali sono gli stili di codifica da usare, se ce ne sono, come eseguire unit test, ecc. Se il progetto non ha una documentazione decente (come spesso accade per i progetti open source ), potrebbe essere davvero difficile.

  • Devi adattarti al progetto e alle abitudini degli sviluppatori che partecipano attivamente al progetto. Ad esempio, se si utilizza .NET Framework 4 quotidianamente, ma il progetto utilizza .NET Framework 2.0, non è possibile utilizzare LINQ, né Contratti di codice, né altre migliaia di nuove funzionalità delle ultime versioni del framework.

  • La tua patch deve essere accettata (a meno che tu non faccia la modifica solo per te stesso, senza l'intenzione di condividerla con la community).

Se la tua intenzione è quella di partecipare attivamente al progetto, puoi fare tutte quelle cose e investire il tuo tempo per esso. Se, d'altra parte, c'è solo un fastidioso bug minore o una semplice caratteristica che manca, trascorrendo giorni, settimane o mesi a studiare il progetto, allora fare il lavoro stesso in pochi minuti è semplicemente irragionevole, a meno che non ti piaccia.

Quindi esiste una replica canonica per "è open source, inviare una patch"? Io non la penso così. O spieghi alla persona che è scortese, o semplicemente smetti di parlarle.


9
Sembra che sia stato scritto da qualcuno senza esperienza nel mantenere un progetto open source.
Rein Henrichs,

46
@Rein: mantenere un progetto open source non è diverso dal mantenere qualsiasi altro progetto. Hai clienti. Se ignori quei clienti, smetteranno di darti feedback preziosi e andranno da qualche altra parte per le loro soluzioni. Forse va bene con le persone open source, ma mi piacerebbe sicuramente sapere se sarei stato totalmente responsabile di apportare correzioni di bug a un software open source, perché mi avrebbe fatto riflettere due volte sull'utilizzo.
Robert Harvey,

17
@Rein: Beh, finora ti ho sentito dire due volte che non sappiamo di cosa stiamo parlando. Forse puoi illuminarci, eh?
Robert Harvey,

8
@Rein Henrichs: i tuoi primi due commenti sono attacchi "ad hominem". Se ci sono differenze tra i due, dì quello che sono, piuttosto che dire che le altre persone non sanno nulla.
Andrew Grimm,

13
Sospetto che l'intenzione fosse "Mantenere un progetto open source non è diverso dal mantenere qualsiasi altro progetto per quanto riguarda l'ascolto del feedback dei clienti e il mantenimento della loro buona volontà". In tal caso, sono pienamente disposto a lasciarlo cadere, ma, come qualcuno che ha gestito diversi progetti FOSS con ovunque da una manciata a centinaia di collaboratori, trovo che l'istruzione coperta originale sia "errata".
Rein Henrichs,

79

La replica canonica è di inviare una patch.


47
O meglio ancora, per dire "L'ho già fatto sei mesi fa. Quando andrete in giro a rivederlo e impegnarlo?"
Bob Murphy,

14
Di solito non mi piacciono le risposte brevi, ma questo è davvero l'unico modo per rispondere che è garantito per finire nel risultato che stai cercando. Hanno chiaramente indicato il modo migliore per raggiungere il tuo obiettivo. Perché perdere tempo con una soluzione minore?

19
-1 risposta allo stronzo open source. Inutile. (Mi dispiace.) Non esiste una "storta" canonica. La migliore risposta (supponendo che l'OP non possa semplicemente inviare una patch, che ritengo sia un presupposto ragionevole in questo caso) è una delle (1) "Non ho le capacità o le risorse per generare una patch [e possibilmente includere un link a questa domanda] ", (2) eyeroll, nessuna risposta, uso dello strumento nel suo stato attuale o (3) cercare uno strumento migliore.
JohnL4,

1
Non deve necessariamente essere una patch. Vale anche la pena fornire feedback dettagliati e raffinati. Tutto ciò che sta dicendo è che non aspettarti che investa il mio tempo per coprire le tue esigenze specifiche se non hai nulla da offrire in cambio.
Evan Plaice,

67

Questa è la risposta standard quando gli sviluppatori non pensano che riusciranno a fare qualcosa in tempi ragionevoli, ma è stato ripetutamente sollevato.

È più ingiusto quando è stato allevato più volte, ma la persona che ha menzionato più di recente non lo sa e ottiene subito "stiamo prendendo le patch per quello". In questo caso il manutentore è stufo della discussione ma l'utente pensa che sia un nuovo argomento. Ad ogni modo, molto probabilmente se ottieni subito "prendere le patch", non dovresti prenderlo sul personale ma potresti voler leggere gli archivi e il tracker dei bug per maggiori dettagli sul problema.

Se stai ripetutamente presentando una richiesta da solo, "prendere le patch" è potenzialmente inteso come un pennello relativamente educato, rispetto ad alcune alternative meno educate ...

E poi, naturalmente, ci sono manutentori maleducati che diranno "prendere patch" senza alcuna spiegazione a nessuno, ma direi che è una minoranza.

Se hai mai gestito un progetto open source con molti utenti, saprai che ci sono 100 volte più richieste di quelle che i manutentori potrebbero mai arrivare e che molte di queste richieste sono importanti per il richiedente ma sarebbero eccessivamente difficili, o interromperebbe molti altri utenti o presenterebbe qualche altro difetto visibile solo con una comprensione globale del progetto e della base di codice. O a volte ci sono solo richieste di giudizio, e ci vuole troppo tempo per litigare ancora e ancora.

La maggior parte delle aziende non open source non ti darà accesso agli sviluppatori e otterrai solo un trattamento silenzioso o una storia educata ma fasulla dall'assistenza clienti. Quindi, almeno in open source hai alcune opzioni (paga qualcuno per codificare la funzionalità, ecc.) E mentre gli sviluppatori potrebbero essere scortesi, almeno danno risposte dirette. Preferirei avere "no" del solito "è sulla nostra tabella di marcia ... [2 anni dopo] ... è ancora sulla nostra tabella di marcia" tipo di cose che ho ottenuto da un numero di fornitori ...

Quindi non penso che ci sia una replica. Forse il manutentore dell'open source è davvero impegnato, forse è un idiota, ma in entrambi i casi, probabilmente hanno un lavoro duro e entrare in un dibattito che ha l'ultima parola non sta andando da nessuna parte. Il meglio che puoi fare è contribuire in qualche modo e cercare di essere costruttivo.

Forse non è un codice, ma forse ci sono molte analisi e documentare scenari utente che potresti fare. Quando stavo mantenendo il window manager di GNOME, molte volte sarebbe stato utile per le persone analizzare un problema a livello globale considerando tutti gli utenti e scrivere davvero i problemi, i pro ei contro e cosa dovrebbe accadere da una prospettiva globale.

(Invece, la solita cosa era iniziare a fiammeggiare come se fossero gli unici utenti che contano e non ci sono stati compromessi. E mentre è fantastico, ed è un punto dati, e spesso sono riuscito a rimanere educato o persino a risolvere il loro problema alla fine .. Il flaming non fa accadere nulla più rapidamente, confonde semplicemente le emozioni nel problema e fa perdere tempo a tutti.)


4
@Aaronaught Ho partecipato a centinaia di progetti open source e non ho notato il fai-da-te come risposta predefinita. È una risposta a certi gusti di richiesta.
Havoc P

2
Tutto quello che sto dicendo è, penso il più delle volte, c'è qualche ragione per cui un manutentore è almeno un po 'stanco di un argomento (o di una persona) prima che dica "prendere le patch", e può valere la pena esaminare perché ottenuto quella risposta. È la mia esperienza, prima. Se la domanda qui è relativa ai casi in cui non c'è motivo di essere stanchi dell'argomento o della persona, allora sicuramente "prendere i cerotti" non è probabilmente una buona cosa da dire per il manutentore. Le persone fanno errori. Dico ancora, dubito che una replica (o una meta-discussione come questa) possa essere d'aiuto, ma a volte impegnarsi in modo costruttivo.
Havoc P,

5
Inoltre, mentre può essere formulato più o meno gentilmente, se un manutentore ha un arretrato di lavoro nella loro mente, essi probabilmente hanno 1 cosa che possono ottenere a se stessi, per ogni 100 cose che avrebbero prendere una patch per perché avevano vogliono la caratteristica; e poi c'è ancora un'altra categoria di modifiche che rifiuterebbero anche se qualcun altro facesse il lavoro. Quindi deve esserci un modo per comunicare "Vorrei prendere quel cambiamento, ma non ho intenzione di farlo da solo." Alcune persone qui sembrano ritenere che "Certo, arrivando subito" è l'unica risposta accettabile. Ma "prendere patch su quello" è una vera categoria.
Havoc P,

2
@Aaronaught quelli sembrano buone frasi. Penso che spesso non ci siano offese / maleducazione da parte di "vorremmo prendere una patch per questo", ma i programmatori non sono di norma i tipi più emotivamente sensibili, possono correre attraverso la posta elettronica e il tono non viene trasmesso molto bene attraverso il testo, quindi è facile imbattersi in brusco.
Havoc P,

2
In realtà, "prenderemmo una patch per questo" è diverso in due modi sottili ma importanti: (1) non pone la responsabilità direttamente sull'utente e (2) riconosce che la richiesta è stata presa in seria considerazione nonostante non fosse implementato. Sebbene il risultato netto sia essenzialmente lo stesso, è una risposta molto più umana. (Tuttavia, non sarebbe male aggiungere esplicitamente l'implicito ... ma non abbiamo le risorse per completarlo da soli in questo momento. )
Aaronaught,

43

Il motivo per cui ottieni questa risposta non è che i manutentori sono cretini, è che non li hai convinti adeguatamente della proposta di valore di loro lavorando sulla tua funzione per te .

La risposta migliore è avviare un dialogo sul valore della tua funzione per la loro comunità nel suo insieme , per vedere se riesci a convincerli a cambiare idea. Forse hanno ragione e sanno più dei bisogni della propria comunità di te, ma, forse, forse no.

Se la funzione è preziosa solo per te e di scarso valore per la comunità, trovo che il denaro sia un eccellente motivatore, mentre lamentarsi del loro atteggiamento non lo è.


15
Certo, forse sono cretini. Questa risposta da sola non è un indicatore molto preciso, in quanto viene utilizzata anche dai non-cretini quando il richiedente è un cretino.
Rein Henrichs,

4
Vorrei anche aggiungere che in assenza di denaro, puoi spesso scambiare in natura per qualche lavoro: aiutare a risolvere una coda di problemi occupata, uscire nel canale IRC e fornire supporto, testare patch o scrivere documentazione. I progetti open source hanno risorse limitate e devono sfruttarli al meglio. L'aggiunta di una funzione è praticabile se è importante per abbastanza persone o importante per le persone che fanno / danno abbastanza. Se il tuo caso non è il primo, rendilo il secondo.
HedgeMage

2
Onestamente, il modo migliore per convincere uno sviluppatore è mostrargli quanto la sua base di utenti desidera la funzionalità. Bugtrackers con votazione, discussioni nei forum, ecc. Sono tutti ottimi per questo e sono utilizzati in molti progetti open source.
ProdigySim

4
Allo stesso modo, quando la gente ottenere un RTFM o DAFS come risposta, o un -1 in SE, è perché l'interrogante non ha adeguatamente convinto chi ha risposto della value proposition di rispondere loro domanda per loro . Sono sicuro che molti di voi possono collegarsi a questa sensazione.
Rein Henrichs,

1
@Walter Yep, motivo per cui ho suggerito di convincere la persona del "valore della tua funzione per l'intera comunità".
Rein Henrichs,

31

Qual è la replica canonica di "è open source, invia una patch"?

Non esiste una replica ragionevole che possa fare la differenza. Cercare di persuadere i volontari a fare qualcosa che non hanno intenzione di fare è una perdita di tempo ... o peggio.

Le tue opzioni sono:

  • Fai ciò che la risposta suggerisce; cioè implementare la funzione e inviarla come patch. Si chiama "dare qualcosa in cambio".

  • Trova qualcuno che sia disposto a implementare la funzionalità per te con soldi veri. Potrebbe essere il progetto stesso (ad esempio in cambio di sponsorizzazioni), qualcuno associato al progetto o qualche "programmatore a noleggio" casuale.

  • Trova un prodotto alternativo.


Se hai ricevuto questa risposta quando hai fatto un suggerimento "utile", considera come potresti aver risposto se fossi nei suoi panni. Ad esempio, come risponderesti se pensassi che il suggerimento non sia utile / ben ponderato / intelligibile / ecc., Ma non abbia il tempo o la pazienza di impegnarsi in un dibattito prolungato?


Sono stato coinvolto in un progetto OS open source di lunga durata, e una delle cose più fastidiose sono le persone che siedono nella "galleria di arachidi" e ti aggiungono un flusso di suggerimenti su come fare le cose "meglio" che:

  • sono incomplete, incomprensibili o assolutamente insensate,
  • sono idee non sperimentate con una probabilità obiettivamente bassa di successo,
  • richiederebbe un grande sforzo per implementare, e / o
  • sono in contrasto con gli obiettivi dichiarati del progetto.

Spesso la risposta migliore è sfidare in modo mirato la persona ad essere coinvolta nel progetto ... e sperare che prendano il suggerimento ... di "mettere su o stare zitti". Sfortunatamente, i più fastidiosi non danno nemmeno un suggerimento.

Naturalmente, l'altra risposta a queste persone è di non rispondere affatto o di ignorarle completamente.


7
"Come risponderesti se pensassi che il suggerimento non sia utile / ben ponderato / intelligibile / ecc." , Esattamente come risponde ogni altro professionista. "Potresti spiegare / dare alcuni esempi di ciò che stai chiedendo?" o "Potresti darmi qualche informazione sul perché pensi di aver bisogno di questa funzione?" o "E se invece facessimo quest'altra cosa, funzionerebbe per te?" o semplicemente "Grazie per il tuo suggerimento, lo prenderemo in considerazione per una versione futura". Si tratta di abilità interpersonali di base, non di scienza missilistica.
Aaronaught,

12
@Aaronaught - Scusa, ma non lo capisci. Il tipico sviluppatore open source non ha il tempo di impegnarsi in discussioni educate ma alla fine inutili volte ad accarezzare l'ego dei suoi "clienti"; cioè fingendo di preoccuparsene, quando una persona semi-intelligente riesce a capire che è tutta una facciata. E ad essere sincero, trovo che quel tipo di ego che accarezza la gentilezza sia condiscendente ... e PIÙ offensivo di quanto detto senza mezzi termini che non c'è alcuna possibilità che implementino XYZ.
Stephen C,

6
@kurige - in realtà, se le persone in questione facessero l'invio di patch, Sicuramente verrebbero prese in considerazione. Il problema è che le persone in questione sono "tutte a bocca aperta"; cioè nessun interesse a impegnarsi.
Stephen C,

10
Perché il tipico sviluppatore open source ha già un lavoro e fa il suo sviluppo open source per divertimento. Fare ciò che gli altri vogliono che tu faccia è lavorare. Fare ciò che vuoi fare è divertente.
ProdigySim

8
@Aaronaught: è necessario trattare molti cretini con rispetto? Dato un servizio pubblico, ci saranno persone che fanno richieste irragionevoli, spesso in una forma offensiva. Trattare con gli sciocchi maleducati può essere un vero dolore. Un requisito per essere rispettosi nei loro confronti spingerebbe un sacco di gente a uscire dal business F / OS, e ciò sarebbe una perdita per tutti.
David Thornley,

20

La risposta sarebbe ragionevole se tu e il programmatore in questione fossimo uguali e sapessimo lo stesso della base di codice, della lingua e di tutte le altre cose rilevanti per questa particolare cosa che stai sottolineando.

Non sei uguale (o probabilmente lo avresti fatto), quindi suggerirei una risposta appropriata per essere:

"Non posso assolutamente farlo nel modo più veloce e buono possibile, motivo per cui ti ho chiesto di aiutarmi in primo luogo. Per favore!"

Credo che sia contrario alla natura umana fondamentale dire allora "oh, sì, questa cosa su cui ho trascorso molto tempo ed è davvero brava, è così semplice che chiunque può entrare dalla strada e fare un buon lavoro come Posso ".


Solo che non è proprio quello che stanno dicendo. Stanno dicendo "questa cosa che vuoi non è qualcosa che la comunità vuole, quindi non siamo veramente interessati a lavorarci su. Potremmo accettare una patch se volessi lavorarci". Implicito è "potremmo anche cambiare idea se la comunità lo vuole". Ricorda che "Voglio che tu mi aiuti " va contro la natura fondamentale dei progetti open source , in cui (per portare tutta la forza del mio Star Trek secchione a sopportare) il bene di molti supera sempre il bene di pochi.
Rein Henrichs,

Bene, a meno che quei pochi non abbiano molti soldi, storicamente parlando.
Rein Henrichs,

2
@Rein, no, quello che stanno dicendo è che LORO non vogliono farlo. Tutto ciò che "la comunità vuole" è solo un uomo di paglia. Il punto è che uno della COMUNITÀ lo richiede.

1
"è estremamente scortese suggerire di scrivere una patch se non si conosce in anticipo che, se arrivasse, la considereresti per il tuo prodotto." Concordato. Come ho detto, ecco perché non uso questa risposta. Posso simpatizzare con esso, però. "Se intendi sinceramente che" inviare una patch "ha lo scopo di zittire le persone invece di delegare il lavoro, allora accetti che ciò sia stato richiesto da un membro della comunità e non da uno sviluppatore." Non sono davvero sicuro di quello che stai dicendo qui, scusa.
Rein Henrichs,

1
@ Thorbjørn Ah sì. Bene, in effetti i manutentori open source con cui ho familiarità certamente non la pensano così. In effetti, facciamo del nostro meglio per fornire linee guida e documentazione per gli sviluppatori per aiutare le persone ad apprendere il progetto e le convenzioni per contribuirvi proprio perché siamo consapevoli del divario di competenze. Ad esempio, rubini.us/doc/en/contributing
Rein Henrichs

16

La storta canonica è di rovesciare il progetto.


8
oppure invia una patch
Kamil Szot

2
Quale bontà ti porterà il fork?

1
@Thorbjorn: tutti potrebbero usare una buona forchetta di tanto in tanto. Perfino un peccato.
user18014,

15

La risposta canonica per "inviare una patch" è:

"Non ho le competenze, l'esperienza o il tempo necessari, quindi puoi dirmi dove spedire le casse di birra al ragazzo che può farlo per me"


13

Invia un test case completo .


1
Mi piace questo, però, farlo spesso richiederebbe più tempo rispetto all'invio della patch stessa! La costante qui è il momento di familiarizzare con la base di codice ed è molto probabilmente la parte più grande della creazione del test o della scrittura diretta della patch!
Newtopian,

1
Mi piace questa risposta per i bug. Anche se non si capisce abbastanza il framework per inviare una correzione, si risparmia un'enorme quantità di tempo per qualcuno che lo fa. Non c'è niente di meno propenso a farmi risolvere un problema di un "bug" vago e irreprensibile che potrebbe essere semplicemente un sistema mal configurato. Non c'è nulla che mi faccia saltare su un problema più velocemente di una semplice testcase in modo da poter provare rapidamente diverse soluzioni.
BobMcGee

11

"Se lo fai, lo includerò" è molto meglio di "no".

Se non si è in grado di eseguire il lavoro per un motivo o per l'altro, spiegare le circostanze al responsabile del progetto in privato.

Se non sei disposto a contribuire in qualche modo a un progetto open source che desideri utilizzare, allora dovresti cercare supporto commerciale o un altro prodotto commerciale.


5
Quindi solo quelli che contribuiscono direttamente hanno il diritto di lamentarsi di un bug o di una funzione mancante? Bene, immagino, ma ciò significa anche che né i contributori né gli utenti hanno alcun diritto di lamentarsi della mancanza di adozione.
Aaronaught,

@Aaronaught No, hanno il diritto di lamentarsi, ma esiste un limite alla quantità di tempo non retribuito che uno sviluppatore può investire in un progetto ed è importante che gli utenti lo riconoscano. Nel mio lavoro, mi riservo "Accolgo con favore una richiesta di patch / pull" per le funzionalità che hanno proposte pessime di sforzo / valore della comunità. O per il punto in cui l'utente insiste affinché ottengano la funzione DESTRA ORA e non rispettino il tempo di qualcun altro o altri impegni di progetto.
BobMcGee

10

"Grazie per la risposta."

Perché:

  • A prezzo zero, la domanda (richieste di funzionalità) supera l'offerta (programmatori disponibili per implementare tali funzionalità).
  • Ragging su tutto ciò che viene fornito gratuitamente manca di classe IMHO.
  • Questo è il punto centrale di FOSS: le persone che portano verdure e carne per aggiungere nutrimento alla zuppa di pietra. Se non posso contribuire con qualcosa, dovrei essere grato di poter mangiare del tutto e non lamentarmi di non mangiare meglio.

9

Non devi dire nulla. Il fatto stesso che gli sviluppatori abbiano risposto è un'indicazione sufficiente per sapere già che il problema esiste e che causa dolore per (almeno alcuni) utenti.

Alla fine della giornata, nulla di ciò che dici convincerà lo sviluppatore a lavorare per te se non lo desidera.


9

Un buon progetto open source avrà un sistema di richiesta bug / funzionalità in cui gli utenti possono inviare bug / funzionalità e altri possono votare su di loro in modo che i manutentori possano identificare ciò che è importante per la comunità nel suo insieme. Il modo più rapido per mettere in atto la tua funzionalità è comunque di inviarci una patch. Periodo ... niente da fare.


8

Personalmente, preferirei ricevere una risposta di "Questo è un problema noto, ma sfortunatamente non si tratta di un problema che verrà affrontato presto. Gli sviluppatori stanno lavorando su altri problemi. Al momento non esiste ETA".

La risposta "submit a patch" è molto scortese, dato che presuppone una serie di cose:

  1. Tutti gli utenti del programma sono programmatori o tutti i reporter di bug sono programmatori.
  2. Tutti i programmatori conoscono la lingua in cui si trova il programma.
  3. Tutti i programmatori conoscono ogni tipo di problema che potrebbe avere un programma di qualsiasi tipo.
  4. Tutti i programmatori hanno tempo libero per lavorare su un progetto open source.

Anche se supponiamo che il creatore della risposta "invia una patch" sappia tutto quanto sopra, ciò fa semplicemente sembrare che la frase "X ore del mio tempo vale più degli ordini di grandezza più delle ore del tuo tempo che dovresti alzare per velocizzare e risolvere il problema ".

In genere, quando ricevo una risposta scortese da uno sviluppatore quando chiedo un problema che ho o invio un bug, smetto di usare quel programma. Non uso più uTorrent (non open source, ma il punto rimane) per esempio, perché le risposte che ho ricevuto sul loro forum di "supporto" sono state così scortesi. Ho presentato un problema che ho avuto nel forum Bug Reports. Il thread è stato immediatamente bloccato con un collegamento a un altro thread su un problema simile, ma diverso in un thread (che era anche bloccato, ovviamente). Nel frattempo, ho aperto una discussione nel forum di discussione generale chiedendo se qualcuno avesse trovato una soluzione al problema. Nel tempo impiegato per salvare quel thread e tornare indietro e vedere che il mio primo thread era stato bloccato, il mio thread in Generale era bloccato e il mio account sul forum è stato bandito per un comportamento dirompente. Ho disinstallato uTorrent e non sono più tornato da allora.


Intendi "Preferirei ricevere una risposta" invece di "Preferirei non ottenere"?
Andrew Grimm,

Grazie per il primo paragrafo in particolare. È incredibile come una così semplice forma di cortesia professionale possa essere estranea a così tante persone. Indipendentemente dal fatto che tu sia pagato o meno, la risposta appropriata è riconoscere il problema e spiegarne lo stato (anche se lo stato è "differito").
Aaronaught,

8

Basta rispondere "invia una patch" è scortese IMO, ma comunque ... se usi un software open source per qualsiasi cosa seria, devi essere pronto a prenderti cura di essa in caso di necessità.

Quanto segue è basato su un post di Jeremias Maerki (di fama Apache FOP):

Se qualcosa non funziona per te, hai diverse opzioni:

  • Questo è open source: puoi risolverlo da solo.
  • Se non riesci a risolverlo da solo, puoi aspettare che qualcuno abbia tempo libero e pensi che sia divertente da implementare.
  • Se ciò non accade, puoi trovare o assumere qualcuno che lo faccia per te.

Penso che sia una versione completa molto valida della risposta "invia una patch".


6

Ogni volta che vedo questo inizio immediatamente a cercare un prodotto alternativo. Per me questo è un segnale pericoloso che i manutentori non si preoccupano dei loro utenti (male se il tuo progetto viene utilizzato ovunque) o hanno perso interesse nel progetto. Entrambi di solito significano che il progetto morirà presto o sarà afflitto dalla stagnazione poiché gli sviluppatori si rifiutano di portare avanti il ​​progetto

(Nota che non sto dicendo che il primissimo bug report che vedi con questo tipo di risposta che esegui. Devi guardare una tendenza generale. Se la maggior parte dei bug report termina con questo tipo di risposta, segui questo consiglio. sono solo alcune, quindi quelle sono molto probabilmente richieste di funzionalità che non si adattano agli obiettivi del progetto o sono estremamente specifiche per l'uso)

Come ha affermato @MainMa, iniziare a contribuire a un nuovo progetto è molto difficile. La maggior parte degli sviluppatori non lo capisce perché ha lavorato al progetto per mesi / anni e ha senso per loro. Questo a volte può essere un errore onesto.


3

Di tanto in tanto scherzo sul fatto che il software libero può essere gratuito come nella birra, gratuito come nel parlato o gratuito come in te ottenere ciò per cui paghi.

Mentre lo dico scherzosamente (lavoro per un'azienda che usa molto OSS) ma penso che ci sia una verità lì - se vuoi un supporto a livello commerciale, allora devi usare un software commerciale con un accordo di supporto adeguato, o trovare un soluzione software open source che ti consente quel livello di supporto (di solito attraverso qualcuno che viene pagato per fornirlo, ma potenzialmente attraverso la tua organizzazione che impiega o assegna risorse di sviluppo per lavorarci).

"Invia una patch" è esasperante ma evidenzia qualcosa sull'OSS e forse dovrebbe essere un promemoria per ricordare che l'OSS non è adatto a tutti in ogni situazione, almeno non assicurandosi di avere un solido framework di supporto ( in-house, pagato per o attraverso la comunità).

Spesso pensiamo a software gratuiti come nella birra ma non come nei discorsi (ovvero freeware non aperto). Forse questo è un caso in cui dovremmo pensare al software gratuitamente come nel parlato ma non come nella birra.


2

Passa a un'alternativa ben mantenuta.

Secondo la mia esperienza con progetti open source ben mantenuti, se si creano segnalazioni di bug o richieste di funzionalità ben definite, si hanno molte probabilità di essere implementate.


2
Le segnalazioni di bug e le richieste di funzionalità spesso non sono ben definite. La mia esperienza è che competenza e rispetto funzionano bene. Inoltre, verrà considerata al meglio una richiesta di funzionalità ben definita. Potrebbe essere considerato a bassa priorità o potrebbe essere qualcosa che il gruppo di progetto non vuole esplicitamente fare (ci sono buoni esempi nelle FAQ di PuTTY e un bel elenco di richieste di funzionalità raggruppate per categorie).
David Thornley,


1

Ritengo che quando si sta lavorando a un progetto, fornendo rilasci e supporto, nasce un contratto di supporto non detto, implicito, tra dev e utente. Lo sviluppatore ha assunto la responsabilità implicita di supportare la base di codice per i suoi utenti, inclusa l'aggiunta di funzionalità su richiesta.

"Inoltra una patch" sta fondamentalmente dando il dito agli utenti, secondo me. Questo è contestuale - a volte è solo uno sforzo eccessivo da implementare, a volte rovinerebbe il progetto esistente o incorrerebbe in una creaturite temibile, o in una qualsiasi delle altre ragioni. Ma, in definitiva, sta dicendo "fottiti, non farlo". Il che, a mio avviso, è, in qualche modo, una violazione di quel contratto non detto.


Non è un contratto a meno che entrambe le parti non ricevano qualcosa. Ciò che il progetto vuole in genere sono segnalazioni di bug ben fatte e richieste di funzionalità spesso ben fatte, e non tutto ciò che arriva fino a quella fine del contratto implicito.
David Thornley,

1
@Aaronaught: stanno fornendo test gratuiti solo se presentano segnalazioni di bug sufficientemente dettagliate per funzionare. Ho visto la mia parte di segnalazioni di bug errati. Potrebbero o meno fornire una buona pubblicità. La maggior parte delle persone che usano F / OSS non restituiscono nulla di utile, il che va bene, ma sicuramente non è un lato di un contratto.
David Thornley,

1
@David: Per favore, smetti di provare a limitare la conversazione solo agli utenti più difficili / improduttivi? Se vogliamo generalizzare, allora quella generalizzazione deve essere per l'intera base di utenti e collaboratori come collettiva; il rilascio al pubblico ti dà tutte queste persone. In cambio del bene che si ottiene da molti di essi, si ottengono alcuni problemi da molti altri. È la vita.
Aaronaught,

1
@Aaronaught: se vogliamo generalizzare, dobbiamo assicurarci di generalizzare in modo appropriato. Non sto cercando di limitare la conversazione ai peggiori utenti, sto solo sottolineando che sono lì. Gran parte della conversazione sembra presumere che tutti gli utenti siano contributori in un certo senso, e questo è semplicemente falso. Se parleremo solo degli utenti che sono utili al progetto, sembra giusto parlare solo dei membri del team di progetto che sono generalmente educati.
David Thornley,

2
@David: Chiaramente ci sono alcuni utenti e collaboratori esterni che aiutano, e anche alcuni che causano problemi. Chiaramente ci sono alcuni sviluppatori che sono educati e professionali nella misura consentita dal buon senso e dalle buone capacità di gestione del tempo, e ci sono anche alcuni sviluppatori che sono scortesi e poco professionali per abitudine. Questa era una domanda su come trattare con quest'ultimo gruppo di sviluppatori. L'esistenza di "utenti problematici" non è in discussione, ma si tratta di un'aringa rossa che non ha altro scopo se non quello di far deragliare la discussione creando una situazione contraddittoria - quindi lasciamolo in pace.
Aaronaught,

1

Esistono diversi modi per farlo.

  • Proposta di funzionalità e votazione. ma questo richiede tempo.

  • Fatti assumere da un'azienda che ne ha bisogno per realizzare la patch. Ovviamente questa è la soluzione migliore, ma preparati a collaborare con il ragazzo che crea il software open source che desideri aggiornare.

  • Scoprire perché la funzionalità non è implementata in primo luogo è anche importante. Spesso la funzionalità è fuori dalla linea del progetto software: il team non vuole questa funzionalità, non si sente necessario o pensa solo che non sia il modo migliore per fare qualcosa. In questo caso dovresti semplicemente fork il progetto e realizzarlo da solo.

  • Usa un software proprietario che fa quello che vuoi.

  • Ricorda che il software OOP semplifica spesso il processo di integrazione di una funzione.

  • Piagnucolare su una mailing list, su irc o in un forum farà incazzare i programmatori e darà munizioni ai sostenitori dell'OSS.


0

Non c'è niente che tu possa dire che lo farà fare. Dopo tutto, perché dovrebbe? Per i desideri di un utente? Non è abbastanza buono un motivo.

Ma , se riesci a raccogliere un numero ragionevole di utenti e fornire ragioni razionali ("Lo voglio" non è un motivo razionale). Perché quella caratteristica potrebbe essere utile, in generale, a te e al numero di altri, potrebbe semplicemente cambiare idea .

Tuttavia, c'è anche un caso speciale che deve essere considerato. Che dev. è stanco di sviluppare l'app, desiderando lentamente abbandonarla (ha altre cose da fare) e quindi sta lentamente abbandonando le richieste di funzionalità. A parte cercare di convincerlo a rilasciare il codice, in questo caso non c'è praticamente nulla che tu possa fare, anche rispetto a quanto sopra.


In alternativa, lo sviluppatore ha sufficienti richieste di funzionalità per tenerlo occupato per il resto del secolo, vorrebbe includere il tuo, ma non prevede di raggiungerlo presto.
David Thornley,

@ David Thornley - Anche quello.
Torre del

0

I progetti open source, in particolare, sono amichevoli ai doni o al finanziamento dello sviluppo di una particolare funzionalità, anche se la nuova funzionalità non arriva alle versioni ufficiali.

Inoltre, sì, una delle idee alla base della pubblicazione dell'open source è che chiunque abbia il diritto e la responsabilità di dare il proprio contributo.

Con la fonte chiusa, la tua migliore risorsa è quella di raccogliere un gruppo statisticamente importante dalla base di utenti che desidera soluzioni come quelle che desideri.


2
Il diritto di contribuire, sì, ma l'ultima volta che ho letto la GPL non ha menzionato nulla sulla responsabilità degli utenti finali di fornire i propri contributi. È un po 'inverosimile, non credi?
Aaronaught,

0

Nella mia esperienza, questa risposta viene generalmente fornita se la richiesta dell'utente non soddisfa l'obiettivo del progetto. Succede quando le persone pensano che implementerai tutto ciò che ti propongono e un po 'di più - gratuitamente, open source e un futuro fantastico e felice.

"Invia una patch" è una risposta relativamente scortese (e dovrebbe essere evitato, ovviamente. Soprattutto in questa forma concisa e nitida. Esistono molti modi per esprimere approssimativamente lo stesso messaggio, ad esempio "invita" gli utenti ad aiutarti perché non hai il tempo di implementarlo da solo). Ma com'è, è un chiaro indicatore "smettere di perdere tempo". Pertanto, non c'è molto che tu possa fare al riguardo, né c'è una risposta "canonica".

La migliore risposta che mi viene in mente è quella di presentare effettivamente una patch . Supponendo che la tua patch funzioni, hai almeno provato che l'idea non è del tutto irrealistica. Di solito, ciò significa che i responsabili del progetto riconsidereranno la proposta.


1
Non credo che nessuno sviluppatore dovrebbe rispondere "invia una patch" in merito a una richiesta che non rientra negli obiettivi del progetto. È più disonesto che maleducato. O il software diventa gonfio e lo sviluppatore ti odia per questo, oppure non accetta la patch e spreca efficacemente il tuo tempo. Quest'ultimo è più probabile. Lo sviluppatore dovrebbe davvero dire onestamente "Non vogliamo cambiare questo perché ____" e finirlo.
Rei Miyasaka,

@Rei Miyasaka: Personalmente, sarei furioso se ricevessi "invia una patch", facessi il lavoro per creare una patch di buona qualità, e poi mi è stato detto che non volevano comunque la funzione.
David Thornley,

@David Sì eh? Getterei una sedia o due.
Rei Miyasaka,

0

"submit a patch" è una scelta legittima per idee che non rientrano negli obiettivi del progetto. Probabilmente a lungo andare è meglio dirti che l'idea fa schifo o stai cercando di usare il progetto per qualcosa di molto al di fuori del suo scopo previsto, ma "hey, se pensi che quello che stai chiedendo sia così banale, perché non ' t cerchi di adattarlo alla nostra base di codice esistente "a volte è appropriato.

Se è minore e davvero utile per gli utenti previsti del progetto, invia semplicemente la segnalazione di bug, descrivi chiaramente il problema, fornisci passaggi per riprodurlo, indica che stai utilizzando l'attuale build notturna e lascialo a quello.

Quello che potrebbe sembrare un semplice piccolo cambiamento che potrebbe aiutare tonnellate di utenti potrebbe effettivamente essere un enorme dolore nel culo che nessuno userebbe oltre a te. Questo è il caso migliore per "invia una patch".

È anche possibile che ti sia imbattuto in un caso come il famigerato manutentore glibc che sembra avere una sola idea che il suo sistema è l'universo, la sua interpretazione delle specifiche è la parola di dio, e questo è tutto ciò che c'è da fare, indipendentemente di quante persone preferirebbero altrimenti.


Non penso che nessuno sceglierebbe di porre questa domanda se sapessero che il cambiamento sarebbe un enorme dolore nel culo usato solo da una persona. Quindi, invece di "inviare una patch", perché non educatamente e brevemente spiegare perché è un grosso problema e non può essere fatto immediatamente.
Mr. Shickadance,

2
"Invia una patch" rende un risultato davvero scadente, poiché è possibile che qualcuno invii una patch. Dovrebbe essere riservato a persone di bassa priorità.
David Thornley,

0

Suggerirei di creare un progetto per l'implementazione della funzione su siti come RentACoder / ELance / etc e di pubblicarlo sul forum del progetto open source originale. Tutti i programmatori dei progetti open source, incluso l'autore, ora hanno un incentivo finanziario per prendere in considerazione la tua richiesta.


-1

In realtà mi sono iscritto solo per rispondere a questa domanda.

C'è bisogno di una replica? questa risposta viene generalmente utilizzata quando lo sviluppatore è a conoscenza del problema ma non lo ritiene importante.

Ti darò un esempio dal vivo. ubuntu ha eliminato il supporto per systray (ma può essere risolto inserendo in bianco un'app) e ha aggiunto nuovi indicatori per l'app. alcune app come Jupiter si sono affidate al supporto di systray, quindi lo sviluppatore ha parlato del workaournd invece di aggiungere il supporto per gli indicatori delle app, quindi ho chiesto allo sviluppatore di aggiungere la supposizione degli indicatori delle app, la risposta è stata "Inviaci patch". chiedendo il motivo per cui hanno scelto di non implementarlo. c'era questo

Non mi interessa passare il tempo a costruire il supporto per un libra1ry che non userò mai solo perché qualcuno con un sacco di soldi lo richiede inserendo nella lista nera la capacità delle mie applicazioni di funzionare correttamente sulla sua distribuzione Linux semplicemente perché può farlo.

Se fosse un vero problema tecnico, probabilmente prenderei provvedimenti, ma questa è puramente una manovra politica, quindi no, non credo.

No, lo inserirò nella whitelist

Giusto. lo sviluppatore ha motivo di non implementare una funzione ma è disposto ad accettare patch. questo non è davvero maleducato e offensivo, quindi non c'era bisogno di una replica.

linea di fondo: la replica canonica sarebbe quella di inviare la patch, ma se non è possibile non è necessario per una replica


-1

Inizia una taglia per la funzione che desideri.

Oppure esci e acquista il prodotto che afferma di fare esattamente ciò che desideri e abusa del personale di supporto quando scopri che il marketing non soddisfa le tue aspettative.


-2

Il meglio che mi viene in mente è "fai schifo".

Mi dispiace, ovviamente, non è molto utile, ma penso che questa sia solo una delle sfortunate situazioni in cui l'utente è completamente fregato. Un appello brutalmente onesto alla coscienza dello sviluppatore è un ultimo disperato sforzo.

Potresti provare a offrire ( tosse ) "donazioni" per affrontare il tuo problema, ma temo che tale pratica, se resa comune, porterebbe a una brutta perdita di integrità nel settore, poiché le correzioni di bug non dovrebbero mai essere rese redditizie, neanche per Software "gratuito" o commerciale.

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.