Unofficial design documents for HOT Tasking Manager¶
… to support HOT Tasking Manager (HOT TM) development, inspired by the tech debt discussion.
repository: https://git.sr.ht/~qeef/dd-hot-tm
documentation: https://dd-hot-tm.tojemoje.site/
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:
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.