Add nodal.org
This commit is contained in:
parent
95ee5a420b
commit
7be305139f
1 changed files with 230 additions and 0 deletions
230
nodal.org
Normal file
230
nodal.org
Normal file
|
@ -0,0 +1,230 @@
|
|||
#+title: Nodal
|
||||
* Nodal - A new Paradigm for Project and Knowledge Management
|
||||
** Abstract
|
||||
Current Project Management tools
|
||||
do neither adequately represent
|
||||
the complexities of modern development cycles
|
||||
nor leverage the power
|
||||
of modern processors and paradigms
|
||||
to empower humans for effectiveness.
|
||||
# to do their best
|
||||
# This paper outlines
|
||||
This is why I want to outline
|
||||
a new Wholesome Application Lifecycle Management approach
|
||||
where all data is captured in a single source of truth
|
||||
and can be viewed and edited
|
||||
from the preferred perspective of each user.
|
||||
|
||||
Recently we have heard horror stories of businesses
|
||||
investing millions to integrate renowned software solutions
|
||||
yet achieving nothing but frustration.
|
||||
It is time to liberate our minds.
|
||||
We need the Power of Atlassian
|
||||
with the Flexibility of Notion
|
||||
and the Freedom of Open Source.
|
||||
** Paradigms
|
||||
*** Two Current Approaches
|
||||
I see two basic approaches shaping up,
|
||||
which may be integrated:
|
||||
Tasks as communication,
|
||||
and tasks as notes.
|
||||
|
||||
The former is often inadequately attempted in chat tools people already use -
|
||||
team chat such as Zulip or Slack,
|
||||
or instant messengers -
|
||||
where action items quickly get lost.
|
||||
A more thought-out appraoch is [[id:valueflows][Valueflows]],
|
||||
implemented in software solutions such as [[id:bonfire][Bonfire]]
|
||||
based on [[id:fediverse][ActivityPub]] as communication.
|
||||
|
||||
The latter can be seen in "One Big Text File" (OBTF),
|
||||
the idea of tracking everything relevant to oneself at the current time
|
||||
such as todos and notes
|
||||
in a single plain text file,
|
||||
often combined with powerful editors and command-line tools.
|
||||
There are also more user-friendly tools,
|
||||
Notion and Org-Mode being prime examples:
|
||||
Both allow outlining of hierarchies
|
||||
which contain notes and tasks interchangeably.
|
||||
*** The Task Tree
|
||||
I want to focus on the latter approach,
|
||||
but rethink it from the ground up.
|
||||
For that,
|
||||
I deem a typical linux filesystem a useful metaphor:
|
||||
1. Under the hood, files and directories are both the same - extensions of the basic "inode".
|
||||
2. There is a single root to all files accessible on the system ("/").
|
||||
3. Externally shared files, be it from network shares or physical devices,
|
||||
can be mounted into any path of the system.
|
||||
4. A file can be made accessible from multiple locations
|
||||
through either a link or a bind mount.
|
||||
|
||||
Let me elaborate how each of these points applies to Task and Project Management:
|
||||
**** 1. Everything is a Node
|
||||
Humans have come up with all kinds of classifications and categorizations and structures for tasks:
|
||||
Namespaces, lists, projects, epics, stories and so on.
|
||||
|
||||
While these might be useful in a specific context, project,
|
||||
or maybe just to a specific person,
|
||||
a good tool should be agnostic to these,
|
||||
accepting the imprint of the user.
|
||||
# Missing good comparison which emphasizes general production with customization by user
|
||||
Just like a good knive can be sharpened to the delight of its user.
|
||||
Just like an axe is not specialized on the type of tree it may cut.
|
||||
|
||||
So what is the basic building block in project management?
|
||||
For a long time, I assumed it was the task,
|
||||
distinguishing between completable and non-completable tasks,
|
||||
the latter forming something akin to namespaces and lists.
|
||||
But recently I have come to realize
|
||||
that tasks do not become irrelevant at completion -
|
||||
quite the opposite,
|
||||
fruitful work produces valuable task discussions and descriptions
|
||||
which deserve to be preserved
|
||||
as a kind of wiki or FAQ,
|
||||
a knowledge base.
|
||||
|
||||
To achieve this,
|
||||
we need to lift our focus off
|
||||
of the structure we have learned tasks have:
|
||||
Title, state, description, tags, further attributes and potentially discussions.
|
||||
If instead knowledge is the basic building block,
|
||||
Everything is a node: The title, the description, the discussion thread.
|
||||
A node is merely a string,
|
||||
potentially with attributes,
|
||||
unveiling its potential only when linked to others.
|
||||
***** Saving the world
|
||||
Let us look at an example:
|
||||
In our Project "Save the World" we want to "Make a Plan"
|
||||
and then "Execute the Plan".
|
||||
Each of these three points is in itself a node,
|
||||
with the latter two subnodes of the first.
|
||||
These should also have a state attribute
|
||||
which can be modified along the way,
|
||||
unlike the project, which,
|
||||
contrary to our hopes,
|
||||
is not something that is ever complete,
|
||||
so there is no point in tracking completion
|
||||
(more mundane examples would be "Personal Development" or "Practice Music",
|
||||
nodes that represent areas of life rather than concrete actions).
|
||||
|
||||
For the first action item,
|
||||
we can create a subnode,
|
||||
which at first might be a simple outline
|
||||
and then change into a full-fledged plan.
|
||||
As this is textual content that changes with time,
|
||||
it should be version-controlled
|
||||
and available for real-time collaboration.
|
||||
Now when viewing the parent node,
|
||||
the interface might display the root node atop,
|
||||
below it our project,
|
||||
then centrally the task we are viewing with its attributes
|
||||
and below that the content of its immediate children
|
||||
or whatever number of layers is deemed sensible.
|
||||
|
||||
In the execution,
|
||||
it is likely that queries and discussions come up.
|
||||
Each of these should be created as a completable subnode
|
||||
naming the topic,
|
||||
with further subnodes for the actual discussion.
|
||||
This way arguments can be dissected in an organized fashion
|
||||
# can be held structured(ly?)
|
||||
and results preserved with their decision process.
|
||||
**** 2. I am (G)Root
|
||||
With nodes and their relations as foundation,
|
||||
especially parent-child,
|
||||
we need to consider how to make these accessible.
|
||||
Simply put,
|
||||
all nodes that do not have another parent
|
||||
will be parented by the root node,
|
||||
which is your user profile.
|
||||
Now that's interesting, huh?
|
||||
I am also a node?
|
||||
Exactly!
|
||||
**** 3. Sharing and Mounting
|
||||
Thinking of the structure,
|
||||
we will want to store these nodes in a graph database.
|
||||
Now, sharing a node to another user
|
||||
under the hood just means connecting it to their user profile.
|
||||
|
||||
Then this user can decide
|
||||
whether to move the node
|
||||
into a different position within their tree,
|
||||
just like a shared folder in common cloud file storage solutions.
|
||||
# Google Drive, Nextcloud
|
||||
**** 4. Polynomial Relationships
|
||||
Since we have already established the graph database,
|
||||
we can leverage its full power to do something unconventional:
|
||||
Give a task multiple parents.
|
||||
|
||||
Of course we already kinda do this
|
||||
when we share a task to another user,
|
||||
but here I am referring to your own hierarchy.
|
||||
Quite often hierarchies are not so clear,
|
||||
something we painfully experienced
|
||||
in our business use of Zulip,
|
||||
which requires you to decide the receipients of a message
|
||||
by posting it into a stream.
|
||||
** Ideas
|
||||
# Plantuml wireframes
|
||||
|
||||
Labels as Properties
|
||||
-> dynamic interface
|
||||
|
||||
https://kolaente.dev/vikunja/frontend/issues/537#issuecomment-39747
|
||||
Kanban config options:
|
||||
- group by: assignee, property (label group, status, ...), date, parent task
|
||||
- display levels: 1-X (range), only leaves
|
||||
- display text levels: 1(self)-X
|
||||
- ordering direction/sorting
|
||||
|
||||
# Application Lifecycle Management (ALM)
|
||||
*** Copied Write-Ups
|
||||
I have thought more about it, and I think the way to go will be to have no fixed Kanban view. Instead one should be able to create a kanban view grouped by a desired property, which might be the task status but could also be an assignee or the like, like in Notion.
|
||||
Either way, there should be a way to add more task status options through which a task can be moved with one click as outlined above.
|
||||
|
||||
|
||||
That whole document might hold some interesting points for you, but let me mention my current use-cases:
|
||||
|
||||
I add a tag to all tasks in a list. Rather than tasks, it might make more sense to have lists be tags, and the lists are simply predefined views. This allows for more flexibility when juggling many lists.
|
||||
|
||||
I am now creating a kanban board that essentially lists all lists and provides some details and status information about them. If lists were tasks, I could add them there directly, avoiding redundant descriptions and providing easier back and forth navigation.
|
||||
|
||||
In the end, I don't see why lists have to be a separate entity, just as checklists. It is adding complexity and creating artificial restrictions at the same time, for no gain.
|
||||
And the UI can still stay mostly as it is, but rather than imposing, what it shows you are merely sane defaults to be changed at your mercy.
|
||||
It is a simplification in the backend that brings great flexibility for the future.
|
||||
To bring both points together: Namespaces could be tags, Lists could be Root Tasks and belong to multiple namespaces with tags.
|
||||
|
||||
Then one could even simplify sharing, because by adding a tag to a person (plus a RO/RW/Admin value) you can share them all tasks belonging to that tag, no need for different scopes like namespaces/lists.
|
||||
Only public sharing links need to be extra, which can be created for any view of any task - you could create Kanban or Gantt views for subtasks (epics) of a root task (project) and share them, because every task can be turned into its own view.
|
||||
Welcome to Productivity and Management Utopia.
|
||||
|
||||
|
||||
|
||||
|
||||
Let me lay out my ideal structure and current workarounds,
|
||||
illustrating the superiority of this approach:
|
||||
With everyone in the core team of our company
|
||||
I want to share an uncompletable root task (“namespace”).
|
||||
|
||||
This task has a subtask for each project (“list”),
|
||||
which might be shared with additional collaborators.
|
||||
These projects can themselves be displayed on a Kanban board
|
||||
(currently we have a separate list for that, linking to each project)
|
||||
showing the status of the project (e.g. Ideation, Planning, Active, Completed) and providing a grand overview.
|
||||
|
||||
For each project, subtasks might contain areas (e.g. UX, Backend, Frontend)
|
||||
or epics (user login, …) or for small projects straight individual tasks.
|
||||
If it represents an area, it might be shared with a dedicated team for that area
|
||||
with its own views.
|
||||
|
||||
|
||||
|
||||
|
||||
Just to clarify why I am so adamant about this:
|
||||
We discovered Vikunja in our unhappiness with existing project and task management software, as we need a tool with a single source of truth but many views/facets - for planners, stakeholders, designers, scrum managers, controllers, developers, QA, leadership...
|
||||
|
||||
We look at Vikunja and see not just a nice task manager, but the possibility to disrupt the whole torpid market of modeling development processes digitally, displacing the annoying proprietary giants like Atlassian and narrow-minded tools like Wekan while also offering everything that is nice for personal use, like Todoist, and adding unprecedented integration with other tools such as Gitea, Wikis & co.
|
||||
|
||||
Once the resources are there we will implement this vision through open-source, and we would be happy for Vikunja to be its foundation and its developers part of the team :)
|
||||
|
||||
However, I have also thought about the architecture and we might actually need to redo the data models at that point, to use a graph database like ArangoDB - that way everything is not just a task but a node, which can be tagged through edges/connections. Anyways, I'll leave that for my soon-to-come blog entry...
|
Loading…
Add table
Reference in a new issue