Open-Source nel City Modeling Lab

Mar 22 2023
Perché e come consumiamo e pubblichiamo software open-source
Nel City Modeling Lab, siamo grandi fan del software open-source. MATSim, lo strumento alla base dei nostri modelli basati su agenti, è un progetto open-source rilasciato sotto licenza GNU GPL.

Nel City Modeling Lab, siamo grandi fan del software open-source.

MATSim , lo strumento alla base dei nostri modelli basati su agenti , è un progetto open-source rilasciato sotto licenza GNU GPL . Utilizziamo moltissimi framework e librerie open source per Python e Java, utilizziamo Ubuntu sulle nostre macchine virtuali cloud e spesso creiamo le nostre immagini Docker estendendo le immagini open source da Docker Hub .

È corretto affermare che il software open source è essenziale per il nostro lavoro.

Immagini Stock Alpha — http://alphastockimages.com

Perché utilizzare software open source?

Traiamo diversi vantaggi pratici dall'utilizzo di software open-source:

  • Il software che utilizziamo e da cui dipendiamo è molto ben sottoposto a revisione paritaria e testato su strada; MATSim ha oltre 300 fork e quasi 100 collaboratori e, pytestad esempio, è utilizzato da oltre mezzo milione di altri progetti pubblici su GitHub
  • Possiamo scavare nel codice per approfondire la nostra comprensione dello spazio del problema
  • Possiamo apportare le nostre modifiche al software
  • Risparmiamo sui costi di licenza (anche se questo deve essere compensato con i costi di sviluppo)

Non vogliamo essere solo consumatori di software open-source; ci sforziamo anche di contribuire alla comunità ove possibile. Questi contributi assumono diverse forme. Ad esempio, se troviamo un bug in uno strumento open source che stiamo utilizzando, proviamo a contribuire con una correzione . Ma rilasciamo anche il nostro software con licenze open source ove possibile. Lo facciamo per ragioni filosofiche e pratiche.

Filosoficamente, dal momento che traiamo così tanto valore dagli sforzi open source di altre persone, riteniamo sia giusto cercare di ripagarlo in qualche modo. Inoltre, riconosciamo che le soluzioni a molti dei grandi problemi della nostra epoca - cambiamento climatico e disuguaglianza, per citarne due toccati dal nostro lavoro - richiedono la collaborazione in più domini.

Crediamo che la collaborazione sia più efficace quando è aperta e trasparente e che la credibilità, la responsabilità e la trasparenza siano tutte vitali poiché utilizziamo modelli sempre più complessi e potenti per prendere decisioni nello spazio pubblico. Con più potere derivano più responsabilità...

In pratica, quando rilasciamo pubblicamente il nostro codice con una licenza open-source, oltre a restituire alla comunità, otteniamo anche alcune cose utili:

  • I nostri clienti apprezzano la trasparenza e l'assenza di potenziali vincoli al fornitore
  • Invitiamo la comunità peer review; più occhi sul codice è una buona cosa
  • Siamo costretti a pensare come utenti del nostro software piuttosto che come semplici sviluppatori; questa prospettiva incentrata sull'utente incoraggia alcune buone pratiche che altrimenti potrebbero essere trascurate
  • Creiamo il potenziale per reclutare nuovi collaboratori, dandoci accesso a talenti, competenze e input da ogni parte del mondo
  • Alziamo il nostro profilo nelle comunità di modellazione dei trasporti e urbanistica, aiutandoci a costruire relazioni con persone che la pensano allo stesso modo e che svolgono lavori simili

Vogliamo offrire ai nostri utenti la migliore esperienza possibile nell'utilizzo del nostro software. Miriamo a ridurre al minimo il tempo e lo sforzo necessari a un nuovo utente per comprendere, installare e utilizzare i nostri strumenti.

A tal fine, seguiamo un processo basato su un ciclo di vita software agile adattato dal Manuale di consegna agile dei servizi digitali del governo del Regno Unito . Man mano che un componente software attraversa le diverse fasi del ciclo di vita, da Discovery a Live , dobbiamo spuntare più caselle nella nostra lista di controllo. Quando pubblichiamo pubblicamente un repository, aderisce a tutte le nostre migliori pratiche.

La nostra lista di controllo del ciclo di vita del software/qualità

Il risultato è che i nostri repository GitHub sembrano tutti molto simili in qualche modo:

  • Crediamo nella buona documentazione, quindi troverai sempre un README.mdfile completo nella radice del progetto (vedi questo esempio da PAM)
  • Per le biblioteche, ci piacciono i tutorial eseguibili che insegnano ai nostri utenti come utilizzare l'API, come puoi vedere in PAM e GeNet
  • Chiariamo come i nostri utenti possono contribuire tramite un CONTRIBUTING.mdfile e un codice di condotta chiaramente definito, come evidente in GeNet
  • Rendiamo verificabile la correttezza funzionale del nostro codice attraverso una solida suite di test unitari, inoltre spesso includiamo ulteriori test automatizzati come questi test del fumo per gli esempi di notebook Jupyter di GeNet
  • Ci piace la licenza MIT open source permissiva , che troverai in primo piano e al centro LICENSE.md, rendendo tutte le condizioni e le limitazioni di utilizzo cristalline
  • Licenza MIT di PAM
    Test automatizzati del fumo per i notebook Jupyter di PAM

Contrassegniamo tutti i nostri repository GitHub con l' argomento CML in modo che tu possa trovarli tutti dall'URL https://github.com/search?q=org:arup-group+topic:cml&type=repositories e andare da lì.

Tutti i progetti open source di CML su GitHub

Tutte le cose che abbiamo rilasciato finora sono legate al nostro lavoro con i modelli basati su agenti , in un modo o nell'altro. Un breve riassunto:

  • PAM : strumenti per generare e modificare in modo programmatico gli scenari della domanda di trasporto
  • GeNet : strumenti per la manipolazione programmatica di rappresentazioni basate su grafi delle reti di trasporto pubblico, come quelle utilizzate come input per MATSim
  • OSMOX : un'utilità a riga di comando per estrarre le posizioni e le caratteristiche delle strutture dai dati di OpenStreetMap (OSM).
  • Elara : un'utilità della riga di comando per l'analisi di dati di output MATSim di grandi dimensioni e semi-strutturati e per la calibrazione/convalida dei modelli
  • MC : Un'utilità a riga di comando per rendere la configurazione di MATSim meno faticosa
  • Londinium : un set di dati MATSim semi-sintetico per la creazione di modelli realistici, ma comunque abbastanza piccoli da poter essere eseguiti in tempi ragionevoli su un tipico laptop per sviluppatori

Siamo certamente un gruppo di teste ABM, ma non tutto ciò che costruiamo è correlato all'ABM.

Un esempio di un software genericamente utile che abbiamo creato è un'applicazione AWS Lambda chiamata AEMon che trasforma gli eventi in un account AWS in notifiche in Slack , il nostro sistema di messaggistica e collaborazione interno preferito. Utilizziamo AEMon con buoni risultati da un certo numero di team Arup da un paio d'anni e soddisfa già tutte le caselle necessarie nella nostra lista di controllo della qualità. Lo pubblicheremo presto.

Anche se non possiamo rilasciare pubblicamente tutto ciò che costruiamo, sicuramente non abbiamo ancora finito di fornire contributi open source, quindi... rimanete sintonizzati!