130 comments

[ 2.8 ms ] story [ 181 ms ] thread
Terminal based mind map, with vim keys!
Written in PHP! That's a cool language, not these Rusts, Gos, Carbons...

get off my yard

Wow, a single PHP file, I wasn’t expecting that ^^

Looks cool though, I’ll try it soon :)

Yeah. I do wonder if it is possible to pack this into a standalone binary so that I don't have to install PHP - not due to language bias, but so it might be run without any package installation steps.
The use of PHP makes it truly a hacker's mind map.
Looks like a mind tree. Can it do proper graphs?
Mindmaps are trees. Maybe you're looking for concept mapping software like cmaptools?

This isn't a real Buzan-style mindmap, though, because the words aren't on the lines.

Not nearly as hacker-y as this, but I'll plug Reflect here. Probably my favorite tool for this so far. Best continually-improving UX, but there's a subscription cost. I happily pay it.
Mmm, keyboard centric, Im loving it
I am making a new proj and this tool will be really useful for me! Thank you.
This is really cool. Adding, editing, and navigating nodes is pretty intuitive (reminds me of working in a spreadsheet). I kind of wish that it would auto-center as you're editing, and it might be nice to be able to hit Escape to cancel out of creating a new node. The ability to export as HTML is simple and gives a nice result. I'm going to incorporate this into some of my workflows
> I kind of wish that it would auto-center as you're editing

press shift+c

Love the idea, love the UI. I see same UI approach can give life to quite many new tools.

I'll try it when they repair my Mac

Should integrate with orgmode headings.

...but mapping everything is just step one. Step two is getting a prioritized list of todos for the day.

OK, cool idea, but..

- Why is this written in PHP? Who builds CLI applications in PHP? Everything looks like a nail, I guess? - Why did you choose your own custom serialization format instead of using something universally supported, like JSON? It's literally more effort for you and everyone else involved for zero benefit. - I love CLI applications and CLI navigation(vim-style, etc) but it really feels like a missed opportunity for this to not have any sort of web UI, since it would be very natural to click, zoom and pan around.

Near the bottom of the README, it says:

Programming is not my career, but rather a hobby, and I developed h-m-m because I wanted to have something like this and couldn't find one. Therefore, what I've done here may have a lot of room for improvement.

It makes sense to me that a hobbyist might well build a CLI in whatever is convenient for them, and not know to look for standard serialization formats.

(comment deleted)
Programming is not my career, but rather a hobby, and I developed h-m-m because I wanted to have something like this and couldn't find one. Therefore, what I've done here may have a lot of room for improvement. If you see an embarrassing problem in the program or have an idea for improvement, feel free to contact me; I'd be happy to receive your feedback.

I’m not fond of it being in PHP, either (mostly because I doubt I have it installed to use this), but that doesn’t make this a bad tool, just one that solves someone’s problem.

Do you mean json for saving the data? I wanted the file to be human-readable. You can simply have a markdown list and open it in this application and work with it as a mind map. Also, most of the content one may paste into a mind map is an indented list, and when they copy something from the map, they expect it to be like that. Therefore, the application must be able to process from and to indented lists anyway.
Using Git-Flavored Markdown, it makes for nice checklists.
Nice tool.

A question to others who enjoy similar tools:

What is the difference between this (or other) tool to a simple document on Gdocs with multilevel bullet lists?

The most obvious benefit is easily handling non-tree interactions.

The fact that it's terminal-centric is also situationally an advantage as opposed to gdocs, but that could easily be solved by vim or something, so I don't think that's quite what you were asking.

This type of application makes it easier and faster to navigate the tree, collapse and expand to focus on various aspects, etc.
Love the idea. Their website is full of goodies. The graphic for the p3 express framework is pretty cool. https://p3.express/manual/v2/
I'm glad you like it :) To be clear, this mind mapping application is my personal project and P3.express is a group effort and I'm one of its contributors.
Awesome. I am using PHP for some college classes and I can certainly say that I would never want to use it for something like this, but the fact that someone did is pretty awesome. I will definitely be using (probably a fork that I rewrite in a language that I will be willing to maintain) a lot for sure. Awesome work!
A terminal-based mind mapping tool with Vim keybindings? Count me in!

The fact that the name immediately made me think "Hamlin-McGill-McGill" is only a bonus :)

I showed up to a company wide strategy offsite with an iPad and whipped out a mind mapping tool. For the first ten minutes I could see my boss vibrating because he thought I was fucking around.

By the end of the meeting he wanted a copy, and for me to CC his boss and a couple of his peers.

Which tool are you using on iPad?
Best ones I’ve used are MindNode and XMind. I actually used MindNode for personal stuff and XMind for work, but now I’ve been gravitating towards XMind alone because it also runs on Linux (besides Mac and Windows) and I can sync my mindmaps to the iPad with SyncThing.

XMind does have a couple of irritating bugs on Fedora around keyboard input (I can’t move focus with the cursor keys, it creates a new node) but it might be specific to my setup. Their support/developers don’t seem to care much, though.

Why would a mind mapping tool cause such a reaction? Are diagrams considered not serious where you work? Was the tool heavily ornamental/stylized? Or was it seen as writing down things that are obvious?
Pretty sure it's the fact that GP was on an iPad that made boss unhappy
If the boss can't see what is being done on the iPad, it just looks like someone playing candy crush.
He was sitting right next to me. He was just a control freak, who also projected on other people. His ego took out a whole office. Best layoff I ever had.
(comment deleted)
Hey! love the thing. Quick suggestion to the README on the section "Relative navigating and moving" It looks like I have to press H <AND> <-, to move left - I am assuming that I can do either or, a la vim. A small copy edit would make that clearer. Kudos!
I keep trying mind maps and getting frustrated because my mind works differently. Anybody know of ones that let you start out non-hierarchical?

For me, key nodes are often obvious long before relationships are. E.g., if I'm working with post-it notes, I might write a bunch of notes, cluster them, winnow, and only then want to start locking in relationships between items. Has anybody seen something that's pretty straightforward that supports that approach?

Usually the non-hierarchical is an option to toggle on/off in the tools I’ve used.

With hierarchy you can still achieve it though. If the topic is “alphabet” I might create major nodes A B C D without linking them. I then play with A B C and D and add more nodes in a brain dump and then re-arrange later and map the relationships

Yeah this is a common problem that pops up all the time, typically a tree, or taxonomy etc aren't sufficient and you need an ontology. But they aren't so easy to grasp intuitionally so we try to dumb it down and then hit problems, imho.
miro.com works great for this kind of thing.

Edit: Or if you want an open source alternative, check out ourboard.io

The best tool I've ever used for this no longer exists, as far as I'm aware. It was circa 1991, a spectacular lightweight Macintosh application called "Inspiration." There currently exists software in the same lane with the same name - but if there's any blood relation between the two, the current bears little resemblance to its progenitor.

I will mangle the terminology since it's been so long, but the basic idea was that on an infinite canvas you would create nodes representing concepts; these nodes were just UI "bubble" objects, like the ovals you might find in slide deck software. Relationships could be added after the fact by linking these nodes, and there was a fast way to create linked "sub-nodes" from an existing node. Also, very strong UI for arranging the node diagram.

Maybe the big problem with mind mapping tools these days is feature creep. A complex UI with too many options will absolutely get in the way of the thought process it serves.

Not mine, I am not affiliated with this tool, but I thought along the same lines as you and found this tool, could you give it a try and let me know what you think?

https://kinopio.club/

That looks like it's worth trying out, also I like the pricing model, god damn am I sick of monthly subscription.
But it looks like it is monthly (or yearly with a two month discount).
Very interesting, and does capture some of the transparency of Inspiration, in the sense that using the tool doesn't interfere with the process. Thanks for sharing this!
The software is still around and old vintage software sites have the earlier versions that you can run in a MacOS8 emulator. I last played with version 6 I think about 4 years ago; at that time you could have both an outline view and a mind map and switch between them.
I am currently trying a big sheet of white paper, folded once in the middle and a pilot frixion pen.

This is mostly for home stuff of which there is quite a bit for a home owner. It can just lie on since table or shelf and be updated easily. I put notes and todos together and the todos get a little check box in front of them. I'm in control of the hierarchy and it mostly mirrors the layout of the house. Doesn't get in the way for me.

I also want to extend it to other areas but for now I'm trying things out with the house domain.

Of course the downside is that i cannot easily edit it when I'm out and about and have some idea. And it's not really possible to have any automated reminders or integrations. (Not sure if there are open source alternatives to what rocketbook is offering; that might be a way to hook this into some digital setup)

I’m a huge fan of Graphviz and git. Text is easily diffable!

Try SketchViz.com and see what you think.

Also a shoutout to yEd Graph Editor (free).

I tend to work this way with a tool called Markmap (https://markmap.js.org/repl). I start with one heading and a list then begin moving items and adding new headings/subheadings as the relationships form. For example:

  // Start with:

  # Ideas
  - Item 1
  - Item 2
  - Item 3
  - Item 4
  - Item 5
  - Item 6

  // Move to:
  
  # Ideas

  ## Group 1
  - Item 1
  - Item 2
  - Item 3

  ## Group 2
  - Item 4
  - Item 5
  - Item 6
Depending on the topic I'm working on, sometimes I need an approach similar to what you explained. I still use a mindmap, open a first-level node called 'temp' and start adding everything there and keep sorting them. As soon as a structure starts to emerge, I create other nodes and move those items to their new places. This is based on the assumption that your final output would be a tree with one-to-many relationships rather than a graph with many-to-many relationships. I've seen tools for organizing many-to-many relationships, but I never had the need to use one.
I'm the same as you. Obsidian[0] is non-linear and has worked for me.

0. https://obsidian.md/

Additionally, the Obsidian plug-in for mind maps is amazing and very similar to how the tool in the root post behaves.
Looks great is this Free Software? I want to hack on this thing, where is the code?
(comment deleted)
The only time I ever use them is when I’m making notes about something and realize that there are a lot of cross references. Helps to see them.

Also I like to use them in new organizations to map out the people I meet to make sense of who knows what about a topic. Especially in big orgs.

The one I created supports force diagrams as well as hierarchies. You can add nodes and later rearrange them ("move")

Feel free to try. Works on all platforms, can be used as a collaboration tool, and has a ton of other features

https://6groups.com

MindNode is good for this. Unfortunately they went for subscription model.
Scapple is what you are looking for. Its from the same crew that made Scrivener. You can use it free for a month I think or pay like 20 bucks for a lifetime license. It lets you start anywhere and is very simple and intuitive. The only thing bad about it is exporting data out of it. https://www.literatureandlatte.com/scapple/overview
This is sort of the problem I have with most things that aren't just a text editor. They may be better in some ways (and I do like Scrivener) but at the end of the day, when I'm done, I want everything to be in a universal format on my own filesystem.
let me recommend plugin of Joplin, everything is open source and at least two different implementation for this feature.
What I really like to prepared D&D games are Entity Relationship Diagrams. A very handy app for from the Android Play Store is "Draw Express Diagram Lite" - the touch UX to create diagrams is unmatched in usability if you ask me.
In the past when I've used them, I usually started by listing all the nodes in a long list under a single root, not trying to organize them at all. I fought the urge to organize everything from the get go.
I have 3 suggestions! because that's how I tend to work too

- Scapple (mac/windows only) https://www.literatureandlatte.com/scapple/overview I love how minimal it is, but wish there was a linux/web version. I'll probably make my own some day.

- kinopio (web/mobile) kinopio.club Works well, but has a strong, quirky personality which sometimes gets annoying for me; I prefer the minimalism of scapple.

- draw.io / diagrams.net You can configure it to hide most of the toolbars and then just use it as mind mapping software, this is what I'm trying at the moment.

I have recently started using kinopio and did like it. It has been getting more and more features recently, you could give that a try.
Im using iThoughts. It's Windows/Mac only though. I recently switched to Linux and trying to get it to work in Wine.

I do believe you can create nodes without any Hierarchy and you can always join the nodes into a hierarchy later.

It's got great export features and a ton of other stuff. For me it's the best mind mapping software I have ever seen and I have tried a lot of them.

FastMindMap (https://fastmindmap.innovationgear.com) allows adding on the board the so-called 'floating topics', and later you can build hierarchical or parallel relations between the topics with drag-and-drop. (I'm the developer).
The left-to-right trees of these mindmap applications has always felt a very bad fit for me. To me, a mindmap is a big piece of paper with the core concept in a bubble in the middle, and things drawn outward from it, with lines connecting things when they are related. The end result is much more organic, and spatial layout matters.
I use zim-wiki with the graph plug-in, along with external scripts that edit the underlying pages to both add and remove links.

I've emailed and tweeted.

Have you considered aligning sublists to the parent node? Right now, your eyes have to leap upwards from a node to get the first child of the list. And since each list has a different length, you have to scan upwards a different amount every time. If every list was aligned with the parent, you could just read left-to-right.
Would you mind explaining a little more?
In the screenshot in the repo, there's a node with the text "a mind mapping tool". It has 5 children, but the first child "text-based (terminal application)" is above it. So the more children a node has, the further above it the first child is. What if it was aligned so that the first child is at the same height as its parent? Then it might look more natural like a list, and read easier since the children start at the same height as the parent rather than at some arbitrary point above it.

This would help with flow, because then you can read left to right and scan downwards. Right now you have to keep jumping up to find the first child and then scan down to read all the children.

I agree with this, but I would say that both options work. I like how it organizes things currently, but if this "child list" could be added it would make my workflow quite organized for little input. Keeping things as simple as possible while maintaining productivity is the goal. Although I would like to see color coding in some fashion as to keep larger data sets clear when observed in a tree with many branches.

Perhaps the hotkey of '0' could be used as it is next to O for creating a new "child list". Great tool as-is though.

I see. There can be a vertical alignment option in case someone prefers this layout.
Please seriously consider making it the default. Every graph-visualization tool makes this alignment mistake, and it's part of why they just aren't very popular. They're too hard to browse because you can't easily scan the graph. I think if you prototype it, you'll see how much better it feels when everything lines up.
I don't really get the point of a hierarchical mind map. Why not just use a nested list? (Seems to be standard for mindmaps, so I'm criticizing this project specifically.)
It's basically a nested list, but you get specific features that makes it easier and faster to navigate such a list. Mind mapping is a facilitator for the thinking process. When you're trying to solve a problem or design a concept, you need to switch between the high-level aspects and details all the time, and your tool shouldn't get in the way.
There are no stupid questions, except maybe this one:

Q. Why is a wide horizontal tree superior way to work with a mind map that’s a pure outline (not a DAG) than a simple outline?

See the Data Format here, it’s an outline. Keystrokes are about moving nodes and descendants, that can work on an outline. And then why not have a portable outline format.

I do understand this is terminal/text. Yet there are plenty terminal/text outline editors, and being able to see a narrow outline instead of a wide tree feels more usuable.

That said, I use and really enjoy iThoughtsX which can import/export OPML and Markdown etc., and provides ability to control visual layout per ‘information geography’ or ‘cartography’. So not averse to visual graph depiction of a DAG, just asking why folks like this for pure outline format instead of outline editing?

I haven’t tried this yet, but from the look of it, it expands both horizontally and vertically, and one of the more important features is collapsibility/expansion of subnodes.

Note that in the image there, they’ve got some subnodes expanded deep horizontally, while their sibling nodes might be even deeper but are collapsed.

The difference with a simple vertical outline is that this format is focused on pruning/unpruning parts of the tree, pair with an expectation of arbitrarily “deep” nesting. I find that in outline format, I’m unlikely to go deeper than a couple levels, and will at that point either switch to narrative or use some sort of referencing scheme.

OK, makes sense. I think most "outliner" tools I know of do exactly those adds, with the benefit of also being relatively flush left.

As I help our firm select knowledge management tools, I'm just trying to understand the use cases that differentiate this approach from a fully fledged outliner.

Note that I ask the same thing of people who do outlines in MS Word manually as plain bullet lists instead of using, you know, the outliner. :-)

Vim keyboard mapping in the terminal. This is a great project. Now I can finally replace some of my web-based mind map tools
I'm getting a 255 return code when I try to run it. php v.7.4.3. Permissions are all ok. Anybody else have this problem?
Standard error said there was a call to undefined function mb_strlen(), which apparently isn't available by default on php.
Not trying to hate on PHP, but deployment is one of the features that is so great with Go. It's about on the same level of abstraction as PHP and it's just a breeze to deploy stuff.
sudo apt install php7.4-mbstring # Fixed it. There's also package php-mbstring
This is why you take a few seconds to be considerate to your users and potential contributors and put a 5 line Dockerfile in the repo

You can either run the code or develop on the code with no more "works on my machine" that way

Something like this should have done it:

   FROM php:8
   # install that mbstring library
   CMD ["however", "you", "start", "php", "apps"]
Looks cool. A bit strange with a 2.4k single php-file implementation though. If it works, it works I guess.