Meet HOTOSM
Welcome all!
Greetings to aspiring and fellow interns, and to those interested in what the community at HOTOSM is occupied with! I would like to introduce you to the vast aspects of work here at HOT, go over details of the project I am currently involved in, and explain more about specific terms.
Let's dive in! 🌊
HOTOSM - community, goals, impact, projects and tools
Humanitarian OpenStreetmapTeam (HOT) works towards providing map data which impacts following areas: Disasters & Climate Resilience, Sustainable Cities & Communities, Public Health, Displacement & Safe Migration, Gender Equality.
HOT promotes community building, collaboration, and resource development within open mapping movement.
A core part of the movement is OpenStreetMap (OSM), an independent and crowdsourced project to map the world driven by a growing community of mappers.
Community and goals
The HOT community includes developers, users, and contributors who are enthusiastic about generating and sustaining free, open mapping data. The primary objective of the HOT community is to deliver precise and valuable map data for humanitarian and development purposes.
Tasking Manager
The HOT Tasking Manager is a vital tool enabling remote mappers to select defined "task" areas, ensuring comprehensive coverage and preventing duplication. For example, a mapper can select a building and add details like opening hours or construction material via a questionnaire format.
HOT's Tools
HOT's tools can be categorized as:
Input:
OAM: Get base imagery.
Raw Data API: Extract data from OSM easily for software.
Underpass (OSM): Ensure data quality.
Output:
TM: Digitize map features remotely.
fAIr: Speed up remote digitization.
FMTM: Add extra information to digitized features in the field.
Export Tool: Extract data from OSM for human use.
Personal Insights and Experiences
I am most excited about the collaborative nature of the project and the positive impact it has on global communities. I'm lucky to be part of a team working for a good cause.
As an Outreachy applicant, my current responsibilities include covering the backend functionality of FMTM with tests.
FMTM (Field Monitoring Task Manager)
FMTM is a web-based application facilitating remote monitoring of field activities for humanitarian organizations. It builds on tools like the HOT Tasking Manager, introducing automation to enhance accessibility and efficiency.
Challenges and Resolutions
Initially, I was overwhelmed by the tools HOT developers maintain. I overcame this by studying the workflow and seeking guidance from mentors. Reading documentation and participating in webinars suggested by our team coordinator, Petya Kangalova, helped a lot in resolving many questions. I also learned a lot about HOT's tools from the comprehensive documentation written by my mentor, Sam Woodcock: https://docs.hotosm.org/tools-summary/.
Writing tests was new to me. Here are some principles I started to follow to keep work structured:
Test One Method at a Time: Provide specific inputs and verify the output.
Avoid Internal Checks: Focus on the result to ensure tests remain valid after refactoring.
Hard-Code Expected Results: Ensure consistency even if implementation changes.
Use Mocking for Dependencies: Isolate the unit being tested.
Incremental Coverage: Start with simple tests and expand coverage using code coverage tools.
Here's an example of a unit test in pytest:
import pytest
class Calculator:
def add(self, x, y):
return x + y
def test_add():
calculator = Calculator()
assert calculator.add(5, -2) == 3
if __name__ == '__main__':
pytest.main()
The FMTM backend, built on FastAPI, uses conftest.py
for fixtures and configurations needed for writing tests. The tests are located in the tests
directory.
Practical Advice for Newcomers
As a newcomer, getting started with contributing to a project might seem overwhelming. I recommend starting small, picking the right fit for your experience level, and going out of your comfort zone little by little. Feeling insecure and not confident in your skill level is completely normal; do not fear failure. There’s no progress without enhancing your knowledge after all.
Engage with the community and don't hesitate to ask questions. I find it difficult to seek help as soon as I get stuck myself, but it is something I try to overcome. I think after about 3 hours of struggle is fair enough to ask for help.😅 This helps in better understanding and effective contribution. There might be a situation where a problem you got stuck wasn’t the intention of the task in the first place, but you already lost a valuable amount of time to tackle it. Conversely, asking for help without trying to find an answer yourself is burdensome and ineffective.
All in all
In summary, the HOT community works on creating open geographic data for humanitarian purposes. The community at HOT is vibrant and supportive, dedicated to making a positive impact through collaboration and open-source principles. My involvement with unit testing the backend functionality of the Field Mapping Task Manager (FMTM) has been a valuable learning experience, highlighting the importance of testing in software development.
Engaging with the HOT community has provided me with insights into the broader open mapping movement, emphasizing the power of collective action and shared knowledge. The challenges I've faced, from understanding complex tools to learning how to write effective tests, have been met with guidance and support from mentors. This collaborative environment fosters continuous learning and improvement, making it an ideal space for both personal and professional growth.
For newcomers, I advise embracing the learning with its struggles and actively seeking opportunities to contribute. Start with manageable tasks, gradually expand your involvement, and don't hesitate to reach out for help when needed. The open-source community thrives on participation and collaboration, and every contribution, no matter how small, adds value to the collective effort.
Terms
Humanitarian OpenStreetMap Team (HOT): An international team dedicated to humanitarian action and community development through open mapping. In its role organizing crisis response mapping, HOT acts as a bridge between the OpenStreetMap community and traditional humanitarian responders like MSF, the Red Cross, UNOCHA as well as local groups and governments.
OpenStreetMap (OSM): A crowdsourced project to map the world, driven by a global community of mappers.
Tasking Manager: A tool that divides mapping projects into smaller tasks to avoid duplication and ensure comprehensive coverage.
Field Monitoring Task Manager (FMTM): A web-based application for remote monitoring of field activities by humanitarian organizations.
OpenAerialMap (OAM): A tool for obtaining base imagery for mapping.
Raw Data API: An API to extract data from OSM for software use.
Underpass (OSM): A tool to assure the quality of OSM data.
fAIr: A tool that speeds up the remote digitization process.
Export Tool: A tool to extract data from OSM.
FastAPI: A modern web framework for building APIs with Python.
Unit testing: A software testing method where individual units or components of a software are tested.
Code coverage tools: Tools used to measure how much of the code is covered by tests.
conftest.py: A configuration file used in pytest to define fixtures and other configurations.
Fixtures: Reusable pieces of code used in testing to set up necessary preconditions.
pytest: A testing framework for Python.
Subscribe to my newsletter
Read articles from Azhar Ismagulova directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Azhar Ismagulova
Azhar Ismagulova
Hey, I am a software engineer based in London.