Perché dovresti (e non dovresti) fare sviluppo open-source

Come sviluppatore con molta esperienza pregressa nell'open-source, voglio spiegare perché dovresti fare sviluppo open-source (con i suoi contro, però)

September 14, 202310 min read

Premessa

Ho iniziato il mio percorso nell'open source quasi 6 anni fa e ho lavorato su diversi progetti. Attualmente, ho 90 repository pubblici su GitHub e almeno 5 di essi sono diventati abbastanza popolari nel corso degli anni. È iniziato come un hobby, ma ora è quasi un lavoro non retribuito. È stato un spreco di tempo? Approfondiamo la questione!

Da un hobby a un lavoro non retribuito

L'inizio

Nel 2017, avevo appena iniziato a lavorare nella mia prima azienda ed ero un principiante assoluto nella programmazione. Avevo questo progetto in cui dovevo sviluppare un driver per comunicare con un modem attraverso la porta seriale, e il driver doveva essere compatibile con Linux e Windows. Dopo aver implementato il driver per Linux, ho capito che l'implementazione per Windows della comunicazione seriale era completamente diversa. Quindi sono tornato a casa quel giorno e ho deciso di implementare il mio primo progetto open source: termiWin. TermiWin è un adattamento di termios per Windows e per qualche motivo è diventato "popolare" nella community di GitHub cinese (non è popolare, ma all'epoca 50 stelle per me erano un grande successo).

cool kid meme

Il progetto è effettivamente scadente e ha molti difetti, infatti dopo alcuni anni ho persino scritto nel README che era così.

Il primo progetto di successo

Dopo termiWin, ho iniziato a lavorare su molti altri progetti, che in realtà non sono andati bene, fino a quando ho iniziato a lavorare su termscp. termscp è stata una svolta nella mia carriera nell'open source, non solo perché il progetto era effettivamente buono ed è diventato popolare (è stato persino menzionato in diversi podcast per geek), ma anche perché è stato il punto di partenza per molti altri progetti. Fondamentalmente, la maggior parte dei miei progetti popolari erano inizialmente moduli di termscp che, in un secondo momento, ho deciso di migrare come librerie standalone.

Un tempo pensavo che aspettarsi donazioni da progetti open source fosse in qualche modo "sbagliato". Ma dopo tutte quelle ore trascorse a lavorare su termscp, ho finalmente deciso di iniziare a raccogliere donazioni per il mio lavoro. Ricordo ancora la prima volta che qualcuno ha deciso di donarmi 2 €. È stato così bello, anche se erano solo 2 euro (tasse escluse. Quindi alla fine sono diventati circa 1,42 €).

cool

Il burnout

Ma dopo un po' anche un altro problema è iniziato ad emergere: gli issues. Avevo circa 10 issues aperti ogni settimana, per lo più richieste di nuove funzionalità, ma anche bug. Ero abituato a risolverli il prima possibile, ma a quel punto non riuscivo nemmeno a trovare tempo per me stesso. I miei fine settimana erano interamente dedicati a risolvere bug e implementare richieste di funzionalità.

Sono caduto in uno stato di burnout dopo due mesi. Ho preso una pausa di tre mesi dall'open source dopo quella esperienza. Poi ho ripreso i miei progetti open source, ma questa volta con molta più calma, lentamente e più rilassato, come dovrebbe essere.

burnout-homer

Il conto, per favore

In ogni caso, se vi steste chiedendo quanti soldi ho ricevuto in donazioni in tutto questo tempo, ecco il totale: circa 45$ in 4 anni dopo aver abilitato le donazioni. Sapete quanti utenti hanno aperto issues e dopo averli risolti hanno fatto una donazione? Nessuno.

clap clap clap

Ora hai una chiara prospettiva di come è andata la mia carriera nell'open source. Ma cosa ho imparato? È stato comunque uno spreco di tempo? Analizziamo i pro e i contro.

Cosa ti restituirà l'open source

Non posso negare che anche dopo un burnout, l'open source mi ha restituito molto. Diciamolo chiaramente: fare open source NON è uno spreco di tempo. Anche se può sembrare un enorme investimento di tempo (e in effetti lo è) che non verrà mai ripagato con denaro, non è così. Beh, in realtà è molto improbabile che verrai pagato per il tuo lavoro con denaro, ma considera che ci sono molti altri modi per essere "retribuito".

Non c'è modo migliore per imparare cose nuove

Ho avuto l'opportunità durante la mia carriera di partecipare a conferenze, seguire corsi e imparare dal mio lavoro, ma niente mi ha fatto imparare così tante cose come lo sviluppo open source. Il punto dell'open source è che puoi lavorare su ciò che desideri e questo può farti imparare una quantità infinita di cose su qualsiasi argomento.

Potresti pensare che i corsi siano comunque buoni, ma diciamocelo, niente è buono come imparare facendo e nell'open source questo è eccellente, perché puoi effettivamente lavorare su implementazioni reali di tecnologia nel mondo reale.

Puoi anche sfruttare questa opportunità per cambiare settore. Ad esempio, grazie allo sviluppo open source, ho avuto l'opportunità di iniziare a conoscere il web3 e questo mi ha portato a unirmi a una startup web3 nel 2023. Se non fosse stato per il mio hobby, probabilmente non avrei mai potuto farlo.

La maggior parte delle cose che so come sviluppatore le ho imparate grazie allo sviluppo open source.

Avrai un enorme vantaggio nel recruiting

Se fai open source, il tuo profilo GitHub (o qualsiasi altra piattaforma tu utilizzi) diventerà il tuo showreel. Non si possono neanche contare i vantaggi che questo ti porterà. Non solo i reclutatori ti daranno la priorità come candidato per il tuo lavoro, ma sarai anche in grado di saltare la fase più fastidiosa dei colloqui: l'"esercizio a casa" che devi fare per dimostrare che sei capace di programmare.

In tutti i miei colloqui recenti, sono riuscito a essere privilegiato come candidato grazie a tutti i miei progetti. Non ho più bisogno di dimostrare come sono come sviluppatore, perché tutte le mie competenze sono già lì, sul mio GitHub.

Inoltre, GitHub diventerà anche un canale di reclutamento aggiuntivo: ricevo spesso offerte di lavoro dai recruiter tramite GitHub, il che significa che è molto utile raggiungere quel punto nella tua carriera in cui non sei tu che cerchi il lavoro, ma il lavoro cerca te.

stonks

È positivo per la tua psiche

Portare a termine le cose è sempre positivo per il tuo morale, e vedere altre persone apprezzare il tuo lavoro è ancora meglio. Ed è così che funziona l'open source, in fondo. Se il tuo progetto è buono, altre persone inizieranno ad apprezzare il tuo lavoro e lo useranno quotidianamente. Se hai avuto una brutta giornata al lavoro, puoi pensare che là fuori ci sono altre persone che usano il tuo prodotto. E questo ti farà sentire sicuramente meglio.

Cosa dovresti tenere in considerazione

Purtroppo, non è tutto rose e fiori e lavorare su progetti open source ha i suoi svantaggi. Ma se sai a cosa devi stare attento, puoi facilmente evitare delusioni e stress.

Quindi, vediamo dalla mia esperienza cosa dovresti tenere presente e cosa avrei voluto sapere prima di iniziare a fare open source.

Non diventerà mai un lavoro

Secondo me, lo sviluppo open source dovrebbe essere sempre considerato come un hobby.

Sì, so cosa stai per dire

Ma c'è gente che ha fatto dell'open source il suo lavoro!!!

SÌ, lo so. MA ascolta, ci sono principalmente due problemi qui:

  1. Hai bisogno di TANTO denaro per vivere. Non ho un numero esatto, ma penso che meno dello 0,1% dei tuoi utenti donerà almeno un euro. Questa è la triste verità, senza nemmeno menzionare che queste donazioni potrebbero non essere periodiche, quindi potrebbero essere donazioni occasionali. Quindi fondamentalmente, se vuoi farne un lavoro, hai bisogno di sostenitori che donino mensilmente e diciamo che i sostenitori sono 1 su 10.000, quanti utenti ti serviranno per ottenere uno stipendio decente dalle tue donazioni? Senza considerare che lo stipendio deve essere conveniente rispetto al tuo attuale lavoro. Inoltre, per iniziare ad accumulare sostenitori, avrai bisogno di molto tempo, che probabilmente non hai se già lavori per un'azienda. Auguri, in pratica.
  2. Dipendi dai tuoi utenti. Cosa significa? Significa che se facevi open source perché ti permetteva di fare ciò che volevi, ora devi soddisfare la tua community. La tua community si aspetterà che tu risolva bug, implementi le loro richieste di funzionalità e fornisca loro nuovi software creati per soddisfarli. E se non li soddisfi, smetteranno di sostenerti, il che significa niente più soldi. Quindi, se arrivi a questo punto, ha ancora senso fare open source? Sei ancora libero?
think about it meme

Le persone sono ingrate

Un'altra triste verità. Ma devi accettare che la maggior parte delle persone è ingrata per ciò che fai. Non riesco nemmeno a contare quante volte sono stato frustrato dalle persone che aprono issues, li risolvono e non ricevono nemmeno una mancia, la maggior parte delle volte neanche un "grazie amico".

Oh, e non solo, ma nella maggior parte dei casi i tuoi utenti ti faranno perdere molto tempo per risolvere questi issues. Forse hai preparato quel bellissimo modello per issues e PR, beh, dimenticalo. Sulla base della mia esperienza, circa il 40% degli utenti che apre un ticket, ignora il tuo modello e fornisce una quantità insufficiente di informazioni sul loro ticket. Nel 5% dei casi il titolo del ticket era vuoto, il 20% delle volte la descrizione era vuota e nel 10% dei casi il titolo era completamente fuorviante.

Cose di questo tipo, per intenderci:

average issue be like

E dopo aver lottato con tutto ciò, nel caso remoto ci fosse effettivamente un ticket con il tuo software, chiudi il ticket, rilasci la nuova versione e non sentirai mai più parlare da loro il 90% delle volte. Né per un apprezzamento né per un feedback. Fantastico, vero?

middle finger gif

In più, le persone sono anche pigre

Giuro che amo le persone! Anche se fare open source ti farà odiarle. E il motivo per cui le persone sono ingrati non è solo perché sono ingrati, ma sono anche pigre. La maggior parte delle volte la tua community preferirà segnalare un problema molto facile da risolvere piuttosto che cercare di risolverlo con un PR, anche se quest'ultimo probabilmente richiederà meno tempo.

La documentazione è buona, ma inutile

Ho scritto pagine e pagine di documentazione e manuali utente per i miei software, che apparentemente la maggior parte dei miei utenti non ha mai letto. La maggior parte degli issues contrassegnati come domande nei miei repository potrebbero essere risolti semplicemente leggendo i manuali utente, il che ha cominciato a farmi pensare che la maggior parte di loro non legge i manuali. Quindi sì, aspettati che la gente non passi il tempo a leggere i tuoi manuali, a differenza di te, che hai passato molte ore a scriverli.

troll

Non dovresti mai diventare uno "yes-man"

Non c'è niente di peggio che diventare uno schiavo della tua community quando si tratta di progetti open source.

yes-man

Se un utente ti chiede una funzionalità o, peggio ancora, l'ha già implementata in un PR, non esitare a dire che non vuoi che sia implementata se non ti piace. Non intendo dire che dovresti essere un dittatore dispotico quando si tratta dei tuoi progetti. È bene accettare miglioramenti se portano effettivamente qualcosa di utile ai tuoi progetti, anche se potresti non trovare quella funzione utile per te stesso. MA se qualcuno suggerisce qualcosa che richiederebbe davvero troppo tempo da implementare o che ritieni sia non solo inutile ma che peggiorerebbe le cose, non esitare a dire semplicemente no, grazie.

Non esitare nemmeno se l'utente l'ha già implementato in un PR. Non è colpa tua! È sempre una buona pratica, prima di aprire un PR, aprire prima un issue chiedendo feedback dai manutentori del progetto e dalla community.

Non devi nulla a nessuno

Ultimo, ma non meno importante. Non devi nulla a nessuno. È il tuo tempo, è il tuo progetto, la gente non paga per esso, quindi non sentirti in dovere di impegnarti con la tua community. Se hai bisogno di prenderti del tempo per te stesso e fare una pausa dall'open source, fallo senza esitazione. Se vuoi arrenderti, dovresti essere in grado di farlo quando vuoi (magari lascia prima un messaggio nel tuo readme, è una buona pratica).

Mi ci è voluto un po' e un burnout per capirlo, ma poi ho iniziato a vederla diversamente. Come ho detto prima, ho fatto una lunga pausa una volta, e durante quel periodo ho capito come fossi diventato uno schiavo dei miei stessi utenti. Ho ripreso ad avere una vita sociale in quel periodo e sono riuscito persino a trovare una ragazza, cosa che sentivo di non avere tempo prima.

Come ho detto prima, tienitelo come un hobby, prenditi il tuo tempo e trova il tuo equilibrio.

Conclusioni

Spero che questo post sul blog ti sia stato utile. So che potrebbe sembrare che ci siano più svantaggi che vantaggi, ma credimi, non è così. L'open source è divertente ed è davvero un booster per la tua carriera, ma dovresti davvero prenderti cura della tua salute mentale mentre lo fai, altrimenti la tua community ti consuma e ti porterà da nessuna parte.

Questo è il mio primo post sull'esperienza nello sviluppo open source e spero che ti sia piaciuto. Presto inizierò a scrivere un nuovo articolo su come sviluppare un progetto open source di successo.