A deeper evaluation of indiewebifying my website

This post is in response to Diana’s comment on an earlier post, whose excerpts are quoted and answered. Additional notes on the ‘experiment’ are added and will serve as useful reminders about what was done.

Started at zero knowledge of implementation : okay, not really.

>> Specifically, since you didn’t know what the things was, it follows that you couldn’t have wanted it because of its characteristics so what remains is at best “someone’s recommendation of it and my trust in that someone”.

This could have been phrased better to avoid conveying absolute ignorance. I meant I had never done it before, and indeed managing WordPress actively is in itself new, baring general explorations in the past. The goal was to implement interaction in a static website.

I read up on the concepts of first and have also mentioned Kaushal Modi’s site as the first inspiration. If you see his site – he also has the feature of selecting text and creating URL’s to the selction, on his static blog. I was already using Hugo, but was unable to implement the entire workflow / services as a self-hosted system. My first action was to replicate the workflow on a hugo site as described here, and I was successful. Note that it was relatively easy to switch themes, with content intact and formulate a new config.toml for Hugo.

Next, I was able to find and (eventually) correctly use a nodejs program, webmentions.app for sending out webmentions, as well as pingbacks and trackbacks. This had to fired after a post was published, and realisation then dawned that it needed to be hooked to a database, to make sure repeated pings were not sent out. Here wordpress is superior and enables a reponse that the trackback has been registered. The hosted webmentions.io endpoint that is commonly used does not make such a distinction and leaves this responsibility to the machine sending out webmentions. The RSS feeds were modified to include the entire content to facilitate the program to comb these.

The issue still remained of receiving webmentions, and then the troublesome notion of displaying these comments on the post, and perhaps maintaining some sort of database of the comments. The latter aspect of setting up a pleasant display of the content is still very much in the development area, and dependent on individual skills.

Since atleast ‘predominantly self-hosted’ was a requirement by this point, I took to – cloning webmention.io’s source code. This had a db and could function for both receiving and sending. This is based in Ruby which I have never used. I did almost get it going, but there were too many loose ends still left. At this point, I switched to wordpress, and after some hiccups due to a missing PHP dependency – I was able to get going.

Worth noting that I was able to run the Hugo server on the VPS in a terminal on tmux monitoring ~/hugo-sr/ and publishing to ~/hugo-pub, which was in turn sym-linked to the publish_html folder which is served by Apache as the website you see. I could export blog posts in org files from local Emacs directly to a custom location on the VPS, including different document types (post/page) – the whole of which is version controlled (github). Export would automatically happen when the document was saved. This does save a lot of time, and has the least number of dependencies.

Evaluation of procedure, viability and trust

>> whose recommendation did you follow, why exactly do you trust them on this, how did you evaluate your trust” :

Though it was not a recommendation, and was my own decision – I did have a bunch of people to follow. For example, I use Kaushal’s excellent Emacs packages and have interacted with him in the past.

I have mentioned that the indieweb wiki is the best place to start. It contains numerous examples and links to working implementations. See this article, whose author has also created nanopub (mentioned in my post), an open source package that can be used to self host a micropub endpoint. I just learned from the post that webmentions is now a full-fledged W3C recommendation, and also that he uses a heroku app for the webmentions endpoint. I use a bunch of plugins that use the dynamic db behind WP to manage the background processes.

FWIW: based on recent discussions in , I am sceptical about the value of a recommendation in the software engineering / technology world. I can only continue to explore the concepts to understand them for what they truly are.

The people and blogs I’ve mentioned above are examples of indiewebified sites, built with different approaches and toolsets, and each have varying levels of documentation on it, and also share some common threads. Additionally, most people have wiki pages which talk of and upcoming projects. The latter and more is discussed on IRC channels.

Refer to this conversation : https://s.ragavan.co/2019/08/551/, and the comments. Side note: so the entire comment is transferred and my site posts show up on Kaushal’s mastodon instance. There are dings in the formatting and threading, and there are several rough edges, but you can see that you control more of the data, while still posting to silos, from your own website.

The trust was based on exploring the references mentioned both above and in my earlier article, which showed the methods were feasible. This was further was evaluated further by directly implementing what I understood from their posts / work / interactions.

>> “more information without following the link to source” is rather a minus than a plus”

Yes I agree. However, typically – (in the networks it is possible to connect with) it does appear the entire content is transferred. The theme + possibly the plugins have to be customised / tweaked to extract and display as desired. I do not possess that skill now. The blogs/sites provided as references are examples of how it can be done rather well, over time and exploration of the code.

Though I do not particularly subscribe to ‘micro’ blogging – I have found it is an easy way to maintain a web scrapbook of sorts. I think it ultimately adds value as a representation of my ‘social’ activities, besides the fact that all my responses are stored on my website, and cannot ‘unhappen’ (Refer your post on TheOdinProject), unless I delete my posts. If the external network in quiestion shuts down – context of response will be lost in certain cases, but not entirely, depending on what precautions are taken.

Additional notes on the components:

Indieweb is about establishing an identity through your website, and enabling 2-way communication between blogs/websites/external networks while enabling ownership / control of data. Enabling this 2-way communication is actually optional.

The ‘improved’ communication happens via adding appropriate custom fields and meta data to posts, depending on the ‘base’ categorisations (an extension of taxonomies) called “kinds” (enabled by the Kinds plugin of WP. For example: Note, Article, Bookmark, Like, Reply etc), which can be further customised, (and used to post directly to a particular project with ease). The format containing such relevant metadata is called microformat2, and is used to add additional meta data to posts.

The WP Indieweb plugin is like a R metapackage with some settings, and facilitates installation of the recommended / and some mandatory plugins.

The ‘indieauth’ authorisation token is generated by the indieauth WP plugin (converting WP to an indieauth server). The identification is on the basis of identifying rel=me links in the website headers and post contents, which can be implemented via relatively easy theme modifications. I started with a modified version of the original WP 2016 theme, called IW16 (functional as you can see here, but under development).

All the content is sent from (syndicated) or stored on my website, and WP plugins run additional ‘servers’ and on-the-spot ‘endpoint’ + token generators to enable authentication, send out pingbacks/webmentions and syndicate content. The concept of POSSE is IMO more important than webmentions – i.e posting all content on my website and syndicating, i.e replicating with content on other websites enables me to have my data and my activities on my website. i.e. website and content lives as long I have the server up.

Now the Microblogging (sharing a picture/like/bookmark/response to anything – via my site), has to be done by a micropublishing (micropub) client to post directly to the website. Quill is a hosted micropub client, an open source webapp (that I can host on my server for myself if desired). Quill bookmarklets mentioned in my post connect to Aaron’s hosted Quill instance. The authentication for this is via my personal domain name + WP login, and a on-the-spot token generated by the indieauth plugin ( WP becomes auth server), not an external service. This is the case with all the components in terms of authentication. This is called using RelMeAuth, to provide authentication to Oauth processes to external networks (twitter/flickr etc), and is explained in detail in this article. The same is done via the indigenous app on iOS, also mentioned in my earlier article.

When I click the above bookmarklets – I can tick options to additionally syndicate the content to the networks I’ve registered with, or not. The entire content goes to my website and these networks. If somebody responds or likes my syndicated post on twitter or wherever, it is fed back to my site. This is enhanced (in appearance and formatting) by the semantic-linkbacks plugin, which leverages the microformat2 specification, which can be built into themes.

In addition to syndication of your website post to other networks – backfeed is also required – wherein a service polls your social networking accounts and feeds back likes, comments etc to your website. In this case, both the syndication and the backfeed is being done by somebody’s hosted service called Brid.gy, and their FAQ details their motivation + background, and the github docs talk about ways to add other silo’s like Tinder for example. Note this polling is done where it is possible – and it is not possible with Facebook (who cares) and Linked in (this would have been valuable). Twitter/Mastodon by itself is sufficient for me. In particular, the data science community is quite active on Twitter, not that I am active there by any measure.

>> How many accounts/register/store-it-with-X-app instances are in the above?

Bridgy and Quill are the only external services being used, in addition to numerous plugins, even beyond indieweb. My website (WP Login) is used as my identity to connect everything. The plugins are potential weakpoints, covered in recourses.

Conditions of failure and Recourses

>> ..what are the conditions under which you’ll conclude that you misplaced your trust in this instance?

In general – multiple options and reasonable documentation exists to build your own version of the components, and even contribute to the development. Therefore, it appears the only way my trust would be completely misplaced, is if the community suddenly vanishes.

General conditions of failure and recourses are outlined below:

  • my VPS being down: Well, Linode does restart the webserver if it crashes. As of now, Manual backups are made of WP and etc. More could certainly be done here, and has been initialised. This is slightly easier with Hugo since the entier website and configuration can be version controlled with git repos. It would be interesting to figure out a controlled and automated manner to backup the WP website.
  • The indieauth plugin not functioning to make WP an indieauth server: Alternative implementations are available, and instructions to build my own.
  • The Brid.gy syndication + backfeed polling and publishing service going down: As such it can be self-hosted and the source is availble on github. But there appear to be few other alternatives for this point of failure. My site will continue to function fine.
  • Twitter or some network shut down their API access or even altogether like Orkut – If so – then I atleast have my content on my website, and others comments as well.
  • indieweb movement / all indiepress plugins fail: wordpress will continue to function. Networks have in fact shut down, like tumblr, Orkut etc. The classifications introduced by the Kinds plugin, like Articles, Notes, Bookmarks will vanish. All the content remain as blog posts / pages / comments etc, and they may just not look as well formatted.
  • If wordpress itself fails – all the content is anyway being created and maintained in org documents. I can publish all the documents as a simple html based website, or opt for static site generators like Hugo, as I was using earlier. Unless WP data is accessible – I may lose comment information, and maybe some post categorisation.

Shiny new things in the future

>> And what happens when in a few more years (months?) there’ll be yet another improvement “recommended” and all that?

If it adds value, and conforms to the long term idea of a self sustaining system (that I eventually put together on my own) – I would consider it.

Indieweb as a movement is relatively new, but the concepts are still appealing, in terms of being able to stay away from external silos. There is still a lot of ground to cover, and holes in the tools being used, as I have already seen. An ability to design a website that can display webmentions/pinhback and cross site content is required, which I don’t possess, other than what has been done so far.

2 responses on “A deeper evaluation of indiewebifying my website”

  1. How to put this better so it gets through: available code + wiki is NOT of much help at all when it brings in a few languages, several “services”, a mountain of various code of all sorts and *no accountability whatsoever*. When I say “what recourse do you have”, what I mean is exactly that: what can you actually do to put it right, not just to recover (of sorts) your own content or something. And more bluntly: someone not in the WoT does not quite exist in this context as there is literally nothing at all you can do/say about them that would matter (and what exactly is *them* anyway – they can move on to a new site, a new “indieweb” aka a new packaging of old stuff with the only purpose so that they leech something off of you).

    Realise that scammers are not some “bad guys” as such – quite often they are simply inept and/or incompetent. And it doesn’t seem that you can yet clearly evaluate whether something actually brings value in this software domain. Precisely because you are relatively new to it however, it serves you best to actually be *conservative* about it all: it helps you to get things done without losing yourself in all the shiny new stuff; it also means you avoid a lot of shit before it even has a chance to hit you at all; most new software is anyway (an entrance to) some spittoon of one colour or another. For an example, just look above: you could do it with wp and it does already have all the trackbacks and pings and db that you need without the x services and accounts and whatnots; so why exactly bother with those (other than so their authors can feel important too/ get some attention from you if not also money at some point)? It’s up to software to convince you that it’s more of a help than a hindrance and *that is not easy* because the default and usual is the precise opposite: a LOT of software buys you only more current and future headache for not doing much at all if anything.

    Re “source available” and all that, perhaps read http://ossasepia.com/2017/02/18/the-open-sores-of-monkey-code/ and http://ossasepia.com/2017/06/12/o-brave-new-code/ and the how an mpi bug was handled http://ossasepia.com/2017/12/21/eucrypt-correcting-mpi-implementation/
    There are loads of other examples everywhere but the above can be a starting point at least.

    1. It actually got through now, and makes a lot of sense. I agree about the benefits of the conservative approach. In a sense, when I started with establishing a web presence some years ago – I did not want to use wordpress because static sites seemed to have fewer parts to understand/manage, i.e I used to ‘know’ and practice the conservative approach much better in the past. Sometimes I wonder if I was a lot less deluded and more honest when younger. Though I mention it nowhere in the article – even as I went through the process and then finally wrote about it – I was thinking of some of the threads in your comment, and was unwilling to admit/entertain the thought that I jumped through a lot of hoops for benefits that did not deserve such acrobatics. Any additional Taxonomy, or ‘activity feed’ could be implemented without ‘Indiewebifying’. Yes. Ultimately, WP had all that was necessary (which by itself is something that I need to really understand and accept). I have added the suggested articles to the task list, and will also plan another evaluation of the setup as a low priority task.

Leave a Reply

Your email address will not be published. Required fields are marked *