Contribuire allo sviluppo

Dicono che l’assiduo lettore prima o poi desidererà scrivere qualcosa e divenire autore anche lui: analogamente l’assiduo utilizzatore di un software finisce con il voler dare il suo contributo, o almeno si spera !

Ecco come fare per contribuire a Sagemath.

Chiunque può contribuire allo sviluppo di Sage, cioé al suo miglioramento ed incremento ma naturalmente tale processo deve essere organizzato, ed i partecipanti devono seguire precise regole nella stesura del codice. Come in ogni processo di sviluppo di software non elementare vi è una versione stabile, la cui affidabilità di funzionamento è stata provata e che può essere rilasciata al pubblico, e delle versioni di sviluppo, su cui avviene il lavoro di scrittura di nuovo codice, di correzione dei bachi, e di test.

L’aspetto collaborativo è essenziale, secondo il principio che molti occhi (e molte menti) vedono meglio gli errori di quanto possa fare una sola persona: chi scrive codice deve farlo in maniera il più possibile modulare, cioé astenersi dall’implementazione di funzionalità in enormi blocchi di codice sorgente, più difficili da analizzare di molte piccole unità, e deve provvedere lui stesso a scrivere dei test per il suo codice, oltre alla documentazione (che risulta facilitata dalle funzioni di Python a ciò preposte). Quanto fatto viene poi verificato da altre persone prima di essere considerato accettabile. Ad esempio è previsto, tra i test da effettuarsi prima dell’inclusione nella versione in sviluppo, la compilazione con il resto di Sage ed il successivo lancio di tutti i test di tutti i componenti di Sage per verificare che la nuova funzionalità non abbia effetti collaterali.

Il centro dello sviluppo è un server di gestione delle versioni del codice sorgente, che ha una architettura distribuita non gerarchica: Git. Tale software fu scritto per organizzare lo sviluppo del kernel Linux ed è utilizzato in molti progetti open-source. A livello di infrastruttura ci si appoggia a Github, dove sono ospitati molti altri progetti simili.

Chi vuole partecipare allo sviluppo di Sage deve pertanto innanzitutto installare sul suo PC un server Git locale, poi effettuare una copia della versione di sviluppo di Sage presente su Github, e poi generare in locale delle versioni personalizzate (rami) su cui fare le modifiche/aggiunte che ritiene opportune. Quando ritiene di avere finito il suo lavoro, eseguirà il processo inverso di upload della sua versione dal server Git locale a Github: i meccanismi interni di Git fanno sì che venga fatto l’upload solo del codice modificato, e che esso venga posto in un limbo, su Github, fintanto che le modifiche fatte non saranno state verificate ed approvate.

Chiaramente affinché il sistema funzioni deve essere mantenuta una “lista” delle modifiche richieste, fatte, da verificare, ecc., cioé un sistema di “bug tracking”. Per Sage è stato scelto Trac: esso è un database con interfaccia web a cui chiunque può accedere per visualizzare l’elenco dei bachi e delle richieste di miglioramenti, e del relativo stato di avanzamento, così come avviene anche in altri progetti open-source (cfr. server Launchpad per Ubuntu).

Se la visualizzazione è aperta a tutti, l’immissione e la modifica di informazioni devono essere tracciate ed autorizzate, e pertanto è necessario una registrazione, che non è un processo automatico ma implica essere contattati via email da un collaboratore di Sage. La registrazione permette l’intervento su Trac ma non la possibilità di inviare codice. D’altro canto si può inviare codice solo relativamente ad un baco o miglioria segnalati su Trac, quindi il primo passo per modificare Sage è creare una richiesta (ticket) su Trac, o sceglierne una esistente su cui non sta lavorando nessun altro.  Successivamente ci si dota di un identificatore univoco (chiave) associato al proprio profilo utente e solo allora si può inviare codice, nella modalità sopra detta, al progetto Sage.

Lascia un commento

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.