The Indieweb

The Indieweb

Over the past month or so, I've been incorporating Unwound Stack into the IndieWeb. In their own words, the IndieWeb is "a community of independent & personal websites connected by simple standards, based on the principles of: owning your domain & using it as your primary identity, publishing on your own site (optionally syndicating elsewhere), and owning your data" (per the wiki). From my own experience, I would describe it as a set of protocols for taking one's content back from sites like Twitter & Facebook while still connecting it to that of others, together with a small band of of individuals dedicated to spreading their adoption. I've owned this modest site for some time of course, so the work has mostly been incorporating IndieWeb standards.

This post was intended as an introduction to the Indieweb as well as a chronicle of my journey in the hopes of helping others traveling this path (as others have helped me, on which more below). It will perforce touch upon both my motivations for doing so as well as how I was publishing the site in the first place (about which I don't think I've said much before). As I began writing, however, I realized this was going to be a very long post. I decided instead to turn this into multiple posts.

Why Own Your Site?

I suppose the first question, in a world of social media sites eager & willing to take your content off your hands & connect it to that of others, is why? Why go through the effort to own your own presence on the web?

For myself, it's one of those things that I never really thought about conciously until recently (when, in a different context, I had to defend the position). I've come to realize that you should always own your platform.

I spent the nineties watching Microsoft destroy their competition not because they were producing better tech, but because they owned the platform (the Windows operating system, in this case). I then spent the aughts watching people abandon their self-hosted, self-managed websites for Facebook & Twitter because "it was so much easier". It gives me no pleasure today to now watch their wailing & rending of garments every time one of those sites tweaks their feed algorithm & destroys the traffic numbers for some poor independent outlet that delegated traffic generation to them.

I spent the teens watching companies abandon their own compute infrastructure for AWS, GCP & Azure, again because "it was so much easier". Now, in the aftermath of the 2020 U.S. presidential election, we see that it only takes three companies' deciding that they don't like you to be effectively banned from the web. What you think of Parler in particular is orthogonal to the argument; their defenestration should concern you because the big three will not restrict themselves to banning companies you (or I) don't happen to like; that is the nature of cartels.

Alright, I don't administer my own server in a closet in my house: one could argue that I'm still out-sourcing the actual hosting of my content. That said, I can change hosting providers with a single line of code.

How I Build the Site

If you've read some of my other posts, you'll know I'm an Emacs user. In particular, I'm a fan of Emacs Org Mode: a "major mode for keeping notes, authoring documents, computational notebooks, literate programming, maintaining to-do lists, planning projects, and more — in a fast and effective plain text system." When I resurrected this site a few years ago, I was already keeping notes, project plans & thoughts in Org Mode files: plain-text files in a particular markdown format (perhaps to be known as Orgdown).

Org Mode has a well-developed export system for publishing documents already in Orgdown to a wide variety of formats such as Latex, Texinfo, Man and many others, including HTML. So at that time, it was a natural choice to just build Unwound Stack as a static web site on top of Org Mode. There are other static site generators out there (Hugo, 11ty, as well as others whose names escape me at the moment), but I wanted to see how far I could get with just Orgdown and Org Mode HTML Export.

OK, What Does That Mean, Exactly?

Emacs is at heart a Lisp machine. Put another way, there is no macro language for Emacs, because it is overwhelmingly (other than a small C core that handles O/S interactions) written in Lisp, and you, the user, are free to customize it and build upon it in Lisp as well. What that means is that the Org Mode HTML Export system is just Lisp, and we're free to program it.

The entry point is the function org-publish-all which will publish each project defined in the global variable called org-publish-project-alist. The projects defined therein all define a :publishing-function attribute, which is where the particular backend ('html, in our case) is selected. If you select, e.g. #'org-html-publish-to-html, you'll get HTML output. The beauty of Emacs, of course, is that we're free to write our own. I'll talk about that more later, but for now, the general structure of the site is this:

  • author a bunch of files in Orgdown
  • write a Lisp file that
    • loads Org Mode
    • defines a function that:
      • defines org-publish-projects-alist
      • calls org-publish-all
        • this will "publish" the Orgdown files to HTML
  • write a Makefile that
    • invokes Emacs, telling it
      • load the Lisp file defined above
      • and invoke the function defined therein
    • scp-s the resulting HTML (and associated) files up to my hosting provider

Where Are We?

I've talked a bit about why I think it's important to own your platform, and I've sketched-out at a high level how the site is built. In the next post, I'll dig into exactly what protocols the Indieweb defines and how they connect us outside the control of a few data siloes.

07/09/22 17:15


 


View on twitter