Package dedicated to workflows publishing digital garden on web

Hi all. I wrote up my setup here: mt. solitary stack | mt. solitary. There’s some links to code snippets, mostly taken from other folks around the web, but hopefully someone can find it useful.

4 Likes

heyhey,
I have made a longer journey trough the digital gardening wormhole now and while orgroam is probably the best “libre” notetaking backend, I find the publishing solutions not that enticing, namely since i am not a developer and rely on an existing community (and plugins) to add features to the site.
i find ikiwiki here interesting, since it’s already a wiki, but can generate a blog and has many useful functions/plugins: a blogfeed, graphplotting, search, comments/discussionpages, and, of course, the first criteria: an org plugin. There are other themes, or at least users with nicelooking pages. havent tried out though because the installation on windows seems whacky - transition to linux will happen sometime sooner though^^ Maybe someone will try it out and report :slight_smile:

Right now I am myself looking into the possibilities of nikola (based on phython), which seems to be quite powerfull and moldable and has some existing org-connections and standalone plugins like above mentioned; themes seem to be transferable; and an org- plugin that calls on emacs for new posts/pages and integrates the org format.
from the org-side there are several existing solutions, too - but they’re pretty old and i’m not sure if they work.
GitHub - msnoigrs/ox-nikola: export Nikola blog posts in reStructuredText syntax from Org-Mode runs nikola from emacs
drymerisnothere / nikola-el · GitLab renders to rst in nikola
GitHub - xcodebuild/blog-admin: Write blog in emacs with hexo/org-page/nikola more general publishing to nikola/hexo/org-page
GitHub - olymk2/emacs-nikola: nikola plugin using magit-popup publishes to nikola via magit

well, i will see. I had the problem in jekyll that i couldn’t make blogposts work on the base of notes that this template introduced (it has some pretty strict rules in defining content) https://digital-garden-jekyll-template.netlify.app/, that’s why i’m looking for more moldable generators (not even sure if nikola is the answer here)

Thank you for sharing the setup. Going through I was able to setup garden.
I really liked your index page containing all notes. However going through code https://github.com/clintonboys/emacs.d, I couldn’t find any hint to how index is generated. Could you comment on it. Sorry if it sounds silly, but I don’t have much experience with web dev.
It would be great if there existed a hugo theme especially designed for digital garden.

1 Like

Hi - the code that generates the index, recent updates section, stubs page and summary page is done with Hugo - I did initially generate it in org mode using org babel and bash but didn’t like that I had to remember to generate the Markdown every time I wanted to update it; doing it on the Hugo side solves this problem. The repository is still private but I’m planning to publish my fork to the hugo-book theme as a Digital Garden-specific theme for Hugo soon.

To generate the index for example, I created content/all-posts/_index.md which just contains front matter and a heading, and then at layouts/section/all-posts.html I have

{{ define "main" }}
{{.Content}}
Total notes: {{ len (.Site.RegularPages) }}
<p>
<ul.dashed class="all-posts">
{{range .Site.RegularPages.ByTitle}}
<li><a href="{{.Permalink}}">{{.Title}}</a> ({{.WordCount}} words, updated {{.Lastmod.Format "2006-   01-02"}})</li>
{{end}}
</ul>
{{ end }}

The other pages are generated similarly. Hope that helps!

1 Like

Thank you for taking time to write. I was able to generate index page without any problems. Looking forward to your hugo theme.

I actually have a WriteFreely account and there is an emacs package for publishing from org already. So that‘s pretty much possible, but I haven’t tried it out… one cool thing is that it will render the md–roam style tags #tags by custom.

1 Like

I decided to give Hugo a try, just to have something working for the Moment and be able to move.

Tried to just test your branch with the demo sites of the regular site, but it gives me errors bc it misses the mathjax.html partial…
other: The „version System“ implemented in Hugo–book actually sounds very cool.
I would like to add the usual taxonomies by tags/categories though. The more „entrances“ into the garden, the better I think :wink:

Here’s another Hugo theme, which is themed more like @jethro‘s approach

The main thing I find interesting here in comparison is the transclusion, I don‘t really understand what is implemented to enable it (would like to style it in a blockquote at least, too, though.

Hi, yes I have a few small partials implemented outside of the fork:

  • analytics.html which just wraps my Goatcounter script
  • google-fonts.html which gets Google Fonts working based on this gist
  • mathjax.html which just wraps the Mathjax script to support LaTeX rendering

These are then included in the header partial in the theme fork hugo-book/header.html at master · clintonboys/hugo-book · GitHub, so you can disable whichever you wish.

did you have a look at org-publish?
I was trying to use it for publishing to hugo, but it will always give me “no publishing function chosen” when I envoke it with the single file command (for testing)…
my configuration is as minimal as possible right now…

(setq org-publish-project-alist
      '(
        ("digital-garden"
         :base-directory "~/org-roam/"
         :base-extension "org" "md"
         :publishing-directory "~/hugo/hugo-book/content/notes/"
         :publishing-function org-hugo-export-to-md))
) 

I would prefer using org-publish over copying the stuff that you and jethro do, without being really able to understand and customize it.

some stuff about the book-theme, maybe s.o can help or is inspired:
I found an easy way to keep the sidebar in hugo-book always toggleable which allows for more space. same is hoped for with the toc , that failed though until now. I would have liked it to be toggleable for a post on the right of the title, that i would use for longer articles/ blogs but maybe not for shorter notes, but have not really figured it out … .
i also want to have a “real header” where i can have some navigation elements, the toggle for the sidebar, the title of the site and the search.
Having the space on the sites generally empty on bigger screens is just cleaner and makes room for the implementation of side- and marginnotes for example, which i would hope for to accomplish somewhen (also transclusion, but these two methods only make sense when the site works in general and.
wanted to have a real header to put search, site name there but i’m struggling with implementing good spacing there.

a good thing i didn’t really recognize earlier is that categories and tags are implemented in the theme albeit not shown very prominently, but one can work with that :).

A little update:

Publishing a slip-box online is something that we’ve been interested in developing (probably as an extension). We’re currently working on polishing v2 which, has you know, introduces a number of changes. Once we’ve polished the branch, merged it into main, and dealt with the ripples, we’ll probably be favouring the Emacs UX and the bigger extensions we have, most notably org-roam-server. As a result, the web-publishing is fairly low-priority, but it remains on our radar nonetheless. I’m working on a document that would specify how this publishing should work, and I’ll make sure to submit it to those interested for review.

8 Likes

This sounds cool, having the graphing convert into the one in public or be able to set it up from inside org–roam would reduce a lot of pain (It would be the function I personally would need/love… ).

I would love to have a simple way to export my notes similar to this guy Notes - Hugo Cisneros - Personal page

Most of their workflow is copied from Jethro’s braindump, but the dynamic graph is stunning.

If anyone knows how to achieve this, I’ll be grateful.

4 Likes

I continue to think about all of that, but in parallel i try to slowly migrating to nix (so much pain …).

Seeing your huge work to publish a great garden of notes @clintonboys , i think, hey, that could be really cool to think a “web into web”, linking/forking notes between garden ?!

For example if i found the note on https://hugocisneros.com/notes/online_privacy/ really complete, and i want to copy and enhance it on my garden, we could imagine a system to fork/link the original and the cloned note.

Scenarii :
A - I fork a note from @clintonboys into my personnal garden, org-roam produce a local copy that include a permanent link of the file on the git repo and comit of @clintonboys
B - I modify this local note, adding new idea, and after that i publish the new note on my personnal git/github.
C - two weeks later @clintonboys see i enrich his note on my garden with some new content. If it want org-roam directly propose a merge between the two distant notes.

We could also imagine that linking an external .org on another digital garden, org-roam propose to directly catch and display the external note when navigating into my local note with emacs.

The question is, how could we emit the beep sound/ notifications that say “hey @clintonboys someone fork your note here https://xxxx !”

I don’t know if it’s clear, this is another idea for future dev on publishing system @jethro @zaeph

1 Like

This idea of forking based collaborative wiki reminds me a lot of http://about.fed.wiki
I’m not sure whether something similar would be possible with a org-roam + git → static site based workflow, but I hope the framework of somehow adding forking - collaboration tools to digital garden paradigm eventually becomes the norm.

2 Likes

linking/forking notes between garden / forking based collaborative wiki

I keep notes on this topic here: Interlinking wikis

FedWiki is an amazing tool but a monoculture in some sense.

I’m not sure whether something similar would be possible with a org-roam + git → static site based workflow

Agora is a project that aggregates wikis that have been published as static sites. I publish my org-roam wiki to it by converting to Markdown+wikilinks using ox-agora and publish-agora.el. Eventually Agora will improve its org support and this intermediate export to Markdown won’t be needed.

IndieWeb principles and webmentions would also work towards this aim of interlinking and forking.

2 Likes

Ah very interesting, I recently encountered Agora myself, I hadn’t thought of trying to export my roam files to be compatible with it. Its intent to support org will be something to look forward too!. I agree on the monoculture point about fedwiki, I have never used it partially for that reason. It would be nice for users to be able to system the like for their personal notes and mark for publishing to a collaborative linked wiki. I guess the tradeoff for added freedom for each user is more overhead to bring things together into a shared context. Not that thats a bad thing. I’ll check out your interlinking wikis page.

Edit: looked over your interlinking wikis page. Maybe tiddlywiki could also be relevant to this train of thought? It makes it very easy to make your own local copy of any wiki which you can edit and do with what you will. Its not quite a smooth interlinking wikis workflow, but maybe another piece.
Maybe this discussion is getting off topic for the thread.

1 Like

Where do you go to talk to people about Agora? I got excited when I read about the project, and tried to get it to work. Installation was hard so I made a custom Docker environment for it, and even then I couldn’t get it to work. I posted an issue and never heard a response.

Flancian is usually very responsive in my experience on Mastodon or Twitter. Or the Agora room on Matrix.

1 Like

Linked to our discussion @doubleloop @JeffBrown @clintonboys It seems Athens follow a similar direction with CKM, RTC (Real Time Collab) : Season 2 of Athens — A Collective Vision ;

2 Likes

Another great news for Reproducibility, ZK using Haskell + Nix, the possibility to easily publish org-mode / org-roam with emanote emanote github, that superseed neuron from srid :

@jethro @zaeph , emanote is “quasi” org-mode/roam ready it seems : Add a second format (org-mode or ReST) · Issue #18 · srid/emanote · GitHub

2 Likes