-
-
Notifications
You must be signed in to change notification settings - Fork 57
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
40 changed files
with
592 additions
and
153 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# Higher Level HOTOSM Decisions | ||
|
||
Many decisions have been made at an organizational level, affecting | ||
all tools that we develop. | ||
|
||
The decisions made in this project should not deviate much from the | ||
choices, [starting here](https://docs.hotosm.org/decisions/0003-react). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
# Use ODK as the underlying survey data collection tool | ||
|
||
## Context and Problem Statement | ||
|
||
FMTM requires the collection of structured data from users in the field, | ||
using mobile phone-based data forms. | ||
|
||
To save re-inventing the wheel, many other organizations have addressed | ||
this common requirement, so we should incorporate their tooling into | ||
FMTM. | ||
|
||
## Considered Options | ||
|
||
- Kobo | ||
- ODK | ||
- Ona.io | ||
- Dimagi CommCare | ||
|
||
## Decision Outcome | ||
|
||
We chose ODK for two main reasons: | ||
|
||
- HOT staff have used ODK successfully for many field data collection campaigns | ||
in the past, and can attest to it's suitableness. | ||
- ODK appears to be at the forefront of this technology, for both product | ||
stability, and new feature innovation. Others mimic the same technology, | ||
building wrappers around ODK's tools. | ||
|
||
### Consequences | ||
|
||
- Good, because we do not need to implement the form creation logic. | ||
- Good, because ODK uses simple technologies accessible to most users, | ||
such as XLSX spreadsheets to build forms. | ||
- Good, because we do not need to implement the field data collection | ||
tool. Instead we need to develop the coordination layer above. | ||
- Good, because ODK is extremely robust and battle tested. We can rely on it. | ||
- Bad, we now have two tools and two databases to manage. | ||
- Bad, it adds additional constraints to development, having to | ||
manage data flows in both FMTM and ODK (for example, as local-first | ||
approach to development becomes significantly harder). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
# Data extract files should be in flatgeobuf format | ||
|
||
## Context and Problem Statement | ||
|
||
When creating an FMTM project, we need a set of geometries to map. This | ||
has typically been called the 'data extract'. | ||
|
||
Either the user can upload their own geometries in GeoJSON format, or | ||
download geometries from OSM via a call to raw-data-api. | ||
|
||
The resulting data should be easily accessible on the backend for creation of | ||
a matching ODK Entities Dataset (used for the geometry selection in ODK), but | ||
also on the frontend for easy visualisation (ideally without an API call). | ||
|
||
A cloud-native format is most appropriate here, to reduce calls to the API, | ||
and outsource to object storage like S3. | ||
|
||
## Considered Options | ||
|
||
- GeoJSON | ||
- Flatgeobuf | ||
- Geoparquet | ||
- PMTiles (or other vector tiles) | ||
|
||
## Decision Outcome | ||
|
||
<https://github.com/hotosm/fmtm/pull/1047> | ||
|
||
At the time of implementation (Dec 2023), `flatgeobuf` was selected as the best | ||
candidate. The frontend JS implementation is excellent. | ||
|
||
- GeoJSON is not cloud native / BBOX accessible via a HTTP RANGE request. | ||
- GeoParquet support on the frontend was lacking. | ||
- PMTile usage was still quite nascent. Since then this has been identified | ||
as another possible solution. However, creation would require additional libs | ||
to be bundled in FMTM, and vector tile styling can be a pain. | ||
|
||
Flatgeobuf seems to be most applicable for this use case (a small amount of data). | ||
|
||
### Consequences | ||
|
||
- Good, because it's a simple format with excellent support in GIS tools (OGR). | ||
- Good, no styling is required. It can be determined by the web library / renderer. | ||
- Good, has built in geospatial index and accepts BBOX-based HTTP RANGE requests. | ||
- Bad, because flatgeobuf does not support compression, so files are marginally | ||
larger. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# Implement ODK Web Forms to phase out ODK Collect | ||
|
||
## Context and Problem Statement | ||
|
||
ODK Collect is the mobile survey data collection portion of ODK. | ||
|
||
It currently only supports Android. | ||
|
||
In FMTM, the mapper is required to swap back-and-forth between the FMTM | ||
and ODK Collect applications, which is not an ideal experience. | ||
|
||
Users on iOS also wish to use the FMTM. | ||
|
||
## Considered Options | ||
|
||
- ODK Collect only | ||
- ODK Collect + GIC Collect (unofficial iOS port) | ||
- ODK Web Forms | ||
- Custom web implementation in FMTM | ||
|
||
## Decision Outcome | ||
|
||
Between 01-2025 and 05-2025, ODK Web forms will be integrated into FMTM. | ||
|
||
Again, we can extend from the excellent work done by ODK on the core | ||
xform-engine logic, then either use their Vue based component implementation | ||
in a Web Component wrapper, or write our own components wrapping this logic. | ||
|
||
GIC Collect is closed source and updated infrequently, so not an option. | ||
|
||
### Consequences | ||
|
||
- Good, because we have to maintain less code ourselves. | ||
- Good, because it broadens the potential user base of FMTM. | ||
- Good, because it simplifies the tech stack for FMTM, with no interfacing | ||
to an Android application via deep linking / intents required. | ||
- Bad, because it's a risk with Web Forms being such a new project. | ||
- Bad, because it means we are entirely web-based. This has pros and cons, | ||
but we do lose the benefit of very easy offline submission management | ||
in ODK Collect (everything required is simply bundled in the app, with | ||
no web dependencies). We are banking on good caching, intermittent | ||
connectivity, and a sync layer to facilitate offline-first. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.