Semplici modi per contribuire a progetti open-source

Quando è iniziato il progetto jQuery, ricordo quanto il team fosse appassionato nell'aiutare gli sviluppatori a utilizzare la libreria JavaScript jQuery. È stato un lavoro d'amore con tutti noi che abbiamo messo innumerevoli ore, giorno e notte, per aiutare a far crescere il progetto e la comunità degli sviluppatori. E li abbiamo fatti gratuitamente perché ci è piaciuto molto farlo. Ma man mano che il progetto cresceva, crescevano anche le aspettative della comunità in termini di funzionalità e supporto. Ed è qui che la maggior parte degli sforzi open source non riesce ad aumentare.

Penso che la maggior parte degli sviluppatori che distribuiscono software OSS lo faccia per ragioni altruistiche che vogliono restituire alla comunità qualcosa che potrebbe risolvere un problema critico.

Man mano che le esigenze della comunità crescono, è necessario trovare modi per avere più tempo per concentrarsi sulle funzionalità. Puoi farlo crescendo la tua squadra ma non è sempre una soluzione. Nel progetto jQuery, abbiamo aumentato le dimensioni del team e il lavoro delegato, ma anche così, essendo uno sforzo basato sul volontariato, il progetto dipendeva dalla disponibilità di altre persone. E con tutti noi che abbiamo un lavoro a tempo pieno e molti con responsabilità familiari, posso dire che siamo riusciti a realizzare molto con pochissima disponibilità.

L'altra opzione che si è manifestata è stata la possibilità di finanziare il tempo per concentrarsi sul lavoro su attività specifiche. Questo in genere è avvenuto sotto forma di sponsorizzazioni da società di marca che avevano effettuato ingenti investimenti interni in jQuery e volevano che il progetto avesse successo. Questo in realtà ha funzionato bene perché ha consentito ai membri del team di concentrarsi in modo specifico sul soddisfacimento delle esigenze della comunità e concentrare le proprie capacità nelle aree difficili che richiedevano molta attenzione dedicata.

Ora, per favore, non pensate che questo sia successo da un giorno all'altro. Ci è voluto molto tempo prima che qualcuno volesse contribuire al progetto e dimostrare che il valore dello sforzo era la componente fondamentale per questo. jQuery è una parte importante di molti siti e prodotti, ma quella che segue è stata sviluppata in anni di duro lavoro e coerenza e non è la norma per la maggior parte dei progetti OSS. E la maggior parte dei progetti OSS non godrà mai del livello di successo e notorietà che jQuery ha semplicemente per il tempismo o addirittura per essere "troppo di nicchia".

E non c'è assolutamente niente di sbagliato in questo. Penso che la maggior parte degli sviluppatori che distribuiscono software OSS lo faccia per ragioni altruistiche, volendo restituire alla comunità qualcosa che potrebbe risolvere un problema critico. Quindi, come fanno questi progetti ad avere un vantaggio come ha fatto il progetto jQuery?

Esploriamo questo.


Consumatori OSS vs contributori

Non ho incontrato qualcuno (sia offline che online) che non abbia utilizzato software open source. Questo è un grosso problema perché mostra che l'OSS è ovunque. Gli sviluppatori fanno affidamento su di esso per avviare la loro prossima grande idea. Le aziende lo sfruttano per abbassare i costi. E i governi lo usano per garantire che soddisfino i bisogni delle loro comunità. Dire che è pervasivo sarebbe un eufemismo.

L'unica cosa che ho sentito per molto tempo, però, è che c'è uno squilibrio definito tra consumatori e contributori. La facilità con cui qualcuno può afferrare un pezzo di software OSS e correre con esso a causa di licenze flessibili e poco o nessun costo rende incredibilmente facile dimenticare che qualcuno là fuori sta effettivamente scrivendo e supportando quel software. Se si consuma semplicemente senza considerare il tempo, gli sforzi e i costi implicati in quel software, c'è una forte probabilità che lungo il percorso si possa avere un impatto quando il progetto fallisce. La strada verso l'OSS è disseminata di progetti falliti e abbandonati creati da sviluppatori con tutte le giuste intenzioni, ma non avevano le risorse per andare avanti.


Come restituire

Non è detto che tu debba andare all-in come fa Facebook con PHP, ma ci sono molti modi per aiutare un progetto dal quale hai preso qualcosa che è prezioso per te e per la tua azienda. Alcuni frutti a sospensione bassa sono:

  • Contribute code: la maggior parte dei progetti utilizza GitHub che rende la creazione di richieste pull estremamente facile
  • Tempo di contribuzione: i progetti sono sempre alla ricerca di persone che aiutino con la documentazione, il supporto e l'evangelizzazione
  • Scrivi un post sul blog - Abbastanza facile da scrivere qualcosa che rende più semplice l'uso di uno strumento per gli altri
  • Chiedi al tuo datore di lavoro per tempo - Se stai utilizzando un pezzo di software OSS al lavoro, chiedi al tuo datore di lavoro l'ora della società di contribuire
  • Chiedi al tuo datore di lavoro di donare il codice di ritorno - Lungo la stessa linea, se stai estendendo la funzionalità, considera di contribuire con la stessa licenza del progetto

Molti progetti hanno pagine simili a questa che spiegano specificamente come contribuire.

Se per qualsiasi ragione non puoi offrire nessuno di questi, dovresti considerare di contribuire a finanziare alcuni di questi sforzi. "Come?" tu chiedi.


Donare online

Sono sorte piattaforme che sono state progettate per risolvere questo problema e daremo un'occhiata a due dei più popolari.

Bountysource: la piattaforma di finanziamento dei progetti OSS


Recentemente, mi sono imbattuto in una raccolta di fondi per RVM (Ruby Version Manager). Se hai mai codificato in Ruby on Rails, allora sono abbastanza sicuro di sapere quanto sia importante RVM. Sfortunatamente, lo sponsor principale stava finendo il suo supporto e il progetto aveva bisogno di trovare un altro sponsor, così hanno preso un nuovo sito chiamato Bountysource che mira a fornire una piattaforma di finanziamento per software open source.


Ho trovato questo assolutamente fantastico perché non c'era davvero una risorsa come questa per il progetto jQuery (o MooTools, Prototype, et al) che potrebbe consentire a un progetto di creare una pagina di raccolta fondi con tutti gli strumenti per raccogliere le donazioni. E, naturalmente, consente alle persone di accedere ai progetti di browser che desiderano finanziare e donare tramite PayPal o Google Wallet.

Ciò che mi ha davvero impressionato è il fatto che un progetto può elencare le cose che desidera realizzare e attraverso il crowdsourcing, la comunità può aiutare a finanziare il completamento delle caratteristiche specifiche attraverso i pagamenti degli sviluppatori (chiamati "taglia"). Quindi dimmi che volevi davvero $ .Deferred funzionalità in Zepto.js. Potresti contribuire alla richiesta di funzionalità per invogliare la comunità a implementare e, una volta eseguita, la ricompensa sarà pagata alle persone che l'hanno fatto.


Il servizio risponde all'esigenza del progetto, anche al punto di abbattere i premi a specifici compiti e valori, ma consente anche alla comunità di decidere cosa è importante e finanziare lo sviluppo di tale funzionalità. È un po 'un KickStarter per open-source. Molto bello.

Gittip - Crowdfunding persone che ti ispirano


Gittip è un servizio che ho scoperto grazie a John Resig. È stato un vero fautore del servizio e questo dice molto.


Per citare Giovanni:

Ho visto una grande opportunità per il team di sviluppo della Khan Academy di restituire alla comunità Open Source modi che non erano solo legati al codice.

È molto diverso da Bountysource in quanto ha lo scopo di offrire piccoli regali in contanti settimanali a persone che ritieni ti stiano fornendo un valore. Puoi dare qualsiasi somma tu desideri fino a $ 100 a settimana. Questa è in realtà una grande risorsa per quei progetti a un solo uomo in cui il codificatore solitario sta aggiungendo funzionalità, rispondendo alle e-mail di supporto e lavorando alla comunità. Potrebbe sembrare irrilevante, ma anche donare cinque dollari a settimana a quello sviluppatore potrebbe essere quello di cui ha bisogno per assicurarsi che sappiano che il loro lavoro è apprezzato.

Ci sono oltre 650 community elencate su Gittip e sceglierne una mostrerà tutti i migliori givers e destinatari:


Ciò consente anche di eseguire il drill-down nelle singole pagine del profilo per consentirti di contribuire a chi ti ispira:


E per rimanere in linea con la sua etica OSS, Gittip ti permette persino di controllare il suo codice sorgente tramite il repository Github.


Più "fai" di "come"

Il punto di questo articolo è quello di portare a casa l'importanza di contribuire a open-source. Se sei un consumatore, dovresti valutare seriamente quanto sia preziosa quella libreria o strumento per te e capire come supportarlo. Se il progetto non è su Bountysource o Gittip, perché non raggiungere il proprietario del progetto e chiedere loro di unirsi in modo da poter donare.

E solo perché potresti non essere interessato a contribuire con il codice non significa che non puoi sfruttare altre capacità per far crescere un progetto. A mio avviso, il singolo grande bisogno di un progetto open-source sono le persone che sanno come lavorare con una comunità. Le soft skills sono così importanti e dalle mie esperienze, decisamente carenti.

La cosa principale è che non ci sono davvero scuse per non contribuire quando trovi qualcosa di prezioso. Solo perché è "libero" non significa che molti investimenti non sono stati inseriti in esso e, se non lo supporti, potrebbe andare via un giorno.