Episode 9: 30 Days of Indieweb


Audio Player

I’m going away for a month, and called Chris Aldrich to talk about things I’m interested in, and what I might work on for the next few weeks as I’m in a hotel room.
Episode 8: Interflux

Audio Player

In this episode, Chris and I recap our takeaways and stories from the Indieweb Summit 2018 last month in Portland, Oregon, discuss Microsub, Vouch, and other ideas.

Episode 10 – The Thrilla in Manilla

Audio Player

October 1st will be the 43 anniversary of the Ali/Frazer fight. I spent a month in Manila and the title was suggested by Chris as appropriate.

In this week’s episode, we discussed new developments in WordPress and what I’ve wanted to accomplish for all these years in the Indieweb community. The ability to read something on my phone, store it on my website to either share or just save, as appropriate.

We discussed recent projects I’d worked on, such as the Micropub plugin, client discovery in IndieAuth, Post Kinds, etc.

Replied to JSON Feed for WordPress updated (manton.org)

It has been over a year since JSON Feed was announced. There have been a bunch of discussions about expanding the specification, but we are very happy with how well the initial version has worked. It powers all Micro.blog-hosted blogs by default and is also used on many WordPress blogs, home-grown s…

It was my pleasure to take over JSONFeed for WordPress. All it needs is periodic maintenance and maybe the occasional improvement when suggested, especially if the spec iterates, either officially or unofficially.

Thoughts About Assertion Workflows

This is a preliminary technical workflow proposal for assertions, which would be needed for badges, endorsements, and other ideas. It is based on thoughts that I had listening to the badges session at Indiewebcamp NYC 2018.

Scenario 1: Individual creates criteria and wants to assert that other individual has achieved said criteria. Example: Professor wants to certify students completed coursework.

  • Professor Posts Criteria for Each Achievement as a unique page (A).
  • Student completes assignment as a post (B).
  • Professor Posts Badge/Assertion/Endorsement post on their website as an h-review, with a p-item property to student’s URL (B). Would need a new or existing property to represent the relationship to the original assertion (A). Suggest u-assert and u-assert-of?j Can use u-in-reply-to possibly.

Scenario 2: Individual creates assertion post and solicits others to endorse that statement as factual.

  • Individual makes a post to their site(h-resume for references on a resume, not sure what to request endorsement of a statement? p-assert with a nested h-item?) and invites other individuals(using existing invitee property used for RSVPs?) to endorse or assert it. Criteria might be included for achievement.
  • Others create ‘assertion’ posts on their site(assert-of) and send webmentions, which would cause the post to be updated to note that it had been achieved.

Existing microformats for h-resume and h-review seem to allow additional context.

  • Education
  • Experience
  • Skill
  • Rating
  • Best
  • Worst

Brainstorming on the Indieweb wiki under assertion.

Replied to Chris Messina™ on Twitter (Twitter)

“Is it time to resurrect the DiSo Project? https://t.co/Sd3p8Gl6M8 Funny, we were here in 2006, @simonw: https://t.co/Vmz06KA1Gp /cc @willnorris @steveivy @singpolyma https://t.co/eWYliJtI2y”

People continued working on it. Everything you need using W3C standards like Webmention, Microformats2…give it a try? https://IndieWeb.org/WordPress/Plugins
Tomorrow I am going to be once again spending time in Manila. It has been on my mind lately, as it is a long journey and a hard trip. But, I intend to make the best of it and be as productive as possible.

Your Endpoint Did Not Return a Location Header

There have been some issues with Quill and other services advising that the WordPress Micropub endpoint did not return a Location header. There seems to be some confusion about this, which is partly because the message is a bit technical. One individual thought that this was related to Simple Location.

This indicates an error on the part of the Micropub plugin. Regrettably, in addition to not displaying the error response prominently, the Micropub specification dictates that the error response returns one of 4 error codes, and may return a human readable error description to assist the client developer in understanding the error, but is not meant to be shown to the end user.

This does not account for errors on the endpoint side that may need to be debugged. Currently, the WordPress plugin that creates the endpoint does not surface error messages on its side either to allow you to figure this out.

Better error messaging to the end-user on one side or the other seems to be a common issue amongst Indieweb tools to help them figure out the issue.

The most common issue that explains the failure is an inability to associate the URL with the user account. There are two versions of the software that does this.

  • In the IndieAuth plugin, to ensure accuracy, the plugin passes the WordPress user ID in the return to ensure that it can find it.
  • If you don’t have the IndieAuth plugin installed, the Micropub plugin uses an external IndieAuth endpoint instead of a built-in one, and the following techniques to find the WordPress user from your URL
    • If you have the Indieweb plugin installed, it looks in its settings for the default author on a single author site.
    • If you are using the URL of your author post archive, usually /author/username it will try to use that to get your username and therefore your user ID
    • If you have set a website URL in your profile, it will try to use that. Please make sure your website URL uses https if your website does, as this has caused some issues in matching.

In both plugins, we continue to improve the functionality in this case and I often port ideas that improved functionality in one version into the other, as they are both authorize Micropub using IndieAuth, but in the case of the Indieauth plugin, it also implements the IndieAuth functionality.

Right now, I’m working on improvements to the Micropub plugin to improve the error handling, among other things, and hopefully this will help.

 

Replied to Stepping back from POSSE by Ben WerdmüllerBen Werdmüller (Ben Werdmüller)

I’m also going to make a strong argument in the open source Known community that syndication should be limited to webhooks going forward. In other words, third parties will be able to create microservices with a standard API, which your Known or other indieweb-compatible site will be able to connect to. You could click a button to notify those services (or have your site do it automatically). But any kind of API maintenance would be taken out of the core code or official plugins. Not only is life too short, but it’s long past time to stop building code on top of centralized silos of content.

I have to agree with Ben. The Micropub plugin for WordPress triggers a WordPress hook based on syndication targets and I’m working on a compatible system for the Post Editor, so that the UI doesn’t need to know how the item is POSSEd.

This is because I also don’t want to deal with silo interfaces most of the time.

Replied to OAuth for the Open Web by Aaron PareckiAaron Parecki (Aaron Parecki)

OAuth has become the de facto standard for authorization and authentication on the web. Nearly every company with an API used by third party developers has implemented OAuth to enable people to build apps on top of it.
While OAuth is a great framework for this, the way it has ended up being used is …

IndieAuth, the extension to OAuth 2.0, was developed by Aaron Parecki and implemented by multiple people  in the IndieWeb community, including myself.

The problem has been that people conflated it with the service Aaron created as a reference implementation, which implemented IndieAuth for people who didn’t have it by using the OAuth services of sites like Twitter and Github to bootstrap the service.

Aaron succeeds here in finally conveying a point it took me a long time to understand, and partially only by reading and implementing one of these.

Was pleased to see the founder of Home Assistant, a product I use, tweeting that he would adopt this in that product. Looking forward to seeing what people come up with.

Brainstorming on Implementing Vouch, Following and Blogrolls

Vouch is an extension to the webmention protocol. Webmentions usually have two parameters…source and target. Target is the URL on your website  that the Source URL is linking to.

The vouch parameter is a third URL to help the target determine whether or not they should accept the webmention. This should block automated spam and aid in moderation.

Several people have implemented receiving vouches. It is relatively easy  to look at a vouch URL and see if it links to a third-party who you have approved of in the past.  While there are more advanced things you can do, that is the basic summary of the protocol.

The harder part, and less implemented by others is sending of vouches. Where do you find people who have been approved by people you have approved of? It would really help if we had some more discussion on this.

So, at the Indieweb Summit, we talked about this a bit, after which I implemented a primitive Vouch receiver. My solution was to use a manually curated domain whitelist that I’d previously built as my source for acceptable domains.

There are some suggestions on where to get this list. Several people generate a list from referrers. This sent me down the road of looking as to whether I’d want to implement refbacks to add more mentions to my website…except there is a lot of noise. Refbacks are basically the same as webmentions, except the source is gleaned from the  referrer header that sites send when a page is accessed.

Even if I  have a list of sites that I approve of, I would have to crawl them to find links from them to other sites. So, I think we should all help each other out on this.

That means we need to post our list of approved domains somewhere on our site. That used to be quite popular. It was called a Blogroll. It was sites you read, followed, or recommended. There are other terms for it. But, this is a perfect place to get a nice list, and if we publish them, then we can help the Vouch cause.

But the problem is, how do you tell a Vouch receiver where your list is. There are some brainstorming items about blogrolls and following/follower lists

  • Follower lists marked up with rel=”follower” or rel=”following”
  • Contact lists marked up with rel=”contact”
  • Follow Posts marked up with u-follow-of

Follow posts would create an h-feed of follow posts that could be used to generate a list. You can have a specific page on your website, but there isn’t a way to indicate this to someone looking for it.

There is rel-directory, which is the reverse direction. It indicates that the link is to a directory in which the current page is listed. What we seem to be missing is a property that says that a page is a feed of followers that can be placed inside an h-card or on a home page.

u-follow-of is a proposed property that indicates that an h-entry is considered a follow post, which is a post indicating you have followed someone, then a feed of follow posts could be parsed and read by a reader. If you add in the XFN relationships to that, you can build even more detail.

The reverse relationship would, in theory, be u-follow, which would be a URL to the follow post of the current URL(the thing being followed).

Feeds are identicated by rel=”feed” to link from your homepage to those feeds. But there is a lack of indicating what type of feed it is, such as rel=”blogroll” or rel=”following”.  I’m not sure, and need more discussion about what to use for this.

But, this has the ability to solve a lot of problems. Imagine I…

  • Post Follow posts when I follow someone
  • Use this to generate a blogroll/followers list
  • Send webmentions when I follow someone so they can build relationships
  • Use that list as a vouch list. Use other people’s blogrolls/followers lists as a means to generate vouch lists…which reduces the implementation cost of Vouch.

Needs work, but suddenly I want to do Follow posts.