I believe that knowledge management tied to a development platform is a bad idea. Development isn't the only thing I do in computers and knowledge management should be able to store stuff from all other activities (including cooking recipes or reading notes to read on a mobile phone).
I don't love tiddlywiki but haven't found a better alternative yet. I'd love something easy to configure but powerful like the wiki and bug tracker on the Fossil SCM, but not tied to a specific platform. Also, Markdown/text/html because no vendor should own my thoughts. Obsidian[3] and Notion are in my "to check" list.
I agree and think strong emphasis should be on how a knowledge base saves its files, which should be very interoperable.
I build my own little DSLs and have my own experimental
knowledge base studio going, where I can edit things using
my editors (Sublime, VSCode and Vim), view/query/visualize
in my web browser, and also view/edit in a spreadsheet web
interface using Handsontable.
The secret trick is all the DSLs use a thing I work on
called Tree Notation (some use an even dumber version
simply called Grid Notation). It's a plain text notation
that just defines lists of words (aka cells) on a line (aka
a node or row) and if you indent a line it becomes a child
of the parent line (like python) providing support for tree
structures and scope. That's the basics, and then on top of
that you can design all sorts of DSLs with types and very
different parsing strategies than traditional languages.
But that's still a relatively traditional language. I have
some languages which generally you want to use a spreadsheet
interface to write programs in, where you can just plop a
tree anywhere on the sheet, and then start writing trees.
Those ones are kind of like having a canvas for your project
instead of a folder with files. Makes for a good base for
building DSLs for simulations.
Sorry, I digress, but my purpose in bringing this up is that
if anyone is working on personal knowledge base software
like the OP, Tree Notation is a pretty useful thing, if you
can figure it out. I've got it figured out but not very good
at explaining it.
Tree Notation looks very interesting. It also looks like just another version of S-expressions (but with indentation instead of parens). That's not a bad thing, though! S-expressions aren't used nearly as much as they should be, and indentation syntax can be much clearer than parens.
What's most interesting is the language design DSL that makes it easy to put together a new tree language. I wonder if that can be implemented in Lisp, possibly with an indentation-sensitive syntax like Wisp[1] so that it retains most of Tree Notation's features.
However, the magic happens when you remove the parens
and go to 2 and 3 dimensions. Think of Javascript,
which has 20 million users, versus Excel, which has 2
billion^1.
To paraphrase Twain, removing one thing can be the difference
between a lightning bug and lightning.
Could you give an example (or a link) that demonstrates this higher-dimensional syntax? Are there things you can express with it that couldn't be expressed in S-expressions?
> Are there things you can express with it that couldn't be expressed in S-expressions?
No. But that may be like asking "is there something I can do with the x86 that I couldn't do with any Turing Machine?" Pragmatically speaking when you factor in UX and time there are things that are dramatically faster with Tree Notation versus S-Expressions.
Lots of things that are muscle memory to Excel users (drag to fill, copy/paste blocks, move columns and rows, et cetera), would be very ugly/hard to do if we were using paren based S-Expression notation.
This is fascinating. Don't suppose you'd be willing to share your dsl definitions, or can recommend any collections? Seems like a great layer to have in a modular knowledge system.
I definitely hope to share more in the future but at the
moment busy focusing with the team on a huge refactor of our
codebase at the day job (which includes a fun new DSL editable in a spreadsheet).
When we ship that and I take a breather hope to give the
Tree Notation stuff a refresh and publish some of the newer
langs.
Just saw https://www.youtube.com/watch?v=vn2aJA5ANUc. It looks great! I am excited that Handsontable works for you in this context. Please let me know if you'd need any help with it.
It probably is a bad idea in a way, but in my own personal experience I have found the biggest hurdle to a knowledge management system being actually used and up to date is _actually using it_, and having it just there in front of me in my IDE would probably go a long way to help with that.
I recently switched to Obsidian for my desktop pile-of-notes - so far it's pleasantly compliant with everything else I've done so far, and hasn't done anything to screw up my notes or make it hard to understand in other systems (e.g. Notable has a... "unique" folder system). Definitely recommend giving it a shot.
+1 for Joplin, I moved over from Evernote because I was worried about Evernotes future and I have been pretty happy with Joplin. It's not quite as featured as Evernote but it is more stable and reliable.
The implications of this cannot be overstated. Utilizing VS Code as a platform -- at least for a dev -- makes dendron feel intuitive and flexible enough to customize to my hearts content.
I felt/feel the same way, which kept me from using Foam for a very long time.
That being said, I've now used nearly everything (TiddlyWiki, Obsidian, even Emacs with Org-Roam) and have recently transitioned to Foam. Foam, for me, is the best option I've used.
A couple of reasons:
- Setup and maintenance are effectively nil, and customizing it is extremely easy. This was the big drawback of org-roam for me. It seems extremely powerful, but even after initial setup, it was just a headache to keep it maintained (and this is not me simply hating products that require config. I'm not particulary sensitive to upkeep--I'm typing this on a Surface Pro 3 running Linux, I'm used to needing to fix things.)
- Graph view/general UI. A big feature for me is the graph view, similar to Roam, and the associated UI (autogenerated backlinks, etc.). Foam is fantastic here. The general note taking experience is much better than TiddlyWiki (which I think is a fantastic tool as well) and I have to think less about constructing a knowledge graph, it just happens. Also, due to the VS Code ecosystem, there are a ton of nice extensions available for diagramming, embedding images, writing in LaTeX, etc. that make note taking nice without introducing overhead.
- Privacy/open source. This is perhaps counter-intuitive, but Foam has been one of the better options on this front. It's all markdown/text/html, as you say, but it's also fully open source, unlike something like Obsidian (which has a fantastic out-of-the-box writing experience, btw). I run Foam on VSCodium, a community-driven project that rebuilds VS Code into freely-licensed binaries with all of MS's telemetry turned off. The Foam maintainers have been open and encouraging about making sure Foam works in VSCodium ecosystem: https://github.com/foambubble/foam/issues/26
My whole setup now is more or less run out of Foam. I push up notes to a Git repo, which triggers a deploy of a little web app I have that renders a site built out of my notes, allowing me to do things like view my todo's or access information from my phone/other devices. It's been really easy to set up and maintain, and the Foam community has consistently impressed me.
One of the absolute most critical features of my own knowledge base is that it is entirely in my control. Hence it would not be possible to use an online platform.
- As Derek Sivers say: Apps come and go, we want to use our knowledge base til we die
- I need to know nobody is looking over my shoulders. A bit like social cooling. I will not be honest if I might be sharing.
You mention Obsidian which is definitely a good candidate. But hey, I just use a folder of markdown files. I can use the editor best suited for the task I am doing. So I both use Obsidian, VS Code, normal text editor and whatever floats my boat.
I (respectfully) disagree completely. All source code is knowledge. All the content that goes in to a product when you're shipping it is knowledge. Managing a project is knowledge management. Managing multiple projects is knowledge management. Managing a company is knowledge management.
I've never seen a tool (other than, arguably, an Operating System) that does all of this comfortably.
The data format is literally a SQLITE DB, which is the most used DB on the planet.
Binaries are available for all the major OS's and many "alternative" ones.
I use Fossil-SCM for my personal notes. Works great. I even run many websites with Fossil-SCM as the wiki is fabulous for a super easy to deploy and super easy to edit website, even if there is zero code in the VCS portion.
I also use fossil on USB sticks for my legal information on my death. I include fossil binaries for every platform, so whenever I'm dead my next of kin can just plug in the USB stick I update every year and hand to them and double click and boom, fossil-scm opens with a VCS of all my files and documents, financials, etc, a wiki with next steps, etc. Easy peasy, and they get everything they need to take care of all the stuff to handle my estate, in a nice easy to use manner, with basically no work on my part.
Me too. My case is a little different though. I realized the tickets database is a generic sqlite database you can use as you wish, but comes with a web server, syncing, and version control out of the box. It was simple to create a CGI app in my language of choice that gave me a web interface to my notes system but without having to implement my own authentication. If I want to work locally using Emacs, I can. If I want a full or partial backup in text format, it's a regular sqlite dump of the tickets database.
Having only tried Fossil for this briefly: do you have any recommendations? Viewing is pretty simple, and I agree about the portability / SQLite is a great fallback, but modifying is complex enough to keep me from adopting it.
E.g. I can't find a way to add files/images/make commits in the UI at all. I can make wiki pages or tickets in there (honestly, the wiki probably covers 99% of what I want, aside from it not being very streamlined to say the least), but I haven't found a way to add files except via `fossil add` on the CLI. Have I just missed it?
Otherwise, the main things keeping me from being more interested is that it's a large blob -> harder to sync, and there don't seem to be any mobile-friendly implementations (e.g. no app that just runs it). A folder of markdown files and images/etc to embed via `![](filename)` is dramatically easier and more flexible on both of those fronts... but I do miss having a history.
Which requires running a fossil server that you can access anywhere, i.e. it has a custom and unique syncing system. That is... a rather significant requirement, compared to using a general file-syncing thing that you may already have.
But yes, you have a good point - once you have a server running, syncing is very efficient.
Fully agree. What about Gollum Wiki[1] ? I have been using it happily for years. It used to be Github wikis, but they diverged apparently. It uses git as backend. You're in full control of your data. Love it.
I don't love tiddlywiki but haven't found a better alternative yet. I'd love something easy to configure but powerful like the wiki and bug tracker on the Fossil SCM, but not tied to a specific platform. Also, Markdown/text/html because no vendor should own my thoughts. Obsidian[3] and Notion are in my "to check" list.
[1] https://tiddlywiki.com/
[2] https://fossil-scm.org/home/doc/trunk/www/index.wiki
[3] https://obsidian.md/