Open-Source im City Modelling Lab

Mar 22 2023
Warum und wie wir Open-Source-Software nutzen und veröffentlichen
Im City Modeling Lab sind wir große Fans von Open-Source-Software. MATSim, das Kernwerkzeug unserer agentenbasierten Modelle, ist ein Open-Source-Projekt, das unter der GNU GPL-Lizenz veröffentlicht wird.

Im City Modeling Lab sind wir große Fans von Open-Source-Software.

MATSim , das Kernwerkzeug unserer agentenbasierten Modelle , ist ein Open-Source-Projekt, das unter der GNU GPL-Lizenz veröffentlicht wird . Wir verwenden zahlreiche Open-Source-Frameworks und -Bibliotheken für Python und Java, verwenden Ubuntu auf unseren virtuellen Cloud-Maschinen und erstellen häufig unsere eigenen Docker-Images, indem wir Open-Source-Images von Docker Hub erweitern .

Man kann mit Recht sagen, dass Open-Source-Software für unsere Arbeit von wesentlicher Bedeutung ist.

Alpha Stock Images – http://alphastockimages.com

Warum Open-Source-Software verwenden?

Aus der Verwendung von Open-Source-Software ziehen wir mehrere praktische Vorteile:

  • Die Software, die wir verwenden und auf die wir uns verlassen, ist sehr gut von Experten begutachtet und praxiserprobt; MATSim verfügt über mehr als 300 Forks und fast 100 Mitwirkende und pytestwird beispielsweise von weit über einer halben Million anderer öffentlicher Projekte auf GitHub verwendet
  • Wir können in den Code eintauchen, um unser Verständnis des Problembereichs zu vertiefen
  • Wir können unsere eigenen Änderungen an der Software vornehmen
  • Wir sparen Geld bei den Lizenzgebühren (obwohl dies mit den Entwicklungskosten verrechnet werden muss)

Wir wollen nicht nur Konsumenten von Open-Source-Software sein ; Wir sind auch bestrebt, wo immer möglich einen Beitrag zur Gemeinschaft zu leisten. Diese Beiträge können verschiedene Formen annehmen. Wenn wir beispielsweise einen Fehler in einem von uns verwendeten Open-Source-Tool finden, versuchen wir, einen Fix beizusteuern . Wir veröffentlichen aber auch unsere eigene Software, wo immer möglich, unter Open-Source-Lizenzen. Wir tun dies sowohl aus philosophischen als auch aus praktischen Gründen.

Da wir aus philosophischer Sicht so viel Wert aus den Open-Source-Bemühungen anderer Menschen ziehen, halten wir es für nur richtig, dass wir versuchen, dies auf eine kleine Art und Weise zurückzuzahlen. Darüber hinaus sind wir uns bewusst, dass die Lösung vieler der großen Probleme unserer Zeit – Klimawandel und Ungleichheit, um nur zwei zu nennen, die unsere Arbeit berührt – eine Zusammenarbeit über mehrere Bereiche hinweg erfordert.

Wir glauben, dass die Zusammenarbeit am effektivsten ist, wenn sie offen und transparent ist, und dass Glaubwürdigkeit, Rechenschaftspflicht und Transparenz von entscheidender Bedeutung sind, da wir immer komplexere und leistungsfähigere Modelle verwenden, um Entscheidungen im öffentlichen Raum zu treffen. Mit mehr Macht geht auch mehr Verantwortung einher …

Wenn wir unseren Code unter einer Open-Source-Lizenz öffentlich veröffentlichen und der Community etwas zurückgeben, gewinnen wir praktisch auch einige nützliche Dinge:

  • Unsere Kunden schätzen die Transparenz und das Fehlen einer potenziellen Lieferantenbindung
  • Wir laden zur Community-Peer-Review ein; Mehr Augen auf den Code zu werfen, ist eine gute Sache
  • Wir sind gezwungen, als Benutzer unserer eigenen Software zu denken und nicht nur als Entwickler. Diese benutzerorientierte Perspektive fördert einige bewährte Praktiken, die andernfalls vernachlässigt werden könnten
  • Wir schaffen das Potenzial für die Rekrutierung neuer Mitarbeiter und verschaffen uns so Zugang zu Talenten, Fachwissen und Input von nah und fern
  • Wir schärfen unser Profil in den Bereichen Verkehrsmodellierung und Stadtplanung und helfen uns dabei, Beziehungen zu Gleichgesinnten aufzubauen, die ähnliche Arbeit leisten

Wir möchten unseren Benutzern die bestmögliche Erfahrung bei der Verwendung unserer Software bieten. Unser Ziel ist es, den Zeit- und Arbeitsaufwand zu minimieren, der für einen neuen Benutzer erforderlich ist, um unsere Tools zu verstehen, zu installieren und zu verwenden.

Zu diesem Zweck folgen wir einem Prozess, der auf einem agilen Software-Lebenszyklus basiert, der vom UK Government Digital Services Agile Delivery Manual übernommen wurde . Während eine Softwarekomponente die verschiedenen Lebenszyklusphasen durchläuft, von Discovery bis Live , müssen wir in unserer Checkliste weitere Kästchen ankreuzen. Wenn wir ein Repo öffentlich veröffentlichen, entspricht es allen unseren Best Practices.

Unsere Checkliste für Software-Lebenszyklus/Qualitätstore

Das Ergebnis ist, dass unsere GitHub-Repos in mancher Hinsicht alle sehr ähnlich aussehen:

  • Wir glauben an eine gute Dokumentation, daher finden Sie immer eine umfassende README.mdDatei im Stammverzeichnis des Projekts (siehe dieses Beispiel von PAM).
  • Für Bibliotheken bevorzugen wir ausführbare Tutorials, die unseren Benutzern den Umgang mit der API beibringen, wie Sie in PAM und GeNet sehen können
  • Wir machen deutlich, wie unsere Nutzer über eine CONTRIBUTING.mdDatei und einen klar definierten Verhaltenskodex beitragen können, wie er in GeNet sichtbar ist
  • Wir machen die funktionale Korrektheit unseres Codes durch eine robuste Suite von Unit-Tests überprüfbar und integrieren häufig weitere automatisierte Tests wie diese Smoke-Tests für die Jupyter-Notebook-Beispiele von GeNet
  • Uns gefällt die freizügige Open-Source- MIT-Lizenz , die Sie im Mittelpunkt finden und LICENSE.mdalle Bedingungen und Einschränkungen der Nutzung klar darlegen
  • PAMs MIT-Lizenz
    Automatisierte Rauchtests für PAMs Jupyter-Notebooks

Wir kennzeichnen alle unsere GitHub-Repos mit dem CML- Thema, sodass Sie sie alle unter der URL https://github.com/search?q=org:arup-group+topic:cml&type=repositories finden und von dort aus fortfahren können.

Alle Open-Source-Projekte von CML auf GitHub

Alle Dinge, die wir bisher veröffentlicht haben, hängen auf die eine oder andere Weise mit unserer Arbeit mit agentenbasierten Modellen zusammen. Eine kurze Zusammenfassung:

  • PAM : Tools zum programmgesteuerten Generieren und Ändern von Transportnachfrageszenarien
  • GeNet : Tools zur programmgesteuerten Bearbeitung graphbasierter Darstellungen öffentlicher Verkehrsnetze, wie sie beispielsweise als Eingabe für MATSim verwendet werden
  • OSMOX : Ein Befehlszeilenprogramm zum Extrahieren von Standorten und Features von Einrichtungen aus OpenStreetMap-Daten (OSM).
  • Elara : Ein Befehlszeilendienstprogramm zum Analysieren großer, halbstrukturierter MATSim-Ausgabedaten und zum Kalibrieren/Validieren von Modellen
  • MC : Ein Befehlszeilenprogramm, um die MATSim-Konfiguration weniger mühsam zu machen
  • Londinium : Ein halbsynthetischer MATSim-Datensatz zum Erstellen realistischer Modelle, die aber dennoch gerade klein genug sind, um in angemessener Zeit auf einem typischen Entwickler-Laptop ausgeführt zu werden

Wir sind sicherlich ein Haufen ABM-Fans, aber nicht alles, was wir bauen, hat mit ABM zu tun.

Ein Beispiel für eine allgemein nützliche Software, die wir erstellt haben, ist eine AWS Lambda- Anwendung namens AEMon, die Ereignisse in einem AWS-Konto in Benachrichtigungen in Slack umwandelt , unserem bevorzugten internen Messaging- und Kollaborationssystem. Wir setzen AEMon seit einigen Jahren mit gutem Erfolg in einer Reihe von Arup-Teams ein und es erfüllt bereits alle erforderlichen Kriterien in unserer Qualitätscheckliste. Wir werden es bald öffentlich veröffentlichen.

Obwohl wir nicht alles, was wir erstellen, öffentlich veröffentlichen können, sind wir definitiv noch nicht damit fertig, Open-Source-Beiträge zu leisten, also… bleiben Sie dran!