- Almost all solutions that attempt to take seriously the concept of knowledge graphs are Software-as-a-Service. Ouch. They say you should “build a second brain”. I certainly don’t fancy the fate of my second brain (whatever that may be) to depend on the commercial success of some company.
- All existing editors, even the web-based ones, have some hangover from file-based content management. Even with ability to cross-link to nodes inside a tree structure within files, the rigidity of file boundaries is still over-constraining, especially when one is trying to grapple with unfamiliar concepts during which the structure and links are constantly shifting.
- The maths-authoring abilities (i.e. facilities to edit LaTeX formulae) at best look like an afterthought. Writing anything more complicated than Maxwell’s equations is painful.
Out of desperation I decided to roll my own. I set out the following desiderata:
- It should take the concept of knowledge graph as far as possible. The foremost thing is to do away with files, and promote vertices (nodes) and links (relationships) to first-class status.
- While upholding the previous principle, it should make editing as natural as possible, preferably confirming to existing text-editing habits. The experience should definitely not be like creating nodes and linking them together inside graph databases: slow and confusing.
- It must work without an Internet connection. Or better: it should not make any attempt to connect to the Internet at all.
- It must not be too heavy-weight, and data should be easy to back up. This precludes any JVM-related stuff, docker images, or spinning up Postgres/Neo4j/Datomic/what-have-you just to write some notes on a local machine.
- It should cater for the needs of heavy maths editing.
Now I have been using my own app, powered by sqlite for storage engine and ProseMirror for frontend, for quite some time, and I am really satisfied (hard not to be satisfied by your own work though). It is becoming increasingly polished (full-text search anywhere, very fancy query, loops in the graph, etc.) but I hesitate to open-source it, because as far as I know maintaining open-source projects can be really time-consuming, especially when people actually start using them.