Uno sforzo fallito per essere pagato per un progetto Open Source

https://unsplash.com/photos/Tjbk79TARiE

Alla partenza di 4 persone, il nostro team di ingegneri ha dovuto tagliare molti angoli per consegnare l'elenco in continua evoluzione delle funzionalità di cui pensavamo di aver bisogno. Abbiamo inserito molti commenti TODO nel nostro codice nella speranza di organizzare il crescente debito della tecnologia. I metadati sono stati attentamente aggiunti ai commenti nella speranza di mantenere le cose organizzate, ma abbiamo perso rapidamente traccia della maggior parte di essi. Avevamo un sacco di codice, non molte persone, e il flusso di lavoro di sviluppo di costruzione e manutenzione del nostro sistema stava rapidamente diventando meno piacevole.

Nel mio tempo libero, ho costruito uno strumento per me e il mio team: Toodles. È uno strumento che scansiona una base di codice per tutte le voci TODO, le organizza e ti consente di apportare modifiche ai metadati che verrebbero applicate direttamente alle voci TODO della base di codice. Ho pensato che fosse uno strumento elegante! Con mia grande gioia, quando ho inserito il codice su GitHub, anche altri sembravano pensarlo. Le persone hanno recitato, biforcato, clonato e scaricato. Toodles ha iniziato a ricevere contributi da persone di tutto il mondo e sono rimasto sorpreso nel vederlo svolgersi.

Incoraggiato dall'entusiasmo delle persone su Internet e dei miei colleghi, ho continuato a lavorare su Toodles nel mio tempo libero. Come la maggior parte dei progetti, l'attività di GitHub alla fine ha rallentato, ma non è andata via. Ricevo occasionalmente la segnalazione di bug, a volte da persone che sembravano lavorare in aziende molto più grandi. Non volevo che il mio software avesse un aspetto o un bug, quindi lo avrei riparato non appena avessi avuto tempo, ma il pensiero sarebbe saltato fuori:

Perché mi sono offerto volontario per una grande azienda? Perché avevo anche il tempo di fare volontariato per la mia azienda di lavoro?

Dopo essermi soffermato su questa domanda per un po ', sono giunto alla conclusione che avrei potuto provare ad addebitare denaro per Toodles. Dopotutto, avevo lavorato molto su uno strumento che viene utilizzato in un'azienda, è giusto per me cercare di essere pagato per quello. Molte altre domande si sono immediatamente risolte.

  • Dove potrebbe acquistare un cliente Toodles? Come lo darei a loro?
  • Qualcuno stava effettivamente usando Toodles regolarmente? Poiché è scaricato ed eseguito sulla macchina dell'utente e non avevo scritto codice personalizzato per registrare i dati di utilizzo, non potevo nemmeno essere sicuro che questo sforzo valesse la pena.
  • Se avesse utenti regolari, qualcuno di loro effettivamente lo pagherebbe?
  • Se lo facessero, come potrei riscuotere un pagamento da loro?
  • Come posso addebitare denaro alle aziende per Toodles e mantenerlo gratuito per le persone senza fare molto lavoro di programmazione solo per questo scopo?
  • È persino etico fare soldi su un progetto open source a cui altre persone hanno contribuito e non pagare anche loro? Come potrei inviare denaro a tutti i contributori o decidere abbastanza quanto pagarli?

Ho deciso di affrontare innanzitutto la questione delle statistiche sull'utilizzo. Toodles è un programma che verrebbe installato sulle macchine dei suoi utenti, quindi per raccogliere dati, dovrebbe effettuare la registrazione remota su un endpoint che dovrei sostenere. Alcuni sviluppatori sono piuttosto ostili a questa idea (ad esempio: https://github.com/lihaoyi/Ammonite/issues/607). Non potevo usare i tradizionali servizi di logging basati su cloud, poiché ciò richiederebbe un demone di raccolta dei log sui computer degli utenti. Configurare il mio back-end solo per raccogliere statistiche sull'utilizzo di un'applicazione eseguita localmente sembrava eccessivo. Se esiste una soluzione adeguata a questo problema, non l'ho ancora trovato.

Nonostante la mancanza di dati e l'incertezza generale, ho deciso di andare avanti e creare un livello retribuito di società di targeting Toodles. Per separare gli individui dalle aziende, c'era un limite al numero di voci TODO che Toodles avrebbe analizzato, con la soglia impostata abbastanza alta da essere attivata solo da basi di codice molto grandi. Poiché Toodles stesso è un server che un utente esegue sul proprio computer, l'autenticazione di un utente a pagamento è stata complicata. Ho avuto due opzioni:

  1. Costruisci o acquista un sistema di back-end in grado di tracciare account utente, acquisti, ecc. E di far parlare il cliente Toodles.
  2. Distribuire i file di licenza che Toodles potrebbe convalidare per accedere alle funzionalità a pagamento.

L'opzione di costruzione (1) è stata una quantità proibitiva di lavoro, quindi ho voluto evitarlo. Un servizio a pagamento per l'opzione (1) non sembra (e non esiste). Senza altra scelta, ho dovuto scegliere l'opzione (2). Non avevo idea di come creare e convalidare un file di licenza, ma alla fine l'ho capito dopo un periodo frustrante. Speravo che ne valesse la pena.

Successivamente, ho dovuto sostenere un negozio online in modo che le persone potessero acquistare un file di licenza. È stato difficile trovare un servizio di negozio online che mi permettesse di generare a livello di codice un file di licenza quando un cliente effettua un acquisto. Alla fine ho trovato quella funzione nel sito di e-commerce fastspring.com. È stato difficile installarlo. Mentre la mia tana del coniglio di uno sforzo si stava approfondendo, l'utile sul capitale investito sembrava sempre meno positivo.

Dopo aver sbattuto la testa contro il muro abbastanza a lungo da consentire a FastSpring di generare i miei file di licenza, il mio negozio online funzionava. Sembrava un negozio online dei primi anni 2000 ma almeno funzionava. Ho impostato una semplice landing page che reindirizzerebbe al negozio per l'acquisto finale.

Con lo store online completo, ero pronto per iniziare a vendere Toodles Pro! Ho dovuto pagare a FastSpring una commissione del 5% su tutte le vendite che ho fatto, ma almeno ora potrei guadagnare. Il negozio non aveva un bell'aspetto perché FastSpring non sembrava concentrarsi molto sul design, ma era meglio di niente. Era funzionale, ma a causa di tutto lo sforzo che è andato in tutto il setup, ha lasciato molto a desiderare.

Con tutto a posto, ho aspettato di vedere se qualcuno degli utenti esistenti passasse al livello pagato di Toodles. Dopo un po 'di tempo ...

Non è successo assolutamente niente. Finora zero persone hanno acquistato Toodles Pro. Mi sono reso conto che avrei dovuto dedicare molto più tempo a vendere questo progetto se volessi avere delle entrate. Ma non stavo cercando di avviare una vera e propria compagnia con Toodles; Volevo solo catturare parte del valore che il mio lavoro stava apportando alle entità commerciali. È diventato chiaro che fare soldi avrebbe richiesto una grande quantità di sforzi iniziali, tangenti ai miei veri obiettivi del progetto.

Quindi ho rinunciato. Ci sono stati troppi problemi che hanno preso o avrebbero impiegato troppo tempo per monetizzare il mio progetto open source:

  • È stato difficile stabilire un modo per accettare pagamenti per il software. Anche capire quale piattaforma usare in primo luogo era difficile.
  • Poiché la soluzione di pagamento non fa parte della distribuzione del progetto, la semplice gestione dei pagamenti non è stata sufficiente. Ora, il codice dell'applicazione era strettamente associato, tuttavia sono riuscito a implementare la generazione di licenze con FastSpring. Per funzionare, la convalida della licenza e la gestione dei livelli utente devono essere inserite direttamente nel codice. Lo stretto accoppiamento di preoccupazioni come questa sacrifica la manutenibilità e la flessibilità del codice. Diventa difficile cambiarne uno senza dover rielaborare l'altro.
  • Oltre a tutto quanto sopra, valutare se avessi dovuto anche risolvere questi problemi per monetizzare il mio progetto non era chiaro, perché non avevo dati su se / quando / come le persone stessero usando il mio strumento in primo luogo! Non ho avuto modo semplice per scoprirlo, poiché il software è installato sui computer degli utenti.

La sfortunata realtà era che ogni volta che spendevo monetizzare Toodles era tempo che non stavo spendendo per migliorare Toodles per i suoi utenti. Per risolvere questo problema per noi sviluppatori open source, avremo bisogno di un modo per distribuire il nostro software con pagamenti e report sull'utilizzo integrati, in modo che gli sviluppatori possano concentrarsi solo sulla costruzione e gestione del progetto open source che gli utenti amano.

Rilascerò più pensieri su questo problema mentre continuerò a risolverlo. Segui per ulteriori informazioni.