Open-Source w Laboratorium Modelowania Miasta

Mar 22 2023
Dlaczego i jak konsumujemy i publikujemy oprogramowanie typu open source
W City Modeling Lab jesteśmy wielkimi fanami oprogramowania typu open source. MATSim, narzędzie leżące u podstaw naszych modeli opartych na agentach, jest projektem typu open source wydanym na licencji GNU GPL.

W City Modeling Lab jesteśmy wielkimi fanami oprogramowania typu open source.

MATSim , narzędzie leżące u podstaw naszych modeli opartych na agentach , jest projektem typu open source wydanym na licencji GNU GPL . Korzystamy z wielu frameworków i bibliotek open source dla Pythona i Javy, używamy Ubuntu na naszych maszynach wirtualnych w chmurze i często tworzymy własne obrazy Docker, rozszerzając obrazy open source z Docker Hub .

Można śmiało powiedzieć, że oprogramowanie typu open source jest niezbędne w naszej pracy.

Obrazy Alfa — http://alphastockimages.com

Dlaczego warto korzystać z oprogramowania open source?

Z korzystania z oprogramowania open source czerpiemy kilka praktycznych korzyści:

  • Oprogramowanie, którego używamy i na którym polegamy, jest bardzo dobrze recenzowane i przetestowane w praktyce; MATSim ma ponad 300 rozwidleń i prawie 100 współtwórców, i pytestna przykład jest używany przez ponad pół miliona innych publicznych projektów na GitHub
  • Możemy zagłębić się w kod, aby lepiej zrozumieć przestrzeń problemową
  • Możemy wprowadzić własne zmiany w oprogramowaniu
  • Oszczędzamy pieniądze na opłatach licencyjnych (chociaż musi to być zrekompensowane kosztami deweloperskimi)

Nie chcemy być tylko konsumentami oprogramowania open-source; staramy się również wnosić wkład w społeczność, gdzie to możliwe. Wkłady te przybierają różne formy. Na przykład, jeśli znajdziemy błąd w używanym przez nas narzędziu typu open source, staramy się udostępnić poprawkę . Ale tam, gdzie to możliwe, wydajemy również własne oprogramowanie na licencjach open source. Robimy to zarówno z powodów filozoficznych, jak i praktycznych.

Z filozoficznego punktu widzenia, ponieważ czerpiemy tak wielką wartość z wysiłków innych ludzi związanych z otwartym kodem źródłowym, uważamy za słuszne, abyśmy próbowali się za to odwdzięczyć w jakiś mały sposób. Ponadto zdajemy sobie sprawę, że rozwiązania wielu poważnych problemów naszych czasów – zmiany klimatyczne i nierówności, by wymienić tylko dwa, których dotyka nasza praca – wymagają współpracy w wielu dziedzinach.

Wierzymy, że współpraca jest najbardziej efektywna, gdy jest otwarta i przejrzysta, a wiarygodność, odpowiedzialność i przejrzystość są kluczowe, ponieważ używamy coraz bardziej złożonych i potężnych modeli do podejmowania decyzji w przestrzeni publicznej. Z większą mocą wiąże się większa odpowiedzialność…

W praktyce, kiedy udostępniamy publicznie nasz kod na licencji open source, a także oddajemy go społeczności, zyskujemy również kilka przydatnych rzeczy:

  • Nasi klienci doceniają przejrzystość i brak uzależnienia od potencjalnego dostawcy
  • Zachęcamy społeczność do recenzowania; więcej oczu na kod to dobra rzecz
  • Jesteśmy zmuszeni myśleć jak użytkownicy naszego własnego oprogramowania, a nie tylko jako programiści; ta perspektywa skoncentrowana na użytkowniku zachęca do stosowania dobrych praktyk, które w przeciwnym razie można by zaniedbać
  • Tworzymy potencjał do rekrutacji nowych współpracowników, dając nam dostęp do talentów, wiedzy i wkładu z daleka
  • Podnosimy naszą pozycję w społecznościach zajmujących się modelowaniem transportu i planowaniem miast, pomagając nam budować relacje z podobnie myślącymi ludźmi wykonującymi podobną pracę

Chcemy zapewnić naszym użytkownikom jak najlepsze wrażenia z korzystania z naszego oprogramowania. Naszym celem jest zminimalizowanie czasu i wysiłku potrzebnego nowemu użytkownikowi do zrozumienia, zainstalowania i korzystania z naszych narzędzi.

W tym celu postępujemy zgodnie z procesem opartym na zwinnym cyklu życia oprogramowania, zaadaptowanym z podręcznika rządowego rządu Wielkiej Brytanii dotyczącego zwinnego dostarczania usług cyfrowych . W miarę jak komponent oprogramowania przechodzi przez różne fazy cyklu życia, od Discovery do Live , musimy zaznaczyć więcej pól na naszej liście kontrolnej. Zanim publicznie opublikujemy repozytorium, jest ono zgodne ze wszystkimi naszymi najlepszymi praktykami.

Nasza lista kontrolna cyklu życia oprogramowania/bram jakości

W rezultacie nasze repozytoria GitHub wyglądają bardzo podobnie pod pewnymi względami:

  • Wierzymy w dobrą dokumentację, dlatego zawsze znajdziesz obszerny README.mdplik w katalogu głównym projektu (zobacz ten przykład z PAM)
  • W przypadku bibliotek lubimy wykonywalne samouczki, które uczą naszych użytkowników, jak korzystać z API, jak widać w PAM i GeNet
  • Wyjaśniamy, w jaki sposób nasi użytkownicy mogą wnieść swój wkład za pośrednictwem CONTRIBUTING.mdpliku i jasno zdefiniowanego kodeksu postępowania, co jest widoczne w GeNet
  • Sprawiamy, że poprawność funkcjonalna naszego kodu jest weryfikowalna za pomocą solidnego zestawu testów jednostkowych, a ponadto często dołączamy dalsze testy automatyczne, takie jak te testy dymne dla przykładów notebooków GeNet Jupyter
  • Podoba nam się liberalna licencja MIT typu open source , którą znajdziesz z przodu i na środku LICENSE.md, dzięki czemu wszystkie warunki i ograniczenia użytkowania są krystalicznie jasne
  • Licencja PAM MIT
    Zautomatyzowane testy dymu dla notebooków Jupyter firmy PAM

Oznaczamy wszystkie nasze repozytoria GitHub tematem CML , dzięki czemu można je wszystkie znaleźć pod adresem URL https://github.com/search?q=org:arup-group+topic:cml&type=repositories i stamtąd.

Wszystkie projekty open source CML na GitHub

Wszystkie rzeczy, które do tej pory opublikowaliśmy, są w ten czy inny sposób związane z naszą pracą z modelami opartymi na agentach . Szybkie podsumowanie:

  • PAM : Narzędzia do programowego generowania i modyfikowania scenariuszy zapotrzebowania na transport
  • GeNet : Narzędzia do programowego manipulowania reprezentacjami sieci transportu publicznego opartymi na wykresach, takimi jak te używane jako dane wejściowe do MATSim
  • OSMOX : Narzędzie wiersza poleceń do wyodrębniania lokalizacji i funkcji obiektu z danych OpenStreetMap (OSM).
  • Elara : narzędzie wiersza poleceń do analizowania dużych, częściowo ustrukturyzowanych danych wyjściowych MATSim oraz kalibrowania / sprawdzania poprawności modeli
  • MC : Narzędzie wiersza poleceń, dzięki któremu konfiguracja MATSim jest mniej bolesna
  • Londinium : półsyntetyczny zestaw danych MATSim do tworzenia modeli, które są realistyczne, ale wciąż wystarczająco małe, aby działać w rozsądnym czasie na typowym laptopie dla programistów

Z pewnością jesteśmy grupą szefów ABM, ale nie wszystko, co budujemy, jest związane z ABM.

Przykładem ogólnie przydatnego oprogramowania, które stworzyliśmy, jest aplikacja AWS Lambda o nazwie AEMon, która zamienia zdarzenia na koncie AWS w powiadomienia w Slack , naszym wybranym wewnętrznym systemie komunikacji i współpracy. Używamy AEMon z dobrym skutkiem w kilku zespołach Arup od kilku lat i już spełnia ono wszystkie niezbędne wymagania na naszej liście kontrolnej jakości. Wkrótce udostępnimy go publicznie.

Chociaż nie możemy publicznie udostępnić wszystkiego, co tworzymy, zdecydowanie nie skończyliśmy jeszcze wnosić wkładu w open source, więc… bądźcie czujni!