⚠️ Published documentation might be lying. I am in middle of re-doing the architecture (including the public API) of cl-ownpress, and am doing docs-first test-driven development. Once I am happy with it, I will create a 1.0 release and do future releases in release branches.
⚠️ Under active development. API/architecture might change without warning.
Practically, cl-ownpress is a static site generator.
Theoretically, its primary objective is to
Give hackers the ability to publish their content while maintaining its ownership.
** Goals
Paramount Hack-ability
Tweaking isn't sufficient. Hackers should have the freedom of extend, replace and bend the system to their will.
Friction-free development experience
Ability to hack isn't sufficient. Hacking experience should be pleasant.
Content ownership
As users of the internet, we publish a lot of content on the web. It almost always end up in a walled platform, at the mercy of someone-not-you's whims. Cl-ownpress should bring ownership of user's published content back to user.
** Current state
I am using cl-ownpress as a library to create [[https://bitspook.in/][my personal website]] ([[https://github.com/bitspook/bitspook.github.io][git repo]]). It allows me achieve my desired publishing workflow.
Publish with full power of Emacs
Most of my writing happens in org-mode. I often tinker it to a great extent, to keep capturing my thoughts/experiments fluent in my computing workflow. I want to turn this liability into an asset.
Status: Done
[[https://github.com/bitspook/cl-ownpress/blob/f33689dba0ac903fb8c9d64f9e8f5bc01b68429f/src/provider/emacs.lisp#L1][emacs-provider]] allow interacting with my running Emacs instance, and run emacs-lisp. E.g I use it to:
while delegating the responsibility of actual org->HTML conversion to Emacs itself.
Publish a subset of my notes on my blog
I have a fluent [[https://en.wikipedia.org/wiki/Zettelkasten][zettlekasten]]-like note-taking system for capturing my thoughts. Almost all my blog posts are edited versions of these. I want to publish notes which mature enough.
I also want to publish any linked notes, but in a "certain" way. e.g they should be published, but not listed anywhere on the blog/rss-feeds etc.
Status: In-Progress
[[https://github.com/bitspook/bitspook.github.io/blob/3e49c3caf6c03e83f6a0cc7bd4ec054f8256d90e/src/provider/denote-provider.lisp#L1][denote-provider]] allow publishing notes with specific tags as blog posts. Publishing notes linked inside these notes however is pending.
Publish my personal projects
In addition to taking ownership of where my projects' source-code is hosted (I might switch away from Github), I want a place where I can express more about my projects. A place to document inception of an idea, its evolution, fantasies about a glorious future; things which aren't exactly documentation.
Status: In-Progress
Right now I am publishing just one of my projects using cl-ownpress ([[https://bitspook.in/projects/spookfox][spookfox]]). cl-ownpress allow me to turn live-code into documentation thanks to Emacs provider and the power of org-mode. It is a starting point, I intend to make publishing projects more powerful. A lot of love and effort goes into every project. I want the presentation of each project to be unique yet integral to my personal website.
Publish my toots
Tooting is convenient, I want my tweets published as micro-posts on my blog until I can turn it around and start publishing my micro-blog posts on mastodon instead.
Status: TODO
Publish discussions from other platforms
Often, a lot of value can be found in the discussions that a piece of content births on platforms like Hacker News and Reddit. I want these tracked and presented with the published content itself.
I am still debating whether the discussions themselves should also be retrieved and published along with the content.
Status: TODO
Publish my personal growth
This is one of the trickiest, and most unclear things I want to achieve on my personal site. I am letting it stay in the back of my head and brew for now.
Status: TODO
Software Architecture
Cl-ownpress enables building [[https://en.wikipedia.org/wiki/Extract,_transform,_load][ETL]] pipeline meant for publishing content. It enable a very simple use-case: