Hacker News new | past | comments | ask | show | jobs | submit login

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.

[1] https://tiddlywiki.com/

[2] https://fossil-scm.org/home/doc/trunk/www/index.wiki

[3] https://obsidian.md/




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.

For example, here's a Tree Language called Dumdown that compiles to markdown or html: https://jtree.treenotation.org/designer/#standard%20dumbdown

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.

[1]: https://srfi.schemers.org/srfi-119/srfi-119.html


Yes! It's mostly S-Expressions!

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.

[1] Numbers are approximate.


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.

For example, here's the editing experience for an upcoming DSL to enable non-programmer researchers to put together topical exploratory data analysis tools: https://github.com/treenotation/random-demos/blob/main/Scree...

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.


A few of them are out there in the wild.

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.


This is awesome. I just finished with a more narrowly scoped and probably worse version of something very similar – in JS/TS no less.

Looking forward to digging deeper into this later.


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.


Check out Joplin, Dendron, Notable, BoostNote, Roam Research.

For wiki style check out Agora: https://anagora.org/node/agora

Honourable mention for Notational Velocity which pairs well as a lightweight quick interface with any other md filesystem based note software.


+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.


Never heard of Dendron before. Just looked at their site and it's basically the same exact tool as Foam here. I wonder if they're related?


Dendron is more opinionated. It seems cool, but I didn't want to get too involved in a system.

Foam is just markdown with some vscode extensions. Foam is closer to obsidian.


It's similar and they are interoperable, but Dendron runs inside VS Code.


Foam runs inside VSCode as well.


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 think they're using vscode here as an application platform of sorts.


Like Emacs before it. Emacs has Org-mode. Why shouldn't VS Code have a killer app of its own?


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.


https://zim-wiki.org/ is what i use, and it is a fantastic cross platform solution


How is fossil-scm tied to a particular platform?

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.


> I use Fossil-SCM for my personal notes.

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.


I run fossil-scm in docker-compose on local file system spin a server only for viewing and do the editing and CLI in VS Code.

It won’t be difficult to build a mobile friendly web UI on fossil server if you want a complete mobile experience.


You can't add files or commits from the web UI.

The wiki has had some work done to it in recent versions, it has preview now for instance.

Fossil syncs *FOR* you. let fossil handle syncing, that is it's bread and butter.


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.


Git's syncing system is custom and unique also.

But yes I agree.

You can just copy/overwrite the SQLITE DB file, and do a bulk replace. Not the same as 2-way sync that Fossil will give you, obviously.


I used tiddlywiki for a while but found editing clunky. Having to click around a webpage and edit in a textbox was not ideal.

I've started using obsidian, and I'm happy. It saved markdown files locally, so you don't have to learn TW's own syntax.

Since it's local, it's also faster than notion. And you can put the files in a dropbox folder to sync with all the machines.


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.

[1]https://github.com/gollum/gollum/wiki


Have you tried vimwiki? Combining that with Skim and obsidian has worked for me over the last few months




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: