👨‍💻 🌐 🙌
Come contribuire al
libero


👉 https://este.linux.it
Attribution 4.0 International (CC BY 4.0)

Cos'è il Libero?

Il concetto di libertà, applicato al software ma in modo più generico e universale ad altri ambiti, è stato ben descritto da Sébastien Broca nel libro Utopia del Software Libero (2018).

Questo movimento si oppone alla privatizzazione e al controllo esclusivo delle conoscenze e delle tecnologie. Crede che la conoscenza e il software debbano essere accessibili a tutti e tutte, senza restrizioni.

Libertà digitale

Si riferisce alla difesa delle libertà fondamentali degli individui nel mondo digitale, come la libertà di espressione, la privacy, la sicurezza e la neutralità della rete. Tutte queste ideologie si sforzano di raggiungere una società condivisa, aperta e inclusiva nel mondo digitale.

🤔 Perché contribuire al libero?

  • 🏊 siamo sempre più immersi nel digitale e non si può facilmente tornare indietro
  • 🔮 ciò che avviene nei nostri dispositivi deve essere verificabile e trasparente
  • 🔐 non abbiamo un serio controllo su cosa avviene ai nostri dati e alla nostra riservatezza (privacy)
  • 👿 troppo potere nelle mani di aziende tecnologiche (Google, Meta, Microsoft, ecc)
  • 🕸️ il potere non va centralizzato ma distribuito
  • 🪁 l'arte, la conoscenza, l'informazione, il software, dovrebbero essere libere

NON

E' difficile contribuire al software libero?

😱

NON

E' difficile contribuire al software libero?

😉

Ci sono vari metodi e difficoltà per contribuire

Si può contribuire con:

  1. 📣 Divulgazione
  2. ⚠️ Test e segnalazione problemi o errori
  3. 🗣️ Traduzioni
  4. 👨‍💻 Programmazione

📣 Divulgazione

🤷 E' il metodo più semplice: condividere un software o un'app ad amici e amiche, e aiutare a usarle, è un ottimo punto di partenza.

⚠️ Test e segnalazione problemi o errori

🔎 Trova errori di funzionamento di un software o app, oppure un problema di scrittura o un problema di sicurezza.

Cercando su un motore di ricerca puoi trovare facilmente il sito web di riferimento del software o dell'app, dove solitamente ci sono dei facili strumenti di segnalazione problemi.

⚠️ Test e segnalazione problemi o errori

Solitamente i problemi vengono chiamati issue nei vari portali:

  • Github
  • GitLab
  • Gitea
  • ecc...

Github

Gitlab

Gitea

🗣️ Traduzioni

Se chi ha sviluppato un software ha predisposto un sistema di traduzioni, è possibile contribuire a tradurlo nella propria lingua o in un'altra.

Nel sito web di riferimento di ciascun software libero puoi trovare come contribuire nella traduzione.

🗣️ Transifex.com

E' una piattaforma dove poter tradurre testi e parole che poi verranno inclusi nei software.

E' uno dei tanti metodi di traduzione, forse il più famoso e semplice, anche se non è libero ma contribuisce a semplificare il lavoro di traduzione.

👉 github.com/maproulette/maproulette3

🗣️ Transifex.com

🗣️ Transifex.com

🗣️ Traduzione avanzata

🗣️ Traduzione avanzata

La modalità più semplice e diretta è aggiornare i file delle traduzioni direttamente :-)

👉 github.com/piratenpanda/veggiekarte

🗣️ Traduzione avanzata

🗣️ Traduzione avanzata

🗣️ Traduzione avanzata

Ma come fare ad aggiornare i file di un altro progetto??

👨‍💻 Programmazione

E ora...

...impariamo a contribuire attivamente entrando nel cuore del sistema!

👨‍💻 Programmazione

Lo strumento più usato per pubblicare codice e collaborare è

GIT

👨‍💻 Programmazione

Prima di GIT si usavano SVN o CVS, i quali non erano prestanti e non gestivano determinati flussi come i software di versionamento proprietari di quegli anni. Ogni progetto viene archiviato in un cosiddetto repository.

Sourceforge.net era famoso negli anni 2000 per offrire spazi gratuiti per i progetti open source e si poteva caricare il codice tramite CVS o SVN.

👨‍💻 Programmazione

Principali peculiarità di GIT:

sviluppo non lineare: supporta la diramazione (branch) e la fusione (merge), e strumenti per navigarci all'interno. Significa che si possono creare più rami (branch) di un progetto per sviluppare nuove funzionalità e, al termine, si esegue una fusione (merge) con il codice di un altro ramo, ad esempio il principale.

👨‍💻 Programmazione

Principali peculiarità di GIT:

sviluppo distribuito: invece di un brach, un programmatore che non fa parte del progetto può eseguire una biforcazione (fork). Viene creata una copia locale dell'intero archivio. Al termine delle modifiche si esegue una richiesta di caricare il codice (pull request) nell'archivio principale. Chi amministra il progetto può approvare o meno la richiesta di caricamento, e può commentarla o modificarla prima di importarla.

👨‍💻 Programmazione

Principali peculiarità di GIT:

sviluppo distribuito: invece di un brach, un programmatore che non fa parte del progetto può eseguire una biforcazione (fork). Viene creata una copia locale dell'intero archivio. Al termine delle modifiche si esegue una richiesta di caricare il codice (pull request) nell'archivio principale. Chi amministra il progetto può approvare o meno la richiesta di caricamento, e può commentarla o modificarla prima di importarla.

👨‍💻 Programmazione

Principali peculiarità di GIT:

gestione dei conflitti: può capitare che si sviluppino nuove funzionalità del software in un ramo (branch) piuttosto che in una copia locale (fork). Quando si andranno a caricare queste modifiche non è detto che il ramo principale non abbia subito modifiche da quando lo si è scaricato, magari negli stessi punti modificati, generando quindi dei conflitti. Git, insieme agli strumenti di sviluppo, tenta di fare una fusione (merge) automatica e, dove non riesce, propone una fusione manuale.

👨‍💻 Programmazione

Quali sono le principali operazioni di GIT?

  • CLONE (clona): crea una copia locale dell'archivio di un progetto
  • ADD (aggiungi): aggiunge i file modificati
  • COMMIT ("commetti"/esegui): scrive le modifiche applicate in un albero interno
  • PUSH (spingi): invia le modifiche nell'archivio remoto
  • PULL (tira): scarica le modifiche remote nella copia locale

👨‍💻 Programmazione

Come funziona git?

👨‍💻 Programmazione

Quali ambienti di sviluppo usare?

Dipende dal linguaggio:

  • PyCharm: dedicato a sviluppatori Python
  • Eclipse: nato per sviluppatori Java ma supporta anche C/C++, PHP e altri
  • Atom: generico, per novizi
  • Codium: è la versione libera di VisualStudio Code di Microsoft ma senza traccianti, più flessibile e con molte estensioni installabili

👨‍💻 Programmazione

Si può anche contribuire direttamente via web dalla piattaforma che ospita il progetto:

👨‍💻 Programmazione

Da dove iniziare?

Navighiamo qualche progetto e poi creiamo un nuovo progetto su codeberg.org e facciamo qualche esperimento insieme!