Documentation is enormously confusing and outdated

I went on a bit of a wild journey trying, over several hours today, to install and use SilverBullet. First, I searched for the "install" link on the home page. I understood that the website was styled as a sort of knowledgebase, much like Obsidian's manner of doing things. Great, showing off what the application is before it's even installed. Then, I found the install page to be basically empty, devoid of anything useful.

First sections says that to install it in a manner hosting it as localhost, there's two steps. First, you can install the binary and either run it like that or in a Docker instance. Second, you can access it!

Great! ....But how? Where are the actual instructions? I'm on the install page, it should have install instructions, not vague "you could do this" single-sentence suggestions about general approach. In any case, it's not the method that I'm looking for, so I moved on.

Second section says you can self-host it for remote access. That is the method I am interested in. However, this section seems even more useless than the first. All it appears to have are suggestions that you should go install one of four third-party services. Okay... but how about how to install the application itself, once you have one of those running? Nope, the section really seems to be only about those third party services. Nothing to imply those links actually lead anywhere else than the official website of those services.

None of the other sections on the install page (cloud, and file systems) were relevant to me, but then I figured, if the self-hosting section is actually trying to assume you have SB running already, maybe I really do need to get that binary. The text mentions releases on github. Maybe using it is simple and self-explanatory! So that's when I clicked the link for "Binary" it lead to another page with, on that next page, a link to the github page. Okay, we're getting somewhere.

I download the latest release from github, unzip it on my Pi, and realize there was no installation. Weird, considering how this sb executable doesn't match the silverbullet commands seen on the website. I double-check. I'm looking for how to actually use the application, so I check the main page, looking at the section right after Install (which comes after a general introduction pitching the app). What comes after Install? Architecture, of course! It would be so silly to expect "How To Use" or anything like that. The video tour doesn't show installation, nor initial setup of spaces. It's just already set up. Not helpful to me just beginning. After the useless Architecture setting, it just talks about the history of the project.

So I search the blue links on the main page wondering if I missed it, and finally find a page called Space. Maybe we're onto something!

Nope. It's just talking about how spaces fit into the program broadly.

Figuring I should just bash my head against the previous places I saw the commands before, I head back to the Install page. To the Spaces page. Quick Start? Manual? I genuinely have no idea where it is. It takes forever for me to realize that it was exclusively in the Binary page whose link is found in the Install page... That's right, the instructions for making a space are only found where you would go to fetch the zip to download. The logic is devastatingly bad. My hope is being sucked out with every passing second. Genuinely rotting.

Anyway, here's what the commands say!: ./silverbullet -p3000 space
And here's what happens when I enter that (ignoring that it's actually called "sb"):
Error: unknown shorthand flag: 'p' in -p3000
Usage:
sb space [command]

Weird... It's acting like "space" is a subcommand, not the name of the directory I'm specifying. What happens if I use it like that?

./sb space gets me a help prompt that suggests the add command. So no, I can't do anything like ./silverbullet -p3000 space -- instead it's ./sb space add followed by an interactive prompt. There's only one problem with this. If I want help with this app that's completely different from what is discussed on the website, I'm entirely out of luck.

Wouldn't you know it, I have multiple issues. Firstly, when it asks for a URL to serve from and suggests localhost, and I enter localhost just for testing, it says the server at that URL can't be reached. Localhost, which is the local device and is therefore always reachable -- can't be reached. Next issue. It asks what auth type I'd like to use (yes, it just lets me go through even though the URL is unusable). I figure I'm the one creating a new user, authenticated to the SB space I'm making. Brand new, so I'm offering a new username and password. Nope! When I finish entering them (the password is in plaintext for some reason, by the way -- not secure), it says "authentication failed". Why would it ask me if I want to create an authenticated user then tell me my authentication failed? It looks more like it has an existing user? But there was no mention of a default user coming with the installation on the website. How can this be??

I realized having this system with zero documentation about it was going to be a problem.

So I moved onto the next method. Install page, under "Self-Hosted". I investigated those links that looked like they just belonged to the third-party services, and noticed the line saying they were community guides, just a little sentence in there. So I sighed and followed the one for Tailscale, since I already have it running.

Then, I followed the instructions to install it through that page, which was shocking. It looked like light at the end of the tunnel! It all worked out!

But then... I found myself wanting to configure it. I'm not a Docker user. It's new to me. But I had to use the Docker installation, and it worked quickly, so I shouldn't complain. Except the other method also worked fast to install. It was the next step that was the problem. I noticed the login page, and wondered why I was being asked to log in when I never created a user. Eventually, I found the line in the docker command. Great! Now how do I change the user? How do I redo this, remove the user, add a new one? I crawled through the nightmare of a website yet again, and found nothing. Later on I would find a subsection of Install/Configuration called Authentication, and then later a page specifically called Authentication waiting for me... I couldn't tell you where the link to "Authentication" is since I lost it in the mess of a website. Plus, in a weird twist, it was literally a page just for the Docker version of the app, with no external indication of it belonging there, like being underneath a Docker/Authentication or something. I also wanted to know how to manage multiple spaces, another thing I'd have to abandon.

Another fun encounter was caused by the fact that I followed the forum guide for installing alongside Tailscale and completely missed out on how useful the "Docker" page of the main website was because that post didn't mention it at all. Am I the stupid one, or is it the fragmented approach to data?

Anyway, with two options dead and useless, I went searching the forum for any other ways. Let's keep this one short. I found a post about using Deno to install SB, and after getting through that one excrutiatingly slowly (not the fault of the webpages this time, it was because this guy insisted on Cargo for installation and that was way too heavy for my Raspberry Pi 2 W), I found out it only distributed version 0.10.4, with the update command not finding anything else. Then by googling I found a "jsr" page which I could presumably use to replace the package with newer releases found there. Except, they stop at 2.5, while current version is 2.8.1. Eugh. All methods, completely useless.

It's only while I was refreshing myself on my issues that I found multiple of the above pages, particularly the Docker one, and in the end I pissed away an entire day. I went to college for both IT and programming (mercifully pre-ChatGPT), and this is what happened. What a nightmare.

So, in short. Update the documentation to have the commands reflect the actual application you deliver in the binaries (who updates their entire application interface and then doesn't talk about the current way in the docs?). Link section titles to group ideas hierarchically together and make them easier to follow. Have a section on the main page between Install and Architecture leading to links for how to actually use the dang thing. And make it obvious which pages are for binary related stuff, and which are for Docker related stuff. I'm probably forgetting something! Absolute insanity.

You'll notice my emotions are firing a bit, but maybe when someone replies I'll be more amicable. If there was a Discord server I could have much more easily asked questions about my small-scale confusions that aren't worth a whole forum ticket quickly, to a knowledgeable audience, and move on easier to the actual issues. But instead it was a slogging mess of going back and forth and believing I must be insane because I swear I saw some thing on some page under some link but I have no idea where it was.

I'll be cool tomorrow, but I'm posting this ticket as-is. I bet the software is cool when it's running right!

First of all: thank you for this feedback. However raw in form as it may be (as you acknowledge), I understand how frustrating this has been for you.

The tone is not super encouraging to me personally as a (largely still spare time) developer, but I understand that based on your "journey" you're frustrated. And likely most people trying this and running into your issues would simply drop off and never be heard from again, whereas you spent significant time putting your frustrations on paper, which is actually super helpful, so thanks for that!

In fact, it's been a great trigger for me to clean up some of the docs as a result. A lot evolved naturally over time and needed some clean up, so much is clear.

Interesting, this suggests you didn't get that "Binary" or "Docker" is a clickable link to actually get the instructions for those binaries, and you should click it. That's surprising, but clarified this now.

So based on what follows next is that you downloaded the wrong file, which throws you completely off the rails. I've now clarified the difference between the sb (client CLI) and silverbullet-server (the actual server) files on Binary, and also that for some mysterious reasons 2.8.1 was missing the server downloads (previous releases do have them), so that was unfortunate (also fixed now).

Even though I think it was already there, perhaps not clear, I've now clearly marked the "Getting Started" is the next step after the install (and I rewrote "Getting Started" wholesale now)

Right, I can see how that would be confusing. Now it clearly says also on the home page that after install comes Getting Started and made sure there's more links in other places to that too.

Generally I think after this a lot of your path went off the rails because you ended up downloading the wrong binary (sb instead of silverbullet-server).

I made quite a bit of edits to the website content now that hopefully clarifies things.

The section around TLS is just a pain. I edited this a bit more, but it's just a pain to setup and explain...

Thanks again for the feedback, and I hope you're willing to give it another shot :slight_smile:

The instructions seem a bit more chronological now, with when to follow what link during what step being somewhat clearer. I appreciate you treating my emotions earnestly. Thank you for your reply despite how I was speaking.

I know that it seems a bit unintuitive that I wouldn't get the Binary and Docker links, but going in I didn't realize how open-ended the install process would be. Even more linear instructions do have stuff like "If you have [this thing], follow the info box on the next page to set up [prerequisite] first", but these instructions were far more fractured than that, where a difference in usage case resulted in zero steps being the same between two installations. It would have been easier for me to hone in on what I needed if I had the right mindset going in. Then again, the Binary stuff was completely missing from the remote self-hosting section, so it would have still been a little awkward.

And that's probably the bigger deal, actually. Since I didn't want to set it up for localhost, I wasn't interested in digging down the links in the localhost section, despite the fact that it turns out they are useful for a variety of setups. If they were in the self-hosting section, sitting just before or after the TLS stuff (under the same heading), I might have thought of them as more relevant to me and been interested in what there is to say following the links. When I did the binary approach, I clicked and then tried to search for that github link immediately on the next page, since this page seemed relevant to the localhost setup and so all I'd want from it was the releases.

Fickle nature of human psychology. As much as we realize increasingly that traditional reading doesn't make as much sense as it used to in the age of technology, with how all kinds of media and paths through text can be embedded anywhere everywhere and that maybe we can mirror something closer to the mind in a virtual space... School trained us all linearly. It takes time to unlearn. If I'm looking at an instruction book, I expect it to instruct me, not to lightly suggest "there are some things here and some things there, if you're interested".

These holes in my mindset were exacerbated by the missing server download. I considered trying 2.8.0 and maybe should have in hindsight, but the idea of the whole user interface changing from x.x.0 to x.x.1 didn't make sense to me, so I never found out that the previous versions had both downloads.