From d09e6cebade81d5c10226115b51e2e11ac4d8747 Mon Sep 17 00:00:00 2001
From: Jonas Smedegaard <dr@jones.dk>
Date: Sat, 1 Mar 2025 11:16:55 +0100
Subject: add roadmap; use citations

---
 _roadmap.qmd | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 76 insertions(+)
 create mode 100644 _roadmap.qmd

(limited to '_roadmap.qmd')

diff --git a/_roadmap.qmd b/_roadmap.qmd
new file mode 100644
index 0000000..acb9bb8
--- /dev/null
+++ b/_roadmap.qmd
@@ -0,0 +1,76 @@
+# Task management
+
+This project follows kanban principles for task management,
+using roadmap (described below) as a form of kanban board.
+
+Kanban is a japanese management method
+of visually placing signs (kam) on a board (ban),
+intended to to aid in breaking down a project into smaller tasks
+to support team-based self-organization
+[@Anderson2016, pp. xi-1].
+
+Two core principles of kanban
+is to maintain a visual overview of relevant tasks
+and a sense of sustainability of the work on those tasks.
+Commonly a two-dimensional kanban board provides overview,
+with individual tasks listed vertically,
+and divisions of task states horisontally,
+and the even or uneven spread of tasks among divisions
+is used to indicate if workload is sustainable
+[@Anderson2016, pp. 7-8, 18].
+
+In this project,
+the tool roadmap is used for visualizing the tasks.
+Reason for this choice is an interest in creating an atmosphere
+supportive of creative thinking and reflective learning
+rather than efficiency,
+where the assembly line metaphor of conventional kanban boards
+is considered counterproductive.
+
+Roadmap is a command-line tool
+to generate a somewhat organic looking graph-based tree of tasks
+from a plaintext source task list.
+Roadmap takes as argument a filename for a YAML-structured list of tasks,
+validates that all tasks are related as a directed acyclic graph (DAG)
+with only a single end node (a tree structure),
+and renders to stdout an SVG format visual diagram of the tasks.
+The diagram maps out the tasks and their relationships,
+with prioritized actionable tasks as green circles,
+other actionable tasks as white circles,
+later tasks as red pentagons,
+blocked tasks as orange rectangles
+and finished tasks as grey hexagons.
+Each task is defined with a keyword and a label in the YAML file,
+optionally adding an explicit state
+of either *finished*, *ready*, *next* (meaning prioritized) or *blocked*,
+and listing directly dependending task.
+Task state is resolved from dependencies if not stated explicitly;
+only one task, the final goal, can and must have no dependencies.
+After each YAML file edit the visual diagram can be (re)generated,
+which also checks
+that the edited YAML contents is structurally and semantically valid.
+[@Wirzenius2025].
+
+For comparison with conventional kanban boards,
+roadmap visualizes not as a 2-dimensional matrix
+with progress as rigid lines across the x-axis
+and sustainability indicated by downwards depth,
+but instead visualizes as a somewhat organic looking tree structure,
+with progress as neat (non-warning-colored) branches
+and sustainability indicated by color saturation.
+
+The requirements for this project are summarized
+as the following tasks:
+
+ 1. Make a Kanban board for this assignment.
+ 2. Make a class diagram for the Bachelor programme and its components.
+ 3. Implement classes to represent the Bachelor programme and its components.
+ 4. Implement a method to check whether a programme is valid.
+ 5. Specify and run unit tests for the valid method.
+
+These larger tasks have been expanded and reorganized
+into more smaller and narrower focused ones,
+visualized in in the roadmap at @fig-kanban
+as well as the early snapshot of the roadmap in @sec-kanban-early.
+
+![Current roadmap for this project](roadmap.svg){#fig-kanban}
-- 
cgit v1.2.3

