Perché sono libere
Quando installate un programma, di fatto gli aprite la porta di casa: i vostri documenti, i vostri file, il vostro lavoro. E se il codice è chiuso, potete solo fidarvi sulla parola.
Con il codice pubblico, invece, chiunque può aprirlo e controllare che cosa fa davvero. Per questo le mie app hanno tutte una licenza libera. Nove su undici usano la GNU Affero General Public License, cioè la AGPLv3. Le altre due, OpenDSA: Reading e Think Go: Briscola, usano la GNU General Public License, cioè la GPLv3.
Che cosa vuol dire, in pratica? Che potete usarle, studiarne il codice, modificarlo e ridistribuirlo. La condizione è una sola: chi le ridistribuisce deve lasciare le stesse libertà a chi viene dopo.
Prendiamo Shorty, il servizio che accorcia i link. Immaginiamo che qualcuno lo modifichi e lo offra online, senza mai darvi un file da scaricare. Con la AGPLv3 la regola vale lo stesso: anche chi offre una versione modificata attraverso la rete deve usare la stessa licenza e mettere a disposizione il codice sorgente.
Ma se è tutto gratis e tutto aperto, chi paga? Io ve lo spiego così: il codice resta libero, sempre. Quello che si può sostenere è il tempo che ci vuole a scriverlo e a mantenerlo.
C'è poi una scelta che vedrete in ogni scheda: Linux viene per primo, perché è il sistema su cui lavoro. Molte app le trovate già su Ufficio Zero Linux OS, la distribuzione italiana con cui collaboro, oppure nel mio repository firmato AppRelease. Poi ci sono Windows e macOS.
E questa è la cosa importante: un programma di cui potete leggere il codice non vi chiede fiducia, vi lascia verificare.
Finanzia la funzione
Le idee migliori, spesso e volentieri, arrivano da chi usa le app. È già successo con Glaia: è arrivata la richiesta di un formato in più per Linux, e accanto ai pacchetti .deb e .rpm ho aggiunto l'AppImage.
Il problema nasce quando una funzione richiesta chiede molto lavoro, perché il tempo per farla è il mio tempo libero. Per questi casi c'è un metodo: la funzione la potete finanziare insieme. Funziona così:
- Si parte da una richiesta vera: una segnalazione su GitHub o i vostri commenti sotto i video.
- Stimo le ore che servono e le scrivo nella pagina dell'app, accanto alla funzione. Da lì nasce l'obiettivo della raccolta.
- Aggiorno l'avanzamento a mano, dalle ricevute: niente contatori automatici e niente conti alla rovescia per mettervi fretta.
- Prima di aprire la raccolta scrivo che cosa succede se l'obiettivo non si raggiunge: i contributi tornano a chi li ha dati, oppure vanno al fondo generale del progetto.
- Quando la funzione è pronta, esce con la stessa licenza libera dell'app: per tutti, anche per chi non ha contribuito.
E qui arriva l'obiezione: chi non ha contribuito la usa gratis? Sì, ed è giusto così. Con il vostro contributo pagate il tempo che serve a scriverla, non il permesso di usarla.
Per ora non c'è nessuna raccolta aperta. Quando ce ne sarà una, la troverete nella pagina dell'app a cui serve.
Il principio, quindi, è semplice: si finanzia il lavoro, mai l'accesso.
Il codice, su GitHub
Una domanda concreta: dove sta, fisicamente, il codice di tutte queste app? Sta su GitHub, nel mio profilo. È la mia officina digitale, aperta dal 2018: lì condivido progetti, esperimenti e strumenti, sviluppati secondo la filosofia del software libero.
Dietro c'è un'idea semplice. Ogni riga di codice è un'occasione per imparare e per insegnare. Lo sviluppo aperto permette a chiunque di esaminare il codice, verificarlo e migliorarlo. E il confronto con sviluppatori di tutto il mondo fa crescere me e i progetti: succede nelle issue, cioè le segnalazioni, e nelle pull request, cioè le modifiche proposte da altri. Perché il software, secondo me, deve essere comprensibile e utilizzabile da tutti, e chi lo usa deve poterlo studiare, modificare e ridistribuire.
Come lavoro lì dentro? Con cinque regole:
- codice pulito e documentato, così chi arriva dopo di me capisce che cosa fa;
- test automatici, per controllare che il programma funzioni come deve;
- le convenzioni e le buone pratiche della comunità, invece di regole inventate da me;
- la sicurezza pensata fin dalle prime fasi del progetto, non aggiunta alla fine;
- un uso attento delle risorse, perché anche il codice che gira ha un impatto sull'ambiente.
E dove voglio arrivare? A strumenti sempre più utili, con una documentazione che li renda accessibili anche a chi è alle prime armi. A nuove tecnologie esplorate senza perdere di vista la libertà di chi le usa. E a un ponte tra lo sviluppo del software e la divulgazione sulla libertà digitale. Perché il software libero, per me, ha un impatto sociale profondo: porta la tecnologia a più persone, lascia il controllo a chi la usa, riduce il divario digitale con alternative accessibili e dimostra che si può sviluppare in un altro modo, in modo sostenibile ed etico. E spero che convinca anche altri sviluppatori a fare lo stesso.
A questo punto qualcuno potrebbe dire: io non sono uno sviluppatore, GitHub mi serve a qualcosa? Sì, perché per aiutare un progetto non serve saper programmare. Ecco che cosa potete fare:
- seguire il mio profilo e mettere una stella ai progetti, così vedete per primi quelli nuovi;
- segnalare un problema o suggerire un miglioramento, con una issue;
- proporre una modifica al codice, con una pull request;
- fare un fork, cioè una copia del progetto, per sviluppare la vostra versione;
- condividere i progetti con chi potrebbe trovarli utili;
- sostenere lo sviluppo con una donazione.
Insomma, la regola è questa: un progetto libero cresce con chi lo usa, lo segnala e ne parla.
«In fondo non siamo tutti artigiani dei nostri sogni?»
— Lorenzo DM