Open-Source w Laboratorium Modelowania Miasta
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.
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.
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
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 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!

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































