Blog comments on Holochain are here.
We've been working on adding commenting to humm for the past month. Now you can comment on our blog posts here on humm.earth using a Holochain-powered comment app!
From a reader's perspective, commenting on humm is the same as commenting anywhere else online. You sign up for an account (more on this below), meticulously craft an insightful comment, hit the "Submit" button, and sit back while other people revel in your originality and wit. (At least, that's how I do it...)
Now, on Holochain there are so many novel opportunities to redesign how we converse with each other that it can be a bit overwhelming. We purposely chose to simply recreate a standard commenting experience for our first iteration of a comments module, so it'd be familiar and uncomplicated. We have many more ideas on bringing human-centricity to something as simple as blog comments, but that's for a later release. It's also a conversation we'd love to have with commenters here on the blog.
A Quick Walkthrough of humm Comments
Commenting on the blog is pretty straightforward, but I'll walk you through it and provide a sneak peak into the humm Publisher so you can see how it works from a creator/moderator's experience.
As a commenter, you'll create an account in the menu above, and then post a comment. Pretty simple, and here's a handy-dandy gif showing you the process:
NOTE: Your username is currently displayed with your comments, so choose a good one.
And for an inside view into our current version of humm Publisher, here's a video walking through all the features we currently have, including comment moderation:
A Technical Introduction to Humm Comments
(Written by Henry Del Rosario & Nick Mitchell)
The first thing we need to cover is "user" accounts and identity. Given the Holo hosting network isn't live yet, we don't have a readily accessible way to host new user nodes on the fly. So we've created an application in Laravel to handle identity creation and management on the blog. This is meant to (very roughly) approximate the identity management layer that will be built into Holochain, so we can work with unique identities (commenters) now before those Holochain tools are publicly available.
The main reason we implemented this Laravel user management layer is so your unique identity will be attached to each comment in the Holochain DHT, identifying you as the author of the comment.
A Note on Mimicking Holochain Features With Non-Holochain Technology
We are constantly finding ourselves ahead of the Holochain core development timeline, so we have to approximate and mimic the functionality that we expect to be available in future Holochain builds. We're shooting for a 2019 Q1 private beta — as soon as possible after the Holochain beta is released — so to hit that goal, we need to be working ahead of Holochain core development to a certain degree. Please forgive us for not being Holochain purists at this stage of our development process.
A deep-dive into agent-centricity, and why it's not fully realized in current internet-served hApps
We wanted to allow people to comment on humm blog articles, and also make comments a feature of the Holochain-based publishing application we're developing that powers this blog.
Since Holochain is agent-centric, each app install makes you the agent and all entries you publish in the app are sourced to you as the agent. This means that since this blog is viewed from one public node, every comment entry sent to the Holochain node from this blog will assign the same agent source — in other words, the comments will look like they're created by the same person. So, currently there isn't a Holochain-only way to have multiple agent accounts using the same app. Right now we'd have to create a node hosting an app for every user who creates an account in order to create comment entries with each agent's source hash.
Creating a node for each person who wants to comment on our blog isn't feasible because we'd have to manually create a node on a new server for each of them. The work-around solution we've implemented was to create an abstraction that allows people to comment and have an identity on our blog by attaching your username to each comment, without us having to create a node for each individual person.
With this abstraction we can attach an identity to you as an individual person and your comments on the blog. We use this identity, based on your unique username, to store and link your comments to each article entry in the Holochain node being used by the Laravel app. Since you're registered as a unique identity within the DHT, we can create new features in the future such as clicking on your username and seeing all of your previous comments published on any post on the blog.
Links & Anchors are the Way to Keep Continuity
Comments are entries created the same way as posts. By using Links and Anchors we can relate comments to posts. As mentioned earlier, links create a relationship between the hashes of the entries. So you might be wondering, what happens if a post is edited? That would create a new post with a different hash, which means the comments will have a relationship with the old post — the one now marked as deleted — and not the new one. We wanted to keep the comments related to the post even if the post is updated, so we added a unique identifier to each post. That means we can anchor the comments to the unique identifier instead of the post's hash, and then we can update a post and still see the linked comments created before the update.
Links and Anchors might appear confusing at first, so if you're interested in learning more about the technical details on how Links and Anchors work, check out these links:
We're planning on extending commenting soon, so be sure to sign up for email updates below to receive notifications when we publish a new post. We've got a couple more articles up our sleeve about some design decisions we've made, and a few more we're currently kicking around. And most importantly...
Let us know what you think in the comments below!