25 lines
1.7 KiB
Markdown
25 lines
1.7 KiB
Markdown
Federation enables _browsing_ content from spaces _outside_ the user’s space, specified by quasi-URLs in the shape of `!domain.tld/path`. An example would be: [[!silverbullet.md/CHANGELOG]].
|
||
|
||
This enables a few things:
|
||
|
||
* **Browsing** other publicly hosted SilverBullet spaces (or websites adhering to its [[API]]) within the comfort of your own SilverBullet client. One use case of this is [[Transclusions|transcluding]] the [[Getting Started]] page in the user’s automatically generated index page when setting up a fresh space.
|
||
* **Referencing** other spaces for other purposes, which is leveraged in [[Libraries]].
|
||
|
||
# How it works
|
||
Effectively, any page [[Links|link]] starting with `!` is rewritten as follows:
|
||
|
||
* Replace the initial `!` with `https://`
|
||
* Append `.md` at the end
|
||
|
||
The resulting URL is then fetched and displayed in the editor in read-only mode. This means that you can navigate to _any markdown_ file on the (public) Internet.
|
||
|
||
For example: `https://raw.githubusercontent.com/silverbulletmd/silverbullet/main/README.md`
|
||
Can be written to federation syntax as follows: `!raw.githubusercontent.com/silverbulletmd/silverbullet/main/README`
|
||
And used as a link: [[!raw.githubusercontent.com/silverbulletmd/silverbullet/main/README]]
|
||
|
||
If the target server supports the SilverBullet [[API]] (specifically its `/index.json` endpoint), page completion will be provided as well.
|
||
|
||
Upon fetching of the page content, a best effort attempt will be made to rewrite any local page links in the page to the appropriate federated paths.
|
||
|
||
## Hosting
|
||
Tooling to make hosting public spaces easier is still a work in progress. The way it is enabled on `silverbullet.md` is by running a dedicated SilverBullet instance in read-only mode (see [[Install/Configuration#Run mode]]). |