Show HN: Project Management as Code with Graphviz
zwischenzugs.com
zwischenzugs.com
Once you get used to the controls, it's very quick and has a ton of useful features (including export to dot so that you can further customize things.)
I wanted to have another representation that generated the GraphViz files, though, so you could more easily do other work with the data. Some other features we thought we needed:
* Notation of whether a dependency was "can't start until it's done" or "can't finish until it's done" to designate whether or not an item and it's deps could be in progress concurrently or if the earlier project needed to be completed first.
* Attach rough time estimates to each node (person-week granularity)
* Generate a list of "eligible" projects, i.e. those things with no hard blockers
* Sort this list by how much downstream work it blocks. Probably by each of: number of work weeks blocks, number of projects it blocks, and depth of the tree it blocks. This would help identify the boring projects that stand in the way of everything.
* Generate a list of "up next" projects that had only one in-progress blocker and thus were eligible for moderate discussion, but couldn't be allowed to dominate meeting time.
* Generate another list of "off limits" projects that had at least one blocker that wasn't even in progress yet and thus were a waste of staff time to meet about. No point having design meetings when something is 3 nodes deep in the graph.
I ultimately left because the management was insane and irresponsible and undermined these efforts once they started to set in well (because they removed her absolute authority to monkey with priorities). But I think it's a system that works well with sane management. At present I don't have enough backlog to need this tool, but look forward to working on it again one day.
Size: effort estimate
Number of edges to the shape: depth of dependencies.
Brightness: size of dependencies.
Hue: ...tbd...
Border (double/triple/dashed): ...tbd...
Font size: ...tbd...I'm not a GV expert, so contributions/suggestions/critiques welcomed.
You might want to look at ordering things left to right with
rankdir=LR;
You can also force particular groups to be on the same row/column (rank).Also subgraphs to group certain sections if you want: http://graphs.grevian.org/example
This may also be useful to see the building up of a bit more complex graph http://larsbarkman.com/2015/08/26/alignmentmaps-with-graphvi...
Dot (both the layout engine and the graph DSL) is used in OmniGraffle, so you can import the dot files like you made into OG and edit them further, either manually or via OG's scripting interface
and then for instance, quickly convert text inside a node to a link to a suboordinate graph (ie, the top-level graph might describe a large project, and each node in that graph, might represent a "sub-project"--hence you can represent a very large project as a hierarchy of graphs, eg, one per sub-project, but that still roll-up to a single top-level. This is a core feature in OG and trivial to do
I actually resorted to drawing dependency and flow diagrams by hand, then translating those into JIRA tickets and adding to Kanban style boards.
The ability to track changes using git is such a simple (and with hindsight, obvious) idea, but I should think very effective.
Nice one.
[1] https://en.wikipedia.org/wiki/Program_evaluation_and_review_...
Have you seen DropTask? It's the same idea, I just haven't dug too much into it yet: https://www.droptask.com/
The key feature for me is being able to have multiple ancestor/dependency tasks to a task node, instead of a hierarchical "next action" setup like most task managers.
I have done something like this for creating "recursive recipes" [1] which generates similar looking dependency charts when you start probing how to make a recipe from scratch [2].
[1]: https://github.com/schollz/timetomakefood
[2]: https://user-images.githubusercontent.com/6550035/34167929-6...
a lot quicker than code dsl -> git -> graphviz
and freemind also has search, edit, history, links, export as HTML
there is even the last resort of transforming the built in XML ouput ( yuck ). Several Perl examples are given.
http://freemind.sourceforge.net/wiki/index.php/Import_and_ex...
Just a note, I think there is some text missing or leftover at the end of the 'Surface Assumptions' paragraph.
(I never really found much use for it though, and had forgotten about it until reading this. I now just prefer taskwarrior's urgency ranking in its regular output.)
"EH" -> {"BT", "BFR", "BTOW", "PSNB", "GCD"}
"BFR" -> "BPB"
"BPB" -> {"GTS", "GCG"}
"PSNB" -> "BGB"
"BGB" -> "GTS"
"PSNB" -> "BEC"
"BGB" -> "GCG"
"BEC" -> "GCG"They add more information as well: time estimation, milestones, asignees, etc.
Gantt charts receive some criticism since estimations are approximations and any precision issue starts compounding very quickly.
Issue trackers may also support dependencies between tasks. The problem is that issue trackers usually come with scrum/kanban boards that do not have a represention dependencies among tasks.
There are many applications to put together a gantt chart.
If you want to keep track of what is done and what is remaining eventually you will need to update that file.
This will quickly lead to version control conflicts.
Issue trackers I think are the way to go. You can integrate with one using their API.
Imagine 2 team members that are in agreement add leaf 2 nodes. That would trigger a version control conflict.
Now imagine that situation in a team of 5, or 10. It becomes hard to maintain.
GUI apps are great but less good for sharing. The conflicts are part of the point.
Would be pretty awesome. Your todo list could have graphs in them or dependancies.
For the record, I didn't find any good product management or project management tools (SaaS or desktop) which acknowledge that roadmapping any sufficiently complicated platform or product family is best expressed by a directed acyclic graph. Casual.pm had the right concept (https://casual.pm/) but the implementation was very primitive.
Is there interest in a deeper post on graphviz from the POV of the casual user?
There are plugins, but I can't add plugins at will at work. People don't use deps properly though - GIGO.
However, Bugzilla only has one flavour of dependency ("blocks"), whereas JIRA implements the whole Allen Interval Algebra (which, however, only those people use who have ever wondered why the number of Allen relations is exactly 13).
Enjoy Holiday
depends on
Pack suitcase
depends on
Buy guide book
depends on
buy GBP
I could have used a 'real' example but then it would have got bogged down in the details of that example. Most of us have planned for a holiday, so I just used that example. Maybe 'moving house' would have been better, but that's more culture-specific.
I'd welcome a PR if you'd want to add a better example.
I've been using the "same" technique with some projects I have but just to outline specific components of the system such that it becomes more clear what interacts with what.
For me, the best that I got out of it was having to think hard about those relations and improving the documentation of the subject.
Have a good one!
Wouldn't a checklist layout be much better?
For an actual large, complex project with lots of inter-dependencies among sub-projects and tasks – arguably not.