📺 The Decentralized Social Web by Keith J. Grant

Bookmarked The Decentralized Social Web by Keith J. Grant (Recall Act)
We tend to have a love/hate relationship with social networks. The ability to interact with friends, colleagues, and even celebrities is wonderful, but the lack of control over privacy or content algorithms is troubling. A better way lies ahead, where you aren't tied to large social networks and where you can own your own data. Recorded at Atlanta Connect.Tech 2017 on 9/21/2017
https://player.vimeo.com/video/237349014

A few weeks back Keith gave a great non-platform specific overview to some of the moving pieces of the IndieWeb at Connect.Tech 2017 in Atlanta. I wish I could have been there in person, but glad that it was archived on video for posterity.

Somehow I managed to get a mention in his talk as did our friend Jeremy Cherfas.

The slides for his talk are archived, naturally, on his own website.
​​​

Using Facepiles in Comments for WordPress with Webmentions and Semantic Linkbacks

Today, through the brilliant and diligent work of David Shanske and Matthias Pfefferle (as well as Ashton McAllan and many other opensource contributors), I’ve enabled facepiling for likes, reposts, and mentions within my website’s comment section using the Semantic Linkbacks plugin for WordPress (in conjunction with the Webmention plugin.)

What does this mean? My personal website both sends and accepts Webmentions, a platform independent “at mention” or @mention, including those from the fantastic, free service brid.gy which sends replies/comments, likes, reposts, and mentions to my site from silo services like Facebook, Twitter, Instagram, Google+, and even Flickr.

As I’ve long known, and as someone noted at least once on my site, some of these likes, replies, and mentions, which provide some interesting social interaction and social proof of a post’s interest, don’t always contribute to the actual value of the conversation. Now with this wonderful facepiling UI-feature, I’m able to concatenate these types of interactions into a smaller and more concentrated section at the bottom of a post’s comments section, so they’re still logged and available, but now they just aren’t as distracting to the rest of the conversation.

Compare the before and after:

Before

A mention, a Facebook like, another mention and a repost on Twitter. Anil’s comment is pretty useful, but the others don’t add as much to the ideas in the post.
Richard MacManus “liked” the post and subsequently wrote about it on AltPlatform (relatively useful) along with some tangential mentions, which don’t add as much to the conversation. The raw URL of Gisele’s Twitter post likely looked better natively on Twitter (as a Twitter Card), but translated onto my site as a mention like this, just isn’t as useful.

After

Likes and Reposts concatenated on my site now after converting them into facepiles. They still give the social “proof” and indicate the interaction, but don’t interfere in the conversation now–especially when there are hundreds of them.

 

A Prime Example

In particular, this functionality can best bee seen on my article The Facebook Algorithm Mom Problem, which has over 400 such interactions which spanned pages and pages worth of likes, reposts, and mentions. Many of my posts only get a handful of these types of interactions, but this particular post back in July was overwhelmed with them when it floated to the top of Hacker News and nearly crippled my website. Without the facepile functionality, the comments section of this post was untenably unreadable and unusable. Now, with facepiles enabled, the comments are more quickly read and more useful to those who are interested in reading them while still keeping the intent.

Implementing

For those who have already begun Indiewebifying their WordPress sites with plugins like Webmention and Semantic Linkbacks, the most recent 3.5.0 update to Semantic Linkbacks has the functionality enabled by default. (Otherwise you can go to your administrative dashboard and click on the checkbox next to “Automatically embed facepile” located under Settings » Discussion).

Settings interface for enabling or disabling facepiles in your comments section with Semantic Linkbacks (and Webmentions)

As a caveat, there’s a known bug for those who are using JetPack to “Let readers use WordPress.com, Twitter, Facebook, or Google+ accounts to comment”. If the facepiles don’t show up on your site, just go to your JetPack settings (at yoursite.com/wp-admin/admin.php?page=jetpack#/discussion) and disable this feature. Hopefully, the JetPack team will have it fixed shortly.

If you haven’t begun using IndieWeb principles on your WordPress website, you might consider starting with my article An Introduction to the IndieWeb, which includes some motivation as well as some great resources for getting started.

Nota bene: I know many in the WordPress community are using the excellent theme Independent Publisher, which already separates out likes, mentions, etc. (though without the actual “facepiles”), so I’m not sure if/how this functionality may work in conjunction with it. If you know, please drop me a note.

Hopefully most WordPress themes will support it natively without any modifications, but users are encouraged to file issues on the plugin if they run across problems.

Using another platform?

I’m not immediately aware of many other CMSes or services that have this enabled easily out of the box, but I do know that Drew McLellan enabled it (along with Webmentions) in the Perch CMS back in July. Others who I’ve seen enabling this type of functionality are documented on the IndieWeb wiki in addition to Marty McGuire and Jeremy Keith, who has a modified version, somewhat like Independent Publisher’s, on his website.

There are certainly many in the IndieWeb community who can help you with this idea (and many others) in the IndieWeb’s online chat.

Give it a spin

Now that it’s enabled, if you’re reading it on my website, you can click on any of the syndicated copies listed below and like, retweet/repost, or mention this article in those social media platforms and your mention will get sent back to my post to be displayed almost as it would be on many of those platforms. Naturally comments or questions are encouraged to further the ongoing conversation, which should now also be much easier to read and interact with.

Thanks again to everyone in the IndieWeb community who are continually hacking away to allow more people to more easily own and control their content while still easily interacting with people on the internet.

UPDATE

Turning mentions into comments for native display

Following Aaron Davis’ comment, I thought I’d add a few more thoughts for those who have begun facepiling their likes, mentions, bookmarks, etc. As he indicates, it’s sometimes useful to call out a particular mention, a special like, or you might want to highlight one among the thousands for a particular reason. This is a feature that many are likely to want occasionally and code for it may be added in the future, but until then, one is left in the lurch a bit. Fortunately, as with all things IndieWeb, part of the point is having more control over your site to be able to do anything you’d like to it. So for those without the ability to write the requisite code to create a pull request against the Webmention or Semantic Linkbacks plugins (they’re more than welcome), here are a few quick cheats for converting that occasional (facepiled or not) webmention into a full comment within your WordPress site’s comment section.

Pro tip: This also works (even if you’re not using facepiles) to convert a basic mention into something that looks more like a native comment. It’s also useful when you’ve received a mention that you’d prefer to treat as a reply, but which wasn’t marked up as a reply by the sending site.

I’ll use an example from the Facebook Algorithm Mom Problem post referenced above. On that post, I’d received a webmention via Twitter from Anil Dash, a blogger and advocate for more humane, inclusive and ethical technology, with some commentary about usability. Here is his original tweet:

That webmention is now hidden behind an avatar and not as likely to be seen by more casual readers. I’d like to change it from being hidden behind his avatar in that long mention list and highlight it a bit to make it appear as a comment in the full comments section.

On a post with a large number of mentions, you’re very unlikely to find some of the valuable nectar hiding in them. Do you see Anil Dash’s lovely mug hiding among all these avatars? (Hint, it’s not a “blank” avatar caused by someone having changed their Twitter, Facebook, etc. avatar.)

Steps to convert a mention to a comment

Caution: I recommend reading through all the steps before attempting this. You’ll be modifying your WordPress database manually, so please be careful so you don’t accidentally destroy your site. When doing things like this, it’s always a good idea to make a back up of your database just in case.

  1. Search for the particular comment you want to change in the WordPress Admin UI.
  2. Hover over the date in the “Submitted On” column to find the comment ID number in the URL, in this case it’s http://boffosocko.com/2017/07/11/the-facebook-algorithm-mom-problem/#comment-35281. Make a note of the comment ID: 35281.
  3. Open up the mySQL database for your WordPress install (I’m using phpMyAdmin) to view the data for your site.
  4. Go to the wp_comments table in the database. (Yours may be slightly different depending on how your site was set up, but it should contain the word “comments”.)
  5. Use the search functionality for your table and input your comment ID number into the field for comment_ID.
  6. We’ve identified the specific comment we want to modify in phpMyAdmin.
  7. Now delete the word “webmention” from the comment_type field for the particular comment. This field should now be empty.
  8. You should now be able to view your post (be sure to clear your cache if necessary) and see the mention you received displayed as a native comment instead of a mention. It should automatically include the text of the particular mention you needed.
Here’s what the modified mention from Anil Dash looks like in my comments section now. It appears as if it were a native comment.

If you need to convert a large number of mentions into comments, you may be better off searching for the particular post’s post_ID in the comments table and changing multiple comment_type fields at once. Be careful doing this in bulk–you may wish to do a database back up before making any changes to be on the safe side.
​​​

A reply to Aaron Davis on setting up IndieWeb replies in WordPress

Replied to a tweet by Aaron DavisAaron Davis (Twitter)


Aaron, there are a couple of different ways to set up IndieWeb replies in WordPress (or even on other platforms like Known).

Known has a simple reply mechanism, but isn’t always good at including the original context for the reply making the individual post as stand-alone as one might like. Known includes the URL of the post it’s a reply to, but that’s about it. It’s contingent upon the user reading the reply clicking on the link to the original post to put the two together. This is pretty simple and easy when using it to reply to posts on Twitter, but isn’t always as flexible in other contexts.

One of the added values of replies in WordPress is that there’s a bit more flexibility for including a reply context to the post. You’ll note that this reply has some context at the top indicating exactly to what it is I’m replying.

Manual Replies

The first way to generically set up a reply on almost any platform that supports sending Webmentions is to write your reply and and include some simple semantic HTML along with the URL of the post you’re replying to that includes a class “u-in-reply-to” within the anchor tag like so:
<div class="h-entry">
<a class="u-in-reply-to" href="http://example.com/note123">The post you're replying to</a>
<div class="p-name p-content"> Good point! Now what is the next thing we should do?</div>
</div>

Some of this with additional information is detailed in the reply page on the IndieWeb wiki.

If you’re using WordPress, you can do this manually in the traditional content block, though you likely won’t need the div with h-entry as your theme more likely than not already includes it.

More automated replies

If you’d like a quicker method for WordPress, you can use a few simple plugins to get replies working. Generally I recommend David Shanske’s excellent and robust Post Kinds Plugin which handles both reply contexts as well as all of the required markup indicated in the manual example above. Naturally, you’ll also want to have the Webmention Plugin for WordPress installed as well so that the reply is sent via Webmention to the original post so that it can display your reply (if it chooses to–many people moderate their replies, while others simply collect them but don’t display them.)

A few weeks ago I wrote about configuring and using the Post Kinds Plugin in great detail. You should be able to follow the example there, but just choose the “reply” kind instead of the “read” example I’ve used. In the end, it will look a lot like this particular reply you’re reading right now, though in this case, I’ve manually included your original tweet in the body of my reply. A more native Post Kinds generated reply to a tweet can be seen at this example: http://boffosocko.com/2016/08/17/why-norbert-weiner/

Syndicating Elsewhere

Naturally, your next question may be how to POSSE your replies to other services like Twitter. For that, there’s a handful of methods/plugins, though often I suggest doing things manually a few times to familiarize yourself with the process of what’s happening. Then you can experiment around with one or more of the methods/plugins. In general the easier the plugin is to set up (example: JetPack), the less control you have over how it looks while the more complicated it is (example: SNAP), the more control you have over how the output looks.

Experiment

If you’d like, feel free to experiment sending replies back to this post while you try things out. If you need additional help, do join one or more of us in the IndieWeb chat.

Post Kinds Plugin for WordPress

Post Types

Within the broader social media world there are a huge variety of types of posts. These range from common articles to status updates to likes or favorites to more varied post types like photos, bookmarks, RSVPs, checkins, videos, reviews, jams, reads, audio, exercise, food, recipes, and even an exotic and rare chicken post type. While this list barely scratches the surface, the IndieWeb wiki has an almost exhaustive list along with examples.

Many social platforms sub-specialize in only one specific post type while others provide support for multiple types. Here are some common examples:

  • Twitter: status updates
  • Instagram: photos, videos
  • Facebook: status updates, articles, photos, videos, links, events, life events, checkins, emotions
  • LinkedIn: status updates, articles,  résumés
  • Tumblr: text, photo, quote, link, chat, audio and video
  • Swarm/FourSquare: checkins
  • Last.fm: listens (aka scrobbles)
  • Pinboard: bookmarks
  • GoodReads: reads

Wouldn’t it be better to have a single personal website where you could post all these types of content easily and quickly?!

For a few years now, I’ve been posting these and many other types of posts on my personal website. When it’s appropriate I crosspost many of them to the social media silos that support these types so that friends, family, and colleagues can subscribe to them in the way that’s easiest for them.

Post Kinds Plugin

The simple meta box the Post Kinds Plugin displays for choosing what kind of post one is creating.

The Post Kinds Plugin for WordPress attempts to make it much easier to create customized displays for and format each of these types of posts (and many more). It leverages the flexibility and power of WordPress to be your single social media hub while, along with other IndieWeb friendly plugins, still allowing you to interact with other social networks.

Post Kinds Plugin not only indicates in the metadata what each post type is, but provides each post with some contextualization as well as the appropriate microformats classes to make it easier for other sites or parsers to interpret these posts. In short it helps to make status updates look like status updates; favorites appear like favorites; (schnozzberrys look like schnozzberrys); and RSVPs look like RSVPs in keeping with common user interfaces on many social platforms. (And in case you didn’t know, you can now post an RSVP on your own website and send a notification to posts elsewhere on the web of your intention!)

Post Kinds Plugin is different from WordPress’s Post Formats functionality

This sounds a little bit like the WordPress theme specific functionality of Post Formats, doesn’t it? Yes and resoundingly no!

Post Formats was a WordPress feature introduced in version 3.1, ostensibly to compete with other social platforms like Tumblr which offers the explicit post types of text, photo, quote, link, chat, audio and video.

The interface for choosing particular post types from within Tumblr.
WordPress Post Format meta box with all of the available post types. Note that it’s far more limited than the options for Post Kinds.

Within WordPress, post formats are available for users to choose from if the theme enables support for them. And typically if they do support them they often provide specific display outputs and CSS styling that are controlled by the theme, often to make them look like what users have come to expect these post types to look like on other social media platforms. As an example, a “Status” post would typically display a short update which doesn’t include a title. Each theme that supports post formats chooses which ones they support, how to display them, and they can vary quite a bit from one theme to the next.

Below is the list of the nine supported formats with brief descriptions of their purpose taken from the WordPress codex:

  • aside – Typically styled without a title. Similar to a Facebook note update.
  • gallery – A gallery of images. Post will likely contain a gallery shortcode and will have image attachments.
  • link – A link to another site. Themes may wish to use the first <a href=” “> tag in the post content as the external link for that post. An alternative approach could be if the post consists only of a URL, then that will be the URL and the title (post_title) will be the name attached to the anchor for it.
  • image – A single image. The first <img /> tag in the post could be considered the image. Alternatively, if the post consists only of a URL, that will be the image URL and the title of the post (post_title) will be the title attribute for the image.
  • quote – A quotation. Probably will contain a blockquote holding the quote content. Alternatively, the quote may be just the content, with the source/author being the title.
  • status – A short status update, similar to a Twitter status update.
  • video – A single video or video playlist. The first <video width=”300″ height=”150″> tag or object/embed in the post content could be considered the video. Alternatively, if the post consists only of a URL, that will be the video URL. May also contain the video as an attachment to the post, if video support is enabled on the blog (like via a plugin).
  • audio – An audio file or playlist. Could be used for Podcasting.
  • chat – A chat transcript

There is anecdotal evidence that the WordPress Post Format functionality is slowly falling out of favor and there hasn’t been much, if any, change in how the feature works in the past several years.

The Post Kinds Plugin in many respects picks up where Post Formats left off, extends them significantly, and also builds a stronger platform for more modern website to website interactions.

Plugin Display

The Post Kinds Plugin out of the box generally does an excellent job of styling with some generic CSS to make these various post types look and behave as one expects without any changes or modifications to one’s theme. However, designers are more than welcome to either customize their CSS to their hearts’ content, or, if they prefer, they can manually code specific template views to override the plugin’s original views within their theme or child theme. To do this the plugin looks for a subfolder (or directory) within the theme entitled kind_views and uses those templates instead.

Microformats

Because, in part, the Post Kinds Plugin is designed for use with IndieWeb philosophies in mind, it has built in microformats support. What are microformats? They’re simple semantic classes added to the HTML of one’s site that allow parsers or other programs to read the data on your posts and pages to provide extended or increased functionality. WordPress’s core functionality already includes some microformats version 1 support; Post Kinds Plugin extends this quite a bit and uses the more modern version 2 specifications. Because Post Kinds takes care of these additional microformats, some older themes will have a leg up in the IndieWeb space despite having either limited or no theme support.

As an example using the reply post kind, the context from the site for which the particular post is actually a reply to is wrapped with the semantic class “p-in-reply-to”. As an example of the extended functionality provided by microformats, if one is using the Webmentions Plugin to send a webmention to the post that is being replied to, that remote site can parse the reply and display it properly as a reply in their comments section. (For WordPress sites receiving these webmentions, they can utilize the parser built into the Semantic Linkbacks Plugin.)

Similarly, bookmarklets, feed readers, or other programs could utilize these microformats and the data on your page to create customized views and displays.

Plugin Installation and Configuration

Installation of the plugin is relatively straightforward. From the Plugin tab in the WordPress admin interface, one can click the Add New button at the top of the page and either search for the plugin within the repository and install and activate it, or they can use the Upload Plugin button and install it from a prior download from either the WordPress repository or from the GitHub repository.

Options for installing the Post Kinds Plugin from the administrative interface within WordPress.

Configuration can be done from the Settings tab within the WordPress admin interface or, if the IndieWeb Plugin is installed, the settings can be found under IndieWeb » Post Kinds tabs in the admin interface.

Within the settings you can choose the post kinds you wish to enable on a particular site–not all sites will necessarily need or even want all types. I recommend only enabling the specific kinds you will actively be using; you can always come back and add additional types in the future. Some types may be enabled by other specific plugins that work in conjunction with Post Kinds Plugin.

Post Kinds Settings
Click the appropriate check boxes for the kinds of posts you’d like to enable on your personal website.

Not having a post kind enabled will not disable the functionality on existing posts, it only hides the selection in adding new posts. This way if you enable favorites as a type and only use it a few times before deciding to disable it, the old posts will still exist and display properly.

You can also enable a Default Kind for New Posts. Most people will likely choose Article which is the default, but if your site is primarily used like a microblog for short status updates, then obviously Note may be your best default. Are you building a linkblog? Then you could enable the Bookmark kind.

How to use Post Kinds in practice

So how does this all actually work for creating posts?

Let’s start with a simple example. Let’s say I read a lot online and I’d like to have a linkblog of all of the articles I read. Let’s say I’m reading the article Lyme Disease’s Worst Enemy? It Might Be Foxes in the New York Times. I’d like to start out by creating a read post to indicate to those following me that I’ve read this particular article.

While I could do it manually, typically I’ll use a custom bookmarklet (more on how to do this shortly), which I click on in my browser bar as I read the article. The bookmarklet will create a new WordPress post and automatically fill in the URL of the article into the “Post Properties” metabox created by the Post Kinds Plugin in the admin UI of my WordPress site.

The Post Properties meta box in the administrative user interface in WordPress. The URL for the post can be either automatically included or manually filled in.

Then, I will click on the blue Retrieve button (pictured above) just under the post’s URL. The Post Kinds Plugin will parse the New York Times article page for either explicit metadata or Open Graph data to fill in some context about the article I’m reading in the Post Properties meta box. The main tab will autofill with the Name/Title of the article, a Summary/Quote of the article, and Tags if available. Similarly the other tabs in the Post Properties meta box including Details, Author, and Other will fill in with any available metadata about the Lyme disease post I’m reading.

In this particular example, the Times didn’t do a good job on the author data, so I’ll go to that tab and manually cut/paste the author’s name into the Author/Artist Name field, their URL into the Author/Artist URL field, and (optionally) the URL for their photo image as well. If other fields are improperly filled out or you would like to change them, one can manually adjust them if necessary. Not all kinds need (or show) all theses metadata fields when they’re ultimately published.

After retrieving the metadata most of the appropriate fields in the Post Properties box should be filled out. Here we see the “Main” tab filled in.
The Details tab of the Post Properties meta box.
The Author tab of the Post Properties meta box.

The retrieve button will also attempt to fill in an appropriate post Title into the posts’ field for that, but it can be modified manually if necessary. On many post kinds, though one may fill in an explicit (traditional WordPress post) title, it may not display on the final post because an explicit title isn’t really needed and the Post Kinds Plugin won’t display it. The note kind is a particular example of this behaviour.

Now that the contextual part of the post I’m reading is handled, I can, if I choose, add any notes, quotes, thoughts, or other personal data about what I’ve read into the main text box for the particular post.

The bookmarklet should have automatically set the post kind selector in the Kind metabox to Read and, if available, the older WordPress post format to link. (These can be changed or overridden manually if necessary.) Post Kinds does its best to properly and appropriately map Post Kinds to Post Formats, but the relationship isn’t always necessarily one-to-one and there are obviously many more kinds available than there are post formats.

Finally, the article can be published (unless you want to add any additional metadata to your post for other plugins or needs.)

Now I can also go to the URL of my personal site at http://example.com/kind/read/ where I can find an archive of this and all the posts I’ve read in the past.

A screen capture of what the final “Read” post looks like on my site. (Note that it may look slightly different depending on your theme and other customizations.)

Other post kinds work relatively similarly, though some may take advantage of other appropriate metadata fields in the Post Property meta box. (For example RSVPs use the RSVP dropdown field within the Other tab in the Post Property box.)

Custom feeds for Post Kinds

For sites adding lots of different post kinds all at once, the extra possible “noise” in one’s RSS feeds may have the potential to turn a site’s subscriber’s off. Fortunately the plugin also has custom RSS feeds for each of the particular post kinds which follows a particular format. As an example, the RSS feed for all the posts marked as “Note”,  could be found at either the URL http://www.example.com/kind/note/feed
or http://www.example.com/feed/?kind=note (if one doesn’t have pretty permalinks enabled). Other feeds can be obtained by replacing “note” with the base names of the other kinds (reply, article, etc.).

Archive Displays

Post Kinds Plugin also handles the display of archives for individual post kinds. To view all the posts marked as notes, for example, one could visit the URL http://www.YOURSITE.COM/kind/note/. Simply replace YOURSITE.COM with your particular site name and the particular post kind name to access the others. In some areas of the social media world, this particular archive display of notes might be considered a personal Twitter-like microblog.

Bookmarklet Configuration

For Post Kinds Plugin users who like the simplicity and ease of use of bookmarklets, one can add ?kindurl=URL to their post editor URL and it will automatically fill this into the URL box in post properties. Adding ?&kind=like to the post editor URL will automatically set the kind.

As a full example, the URL pattern https://www.example.com/wp-admin/post-new.php?kindurl=URL&kind=like will automatically create a new post, set the post kind as like and auto-import the permalink URL for the page into the URL field of the Post Properties meta box.

The following code could also be used as a template to create a full set of browser bookmarklets. (Keep in mind the base URL example.com will need to be changed to the base URL of your personal site for it to work properly. One would also change the word bookmark in the code to any of the other types.)

javascript:(function(a,b,c,d){function e(a,c){if("undefined"!=typeof c){var d=b.createElement("input");d.name=a,d.value=c,d.type="hidden",p.appendChild(d)}}var f,g,h,i,j,k,l,m,n,o=a.encodeURIComponent,p=b.createElement("form"),q=b.getElementsByTagName("head")[0],r="_press_this_app",s=!0;if(d){if(!c.match(/^https?:/))return void(top.location.href=d);if(d+="&kindurl="+o(c),c.match(/^https:/)&&d.match(/^http:/)&&(s=!1),a.getSelection?h=a.getSelection()+"":b.getSelection?h=b.getSelection()+"":b.selection&&(h=b.selection.createRange().text||""),d+="&buster="+(new Date).getTime(),s||(b.title&&(d+="&t="+o(b.title.substr(0,256))),h&&(d+="&s="+o(h.substr(0,512)))),f=a.outerWidth||b.documentElement.clientWidth||600,g=a.outerHeight||b.documentElement.clientHeight||700,f=800>f||f>5e3?600:.7*f,g=800>g||g>3e3?700:.9*g,!s)return void a.open(d,r,"location,resizable,scrollbars,width="+f+",height="+g);(c.match(/\/\/(www|m)\.youtube\.com\/watch/)||c.match(/\/\/vimeo\.com\/(.+\/)?([\d]+)$/)||c.match(/\/\/(www\.)?dailymotion\.com\/video\/.+$/)||c.match(/\/\/soundcloud\.com\/.+$/)||c.match(/\/\/twitter\.com\/[^\/]+\/status\/[\d]+$/)||c.match(/\/\/vine\.co\/v\/[^\/]+/))&&e("_embeds[]",c),i=q.getElementsByTagName("meta")||[];for(var t=0;t<i.length&&!(t>200);t++){var u=i[t],v=u.getAttribute("name"),w=u.getAttribute("property"),x=u.getAttribute("content");x&&(v?e("_meta["+v+"]",x):w&&e("_meta["+w+"]",x))}j=q.getElementsByTagName("link")||[];for(var y=0;y<j.length&&!(y>=50);y++){var z=j[y],A=z.getAttribute("rel");("canonical"===A||"icon"===A||"shortlink"===A)&&e("_links["+A+"]",z.getAttribute("href"))}b.body.getElementsByClassName&&(k=b.body.getElementsByClassName("hfeed")[0]),k=b.getElementById("content")||k||b.body,l=k.getElementsByTagName("img")||[];for(var B=0;B<l.length&&!(B>=100);B++)n=l[B],n.src.indexOf("avatar")>-1||n.className.indexOf("avatar")>-1||n.width&&n.width<256||n.height&&n.height<128||e("_images[]",n.src);m=b.body.getElementsByTagName("iframe")||[];for(var C=0;C<m.length&&!(C>=50);C++)e("_embeds[]",m[C].src);b.title&&e("t",b.title),h&&e("s",h),p.setAttribute("method","POST"),p.setAttribute("action",d),p.setAttribute("target",r),p.setAttribute("style","display: none;"),a.open("about:blank",r,"location,resizable,scrollbars,width="+f+",height="+g),b.body.appendChild(p),p.submit()}})(window,document,top.location.href,"http:\/\/example.com\/wp-admin\/post-new.php?kind=bookmark");

Development / Issues

Development for the Post Kinds Plugin takes place on GitHub. While users can certainly report issues/bugs on the page for the WordPress plugin, the developer actively watches the issue queue on GitHub and problems will be seen (if not resolved) there more quickly.

List of available Post Kinds

Now that we’ve seen a few examples and gotten things set up, let’s take a brief look at all of the Post Kinds that are available. To make things a bit easier, we’ll break them up into four groups based on some shared qualities.

The Non-Response Kinds

These kinds have an analog in WordPress’s original post formats. Adding context to one of these may make it a passive kind.

  • Article – traditional long form content – a post with an explicit post title
  • Note – short content or status update – a post with just plain content and usually without an explicit post title
  • Photo – a post with an embedded image as its primary focus. This uses either the featured image or attached images depending on the theme.
  • Video – a post with an embedded video as its primary focus
  • Audio – a post with an embedded sound file as its primary focus

The Response Kinds

Response kinds differ from the non-response in that they are usually intended to be interactions with other external sites. For the best experience and improved functionality with these post kinds, it is recommended, but not required, that one have the Webmentions and the Semantic Linkbacks Plugins installed and activated. Doing so will send notifications of the replies and other interactions to those external sites which often display them. (These help your site work just like replies and mentions do on many other social media platforms, they just do so in distributed ways, so that neither you nor your friends necessarily need to be on the same platform or content management system to communicate.)

  • Reply – used for replying to someone else’s post
  • Repost – a complete repost of someone else’s content
  • Like – compliments to the original post/poster
  • Favorite – content which is special to the favoriter
  • Bookmark – this is basically sharing/storing a link/bookmark.
  • Quote – quoted content
  • RSVP – a specific type of reply regarding attendance of an event

The Passive Kinds

To “Scrobble” a song is to make a related post on your website when listening to it. This is the most well-known example of a passive kind of post. These kinds are formed by having content in the context box on one of these types of posts.

  • Listen – scrobble – listening to an audio post
  • Jam – Indicates a specific personally meaningful song
  • Watch – watching a video
  • Play – playing a game
  • Read – reading a book, magazine, or other online material

Reserved Kinds

The following kinds are reserved for future use within the plugin but will not currently show up in the interface unless enabled directly within the code. In some cases, these kinds don’t have the appropriate metadata fields within the plugin to make them user friendly without significant work.

  • Wish – a post indicating a desire/wish. The archive of all of these posts would be a wishlist, such as a wedding, birthday, or gift registry.
  • Weather – a weather post would be about current weather conditions
  • Exercise – represents some form of physical activity
  • Trip – represents a trip or journey and would require location awareness
  • Itinerary – refers to scheduled transit, plane, train, etc. and does not generally require location awareness
  • Check-In – identifying you are at a place. This would use the extended WordPress Geodata. It will require the Simple Location Plugin or something equivalent to add location awareness to posts. Some people are beginning to use this with the OwnYourSwarm application, which may require further configuration of your site to work properly.
  • Tag – allows you to tag a post as being of a specific tag, or person tagging.
  • Eat – for recording what you eat, perhaps for a food diary
  • Drink – similar to Eat, but for beverages
  • Follow – a post indicating you are now following someone’s activities (online)
  • Mood – feelings or emotions you’re having at the time of posting
  • Recipe – ingredients and directions for preparing food or other items
  • Issue – an article post that is typically a reply to some source code, though potentially anything at a source control repository
  • Event – a post kind that in addition to a post name (event title) has a start datetime, (likely an end datetime), and a location.

Additional Examples

If you’re reading this on my personal website, you can click on and view a variety of these post kinds described above to give you an idea of what they look like (and how they function with respect to Webmentions and other IndieWeb functionalities).

Go Forth and Post All the Things!

I’ve tried to cover as much of the basics of the plugin and provide some examples and screenshots to make things easier, but as always, there are ways to do additional custom configuration under the hood. I’m sure there are also off-label uses of the plugin to get it to do things the creator didn’t intend.

For additional details, one is certainly encouraged to skim through the code. If you have specific questions or problems, you can usually find the developer of the plugin and many of its users in the IndieWeb chat (web chat, IRC, Slack, etc.) for possible real-time help or support, or you can post questions or issues at the GitHub repo for the project.

Post all the things

Thanks

Special thanks to David Shanske for creating and doing a stellar job of maintaining the Post Kinds Plugin. Additional thanks to those in the IndieWeb community who continue to refine and revise the principles and methods which make it constantly easier for people to better own and control their social lives online by owning their own websites and data.

​​​

An Introduction to the IndieWeb

Why IndieWeb?

Whether you’re starting a blog, building your personal brand, posting a resume, promoting a hobby, writing a personal journal, creating an online commonplace book, sharing photos or content with friends, family, or colleagues, writing reviews, sharing recipes, podcasting, or any one of the thousand other things people do online it all starts with having a presence and an identity online.

The seemingly difficult task these days is deciding where that should be. There’s Twitter for sharing short updates and bookmarks to articles; Instagram, Snapchat, Flickr, and YouTube for photos and videos; Facebook for communicating with family and friends; LinkedIn for work and career related posts; Swarm for sharing your location; and literally thousands of others for nearly every micro-slice of content one could think of.

Can you possibly be on them all? Should you? Would you want to be? Could you keep up with it? Which one really and truly represents the real you? Could any of them?

And what about your friends, family, and potential audience for all of these things? Some will be on Twitter while others only use Facebook. Grandma is worried about privacy and is only on Instagram to see photos of the grandchildren. Mom is on Facebook because she thinks that’s what the internet is, and wants to like everything her children post. Teenagers don’t want to be on any platforms their parents have heard of. It’s obvious that everyone has their own preferences and favorites.

In short, the web and using it for easy communication has become fraught with fragmentation and walls that often make communicating online far more difficult than it should be. Wouldn’t it be better if you had a single website that represented you online and through which you could easily communicate with everyone?

By analogy consider the telephone system which, just like the internet, consists of wires and hardware to access the network. Every user on the network has their own phone and phone number. What would it be like if AT&T users could only speak to other AT&T users and needed another separate phone, account, and phone number to speak to friends and family on Verizon and yet another to talk to friends on Sprint? To a great extent, this is what the internet has evolved to become with monopolistic, for-profit, corporate services like Facebook/Instagram, Twitter, LinkedIn, and all the rest.

Is there a better and more robust solution than these multitudes of social media sites which all come with their own onerous terms of service, limitations on your creativity, reach, ownership, and control of your online identity?

A growing number of people on the web are sure there is and they’re working together in an open yet coordinated way to improve the democratized nature of the decentralized internet. This movement is known as the IndieWeb.

Purpose of IndieWeb

The purpose of the IndieWeb movement is to help put you in control of your web presence, allow you a more true sense of ownership of your content, and to allow you to be better connected to your friends, family, colleagues, and communities. By first owning your own domain name and having your own personal website, the IndieWeb aims to help facilitate the following:

You are in Control

You can post anything you want, in any format you want, with no one monitoring you. In addition, you share simple readable links such as http://www.example.com/ideas. These links are permanent and will always work.

Control and Freedom

You should be able to exercise your freedom of speech and publish anything you want whenever you want. You should be able to set your own rules and own limits. You should be able to post content as long or short as you like with no pre-imposed limits or types whether it be text, photos, audio, or video. You should be able to have control over comments and protection against potential harassment, bullying, and online trolls.

Identity & Identity loss

Almost every social media site has a multi-page statement of their terms of service written in complicated legalese. More often that not, these terms are to protect them and not you. As a result people have found their accounts frozen, they’ve been shut out with no notice or warning, their identities have been reassigned, or their content simply disappears with little or even no notice. Often there is either no method of recourse, or it is difficult to communicate with these corporations and may take weeks or worse to recover one’s account and data, if at all.

Without care, one can become branded with the identity of the social media network of which they’re a part. If trolls overrun your social service then suddenly by association, you’ve become one too.

User Interface/User EXperience

You should have the ability to control how your site looks and works. Do you want a piece of functionality that one of your social network sites doesn’t have? Add it the way you want it. Create better navigation, better interactivity, better design to reflect your own identity instead of a corporation’s cookie-cutter idea of your identity. Since your data is yours you can add new and interesting pieces of functionality using that data instead of waiting on a social site to think about it and implement it for you. Chances are that unless millions will find it valuable or a company doesn’t think it will scale, most won’t build it, so don’t hold your breath.

Your content is yours

When you post something on the web, it should belong to you, not a corporation. Too many companies have gone out of business and lost all of their users’ data. By joining the IndieWeb, your content stays yours and in your control.

Greater reliability and protection against content loss

Social media is only about 11 years old, and one thing is certainly true: sites will go out of business, they will get acquired, they can and will disappear. When this happens, your data can disappear overnight without the ability to back it up or export it. A new corporation can take over and change the terms of service and do things with your data that you never intended. Content can accidentally or even willfully disappear without notice to you. In addition to the data, you can also lose contact with family, friends, and community members that also disappear without the service that connected you to them.

You can have greater control of site downtimes, server outages, maintenance, scalability issues, and database failures of silos attempting to solve massive scaling/engineering problems.

A better sense of ownership

Many in the IndieWeb community have found that they post more interesting and thoughtful pieces of content when they’re doing it on their own site rather than the “throw away” content they used to post to sites like Twitter. They feel a greater sense of responsibility and ownership in what they’re posting about and this can have a profound effect on the future of the internet and its level of civility.

Author centric

When you own your own website, other web sites see that it’s you personally sending traffic to their sites instead of a generic social site. You have the ability to edit content at any time or delete it if you like.

You also have:

  • greater choice of public vs. private posts and control of who your audience is;
  • the ability to fix URL links when they break or disappear;
  • no outside advertising on your site without your explicit permission;
  • no one monetizing you;
  • no censorship of your content;
  • no terms of service which can often co-op your work without notice for advertising or other use;
  • ownership and control of affiliate links to monetize your work if you choose.

 You are better connected

Your articles and status messages can go to all services, not just one, allowing you to engage with everyone regardless of their choice of platform. Even replies and likes on other services can come back to your site so they’re all in one place.

Since your content isn’t hidden behind the robots.txt of a silo service, you have much better search engine rankings and are more likely to be found, read, or have people interact with your content. If you choose, you can still syndicate your content to one or more social silos while still owning your content in the case that something happens to those silos. This allows you to continue to reach your friends, family, colleagues, and community who may have different ideas about where they prefer to interact online. Comments to and interactions with your content can come back to your original post to create a comprehensive conversation rather than have your conversation disjointed and spread over dozens of sites throughout the web.

How to be a part of the IndieWeb

Now that you’ve got a bit of an idea about what the IndieWeb movement is attempting to help people accomplish, how can you become a part of it and enjoy the benefits for yourself?

Own and use your own domain name

Fifteen or more years ago having your own domain wasn’t as easy or as inexpensive as it is now. There are hundreds and hundreds of domain registrars around the world that can register almost any domain name you can come up with for as little as 99 cents a year with the average closer to the $10-20 range depending on the name and the top level domain (.com, .org, .net, and .edu are examples of top level domains.)

For an extra $0-10 a month you can quickly purchase domain hosting so that when someone visits your fancy URL, it actually connects to a page on the internet. Whether that page is a single page of simple HTML with a line of text and a photo; a plug and play site like Wix or SquareSpace; a full blown professional open source content management system like WordPress or Drupal; a web site you build by hand using your own code; or it points to your Facebook or Twitter account page, you’ve just made a huge step toward better cementing your identity on the internet.

Once you own your own domain name, everything you post to the web will have a permalink URL which you can control. If you wish to change platforms or service providers you can relatively easily move all of your content and the permalinks along with it–much the same way you can move your cell phone number from one provider to another. People who visit your URLs will always be able to find you and your content.

Twitter account profile asking for your name, bio, location, and your personal domain name/URL online.

If nothing else, owning your own domain name will give you something useful to put into the ubiquitous field labeled “your website” that exists on literally every social media website out there. (Even they are subtly telling you that you should have your own domain name.)

Added bonus: even most inexpensive domain registrars and hosting services will give you free email for your domain so you can create a custom branded personal email address like susan@yourname.com. Even if you rely on G-mail or some other third party service for your email, it’s pretty easy to connect your own personal email address to your pre-existing account. It’ll make you look a lot more professional and will be far easier for your friends, family, and business colleagues to remember.

So you own your domain now?! Congratulations, you are officially a full-fledged member of the IndieWeb!

Own your data

Wait, it can’t be that simple can it? It is! But now that you’ve got your own website, it’s time to start using it to own your online identity and own your own content.

Next you may want to choose a content management system (CMS) in which to store and present your data. The IndieWeb has lists of projects which range from common services as simple as Tumblr and WordPress.com (both managed services with free hosting) to help in building your own site from the ground up in your programming language of choice. Which project you choose depends on your needs, desires for the future, and your abilities. There is something available for people of nearly every level of ability. Most domain registrars and internet host providers provide one or more means to quickly get up and running–just ask their customer service departments or see what they’ve got available online.

Most of these CMS solutions will give people a far bigger range of flexibility in terms of what they can write, record, and broadcast online. You don’t need to be limited to 140 characters if you choose not to be. Want to post more multi-media-based content with text, video, audio, and photos all at once? The online world can be your oyster and your social media platform no longer limits what is possible.

Further Steps

Ideally, what a lot of the IndieWeb developer community is rapidly building and iterating upon is an open and broadly distributeable way to make it easier for the everyday person to more easily own and operate all the functionality offered by the hundreds of social media websites without a lot of heavy and difficult-to-maintain overhead. A decade ago allowing Facebook to do everything for you may have been a simple “way out”, but now there are far more robust, diverse, and flexible solutions that aren’t as onerous. There are also newer open and easily supportable web protocols that make publishing and sharing your content far easier than before.

The first big piece most people enjoy implementing is writing their own content on their own site and syndicating it out to other services on the internet if they choose. Continuing to participate in your old siloed networks can help you stay connected to your pre-existing social networks, so you’re not leaving all your friends and family behind. Next, having all your replies/comments, likes, and other interactions come back from social silos to your own site as comments along with notifications is incredibly valuable. (These two processes are commonly known as Post On your Own Site, Syndicate Elsewhere (POSSE) and backfeed, and they can typically be done most easily with a free service like Brid.gy.)

Being able to write replies to articles or status updates on your own website and either @mentioning others as a means of notifying them is also very useful. The IndieWeb calls this universal implementation of @mentions that work across website boundaries Webmention and it’s built on an open and straightforward standard so that it can work with any website on the internet. (Remember the telephone analogy above? Now, thanks to Webmentions, everyone can be communicating on the same network.) As an example, imagine for a moment if you could @mention someone on Facebook from Twitter or vice-versa?! What if you could post a reply to a tweet on Twitter with your Facebook account?Using the Webmention spec, independent websites can easily do this now, though it may be quite a while before for-profit corporations support this simple protocol that is now a W3C recommendation.

With some of the basic building blocks out of the way, people tend to spread out a bit in the types of functionalities they’re looking for.  It may range from posting status updatespictures, or video to hosting your own podcast or  or having different user interfaces to post to your own site–Micropub is great for this–to being able to put events on your site and allowing people to RSVP to them easily. Wouldn’t it be nice if you could post an event on your own website and people could use Facebook to RSVP to it? My site allows this possibility. Yours could too.

Everyone’s desires and needs will be different. Work on what you find most interesting and useful first (the IndieWeb calls these itches). Make a list of what you use most often on your old social media silos or wish they had and work on that first. Check out the IndieWeb wiki to see how others have implemented it–there’s no need to reinvent the wheel in darkness. Hop into the IndieWeb chat (there are multiple ways of doing this and interacting) and ask questions. Document what you’ve done in the wiki to make it easier for those who come after you.

Personally, I’ve always just thought about what functions do I use most on social sites and then ask myself how I might be able to do that on my own site. There’s little out there that hasn’t been explored by the bigger community, so searching the wiki for those types of functionality and seeing how others managed it usually makes it far easier. Chatting with folks in the community while I’m working always helps to sharpen my thinking and make me aware of ideas and methods I may have never considered much less come up with on my own.

If you never RSVP for things online or host events, then obviously don’t start there. Do you post photos regularly? Maybe you “like” everything you see online. In my case, I was a heavy user of Goodreads, so I spent parts of the last year working on more easily bookmarking things I’d like to read, posting reading status updates, and keeping notes on what I read, as well as highlights, marginalia, and book reviews after I’d finished reading.

Guiding Philosophy

The IndieWeb effort is different in several ways from previous efforts and communities. In particular it values principles over project-centrism. Other efforts have assumed a monoculture of one project as the ultimate solution for everyone. IndieWeb prefers developing a plurality of projects–why not have the same diversity on the web as we do in real life?

The community prefers chat in combination with a wiki to communicate and document its process. Some may prefer email distribution lists, but why? Who likes to read and respond to long email threads where information is typically locked away from the group, ignored, and simply unread? Instead, we utilize a chat (which has multiple methods of access–plurality, remember?) to host searchable conversations after which the best portions are documented on the wiki to be easily searchable and discoverable to all.

In the early days of social media, many talked, emailed and chatted about what they’d like to see. Sadly not much was done about expanding on these ideas, particularly by companies that all had their own profit-driven motives. As a result, the IndieWeb movement values showing before telling. They prioritize development by encouraging people to scratch their own itches, creating what they want to have and use on their own sites, and then iterating on those pieces to improve and refine them. If you won’t use a feature on your own site, why bother to have it?

IndieWeb puts design first and foremost. Protocols & formats come second. They’d prefer to focus on good user experience and user interaction. Users selfdogfood prototypes on their own sites to create minimum necessary formats & protocols.

Perhaps most importantly, the IndieWeb is people-focused instead of project-focused. The community is rich and diverse and has regular in-person meetups as well as camps across the world where everyone is welcome. The IndieWeb community is inclusive and has a code-of-conduct.

Join the IndieWeb Community

Where do I go from here? You said community in there. Where can I find it? How can I interact, get help, or even contribute back?

Regardless of your level of expertise, there are a huge number of resources, events, and even people available to you in a variety of formats. Whether you choose to meet with friends in person at IndieWebCamps or at regularly scheduled Homebrew Website Club meetups or interact online at a nearly continuous worldwide chat (using either web chat, Slack, Matrix, or IRC) there are many means of getting help and interacting to suit your schedule and needs to help build the personal website you’ve always wanted.

Building the indie web is a continuous process. While attending an IndieWebCamp can be an incredibly inspiring and encouraging event, we need to carry on doing so for more than just a few days a year when we can meet up in real life. We can not only support one another; we can share the best way to do things online. As we discover new ways of doing things, we can document them and share them easily with each other and the growing community.

If you’ve made it this far, I invite you to join us, and get started building the internet you’ve always wanted by building your home on the web first.


Editor’s Note:
As of December 2017, the AltPlatform.org site which originally published this article has shut down. I’ve smartly kept a private archived copy of the original of this post here on my personal site and manually syndicated a copy of it to AltPlatform for just such a possibility. (Hooray for PASTA (Publish Anywhere, Save to (Private) Archive)!) As a result of the shutdown, I’m making the original public here.

If you wish, you can also read a copy of the original as it appeared on AltPlatform on the Internet Archive.

Reply to Introducing Speed of Light Discussions by Jason Brennan

Replied to Introducing Speed of Light Discussions by Jason Brennan (Near the Speed of Light)
Today I’m happy to announce I’ve added a discussions section to the website, directly below each article. Here you’ll be able to directly respond to what you’ve just read, share your thoughts, and have a discussion with other readers of my site. Today’s post is going to take a bit of a look inside why I’m doing this and how discussions work.
Jason your blogpost does a great job of laying out the values (and distractions) of comments on blogs and why someone would want to have them. I particularly like your choice to call this area of his personal site a “Discussion” area instead of the traditional “Comments” moniker most would give it.

Some of your early discussion reminded me of articles by Audrey Watters in which she delineated pieces of why she’s turned off comments on her site and why she also turned off annotations recently. It’s definitely important to have control and agency over one’s own domain, which she also writes about rather eloquently in A Domain of One’s Own in a Post-Ownership Society.

While you use the oft-quoted statement (usually said in a dismissive tone in my experience):

If you want to respond, do so on your own website and tell me.

in the section espousing not allowing comments, I realize that this long-held concept of writing on your own website not only has significant value, but that the Indieweb way of replying and utilizing Webmentions (with moderation enabled if one prefers) for the notifications portion adds even more tremendous value.

Far too often, either in a blog’s comments section or even within social media, it’s all too easy to post an ill-conceived or hurtful drive-by response. It takes little time and thought to say “me too”, “I hate you”, “insert slur here”, or even click an innocuous “like” button many which do nothing for the conversation or discussion being proffered by the site owner. Worse, a very small portion of the world will see that a reader took these actions because they don’t really reflect heavily, if at all, within the reader’s own online presence–who searches for comments others have made online? How would you easily? It’s usually in these interactions that only the writer who spent some significant time trying to communicate can be crushed by overwhelming negativity rather than being showered with the intelligence, logic, or forethought they deserve for putting themselves out there, much less receiving praise for their work. It’s no wonder that people prefer to turn off comments.

Earlier this evening as I was reviewing the online discussion from the San Francisco Homebrew Website Club, I saw a comment from bdesham captured by Tantek Çelik, “I heard not having comments on Tumblr was a deliberate design, to avoid abuse, so to comment you have to reblog?” I recall having an HWC at Yahoo’s LA headquarters and hearing from someone within Yahoo that indeed this was exactly the reason that drove this piece of UX/UI. If you wanted to comment on Tumblr, you had to repost the content to your own front page along with the comment. This meant that you had to take true ownership of your words as they appeared front and center on your own site there. Who wants to publicly mark themselves with a proverbial Scarlet Letter just to be mean? (Some will, but increasingly many won’t because it redounds directly to their reputation.) Perhaps this is why some of the most marginalized people on the internet heavily use Tumblr and feel safe within their communities there?

As some will know, for the past few years I’ve been using the W3C’s recommended Webmention specification, a sort of cross-website universal @mention or @reply, which I’ve implemented on WordPress with the Webmention plugin and a few others, to accept replies/comments and other associated interactions on my blog in addition to the traditional comments box. While the traditional comment box has largely been unused on my site–making it often feel in the early days like I was “spewing words out into the void” as Jason describes–the Webmention piece seems to have made a far larger difference to me.

The majority of the interaction my site receives comes via Webmentions from Brid.gy in the form of short one-offs or simple “likes” which are backfed from Facebook, Twitter, or Google+. However a growing number of interactions are actually interesting and more substantive discussions. It’s these more “traditional” replies via Webmention that have the most value to me. They are better thought out replies and helpful commentary, which almost always appear front and center on the commenter’s own site (much the way Tumblr designed theirs) before they ever appear on my site  as a comment. As Jason astutely points out, having comments that are longer than 140 characters can be very valuable as well; since my commenters are posting on their own sites where they have ultimate freedom, most of them aren’t constrained in any way except perhaps for the amount of time they wish to take.

So here you are Jason, I’ve commented by posting on my own site first and notifying you by manually copying it to your discussion section where others can participate as well. (If you supported receiving Webmentions, the interaction would be automatic and nearly seamless.) I’m curious if you’d consider implementing the Webmention spec (both sending and receiving) on your website and if you think it would have the same intended effect you mean when you enabled “Discussions” on yours?–I know it feels like it has on mine.

If you care to reply back, feel free to reply on your own site, include a permalink to my original and use the manual Webmention form (below the traditional comment box) and click “Ping Me!” Of course, if you’re old school, feel free to dust off the old comment box and give that a whirl too!


Some additional miscellaneous thoughts, highlights, and short comments on Jason’s post:

Comments sections often become shouting matches or spam-riddled.

They can also become filled with “me too” type of commentary which more than often doesn’t add anything substantive to the conversation.

One of my all-time favorite comment moderation notes comes from the FAQ section of Peter Woit’s blog under “Why Did you Delete my comment?” He writes:

I delete a lot of the comments submitted here. For some postings, the majority of submitted comments get deleted. I don’t delete comments because the commenter disagrees with me, actually comments agreeing with me are deleted far more often than ones that disagree with me. The overall goal is to try and maintain a comment section worth reading, so comments should ideally be well-informed and tell us something true that we didn’t already know. The most common reason for deleting a comment is that it’s off-topic. Often people are inspired by something in a posting to start discussing something else that interests them and that they feel is likely to interest others here. Unfortunately I have neither the time nor inclination to take on the thankless job of running a general discussion forum here.

I hope my thoughts pass the Woit-comment-test for Jason.

 

For a website the size and popularity of Daring Fireball, it’d probably be madness to foster any kind of coherent conversation.

Certainly to do it without a staff would be difficult… Again here, Audrey Watter’s post about turning off comments indicates to some extent that even though she views her site as her personal blog, it’s audience, like that of Daring Fireball, has gotten so large that it’s not just friends, family, and community, but something beyond “community” (beyond the pale) that changes the dynamic of accepting comments.

 

I never felt like I was talking with anyone or anyone’s website, but more like I was spewing words out into the void.

I often feel this way, but supporting Webmentions and backfeed has largely negated these feelings for me in the last few years. I can now communicate directly with websites (and their authors) that support these open protocols.

 

It has the added benefit of making one-word smart-ass posts impossible.

I do remember the days of old, when people would comment “First!”, but beyond that #OneWordSmartAss is usually overrated unless you’re a professional comedian like Jon Stewart.

Doing a demo of POSSE and Webmentions at the Pasadena WordPress Developer Meetup.

Here are some resources for those attending:

 

Reply to What the New Webmention and Annotation W3C Standards Mean for WordPress | WPMUDEV

Replied to What the New Webmention and Annotation W3C Standards Mean for WordPress
Commenting on blog posts and other website articles is a divisive topic in web circles. WPMU DEV has as many articles about dispensing with comments altogether as it does with fostering conversation through WordPress!
Michael, good job bringing some attention to these two new specs!

After having used Webmentions on my site for 2+ years, I think you (and the Trackbacks vs Pingbacks vs Webmentions for WordPress article) are heavily underselling their true value. Yes, in some sense they’re vaguely similar to pingbacks and trackbacks, but Webmentions have evolved them almost to the point that they’re now a different and far more useful beast.

I prefer to think of Webmentions as universal @mentions in a similar way to how Twitter, Facebook, Google+, Instagram, Medium and others have implemented their @mentions. The difference is that they work across website boundaries and prevent siloed conversations. Someone could use, for example, their Drupal site (with Webmentions enabled) and write (and also thereby own) their own comment while still allowing their comment to appear on the target/receiving website.

The nice part is that Webmentions go far beyond simple replies/comments. Webmentions can be used along with simple Microformats2 mark up to send other interactions from one site to another across the web. I can post likes, bookmarks, reads, watches, and even listens to my site and send those intents to the sites that I’m using them for. To a great extent, this allows you to use your own website just as you would any other social media silo (like Facebook or Twitter); the difference is that you’re no longer restrained to work within just one platform!

Another powerful piece that you’re missing is pulling in comments and interactions from some of the social services using Brid.gy. Brid.gy bootstraps the APIs of Facebook, Twitter, Instagram, Google+, and Flicker so that they send webmentions. Thus, I can syndicate a post from my WordPress site to Twitter or Facebook and people commenting in those places will be automatically sending their commentary to my original post. This way I don’t really need to use Facebook natively to interact anymore. The added bonus is that if these social sites get shut down or disappear, I’ve got a copy of the full conversation from other places across the web archived in one central location on my personal site!

To add some additional perspective to the value of Webmentions and what they can enable, imagine for a moment if both Facebook and Twitter supported Webmentions. If this were the case, then one could use their Facebook account to comment on a Tweet and similarly one could use their Twitter account to like a Facebook post or even retweet it! Webmentions literally break down the walls that are separating sites on the web.

For the full value of the W3C Webmention spec within WordPress, in addition to the Webmention plugin, I’d also highly recommend Semantic Linkbacks (to make comments and mentions look better on your WordPress site), Syndication Links, and configure Brid.gy. A lot of the basics are documented on the Indieweb wiki.

If it helps to make the entire story clearer and you’d like to try it out, here’s the link to my original reply to the article on my own site. I’ve syndicated that reply to Twitter and Facebook. Go to one of the syndicated copies and reply to it there within either Twitter/Facebook. Webmentions enable your replies to my Twitter/Facebook copies to come back to my original post as comments! And best of all these comments should look as if they were made directly on my site via the traditional comment box. Incidentally, they’ll also look like they should and absolutely nothing like the atrociousness of the old dinosaurs trackbacks and pingbacks.

Feed reader revolution

The state-of-the-art in feed readers was frozen in place sometime around 2010, if not before. By that time most of the format wars between RSS and Atom had long since died down and were all generally supported. The only new features to be added were simple functionalities like sharing out links from readers to social services like Facebook and Twitter. For fancier readers they also added the ability to share out to services like Evernote, OneNote, Pocket, Instapaper and other social silos or silo related services.

So the real question facing companies with stand alone traditional feed reader products–like Feedly, Digg Reader, The Old Reader, Inoreader, Reeder, NewsBlur, Netvibes, Tiny Tiny RSS, WordPress reader–and the cadre of others is:

  • What features could/should we add?
  • How can we improve?
  • How can we gain new users?
  • How can we increase our market share?

In short the primary question is:

What should a modern RSS feed reader be capable of doing?

Continue reading Feed reader revolution

@Mentions from Twitter to My Website

You can tweet to my website.

One of my favorite things about the indieweb is how much less time I spend on silo sites like Facebook and Twitter. In particular, one of my favorite things is not only having the ability to receive comments from many of these sites back on the original post on my own site, but to have the ability for people to @mention me from Twitter to my own site.

Yes, you heard that right: if you @mention me in a tweet, I’ll receive it on my own website. And my site will also send me the notification, so I can turn off all the silly and distracting notifications Twitter had been sending me.

Below, I’ll detail how I set it up using WordPress, though the details below can certainly be done using other CMSes and platforms.

rel=“me”

The rel=“me” is put on the link that wraps this Twitter icon in my h-card on my homepage.

On my homepage, using a text widget, I’ve got an h-card with my photo, some basic information about me, and links to various other sites that relate to me and what I’m doing online.

One of these is a link to my Twitter account (see screenshot). On that link I’m using the XFN’s rel=“me” on the link to indicate that this particular link is a profile equivalence of my identity on the web. It essentially says, “this Twitter account is mine and also represents me on the web.”

Here’s a simplified version of what my code looks like:

<a href="https://twitter.com/chrisaldrich" rel=“me">@chrisaldrich</a>

If you prefer to have an invisible link on your site that does the same thing you could alternately use:

<link href="https://twitter.com/twitterhandle" rel=“me">

Similarly Twitter also supports rel=“me”, so all I need to do there is to edit my profile and enter my website www.boffosocko.com into the “website” field and save it. Now my Twitter profile page indicates, this website belongs to this Twitter account. If you look at the source of the page when it’s done, you’ll see the following:

<a class="u-textUserColor" title="http://www.boffosocko.com" href="https://t.co/AbnYvNUOcy" target="_blank" rel="me nofollow noopener">boffosocko.com</a>

Though it’s a bit more complicated than what’s on my site, it’s the rel=“me” that’s the important part for our purposes.

Now there are links on both sites that indicate reciprocally that each is related to the other as versions of me on the internet. The only way they could point at each other this way is because I have some degree of ownership of both pages. I own my own website outright, and I have access to my profile page on Twitter because I have an account there. (Incidentally, Kevin Marks has built a tool for distributed identity verification based on the reciprocal rel=“me” concept.)

Webmention Plugin

Next I downloaded and installed the Webmention plugin for WordPress. From the plugin interface, I just did a quick search, clicked install, then clicked “activate.” It’s really that easy.

It’s easy, but what does it do?

Webmention is an open internet protocol (recommended by the W3C) that allows any website to send and receive the equivalent of @mentions on the internet. Unlike sites like Twitter, Facebook, Medium, Google+, Instagram, etc. these mentions aren’t stuck within their own ecosystems, but actually work across website borders anywhere on the web that supports them.

I use the domain name BoffoSocko as my online identity.

The other small difference with webmention is instead of using one’s username (like @chrisaldrich in my case on Twitter) as a trigger, the trigger becomes the permalink URL you’re mentioning. In my case you can webmention either my domain name http://www.boffosocko.com or any other URL on my site. If you really wanted to, you could target even some of the smallest pieces of content on my website–including individual paragraphs, sentences, or even small sentence fragments–using fragmentions, but that’s something for another time.

Don’t use WordPress?

See if there’s webmention support for your CMS, or ask your CMS provider or community, system administrator, or favorite web developer to add it to your site based on the specification. While it’s nice to support both outgoing and incoming webmentions, for the use we’re outlining here, we only need to support incoming webmentions.

Connect Brid.gy

Sadly, I’ll report that Twitter does not support webmentions (yet?!) otherwise we could probably stop here and everything would work like magic. But they do have an open API right? “But wait a second now…” you say, “I don’t know code. I’m not a developer.”

Worry not, some brilliant engineers have created a bootstrap called Brid.gy that (among many other useful and brilliant things) forces silos like Twitter, Facebook, Google+, Instagram, and Flickr to send webmentions for you until they decide to support them natively. Better, it’s a free service, though you could donate to the ASPCA or EFF in their name to pay it forward.

So swing your way over to http://brid.gy and under “Get started” click on the Twitter logo. Use OAuth to log into Twitter and authorize the app. You’ll be redirected back to Brid.gy which will then ensure that your website and Twitter each have appropriate and requisite rel=“me”s on your links. You can then enable Brid.gy to “listen for responses.”

Now whenever anyone @mentions you (public tweets only) on Twitter, Brid.gy will be watching your account and will automatically format and send a webmention to your website on Twitter’s behalf.

On WordPress your site can send you simple email notifications by changing your settings in the Settings >> Discussion dashboard, typically at http://www.exampl.com/wp-admin/options-discussion.php. One can certainly use other plugins to arrange for different types of notifications as well.

Exotic Webmentions

A bonus step for those who want more control!

In the grand scheme of things webmentions are typically targeted at specific pages or posts on your site. General @mentions on Twitter not related to specific content on your site will usually be sent to your homepage. Over time, this may begin to get a bit overwhelming and may take your page longer to load as a result. An example of this is Kevin Marks’ site which has hundreds and hundreds of webmentions on it. What to do if this isn’t your preference?

In my case, I thought it would be wise to collect all these unspecific or general mentions on a special page on my site. I decided to call it “Mentions” and created a page at http://boffosocko.com/mentions/.

Update

While the code snippet just below should work, as of the 3.3.0 update of the Webmention Plugin, there is now an automatic setting at /wp-admin/options-discussion.php that will allow you to use a dropdown UI box to choose the page on your site to which homepage webmentions will be directed.

Then I inserted a small piece of custom code in the functions.php file of my site’s (child) theme like the following:

// For allowing exotic webmentions on homepages and archive pages

function handle_exotic_webmentions($id, $target) {
// If $id is homepage, reset to mentions page
if ($id == 55669927) {
return 55672667;
}

// do nothing if id is set
if ($id) {
return $id;
}

// return "default" id if plugin can't find a post/page
return 55672667;
}

add_filter("webmention_post_id", "handle_exotic_webmentions", 10, 2);

This simple filter for the WordPress Webmention plugin essentially looks at incoming webmentions and if they’re for a specific page/post, they get sent to that page/post. If they’re sent to either my homepage or aren’t directed to a particular page, then they get redirected to my /mentions/ page.

In my case above, my homepage has an id of 55669927 and my mentions page has an id of 55672667, you should change your numbers to the appropriate ids on your own site when using the code above. (Hint: these id numbers can usually be quickly found by hovering over the “edit” links typically found on such pages and posts and relying on the browser to show where they resolve.)

Tip of the Iceberg

Naturally this is only the tip of the indieweb iceberg. The indieweb movement is MUCH more than just this tiny, but useful, piece of functionality. There’s so much more you can do with not only Webmentions and even Brid.gy functionality. If you’ve come this far and are interested in more of how you can better own your online identity, connect to others, and own your data. Visit the Indieweb.org wiki homepage or try out their getting started page.

If you’re on WordPress, there’s some additional step-by-step instructions: Getting Started on WordPress.

Mastodon.Social isn’t as Federated or as Decentralized as the Indie Web

Mastodon.social is the cool new social platform[1][2], and certainly prettier than many of the other federated GNU social instances. My Twitter feed is full of mastodon mentions right now with many people saying “I’m on mastodon.social now as _____, come follow me.”–a phrase I haven’t seen since the last social boom in 2009 before the new class of multi-billion dollar corporations began monetizing their users.

I like the cute mastodon imagery and the concept of a “toot”, but isn’t this yet another social media silo that’s going to own all my content and have control over how I interact with it? What happens when everyone gets tired of it? What happens weeks, months, years from now when it decides to shut down or gets bought out like so many others?

Federated and Decentralized

The buzzwords of the week seem to be “federated” and “decentralized”. I’m glad that tens of thousands of people are being introduced to these concepts this week, but they’re definitely not new, and they’re far from perfected.

If we want openness, federation, identity, flexibility, and control why not just have our own website? They can do pretty much everything that most of the social networks can do now, but with much greater freedom. They’d probably be even stronger if people hadn’t ceded their lives and all their thoughts to Facebook, Twitter, Instagram, et al.  Many people in the Indieweb community are already leveraging their own sites and some simple code to do just this.

My Website is an Example

My site is mine. I own the domain name and all the data that gets posted to it. I can write as much or as little as I want about anything I like. No one is artificially limiting me for length. I can post photos. I can post audio, even video. I can write a comment on my own site about something on another site and I don’t have to hope it won’t be moderated out of existence. If I don’t like it, I can edit it (I’m looking at you Twitter) or delete it at any time and know it’s gone (I’m looking at you Facebook).

I support the W3C Webmention recommendation so you can write something on your site and send me the equivalent of an @mention (one which will work across website boundaries instead of being stuck inside them like Twitter, Medium, and Facebook all do). Your mention will then allow your post to show up on my site as a comment! Yes, you hear that correctly. You can use one website to comment on another that’s completely unrelated to the first.

If you don’t have webmention set up yet (via a plugin or other implementation), just add the permalink of my post to your reply on your own site and then put your post’s permalink into the URL labeled box below and click “Ping Me”. Shazam! I have a copy of your comment, but you still own what you wrote to me. Now that’s true website to website federation because it uses open standards that aren’t controlled by third party corporations.

Incidentally I also syndicate many of my posts to the walled gardens like Facebook, Twitter, Instagram, Google+ (where people apparently really love ads served within their content) so I’m not completely cut off from my social graph. Comments and reactions from those silos come back to live with my original posts so everything lives here on my site–future-proofed against their possible disappearance. It also means the conversation doesn’t need to be fragmented across multiple platforms anymore.  Are you reading this on or from one of them? Go back, click like, favorite, or write a reply/response/comment where you saw it and it will magically be transported back to me–with the ability for me to moderate it away if you’re rude.

Dig a few layers deeper

So if we’re going to be excited about federating and decentralizing this week, why don’t we take it one or two layers further?!

Domains can be as inexpensive as $1 with most in the $10-15 a year range and simple web hosting (usually with one-button website installations) costing from $5-20 a month at the lower ends. You can do it yourself–I promise. And if you think you can’t, try a quick web search for the answer or start with http://indieweb.org/getting_started. It’ll give you something to do while signups for the Mastodon.social server are turned off due to overload. Why try to be one of the trendy kids when you can easily go “old-school” and do it yourself with more control? (And heck, if you really can’t do it yourself, I can either help you or you can try it out on an instance of WithKnown that I spun up just to let people try the concept out: http://known.boffosocko.com/.

What are you waiting for? Your own follow button? You can have that too if you really want:

But you can at least allow people a choice in how and where you’re followed and read. Prefer to follow me via Email, Newsletter, Social Media, RSS, or even Push Notification? View all subscription methods here.

References

[1]
“Mastodon.social is an open-source Twitter competitor that’s growing like crazy,” The Verge, 04-Apr-2017. [Online]. Available: http://www.theverge.com/2017/4/4/15177856/mastodon-social-network-twitter-clone. [Accessed: 05-Apr-2017]
[2]
“Mastodon Is Like Twitter Without Nazis, So Why Are We Not Using It?,” Motherboard, 04-Apr-2017. [Online]. Available: https://motherboard.vice.com/en_us/article/mastodon-is-like-twitter-without-nazis-so-why-are-we-not-using-it. [Accessed: 05-Apr-2017]

Reply to Web Annotations are Now a W3C Standard, Paving the Way for Decentralized Annotation Infrastructure

Replied to Web Annotations are Now a W3C Standard, Paving the Way for Decentralized Annotation Infrastructure by Sarah Gooding (WordPress Tavern)
Web annotations became a W3C standard last week but the world hardly noticed. For years, most conversations on the web have happened in the form of comments. Annotations are different in that they usually reference specific parts of a document and add context. They are often critical or explanatory in nature.

Hypothesis Aggregator

Be careful with this plugin on newer versions of WordPress >4.7 as the shortcode was throwing a fatal error on pages on which it appeared.

p.s.: First!

Kris Shaffer, the plugin’s author

Here’s his original post announcing the plugin. #

Web annotation seems to promote more critical thinking and collaboration but it’s doubtful that it would ever fully replace commenting systems.

But why not mix annotations and comments together the way some in the IndieWeb have done?! A few people are using the new W3C recommendation spec for Webmention along with fragmentions to send a version of comments-marginalia-annotations to sites that accept them and have the ability to display them!

A good example of this is Kartik Prabhu’s website which does this somewhat like Medium does. One can write their response to a sub-section of his post on their own website, and using webmention (yes, there’s a WordPress plugin for that) send him the response. It then shows up on his site as a quote bubble next to the appropriate section which can then be opened and viewed by future readers.

Example: https://kartikprabhu.com/articles/marginalia

For those interested, Kartik has open sourced some of the code to help accomplish this.

While annotation systems have the ability to overlay one’s site, there’s certainly room for serious abuse as a result. (See an example at https://indieweb.org/annotation#Criticism.) It would be nice if annotation systems were required to use something like webmentions (or even older trackback/pingbacks) to indicate that a site had been mentioned elsewhere, this way, even if the publisher wasn’t responsible for moderating the resulting comments, they could at least be aware of possible attacks on their work/site/page. #

Read posts nearly perfected!

Hoorah, hooray!

In a project which I started just before IndieWebCamp LA in November, I’ve moved a big step closer to perfecting my “Read” posts!

Thanks in large part to WordPressPressForward, friends and help on the IndieWeb site too numerous to count, and a little bit of elbow grease, I can now receive and read RSS feeds in my own website UI (farewell Feedly), bookmark posts I want to read later (so long Pocket, Instagram, Delicious and Pinboard), mark them as read when done, archive them on my site (and hopefully on the Internet Archive as well) for future reference, highlight and annotate them (I still love you hypothes.is, but…), and even syndicate (POSSE) them automatically (with emoji) to silos like Facebook, Twitter (with Twitter Cards), Tumblr, Flipboard, LinkedIn, Pinterest, StumbleUpon, Reddit, and Delicious among others.

Syndicated copies in the silos when clicked will ping my site for a second and then automatically redirect to the canonical URL for the original content to give the credit to the originating author/site. And best of all, I can still receive comments, likes, and other responses from the siloed copies via webmention to stay in the loop on the conversations they generate without leaving my site.

Here’s an example of a syndicated post to Twitter:

I’m now more resistant to a larger number of social media silos disappearing with my data. Huzzah!

What’s next?

 

My reply to Micro.blog Project Surges Past $65K on Kickstarter, Gains Backing from DreamHost | WordPress Tavern

Replied to Micro.blog Project Surges Past $65K on Kickstarter, Gains Backing from DreamHost (WordPress Tavern)
With one week remaining on its Kickstarter campaign, the Micro.blog indie microblogging project has surged past its original $10K funding goal with $66,710 pledged by 2,381 backers. This puts proje…
I love that Micro.blog is doing so well on Kickstarter! I’m even more impressed that DreamHost is backing this and doubling down in this area.

I coincidentally happened to have a great conversation yesterday with Jonathan LaCour before I saw the article and we spoke about what DreamHost is doing in the realm of IndieWeb and WordPress. I love their approach and can’t wait to see what comes out of their work and infectious enthusiasm.

I’m really surprised that WordPress hasn’t more aggressively taken up technologies like Webmention, which is now a W3C recommendation, or micropub and put them directly into core. For the un-initiated, Webmention works much like @mention on Twitter, Medium, Facebook, and others, but is platform independent, which means you can use it to ping any website on the internet that supports it. Imagine if you could reply to someone on Twitter from your WordPress site? Or if you could use Facebook to reply to a post on Medium? (And I mean directly and immediately in the type @mention/hit publish sense, not doing any laborious cut and paste from one platform to another nonsense that one is forced to do now because all the social silos/walled gardens don’t inter-operate nicely, if at all.) Webmention can make all that a reality.  Micropub is a platform independent spec that allows one to write standalone web or mobile apps to create publishing interfaces to publish almost any type of content to any platform–think about the hundreds of apps that could publish to Twitter in its early days, now imagine expanding that to being able to use those to publish to any platform anywhere?

While Twitter has been floundering for a while, WordPress has the structure, ecosystem, and a huge community to completely eat Twitter’s (and even Facebook/ Instagram’s, Medium’s, & etc.) lunch not only in the microblog space, but the larger space which includes blogging, photos, music, video, audio, and social media in general. The one piece they’re missing is a best-in-class integrated feed reader, which, to be honest, is the centerpiece of both Twitter and Facebook’s services. They seem to be 98% readers and 2% dead-simple posting interface while WordPress is 98% posting interface (both more sophisticated/flexible and more complicated), and nearly non-existent (and unbundled) reader.

WordPress has already got one of the best and most ubiquitous publishing platforms out there (25+% of the web at last count). Slimming down their interface a tad to make it dead simple for my mom to post, or delegating this to UX/UI developers with micropub the way that Twitter allowed in the early days with their open API and the proliferation of apps and interfaces to post to twitter, in addition to Webmentions could create a sea-change in the social space. Quill is a good, yet simple example of an alternate posting interface which I use for posting to WordPress. Another is actually Instagram itself, which I use in conjunction with OwnYourGram which has micropub baked in for posting photos to my site with Instagram’s best-in-class mobile interface. Imagine just a handful of simple mobile apps that could be customized for dead-simple, straightforward publishing to one’s WordPress site for specific post types or content types…

With extant WordPress plugins, a lot of this is already here, it’s just not evenly distributed yet, to borrow the sentiment from William Gibson.

For just a few dollars a year, everyday people could more easily truly own all their content and have greater control over their data and their privacy.

I will note that it has been interesting and exciting seeing the Drupal community stepping on the gas on the Webmention spec (in two different plugins) since the W3C gave it recommendation status earlier this month. This portends great things for the independent web.

I haven’t been this excited about what the web can bring to the world in a long, long time.