Open-Source dans le City Modeling Lab

Mar 22 2023
Pourquoi et comment nous consommons et publions des logiciels open source
Au City Modeling Lab, nous sommes de grands fans de logiciels open source. MATSim, l'outil au cœur de nos modèles basés sur des agents, est un projet open source publié sous la licence GNU GPL.

Au City Modeling Lab, nous sommes de grands fans de logiciels open source.

MATSim , l'outil au cœur de nos modèles à base d'agents , est un projet open source publié sous la licence GNU GPL . Nous utilisons un grand nombre de frameworks et de bibliothèques open source pour Python et Java, nous utilisons Ubuntu sur nos machines virtuelles cloud et nous créons souvent nos propres images Docker en étendant les images open source de Docker Hub .

Il est juste de dire que les logiciels libres sont essentiels à notre travail.

Alpha Stock Images — http://alphastockimages.com

Pourquoi utiliser un logiciel open source ?

Nous tirons plusieurs avantages pratiques de l'utilisation de logiciels open source :

  • Le logiciel que nous utilisons et dont nous dépendons est très bien évalué par des pairs et testé sur le terrain ; MATSim a plus de 300 fourches et près de 100 contributeurs, et pytest, par exemple, est utilisé par plus d'un demi-million d'autres projets publics sur GitHub
  • Nous pouvons creuser dans le code pour approfondir notre compréhension de l'espace du problème
  • Nous pouvons apporter nos propres modifications au logiciel
  • Nous économisons de l'argent sur les frais de licence (bien que cela doive être compensé par les coûts de développement)

Nous ne voulons pas seulement être des consommateurs de logiciels open source ; nous nous efforçons également de contribuer à la communauté dans la mesure du possible. Ces apports prennent plusieurs formes. Par exemple, si nous trouvons un bogue dans un outil open source que nous utilisons, nous essayons d' apporter un correctif . Mais nous publions également nos propres logiciels sous des licences open source dans la mesure du possible. Nous le faisons pour des raisons à la fois philosophiques et pratiques.

Philosophiquement, puisque nous tirons tant de valeur des efforts open source d'autres personnes, nous pensons qu'il est juste que nous essayions de rembourser cela d'une petite manière. De plus, nous reconnaissons que les solutions à bon nombre des grands problèmes de notre époque - le changement climatique et les inégalités, pour n'en nommer que deux que notre travail touche - nécessitent une collaboration dans plusieurs domaines.

Nous pensons que la collaboration est plus efficace lorsqu'elle est ouverte et transparente et que la crédibilité, la responsabilité et la transparence sont essentielles car nous utilisons des modèles de plus en plus complexes et puissants pour prendre des décisions dans l'espace public. Avec plus de pouvoir vient plus de responsabilités…

Pratiquement, lorsque nous publions notre code publiquement sous une licence open-source, en plus de redonner à la communauté, nous gagnons également des choses utiles :

  • Nos clients apprécient la transparence et le manque de verrouillage potentiel des fournisseurs
  • Nous invitons la communauté à évaluer par les pairs ; plus d'yeux sur le code est une bonne chose
  • Nous sommes obligés de penser comme des utilisateurs de nos propres logiciels plutôt que comme de simples développeurs ; cette perspective centrée sur l'utilisateur encourage certaines bonnes pratiques qui peuvent autrement être négligées
  • Nous créons le potentiel pour recruter de nouveaux collaborateurs, nous donnant accès à des talents, à une expertise et à des contributions de partout
  • Nous renforçons notre visibilité dans les communautés de modélisation des transports et d'urbanisme, en nous aidant à établir des relations avec des personnes partageant les mêmes idées et effectuant un travail similaire.

Nous voulons offrir à nos utilisateurs la meilleure expérience possible dans l'utilisation de notre logiciel. Notre objectif est de minimiser le temps et les efforts nécessaires à un nouvel utilisateur pour comprendre, installer et utiliser nos outils.

À cette fin, nous suivons un processus basé sur un cycle de vie logiciel agile adapté du manuel de livraison agile des services numériques du gouvernement britannique . Au fur et à mesure qu'un composant logiciel passe par les différentes phases du cycle de vie, de Discovery à Live , nous devons cocher davantage de cases dans notre liste de contrôle. Au moment où nous publions publiquement un référentiel, il adhère à toutes nos meilleures pratiques.

Notre liste de contrôle du cycle de vie du logiciel/des barrières de qualité

Le résultat est que nos dépôts GitHub se ressemblent tous à certains égards :

  • Nous croyons en une bonne documentation, vous trouverez donc toujours un README.mdfichier complet à la racine du projet (voir cet exemple de PAM)
  • Pour les bibliothèques, nous aimons les tutoriels exécutables qui enseignent à nos utilisateurs comment utiliser l'API, comme vous pouvez le voir dans PAM et GeNet
  • Nous expliquons clairement comment nos utilisateurs peuvent contribuer via un CONTRIBUTING.mdfichier et un code de conduite clairement défini, comme en témoigne GeNet
  • Nous rendons l'exactitude fonctionnelle de notre code vérifiable grâce à une suite robuste de tests unitaires, et nous incluons souvent d'autres tests automatisés tels que ces tests de fumée pour les exemples de notebook Jupyter de GeNet.
  • Nous aimons la licence MIT open-source permissive , que vous trouverez au premier plan dans LICENSE.md, ce qui rend toutes les conditions et limitations d'utilisation parfaitement claires
  • Licence MIT de PAM
    Tests de fumée automatisés pour les notebooks Jupyter de PAM

Nous marquons tous nos référentiels GitHub avec le sujet CML afin que vous puissiez tous les trouver à partir de l'URL https://github.com/search?q=org:arup-group+topic:cml&type=repositories et partir de là.

Tous les projets open source de CML sur GitHub

Toutes les choses que nous avons publiées jusqu'à présent sont liées à notre travail avec les modèles basés sur les agents , d'une manière ou d'une autre. Un petit résumé :

  • PAM : Outils pour générer et modifier par programmation des scénarios de demande de transport
  • GeNet : outils pour manipuler par programmation des représentations basées sur des graphes des réseaux de transport en commun, tels que ceux utilisés comme entrée pour MATSim
  • OSMOX : Un utilitaire de ligne de commande pour extraire les emplacements et les caractéristiques des installations à partir des données OpenStreetMap (OSM)
  • Elara : un utilitaire de ligne de commande pour analyser les données de sortie MATSim volumineuses et semi-structurées et calibrer/valider les modèles
  • MC : Un utilitaire en ligne de commande pour rendre la configuration de MATSim moins pénible
  • Londinium : un ensemble de données MATSim semi-synthétique pour créer des modèles réalistes, mais suffisamment petits pour s'exécuter en un temps raisonnable sur un ordinateur portable de développeur typique

Nous sommes certainement un groupe de responsables ABM, mais tout ce que nous construisons n'est pas lié à ABM.

Un exemple de logiciel génériquement utile que nous avons créé est une application AWS Lambda appelée AEMon qui transforme les événements d'un compte AWS en notifications dans Slack , notre système de messagerie interne et de collaboration de prédilection. Nous utilisons AEMon à bon escient dans un certain nombre d'équipes Arup depuis quelques années, et il coche déjà toutes les cases nécessaires dans notre liste de contrôle de la qualité. Nous le publierons bientôt publiquement.

Bien que nous ne puissions pas publier publiquement tout ce que nous construisons, nous n'avons certainement pas encore fini de faire des contributions open source, alors… restez à l'écoute !