Unofficial design documents for HOT Tasking Manager

… to support HOT Tasking Manager (HOT TM) development, inspired by the tech debt discussion.

HOT TM is a collaborative mapping tool that helps mappers with the management of mapping of large areas. It is the oldest one and the most widely used tool for such a purpose.

Alternatives are SimpleTaskManager that aims on simplicity and has a different workflow and Divide and map. Now. that aims on simplicity and openness. However, neither of those alternatives implement the whole range of the functionality of the HOT TM.

A lot is happening in the HOT TM development in recent years and clearly there is a desire for the improvement. It’s just not enough. What HOT TM is still lacking to fight the technical debt, is a solid design.

Our Unofficial design documents for HOT Tasking Manager contain descriptions of specific part of HOT TM and recommendations for the implementation.

A note on technical debt

We can find an explanation of what is technical debt for example at Wikipedia. In these unofficial design documents, we understand the tech debt as the difficulty of extending the functionality or fixing bugs – the difficulty of maintaining the code.

A note on stratified design

Examples and the explanations of the stratified design are discussed in blog posts and books. In these unofficial design documents we understand the stratas as separated concerns bridged by clearly defined interfaces. In Backend diagram, the stratas are shown as rounded boxes.

A note on interfaces

The interface consists of procedure names and data transfer objects (DTO). The DTO is passed as an argument to the procedure to enable communication between the stratas. In Backend diagram, the interfaces, i.e. procedure names and DTOs, are represented by the two-sided arows. It is abstract representation – arrows say nothing about procedure names or DTOs, only about the existence of the interfaces.

Design documents for backend

This repository consists of the doc and hot_tm_proposal directories. The doc directory contains the source code for the unofficial design documents that can be built using Sphinx. The hot_tm_proposal is Python3 package for the testing of the backend design.

The backend of HOT TM covers several separated concerns, from API to Database, as shown in the Backend diagram:

digraph {
     rankdir="LR"

     node [shape="none"]
     cliw [label="Web\npage"]
     josm [label="JOSM"]
     cli [label="Other\nclients"]

     node [shape="box" style="rounded"]
     api [label="API"]
     dots [label="..." shape="none"]
     db [label="Database"]

     edge [dir="both"]
     cli -> api [style="dotted"]
     cliw -> api [style="dotted"]
     josm -> api [style="dotted"]

     api -> dots -> db
 }

Backend diagram

Backend diagram and the packages described below outline the core of the architecture of HOT TM. However, there are still many unknowns. The following documents elaborate on specific backend problems like the database schema, interfaces design and strata implementations.

hot_tm_proposal Python 3 package

Python3 package with HOT TM backend proposal.

The hot_tm_proposal Python3 package contains other packages and modules to test the backend design.

It consists of the following (sub)packages:

api

Process requests from the clients. Serves as the entrypoint.

database

Query the PostGIS database to store and retrieve the information.