Silver Bullet: Markdown-based extensible open source personal knowledge platform
silverbullet.md
silverbullet.md
I think this is the closest I've seen anyone come to solving the problem of having separate "write" and "read" modes for Markdown editing in a web browser without resorting to a split-screen view. It's not _perfect_ (likely due to codemirror limitations) but what's there is pretty well-executed.
I might have to borrow a couple ideas from this for my own effort at a personal knowledge base: https://github.com/cu/silicon
Avoiding separate read and write problem entirely.
I was in my car when I first saw this thread, and was already impressed that it worked well right away on my phone (the surprise "you're looking at it right now; go ahead and edit!" half way down the website worked great on the phone too).
Then I got home and installed it on my desktop computer. First impressions:
- works great, already high level of functionality
- pasting images works as it should (but usually doesn't, sadly)
- not only open source, but enticing open source: extremely easy to install, TypeScript/esbuild on frontend, Deno/Oak on the backend, and you can spin up a local dev version of it in about one minute.
I check out every new thing I come across in the Obsidian/Logseq/open-format-PKS space, but this project looks especially interesting. I will definitely clone this and try hacking on it tonight after work.
So, what is special?
It is polish (=creator [4]). does that count? [0]
Seriously. For one thing, I spotted the "item" and "data" as queryable data sources [1]. if this is real "block level querying" (in that freeform page format), it could be indeed a missing link between obsidian and roam/logseq [0]. It is still early days though.
[0] Outside English-speaking/Western-Europe, Siuyan [2] is another local open source KB gem that successfully bridged this (blocks + freeform) gap with a very fast dev cycle. Being Chinese, It is not popular... wait.. what about logseq [3] ? (obsidian too? no.)
[1] https://silverbullet.md/%F0%9F%94%8C_Directive/Query
[2] https://github.com/siyuan-note/siyuan#-features
An OS requires a DB, but a DB is not an OS.
You said it yourself: Obsidian (= an OS) requires a DB.
But It does not have (a good, full-featured) one yet. dataview ? db-folder ? Yeah, sure, we are getting there [1]
Even a completely empty Obsidian vault with no plugins is slow to load on iOS (although I am still running on an 8 plus so it might be quicker on more modern hardware). I actually capture any new notes when I’m out and about in 1Writer because it loads instantaneously then move them into Obsidian when I’m on my Mac at a later date. I only use the obsidian mobile app now if I want to specifically look up or modify an existing note.
I’m not a massive fan of all these extensions for Obsidian tbh, it seems to go against the grain of what the whole thing was originally meant to be about which was basically a note taking tool that had back links and block inclusion like Roam but one that was also portable due to it being markdown. Now people are just writing reams of config in code blocks inside markdown files which are going to be completely useless outside Obsidian unless someone is going to port that plugin to whatever application you want to migrate to. Plugins that add functionality that work within the existing markdown format are ok such as the Calendar plugins, advanced tables, natural dates etc but the config based plugins are no bueno as far as I’m concerned. If they become syntaxes like fountain or mermaid with a life outside of Obsidian I’d consider using them but until that day I will most likely steer clear.
Yeah 100%. Emacs is almost 50 years old and still very popular. You can't beat it on programming power. Personally, I am not an emacs person (I'm even more notion than obsidian), so I understand your selective, design first approach to this.
> take inspiration from Obsidian Dataview, LogSeq
IMO
1. Obsidian Dataview should have been editable by design (not to say batch-editable)
2. Obsidian creators should have leveraged their dynalist (outlining) heritage into their newer product.
Your project is still young of course (I like it so far !) but some features are better kept in mind from the start. I hope you will take the best of both world (= see my "block level querying" remark in previous post)
Good luck!
There are a few other plugins out there that help with this. I feel blacksmithgu never intended to use this as an editor of sorts.
I've been using Obsidian a lot lately, and one of the downsides to something like the dataview plugin is that the results of the queries are only available within the app. I can't open up the .md file in vim/emacs/vscode and see the same results.
With emacs, I relied quite a bit on this sort of functionality too so it's been annoying me lately to not have it.
I understand that emacs is a big ask for someone to learn, but so far none of them can offer a similar experience out of the box.
Plus, there's no way any org features other than the baseline few are supported.
Wouldn't be surprised if this was already posted on the mailing lists as a POC or something.
Developing a PWA for it (basically bikeshedding) is much more painful than learning Emacs. Right now, any vim user can jump into emacs with very little friction -- Doom Emacs comes fully configured with evil-mode ootb, and is easily customizable.
I think the reason for the glut of personal kb apps is the relatively high interest of most "tech" people in these things. Unfortunately, most people bow out of their systems very often -- they either don't handle enough data or they give up on old data (or have it ineffectively categorized).
This app (aka "this week's personal knowledge manager") is the same as every other one out there. There's some trying to use GPT-3, but honestly, I don't want my apps parsed by an internet-slurry model. When (if, really) it gets good enough, one wouldn't need to take notes in the first place.
That take is just... wild.
I've been following this space intently for two decades. The past couple years have seen revolutionary, fantastical advances. Obsidian 1.0 like just came out in September of this year! A huge milestone, but with Logseq chasing them and seeming only a months behind them (and more open source to boot).
Even the slow, web-bound proprietary dinosaurs they are replacing — Notion, Roam, etc — are only a few years old, and in their time (which is now over) those represented huge advances over clunky Evernote, OneNote, and their ilk.
All building on the shoulders of ancient, more limited tools like nvAlt, VoodooPad, Tiddlywiki, etc etc etc.
We're right on the cusp of having a bunch of choices that can help manage all your notes, including your own and your collections of other people's, with images and video and audio and PDF etc, storing it all in non-proprietary open formats, on your own infrastructure (if you want, or cloud if you prefer), with familiar and easy GUI clients for all your devices, that stay synchronized whether you prefer to pay to make that easy or prefer to leverage the open standards and do it all yourself... and we're just getting started with the potential integrations and do-it-yourself add-ons that are enabled by the basis in common/open standards.
I think has been and continues to be one of the most interesting spaces in all of computing. (Sure GPT-3 and friends are interesting, but emerging solutions in this space are also useful, and to a huge number of people to boot.)
GPT-3 et al are a different thing though, and I reckon when they're good enough to be frictionless, the majority of people will stop taking notes altogether. The popularity of this field is solely based on how long it takes for people at OpenAI and others (Stability) to drive down costs to deliver ~1M words/mo to the average customer.
These will all go the way of the phonebook. There'll be "look how my model tears your markdown notes" contests.
Sure, but that isn't the important thing. The organizational structures and theories/philosophies are already mainly "good enough".
The important thing is making that power available in a useful form.
It's the software around them that has never been good enough — not even for just entering the images/data/notes/ideas. And you can't derive any value later from data that wasn't entered in the first place.
> nothing these systems do that couldn't have been replicated 20, 30 years ago
Hard disagree. One of my important use cases is: "paste PNG/JPEG image data from the clipboard, and instantly display it where pasted — while, behind the scenes converting that to an image file on disk and the (open) standard markup to make this data compatible with 1000s of other tools — and sync all of that to all other devices within a few hundred milliseconds"
You couldn't do that even 5 years ago. With any tool, AFAIK. (And I was looking.)
It's about the software, not the organizational structures.
It is revolutionary in precisely the same way as having good cameras in smartphones is. Many, many people take 1000x more photos today than they did in 2002 — and with good reason! It's super easy. And it's now easy — as opposed to basically impossible — to make use of them later. Can't remember where you bought that thingamajing? Just search for the snapshot of the receipt you took 4 years ago on your phone.
This generation of tools is bringing this kind of organizational power to people who have never had it before — not because they technically could't have used the older, more cumbersome, slower, less capable system — but just because they don't need it badly enough to make the investment of doing that.
Making it easier — lower friction to adopt, easier to derive the benefits from — is almost the entire point.
They're mediocre at best
I don't have an opinion on collaboration, because collaborating without proper organization is like running away from the problem. With proper organization, collaboration is easy.
My hypothesis is that a more modular approach is the next emergent layer of productivity. A collaborative workflow synced between multiple devices and users in realtime, with an in-app repository for new components and workflow layouts. Think foobar2k but for productivity. Google Apps on crack, where users can modify the application itself in realtime in addition to context.
The problem with other solutions is they solve one thing really well and then rely on a plugin system to fill the gaps. I'd rather see what an approach where each component does something simple but is a greater part of a larger, bespoke workflow. bash-utils for GUI-oriented, networked productivity. Currently, we have to rely on non-realtime, multi-application workflows with rigid, non-transparent data pipelines. Creating a cohesive workflow requires significant specialization, while also locking you in to a specific, non-malleable workflow dictated by app developers.
Hoping it turns out to be a useful paradigm.
I’m doing the same thing I complain about the “emacs is enough, we’ve had this for 30 years” commenters doing... conflating “good enough for me and my nerd friends” with “good enough for anybody” :-P
What I meant was that we finally have cheap/free GUI tools to do the same things, based on open standards with no data lock in.
From that standpoint, proprietary closed systems where your data is trapped, like Notion and Roam, should go extinct.
BUT it is definitely arguable that Notion is still easier and more approachable than Obsidian, and certainly LogSeq.
From that standpoint Notion is still a better tool for a large number of people.
I know dozens of people who use Emacs and dozens of people who have well-organized knowledge bases and while a few people have both that's about what I might expect based on random chance.
Is that offensive to you?
Also one thing i like about these alternate options is they work on my phone. I regularly use Obsidian on my phone to lookup information, jot things down, etc.
With that said i'm still looking (making.. maybe?) my perfect solution which is mostly just Selfhosted + Notes + Spaced Rep in the right UX.
I did emacs org-mode for over a year and ended up abandoning it. For me, the issue was: I could absolutely see how powerful it could get, but not only was the learning curve wildly steep -- the way it does things is so different from most other programs that it would slow me down in those.
I ended up falling back to a mix of things like zim-wiki, xbindkeys and a bunch of zenity/fzf based shell scripts to get what I wanted, while having something that played nice with everything else, interface wise.
I use a very basic emacs config. Emacs, org-roam, evil, evil-org, ivy, and which key. The most common way I do stuff is still M-x org-roam-find-node.
The only time investment was learning the readline keybinds and doing the emacs tutorial.
I do most of my coding in jetbrains with vim keys, and emacs is just a personal knowledge manager for me
Asking someone to fiddle with lisp in order to have org’s functionality is a LOT. I feel like WAY more people would benefit from org if they didn’t have to use emacs to do it.
I'd absolutely love to see more of this. Hate emacs but after picking up orgzly I'm addicted to orgmode.
If I could run Emacs natively on my iPad, I’d be all-in on org-mode. But I can’t, so I’m not.
And if that works for you, great!
But, I'd wager that Silver Bullet (or Obsidian, Logseq, etc) is a far better tool for 95% of people (for the purpose of organizing ones class notes, book reviews, recipes, first drafts of articles/papers, self-directed learning, personal notes of meetings, diaries and journals, etm).
Cross-platform (including phone) is probably a must-have for many. Immediate ease of use and lack of time spent not only learning, but configuring, is also important. A GUI following normal-people expected conventions, likewise.
The overwhelming majority of people aren't programmers, and will never use emacs for anything. What emacs is good at is not what they need.
It makes me think that if Emacs had a mode that was usable by novices out of the box and retained the same power it would take over the world.
The classic so-called Greenspun's tenth rule [1] it's not just about Lisp but general: classic systems built with the concept of "the OS is the SOLE and UNIQUE fully-integrated end-users application in the desktop" is the rule to follow.
Sure, sometimes peoples have issues understand how such systems can work, so trained in modern ones, but just think about something you buy on-line:
- you get some mails (order confirmation, payment, shipping, ...)
- you get one or more bank transactions
- you might have some notes on some new assets, like a note about how to use the device, periodic maintenance, ...
ALL such "digital things" are separate data on separate apps but for you they are "just a set of things". Why having them separated then? Why you can't just collect/search them in a single UI? In org-mode/Emacs we can achieve something like that, in classic systems it was a normal desktop computing task.
That's what we lost in decades of commercially-driven development, even in FLOSS land...
[1] #+begin_quote Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp. #+end_quote
-- Philip Greenspun ~1993
While it’s almost impossible to innovate on what has been done in emacs over the decades, I think we can refresh some the things that make it powerful with a fresh coat of paint, to make it more accessible to a “younger generation.”
> I think we can refresh some the things that make it powerful with a fresh coat of paint, to make it more accessible to a “younger generation.”
That's what scare me, again in general: I see regular small complaint of modern absurdity, posts like:
- https://tiramisu.bearblog.dev/your-desktop-is-not-a-destinat... | https://news.ycombinator.com/item?id=33838697
- https://mjg59.dreamwidth.org/61535.html
- https://vermaden.wordpress.com/2022/02/07/epitaph-to-laptops...
- https://rsapkf.org/weblog/q2z/
- https://tomcritchlow.com/2022/04/21/new-rss/
- https://jfm.carcosa.net/blog/computing/usenet/ | https://news.ycombinator.com/item?id=33510169
- https://dianne.skoll.ca/projects/remind/ | https://news.ycombinator.com/item?id=28363453
- https://github.com/akkartik/teliva
- https://onezero.medium.com/the-document-metaphor-desktop-gui...
- https://den.dev/blog/user-hostile-software/
- https://www.charlieharrington.com/smart-phone-dumb-terminal/
- https://mattmower.com/2021/08/02/what-we-lost/
and COUNTLESS others, similarly many "new stuff"/innovations appear and are actually partial, limited and limiting solutions to problems already solved decades ago in a more broad and superior way.
Emacs itself is a bit horrific in the sense that it's codebase is hard to be kept up by modern developers who have troubles knowing it, but at least represent the classic model. If we lost the memory of the past it will takes decades to reach the level of evolution we have already achieved witch is really a shame.
Anytime I see new software, yours, LogSeq, some "new shiny file manager", Tiidly Wiki and so on, witch actually are a BIG effort to achieve something already existing with far less efforts thanks to an already made ecosystems who makes their development easier I have a sore smile: end users suffer from limits of modern software, DEVELOPERS suffer equally because craft something on top of modern systems it's equally terrible but we seems to be unable on one side to reach again a critical mass of users to being able to innovate again, on the other sides most people simply ignore the past so ignore what's lost.
A stupid example: link an email in SB means essentially or support a specific MUA, tracking it's evolution since breaking changes might happen all the time or add an MUE inside SB. In Emacs it's just a simple function since anything is already there. In Plan 9 to cite a project often considered hostile from and to Emacs write an MUA is damn simple limiting mails to Plan 9 itself, an MUA it's just a specific viewer of some text stream read form some user-configured filesystems mounts and so on.
The sore part is that's I can easy state the above, even in my poor English, but I have no practical solution because resurrecting the classic model for present times demand an effort ONLY a public funded body or a large community can made. We have dismissed "for business reasons" essentially all public research and we have essentially pushed to irrelevance all communities...
A) I don't see support for RTL languages (like Hebrew/Arabic) - or to configure text alignment.
B) According to a Github issue [1] it cannot be installed on a Raspberry Pi
[1] - https://github.com/silverbulletmd/silverbullet/issues/136
It would be great to have version control done internally - its mandatory for knowlege base and not something you should leave to the community.
What I lack so far is md preview scroll sync.
I am consfused on how to navigate site using rendered version, it looks like its always in the input mode with CTRL+p doing markdown preview.
For me that was actually the reason I switched to it - I usually take notes in the form of deeply nested lists, which isn't as ergonomic in normal note-taking tools (the Obsidian plugins for it are not enough).
Ironically, if Obsidian was open source and charged $25/mo for services, I'd happily pay for it. Even if they used a strict license to deter competitors (eg. stating they must license their changes back to Obsidian and that all hosted software interacting with Obsidian must also be open source).
Workflow: PKM in Obsidian, move ready docs to designated docs folder tree, sync w/ git to shared docs site repo, two-way collaborate w/ colleagues on docs.
You do need to align some options in each, such as file naming, a header, a particular style of links, and ensure frontmatter behavior. All necessary settings exist.
https://foambubble.github.io/foam/
https://github.com/foambubble/foam/issues/46
This supports basic static file and links functionality, not extended data tools etc., of course.
This seems like the kind of thing I'm looking for, should be easy to self-host and access from different browsers, no?
Tiddly Wiki might be less hard to use with
- Timini (https://ibnishak.github.io/Timimi/ + https://addons.mozilla.org/en-US/firefox/addon/timimi/ or https://chrome.google.com/webstore/detail/timimi/mnggafnmmhd...) or
- TiddlyD (https://github.com/bachmeil/tiddlyd)
- Twkwk (https://github.com/steinuil/twkwk)
And probably many others alike. Essentially they are local daemons who serve a local TittdlyWiki taking care of file saving, attachments etc. The interesting part of TiddlyWiki is IMO it's full-fledged transclusion support but it's far more mechanic than Zim.
Org-mode/org-roam/* in Emacs do MUCH more and are MUCH more reliable in time-based notes terms (lifetime of notes) but demand much more effort...
If I can find a way to easily sync notes between computers this may be a long-term replacement for Simplenote and nValt.
Thank you!
https://forum.syncthing.net/t/really-slow-at-syncing-deletin...
I've been using Syncthing for years to keep thousands of files in sync and it's been working wonderfully.
For me it’s terrible situation as it blocks syncs when you need to get them fast. If the app which main function is to “sync files” can’t do that efficiently because they are small — it’s unacceptable for me. Somehow borg, git, resilio are working with them fine but for Syncthing this is unliftable task. I’m not alone here as Syncthing’s forum regularly gets this topic up. Also I don’t want to work around this somehow as I don’t need another one workaround in my daily routines.
PS: it’s my personal opinion/case and I cannot blame somehow authors of the free and open source tool that they didn’t design it as I would expect — I just use another sync tool which works fine.
It differs by providing a WYSIWYG interface while saving content in Markdown.
I have have used various tools in this category such as ThinkTank and More since the 80s. I used Setext, and then transitioned to Markdown soon after Gruber announced it. Currently I most work with notes in whatever text edit I am currently using with a dose of NVAlt.
I will need to give both of these new tools a deep review to see if they are worth of daily usage.
It looks like it's mostly engineered this for personal use, but as somebody currently underwhelmed by GitLab Wiki (/Gollum) for enterprise documentation, some of the features here would be very useful in that context.
https://github.com/silverbulletmd/silverbullet/raw/main/webs...
I'm a heavy F/OSS note-tech user and my first thought was "this is awesome", followed by "does it sync/can I use it across devices".
Also just my own selfish wish but but having a dedicated desktop app is also awesome, even if it's nothing but a webview (check out Tauri)... The PWA should make it possible to "install" the app, assuming the manifest is there and linked via meta tags.
Always build something different and defensible.
All else being equal (which, yes, is unlikely) an exact clone of Obsidian would be “better”.
Giving away code to a paid app while it is viable and thriving offers no benefit to the producer except to allow anyone and everyone to duplicate their app and create knock-offs. The right "eyeballs" will never look at it because of Tragedy of the Commons.
Therefore, it's a wish but not a requirement.
It is important to me, and if I was aware of an open-source Obsidian equivalent, I would have chosen that. But there wasn't, and AFAIK there still isn't one.
Having a good tool that works well for my purpose is more important, yes. So I still happily pay for it.
> no benefit to the producer
Perhaps...? But the producer isn't who I care about here; I'm the user.
For fun, I just read through some of the source code. Typescript is a nice looking language.
Two questions for experienced Obsidian users:
- what's the best way to backup the md files with the option of undoing changes? Some kind of Git based approach with automatic comitting and pushing?
- wm is there some kind of online only version of Obsidian (of similar) for self hosting? Reason is that I want to edit my notes when I'm away from my personal devices and cannot install any Software but have access to the internet and a browser.
[1] https://simonwillison.net/2022/Dec/2/datasette-write-api/
[update]: It is prone to mis-click on a link in the editing mode.
your app seems solid and neat, but the introduction video link does not work. it redirects to https://silverbullet.md/fs/( which is a blank page to me.
edit: i am using uptodate google chrome.