Divide and map. Now.
Divide and map. Now. -- the damn project -- helps mappers by dividing a big area into smaller squares that people can map together.
Try to map some squares.
- The development happens on sr.ht.
- Discuss on the mailing list.
- Summary and running instances on OpenStreetMap wiki.
- News posted to the #DamnProject hashtag.
- Run your own instance with the damn deploy guide.
The damn project serves multiple groups of mappers and recognizes those groups.
Mappers
... map the world.Managers
... maintain areas.The damn project supports mapping workflows for different use-cases.
The damn project enables square's state transitions depending on the tool used.
Table of content:
Diaries
- The fourth year of the Divide and map. Now.
- Damn load testing for the third time
- Divide and map. Now. deploy refactored
- Unifying codebase of the damn web clients
- The third year of the Divide and map. Now.
- Cleaning up after Divide and map. Now. areas
- The second year of the Divide and map. Now.
- HOT Tasking Manager and SimpleTaskManager issues from the damn project point of view
- Get inspired by mapping highways' radars and mirrors
- Get inspired by the Tanga Building Footprints Import
- Load testing by simulating mapathon
- The server side refactored
- Get inspired by the potential HOT tasking manager improvements
- The state of the mapper's clients
- The first year of the Divide and map. Now.
- Square locking policy
- Two awesome weeks for the client
- Load testing
- Deploy easily (in an hour)
- Recent changes in the client
- Divide and map. Now.
Talks
Philosophy
- Simplicity and openness.
- Performance and decentralization.
- Reliability and scalability.
Code of conduct
- The community drives the damn project.
-
Become a good community member.
Be empathetic, respectful, and patient. Try to discuss without emotions.
-
Learn to be efficient.
Distinguish if you are talking about what, why, or how.
How is discussed only after what is agreed.
If you present what, be prepared to explain why in different points of view tirelessly.
If you discuss what because you agree/disagree with it, try hard to understand why and provide constructive feedback.
- Help others. It is nice, and it increases efficiency.
Square's state transitions
A square can generally be in four states: locked, to map, to review, and done. It is the responsibility of the mapper how the state of a square is changed. However, the transitions between states are limited by the tool used. The following are well known transitions between the states of a square.
Map-review-done
Basic mapping workflow good for all kinds of mapping. Newbie mappers should start with the Map-review-done workflow. The mapper choose to map the recent, oldest, random, or nearest square. The reviewer choose to review the recent, oldest, random, nearest, or newbie's square.
Supported clients:
- mapper (mapping only)
- mapper's panel (mapping only)
- JOSM damn plugin
- panel
Could skip review
When no review is needed, it may be skipped. Good for personal projects.
Supported clients:
- JOSM damn plugin
- panel
Manual square lock
Each square is locked manually. This workflow helps to correct mistakes made in other workflows or to prepare the area -- for example, merge all water squares and change the state to done.
Splitting and merging squares means replacing the squares with smaller or larger squares, respectively. Splitted or merged squares cannot be locked again; there are new squares in place of the original ones.
When splitting, the state of the new squares is the same as the last state of the original square. When merging, the state becomes to map and the new square is immediately locked.
Supported clients:
Mapping workflows
The following are well-described mapping workflows for a specific use-case.
Beginner's mapping
Beginner mappers benefit from the review of more experienced mappers. They take a square to map, work on that square, and finally decide if the square needs more mapping or is ready for reaview. If there is too much work, the mappers can split the square.
- Authenticate in mapper web page.
- Find an area to map and click it.
- Authenticate if you did not in the first step.
- Click map ... square in the mapping workflow diagram.
Supported clients:
Review the work of the mapper
When doing a review, select which mapper's work to follow.
- In JOSM, right click to Divide and map. Now. dialog window, then which mapper, then put the mapper's name.
- In panel web client, write the mapper's name to of mapper field. This field lists the mappers of the area.
Supported clients:
- JOSM damn plugin
- panel
Download notes periodically
For solving notes in particular area during distaster response. The notes are automatically and periodically downloaded.
- It is recommended to use rectangle shape (the default) when creating new area. OpenStreetMap and JOSM API works with bounding box, not with arbitrary planar shape as the damn project does.
-
Sometimes, you need to assign a particular square to a particular
mapper. In such a case, when creating new area, you may add
instruction and put
_mapper's name
(underscore, immediately followed by the OpenStreetMap name of the mapper,) to the what to map field and thesquare's number
(square identifier, sid) to the link to wiki field. - Add Download notes automatically to the area's instructions (in the manager).
- Use the JOSM damn plugin as usual. When a square is locked, the corresponding notes (inside of the bounding box of the square's border) are downloaded automatically and periodically updated. (The default period is 10 minutes.)
-
It is possible to set the update period (in minutes) -- in the JOSM
(advanced) preferences set the
damn.download_notes_period_minutes
.
Supported clients:
- JOSM damn plugin
Mapping with prepared data
Used when there are prepared data that needs to be loaded when mapping.
- The area is divided and prepared GeoJSON data are provided for each square. (Manually uploaded to the damn serve for now.)
- When a square to map is requested, the border of the square is returned as usual, along with the prepared data for that square.
- Square splitting and merging must be avoided.
Supported clients:
- JOSM damn plugin
Area lifecycle
- Area is a place to be mapped.
- Manager is a user of the damn project who creates or changes areas.
- Abandoned area is an area with no commit in last month. (One commit is one arbitrary activity: locking square for mapping and marking it for review are two commits; changing area's priority is one commit.)
- Area to finish is an area with priority -10. (Areas with the priority less than zero are not listed within active areas.)
- Finished area is an area that has been removed from the database and is accessible read-only.
- Every day, there is a periodic check for abandoned areas. Priority of each abandoned area that has no commit in last month plus three days is changed to -10. Thus, it actually becomes area to finish.
- Every day, there is a periodic check for areas to finish. Each area to finish that has no commit in last month is removed from the database, but accessible read-only. Thus, it actually becomes finished area.
Developer's documentation
When you consider the contribution, please, first write your idea to the damn-dev mailing list. It is better to coordinate the work sooner than latter.
Please, report the security issues to the damn-sec mailing list.
damn server
damn_server
provides access to the PostGIS database via
JSON API. It is written in Python3 and published under AGPLv3 License.
damn (JavaScript web) client
damn-client.js
lets mappers contribute via a
JavaScript-enabled web browser. It is written in JavaScript, HTML, and
CSS, and it is published under MIT License.
JOSM damn plugin
damn plugin
for JOSM lets users contribute without need
for opening a web browser (except for the first time due to the
authentication). It is based on gradle-josm-plugin and published under
GNU GPLv3 license.
Sysadmin's documentation
When you consider the contribution, please, first write your idea to the damn-dev mailing list. It is better to coordinate the work sooner than latter.
Please, report the security issues to the damn-sec mailing list.
damn deploy
damn-deploy
contains the docker-compose-based deployment,
including the guide. It is intended for sysadmins rather than
developers and is released under the MIT License.
The following is dependency diagram of systemd units.
The following is the diagram of configuration dependencies in the docker-compose file (solid) and the communication diagram between the clients and the services over HTTP (dashed).