68°F

Aaron Parecki

  • Articles
  • Notes
  • Photos
  • Building an IndieWeb Reader

    March 12, 2018

    Over the last several months, I've been slowly putting the pieces in place to be able to build a solid indieweb reader. Today, I feel like I finally have enough in place to consider this functional enough that I am now using it every day!

    One of the major missing pieces of the IndieWeb ecosystem has been having an integrated reading and posting experience that mirrors the ease with which it's possible to post and follow on Twitter and other silo apps. 

    We've seen a few attempts at indieweb readers over the past few years, but nothing has really taken off or stuck around. Even my own attempts at readers have fallen apart, both the previous iteration of Monocle in 2016, and my fork of selfoss in 2014. My suspicion has always been that we haven't seen many people building out this part of the ecosystem because it turns out there are a whole bunch of different parts to building a reader, many of which have no overlap in skillset: managing the subscription list, polling and fetching feeds, parsing feeds, data storage, rendering posts in a UI, providing inline action buttons to be able to reply and favorite posts, etc. 

    When I'm building out the UI components of a project, the last thing I want to have to think about is the invisible backend stuff like feed polling and parsing. Similarly when I'm tackling the problems with parsing and normalizing data from feeds, the last thing I am thinking about is Javascript button interactions. Not to mention that I am barely an iOS developer, so there's no way I'd be able to build out a full indieweb reader for iOS.

    In April 2017, I started outlining a spec that draws a hard line between these very different parts of building a reader, and called it Microsub (for subscribing), as a complement to Micropub (for publishing). The basic idea is to separate the feed subscriptions from the UI parts of building a reader. 

    I started working from the ground up on building out the various aspects I knew I would need in order to eventually end up with a fully functional reader. 

    The main interface of Monocle

    I based a lot of these design decisions around my previous experience in building a reader, as well as my documentation of how I use IRC to read content across the web.

    My goal with this is to use this as my primary online dashboard to follow all kinds of content, as well as being able to interact with the content without leaving the interface. 

    Channels

    The main organization of the reader is laid out in "channels". You can also think of these as "folders" if you want. Many feeds (or sources) can be added to a channel, and the posts are all combined into a single timeline view.

    Displaying Posts

    Monocle supports displaying a few different types of content in posts. It has native support for notes, articles, photos, multi-photos, videos, audio clips, checkins, favorites, reposts, and replies.

    Since I follow my Instagram feed in the reader, I wanted to have a good display for photos, especially when there are many photos attached to a single post. I ended up doing a simple custom layout when there are two or three photos. Four or more they just start tiling as half-size photos. With three photos, the first photo appears larger on the left and the other two are stacked to the right.

    I wanted to be able to read full articles in the reader without jumping out to the site, but also didn't want to have to scroll endlessly when I'm just skimming headlines. So if an article has content that is too tall, it gets truncated with a "read more" link to expand it.

    If the post has an audio file, such as podcasts, then there is a simple HTML audio player inline!

    Post Actions

    Each post has a set of buttons to be able to respond to the post. The quickly accessible actions are "favorite", "repost", and "reply". The three dots opens up an expanded menu with some additional options, some of which I have not yet implemented.

    Currently it's possible to remove a post from a channel, and to open up a debug view showing the raw data behind the post. Eventually this will expand to include muting the author, blocking the author, or unfollowing the source the post came from.

    Replying

    Clicking the "reply" button drops down a little text box for posting a reply.

    There is a character counter just so that I have a sense of how long the post is. Since this is posting the reply back to my website, this interface has no idea what sort of character limits there are, so it's just a simple counter. When I click the "Reply" button, the app makes a Micropub post to my website to create the post there. 

    My website already has all the logic for adding that to my replies feed and sending webmentions to the post I'm replying to. Since this post I replied to is on Micro.blog, and Micro.blog accepts webmentions, the post showed up there within a few seconds.

    The same workflow happens for favoriting and reposting things.

    Syndicating to GitHub

    My website also recognizes when the post I'm replying to is a Twitter or GitHub permalink, and will automatically syndicate my reply or favorite appropriately! Since I added my GitHub notifications to a channel, I can actually reply to GitHub issues directly from the interface!

    Replying to a GitHub issue comment from Monocle
    My reply to the GitHub issue on my website
    My reply automatically syndicated to GitHub

    Read-State Tracking

    You may have noticed the little blue dots next to the channel names in some previous screenshots. Those indicate how many unread posts are in the channel.

     

    However, some feeds that I follow end up with tons of posts in the channels, so many that the actual number of posts is no longer significant! All I really want to know is whether there is something new or not. To account for this, I can choose whether a channel implements per-item tracking, or just a boolean read/unread indicator, or disables read tracking altogether.

    When I'm looking at a timeline, any new posts appear with a yellow glow around them. As the post scrolls out of view, it gets marked as read, and that state is pushed to the server so that other clients will also know it's now read.

    I really enjoy not having to manually mark things as read, instead the interface just handles it all for me without any additional interaction.

    Multiple Website Support

    Since I actually have several different websites I use, I wanted the response buttons to be able to post not just to my website, but also to the other websites I have. For example, my cat Dora, who has her own website is not always the best at using the computer, so sometimes I have to favorite things for her.

    I can choose a alternate default account per channel so that the response buttons will actually post to the alternate website. Notice Dora's cat face in the bottom right corner of the screen. This lets me know that interacting with posts in this channel will be posted to this alternate account.

    I can even temporarily switch to a different account by clicking on the profile icon and choosing another account.

    Simple Posting Interface

    You may also have noticed the little pen icon in the lower left corner. Clicking that pops up a dialog for writing a new post from the selected account. I chose to keep this interface super simple, providing just a text box and character counter. 

    If I need to write something more complicated, such as including HTML content, adding a photo, or choosing where the post is syndicated, then I'll just pop over to Quill and write the post there instead.

    Multiple Apps

    I mentioned earlier that there were many parts to this, and I haven't talked much about that yet. The most important thing about the architecture of this system is that it is not just a single monolithic app. Instead, there is a server responsible for collecting all the data from the feeds I'm following, and separate apps for displaying them! Since I was documenting everything on the wiki as I was building this out, other people were able to jump in and start writing clients from the beginning! 

    There are already two other great interfaces that work with the same backend server! 

    Here is a Javascript app called Together, written by Grant, showing the same posts you saw in a previous screenshot.

    Here is the same content rendered by the iOS app, Indigenous, written by Eddie.

    I'm pretty thrilled that already we've been able to have two people jump in and build readers so quickly already, thanks to the hard work of feed fetching being abstracted away by the server!

    The Microsub Server

    Now to start getting into the technical bits of how this works. Feel free to skip this section if specs make your eyes glaze over.

    I mentioned before that the main separation going on here is splitting off the feed fetching and parsing from rendering the posts.

    This accomplishes a few things:

    • Enables app developers to focus on the UI aspects of building a reader
    • Allows you to choose which service you want to use to manage your subscriptions
    • Enables you to use many different reader apps all talking to the same server backend that you control
    • Leaves room for servers to do experimental things with feeds and subscriptions (think "magic" or "smart" feeds) without having to bother with the UI components or needing to get clients to add support

    The main idea behind this is the Microsub spec. This is the spec that the Microsub server implements so that clients know how they can talk to it. 

    Ideally there will eventually be a large ecosystem around the spec, with many clients to choose from, and many servers as well. We'll see some projects build in Microsub support natively, so that they work out of the box, and we'll also see some dedicated feed subscription services support Microsub. The nice thing about using your website identity to tie the pieces together is that you can choose your Microsub server separately from choosing the software that powers your website.

    For example, I decided early on when building my website that I didn't want to mix the idea of following feeds into the same software that powers my website. So instead, I wrote an external Microsub server called Aperture, which is responsible for all the feed polling and parsing and storing the posts in channels. Aperture is open source, although I still consider it "in active development", so I am not officially supporting it right now. You are of course welcome to get it running yourself, but be prepared for things to change quickly.

    (Aperture actually has two components, Watchtower which is a microservice that polls feeds and delivers them to Aperture itself, and Aperture does the actual feed parsing with the content provided by Watchtower. This allows me to scale out the feed polling separately from the Microsub server.)

    If you want to try to get Aperture and Watchtower running, Daniel did a pretty great writeup of his experience getting things set up in two posts: Part 1 and Part 2.

    Ideally I would love to see some more implementations of Microsub servers, so head over to the spec if that's your thing!

    Monocle

    Monocle is the Microsub client I wrote that's featured in the screenshots above. It is also open source. Since it doesn't do any feed parsing itself, it doesn't even have a storage backend! Everything is fetched on the fly with the exception of the channel list and Micropub config which is persisted in the session data. 

    When I click on a channel to view it, Monocle first makes a Microsub timeline request to Aperture to fetch the channel data, then renders it in the timeline view. This is analogous to the iOS app Indigenous fetching the timeline data from the Microsub server then rendering it on the phone, except Monocle is doing that server-side to generate HTML for the browser.

    You might think I'm crazy for having written a PHP app that fetches JSON from an API and then renders --gasp-- static HTML in 2018, but guess what -- it's fast!

    Monocle is open source, but I am also hosting a version online that anyone is welcome to use at monocle.p3k.io. Since it doesn't actually store anything itself, I don't expect it to take up any significant resources any time soon! Of course in order to use it, you'll need to have your website pointing to a Microsub server of your choosing. Since that's where all the actual work is done, I am not making my hosted version of Aperture available for general signups right now. You'll need to either get that running on your own server, or build a Microsub server from scratch!

    Putting the Pieces Together

    This last section has been a bit of a wall of text, so here is a diagram showing how all the pieces fit together to make this possible!

    My website contains the IndieAuth and Micropub bits, but others have chosen to use external services for those as well. I've also chosen to outsource sending and receiving webmentions to external services, whereas other people end up handling those within their own website code as well.

    The reader apps all talk to the Microsub server that I've linked to in order to view posts, and when I tap a "like" button or write a reply from the app, they post that to my Micropub server to create a new post.

    I use webmention.io to handle my incoming webmentions, and it is configured to send posts to a channel in Aperture using Aperture's Micropub API.

    Further Reading

    This has been a very long read, so congrats if you've made it this far! Here are some links if you're curious about how you can start building out various pieces of the ecosystem as well!

    Specs

    • Microsub - a standardized way for apps to consume and interact with feeds collected by a server
    • Micropub - a W3C Recommendation for creating, updating and deleting posts using external apps
    • Webmention - a W3C Recommendation enabling cross-site comments and other interactions
    • IndieAuth - an OAuth 2.0 extension that enables you to authorize third-party apps to talk to your Micropub or Microsub servers
    • mp-destination - a Micropub extension allowing a server to designate alternate destinations for creating posts

    Open Source Projects

    • Indigenous - an iOS Microsub client
    • Together - a React JS Microsub client
    • Monocle - a server-side PHP Microsub client
    • Aperture - a PHP Microsub server
    • Watchtower - a feed fetching microservice

    Future Work

    While this is all a good start, and I do actually use this as my primary online home now, there is still a lot more work to do!

    • More Microsub servers! I want to see at least two more solid Microsub server implementations in the relatively near future! That will help develop the spec further and ensure we're actually building interoperable tools. I suspect one of the implementations will end up being part of an integrated CMS such as Known or Wordpress, or will be a proxy to an existing feed reader service.
    • Following private content. Private content has always been a challenge, mainly due to the fact that any time authentication is involved it complicates things a lot. With IndieAuth finally written up as a spec, we now have a solid building block to use to experiment in this area more.
    • An Android Microsub app. While both Monocle and Together work pretty well on mobile browsers, there are still many advantages to having a native Android app! And it sounds like one is already in the works.
    • Better UI for actually following people. I've kind of taken a shortcut on this front in order to move the rest forward. Right now, you still need to type someone's URL into a Microsub app in order to follow them. There are many challenges with streamlining this process further.

    As always, I'm happy to chat about any and all of this! It's been a lot of fun already to build this all out and see it working! You can find me in the IndieWeb chat via IRC and Slack, if you send me a Webmention I'll see it in my reader, or find me at an upcoming IndieWeb event!

    Portland, Oregon • 67°F
    #indieweb #monocle #aperture #microsub #micropub #watchtower #reader
    Mon, Mar 12, 2018 5:03pm -07:00
    60 likes 12 reposts 5 bookmarks 37 replies 40 mentions 1 RSVP
    • AxiomEval
    • Jacky Alcine
    • lape
    • Eli Mellen
    • Sebastiaan Andeweg
    • Aaron Davis
    • Jeena
    • Peter Stuifzand
    • Marty McGuire
    • Daniel Goldsmith
    • Barry Frost
    • Ryan Barrett
    • Zach Oglesby
    • Eli Mellen
    • Anant Malaviya
    • Dmitri Shuralyov
    • Richard Brynjólfsson
    • Tyler Morley
    • Chris Aldrich
    • Eddie Hinkle
    • TomWithTheWeather
    • geoidlife
    • Alan S.
    • Lisa Brewster
    • Tim Strehle
    • Dominic Grzbielok
    • Björn Stierand
    • Mr. Mike Merrill
    • Kristof De Jaeger
    • Markus Heurung
    • Amber Wilson
    • Andreas Petersell
    • Golden Unicorn
    • Johannes Ernst
    • Mike Richmond
    • Don Park
    • Juliane Schütz
    • Peter Stuifzand
    • Arthur Smid
    • Julien Genestoux
    • Wim Leers
    • Peter Decuyper
    • Phil Shaw
    • Doug Holton
    • Craig Hamilton
    • Ross
    • keith•j•grant
    • authored
    • John Evdemon
    • Andrew Sullivan Cant
    • Ronaldo Bartl
    • Kaushal
    • N. Clement Weather
    • Alexis C. Madrigal
    • Charlie Owen
    • Christophe Ducamp
    • John Evdemon
    • https://jgregorymcverry.com
    • James King
    • ge ricci
    • https://jgregorymcverry.com
    • Kevin Marks
    • Amanda J. Rush
    • N. Clement Weather
    • authored
    • Doug Holton
    • Wim Leers
    • TomWithTheWeather
    • Markus Heurung
    • Florian Weil
    • Kristof De Jaeger
    • Jonathan LaCour
    • Peter Goes
    • Lohn
    • Chris Aldrich
    • Aaron Davis

    RSVPs

    • Tantek Çelik tantek.com
      hosting Homebrew Website Club SF tonight @MozSF!
      RSVP http://tantek.com/2018/080/e1

      Special guest @aaronpk will demo his #IndieWeb reader setup!
      https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader built on #openweb standards #WebSub #Microsub #microformats2 #IndieAuth #MicroPub #Webmention #Webhooks
      Wed, Mar 21, 2018 11:24am -07:00

    Replies

    • Chris Aldrich boffosocko.com/author/chrisaldrich
      It’s not quite Aaron Parecki’s social reader set up, but I’ve described how to bootstrap some of this to Inoreader until they decide to support micropub capabilities to make this easier.
      Wed, Mar 3, 2021 11:08am -08:00
    • Nicolas Hoizey twitter.com/nhoizey
      I agree this requires a lot of work, it's already great that you share all of this. Reading ascraeus.org/websub-part-i-… as a starting point, it looks like it's not possible to host Watchtower on a simple shared hosting because it has to run as service.
      Tue, Mar 2, 2021 3:26pm +00:00 (via brid.gy)
    • Aaron Parecki twitter.com/aaronpk
      Me too! I've been thinking about rolling Watchtower into Aperture so it's just one app. Aperture is based on Laravel so there's plenty of tools and support for deploying that already. It's just a *lot* of work simplifying and documenting this stuff to make it easier for others.
      Tue, Mar 2, 2021 2:34pm +00:00 (via brid.gy)
    • Aaron Parecki aaronparecki.com
      Yep! That’s basically how my current social media setup works. More details and links here: https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader We need more people building these components, happy to help answer questions if you’re interested!
      Mon, Mar 1, 2021 7:27am -08:00
    • nystudio107 twitter.com/nystudio107
      Have a look at some of the points made here: developer.yoast.com/features/schem…
      Wed, Jan 22, 2020 4:34pm +00:00 (via brid-gy.appspot.com)
    • Aaron Parecki aaronparecki.com
      You might be surprised what you can do with Microformats...

      https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader

      Even this tweet originated from my own website using tools built on Microformats.
      Wed, Jan 22, 2020 8:31am -08:00
    • John Evdemon twitter.com/jevdemon
      Nice. I'll have to take another look at Monocle. I've been using Known but would prefer an IndieReader experience.
      Thu, Feb 21, 2019 11:09pm +00:00 (via brid-gy.appspot.com)
    • Aaron Parecki aaronparecki.com
      Yeah it is! Here's a post that outlines some of the technical details! https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader
      Thu, Feb 21, 2019 1:33pm -08:00
    • Chris Aldrich boffosocko.com
      Reply to uonaiii on Twitter
      Sat, Dec 29, 2018 10:27am -08:00
    • Chris Aldrich boffosocko.com
      Reply to Rethinking My Social Media Use | Chris Wiegman
      Thu, Aug 30, 2018 10:23am -07:00
    • Chris Aldrich www.boffosocko.com
      Reply to Mariko Kosaka on RSS, blogging, and linkbacks
      Sun, Aug 12, 2018 12:10pm -07:00
    • Pete Rorabaugh www.peterorabaugh.org
      Wow, this is interesting. Some of it I "get" on first read, some of it I don't. (Sometimes I can push through technical obstacles to understand but sometimes I respect my boundaries). He is doing some really cool work. Have you looked at/used Known? Considered it for class ...
      Sat, Aug 11, 2018 4:53pm +00:00 (via brid-gy.appspot.com)
    • Chris Aldrich stream.boffosocko.com/profile/chrisaldrich
      @hankchizljaw There's also @withknown & @WordPress which also have webmention support for site-to-site communication in addition to all the other #IndieWeb tech @keithjgrant mentioned. Next we just need the microsub solution widely distributed https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader
      Sat, Aug 11, 2018 1:13am +00:00
    • Chris Aldrich www.boffosocko.com
      👓 Connections | Kathleen Fitzpatrick
      Sat, Jul 21, 2018 1:05am -07:00
    • Chris Aldrich www.boffosocko.com
      Reply to Flogging the Dead Horse of RSS by Dean Shareski
      Tue, Jul 10, 2018 12:05am -07:00
    • jgregorymcverry.com
      Though @dogtrax you know I have been RSS or Die since day one…but….what has me most excited about digital writing in the next ten years are the new kind of readers being developed by the #IndieWeb community. Check out: https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader
      Mon, Jun 4, 2018 7:35am -04:00
    • Aaron Davis readwriterespond.com
      💬 Done with Syndication
      Sat, Apr 28, 2018 1:43pm +10:00
    • Tim Weston twitter.com/timweston
      I think your skills are far superior to mine, but will do!
      Fri, Apr 27, 2018 1:09pm +00:00 (via brid-gy.appspot.com)
    • Rosemary www.rosemaryorchard.com
      If you want to collaborate let me know!
      Fri, Apr 27, 2018 1:08pm +00:00 (via brid-gy.appspot.com)
    • Tim Weston twitter.com/timweston
      ooh, very cool! this might just be the web project I've been looking for. I used to do web development but haven't done any in years, but I'd like to get back into it.
      Fri, Apr 27, 2018 1:05pm +00:00 (via brid-gy.appspot.com)
    • Aaron Parecki aaronparecki.com
      That's actually how I read and reply to things in micro.blog now. I wrote more about it here, and there's another article about it coming out tomorrow! https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader
      Thu, Apr 19, 2018 5:15pm -07:00
    • realize.be
      In reply to https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader
      Sun, Apr 8, 2018 12:29am +02:00
    • Jeremy Cherfas jeremycherfas.net
      A user considers
      Wed, Mar 21, 2018 12:15pm -07:00
    • Aaron Davis readwriterespond.com
      💬 Digg is going to kill Digg Reader; what should we do now?
      Wed, Mar 21, 2018 9:57pm +11:00
    • Aaron Parecki aaronparecki.com
      Here are some screenshots of exactly that! https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader We've been making a lot of progress on this over the last few years! I do post on my blog every day thanks to this interface too! :-)
      Tue, Mar 20, 2018 10:20am -07:00
    • Peter Stuifzand peterstuifzand.nl
      The problem with the authorization_endpoint is already fixed. It seems I should handle HEAD requests and not return 500 http errors. I can now read my feeds.
      Tue, Mar 13, 2018 4:08pm -07:00
    • Arthur Smid www.facebook.com/10152407445471663
      And an upcoming IndieWeb event: https://www.facebook.com/events/2363077943706001/
      Tue, Mar 13, 2018 9:13pm +00:00 (via brid-gy.appspot.com)
    • Peter Stuifzand peterstuifzand.nl
      I have been buildling a microsub server. It's not perfect, but it works. It works with Monocle. The code is open source and can be found on Github here: https://github.com/pstuifzand/microsub-server/
      But sadly it seems I can't use my own authorization endpoint. It can't be found. It did work when I used indieauth.com for authorization.
      Tue, Mar 13, 2018 2:12pm -07:00
    • Juliane Schütz www.facebook.com/10202944195699849
      Hihi, tell me about it 😉
      Tue, Mar 13, 2018 1:19pm +00:00 (via brid-gy.appspot.com)
    • Aaron Parecki www.facebook.com/11500459
      I did recently get the LUMIX GX85 with some nice-ish lenses that I've been enjoying! I can't bring myself to get a nicer Canon because you have to spend $$$$ to get one with clean HDMI output which is the other main thing I need!
      Tue, Mar 13, 2018 1:18pm +00:00 (via brid-gy.appspot.com)
    • Juliane Schütz www.facebook.com/10202944195699849
      Ah, ok 🙂 I thought you got yourself an awesome camera I'd need to check out! 😀 Thanks!
      Tue, Mar 13, 2018 1:16pm +00:00 (via brid-gy.appspot.com)
    • Aaron Parecki www.facebook.com/11500459
      I found it on unsplash! https://unsplash.com/photos/tAKXap853rY Canon 50mm at f6.3 so I suspect there was some post-process blur added.
      Tue, Mar 13, 2018 1:12pm +00:00 (via brid-gy.appspot.com)
    • Juliane Schütz www.facebook.com/10202944195699849
      What camera/lens was this photo taken with? Asking for a friend.
      Tue, Mar 13, 2018 1:03pm +00:00 (via brid-gy.appspot.com)
    • Jonathan LaCour cleverdevil.io/profile/cleverdevil
      Microsub has really been the missing piece of the puzzle. I love using Together + Aperture every single day. Nice work on the spec 😀
      Tue, Mar 13, 2018 1:56am +00:00
    • Aaron Parecki aaronparecki.com
      Now you can read all about it here! https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader
      Mon, Mar 12, 2018 5:15pm -07:00
    • canion micro.blog/canion

      @aaronpk That is pretty amazing work. Well done!

      Mon, Mar 12, 2018 8:49pm -07:00
    • Anonymous commentpara.de/user/3.htm
      Feels like pieces are falling into place. Great work!
      Mon, Mar 12, 2018 10:16pm -07:00

    Other Mentions

    • Chris M. mrkapowski.com/author/chris

      A quick question (hopefully) for Aaron: how does the multi-website feature of Monocle — mentioned here — work? I tried looking through the code, wiki, and issues page for clues, but couldn’t figure it out. Has it been removed? Or have I just missed something obvious 😅

      https://mrkpw.xyz/b/2z8

      Sun, Feb 16, 2020 10:36pm +00:00
    • Beko Pharm beko.famkos.net/author/beko
      Building an IndieWeb Reader by Aaron Parecki

      Over the last several months, I’ve been slowly putting the pieces in place to be able to build a solid indieweb reader. Today, I feel like I finally have enough in place to consider this functional enough that I am now using it every day! One of the major missing pieces of the IndieWeb ecosystem ha…

      #indieweb #micropub #microsub

      https://beko.famkos.net/2020/01/23/44138/

      Thu, Jan 23, 2020 1:20pm +00:00
    • Chris Aldrich boffosocko.com

      Jon, There is an actively growing group of about a dozen or so folks looking at these problems with particular respect to the fledgling Microsub specification. Microsub has two parts: a server and a reading client/interface and is built to abstract away the harder(?) problems and infrastructure of the plumbing of building a feed reader from the design/interface of the reader itself. There are about 6 reading interfaces or clients already built (some of them publicly available, including Android and iOS interfaces), and 3 servers (one publicly available) in existence with at least 4 others in development. All of these are being built within the IndieWeb community which has a pretty strong track record for iterating on and proliferating these types of open tools and specs for a variety of platforms and languages (see Micropub, Webmention, IndieAuth, etc.) I’m hoping that some of these ideas ultimately leak across borders to apply to other older and more traditional readers. I’ve seen at least some evidence to indicate that Feedly and Inoreader are watching this space for future growth.

      One of the best descriptions for how some of this is set up can be found in Aaron Parecki’s post Building an IndieWeb Reader, which is related to Parecki’s other post that Aaron Davis mentioned on your blog. If you’re interested in delving further beyond the ideas and attempting to implement some of it, I’m sure many of the Microsub developers would be more than willing to help you attempt to set up some of it. I believe all of them can be found in the IndieWeb chat.

      The best prior example of a reader actually implementing some of this functionality (pre-Microsub) is the Woodwind reader, which is open source on Github. (There was previously a nice hosted version, which has since been shut down.) I laid out some of the generic problem facing feed readers and social and included some examples of related functionality spread across several readers in Feed reader revolution in June of last year.

      Another interesting possible candidate that is actively being developed and I’m following, but haven’t tried, is NetNewsWire 5.0 (fka Evergreen) by Brent Simmons, a decades long feed reader veteran. He recently reacquired the NetNewsWire name, app, etc. from Black Pixel. I know he is aware of some IndieWeb related philosophies though I’m unsure of how much he’s implementing in his rebuild presently.

      I’ve also used PressForward as a built-in feed reader within my WordPress site, but it requires a little bit of additional manual work to get things working for the reactions the way I’d like to have them implemented. However, just the work of building an integrated feed reader into a WordPress site is more than half of the battle.

      Mon, Dec 3, 2018 11:45am -08:00
    • Ton Zijlstra
      State of the Social Reader
      Mon, Nov 5, 2018 5:09pm +00:00
    • esham.io
      Microblogging
      Wed, Oct 3, 2018 3:05pm -05:00
    • Jacky Alciné 🇭🇹🗽🌇 playvicious.social/@jalcine

      I lied. Not in bed yet. Just had to plug this from @aaronpk as well https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader

      Mon, Oct 1, 2018 9:20am +00:00
    • Cole Lyman

      This is definitely something that I want to do in the near future https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader thanks for the inspiration @aaronpk!

      Mon, Aug 13, 2018 5:00pm -07:00
    • Pete Rorabaugh www.peterorabaugh.org

      Wow, this is interesting. Some of it I “get” on first read, some of it I don’t. (Sometimes I can push through technical obstacles to understand but sometimes I respect my boundaries). He is doing some really cool work. Have you looked at/used Known? Considered it for class …

      Sat, Aug 11, 2018 12:53pm -04:00 (via jgregorymcverry.com)
    • Amit Gawande
      State of Microsub Servers and Client
      Fri, Jul 13, 2018 9:54am -07:00
    • Tim McCormick reads² tjm.org
      Jon Mitchell ๛ is reading "aaronparecki.com/2018/03/12/17/…" ift.tt/2kc8rZI
      Tue, May 22, 2018 2:48am +00:00 (via brid-gy.appspot.com)
    • Jon is reading… jonmitchell.net/blog/i-deleted-my-twitter-accounts-and-am-never-coming-back
      👁 Reading: “Building an IndieWeb Reader • Aaron Parecki” aaronparecki.com/2018/03/12/17/…
      Tue, May 22, 2018 2:24am +00:00 (via brid-gy.appspot.com)
    • Chris Aldrich www.boffosocko.com

      Thanks for sharing your thoughts. Your English is more than adequate. Thanks as well for translating a large portion of the article into Russian.

      Many of the issues you bring up are problems that those in the IndieWeb are well aware of and attempting to fix or improve. I suspect it won’t take long for companies to begin springing up to make some of the one-click user interfaces you indicate a reality. Why couldn’t companies provide simple services for domain names, hosting, and CMS for the broader public? The function isn’t that much different than that of Facebook or Twitter, it’s just the revenue model that is different (i.e. subscription fees instead of advertising fees).

      I would hope that in owning their own web presences that people would take a greater level of ownership and responsibility than they currently do on many social media platforms. However, this doesn’t mean that one can’t have fun. In particular, with relation to meme tools, someone has recently created a gif-related service for posting to IndieWeb sites via micropub. Why should it be any more shame to use one’s own website to post silliness on Twitter? They’re both on the internet and they’re both communication. The small difference is that in doing it on your own website is that you’ve got more control over the content in the end.

      I agree with you that RSS and feed readers could be far easier to use and provide additional functionality. With tools like SubToMe, subscribing to or following people is much simpler. There’s also an upcoming wave of feed readers with better integrated functionality for commenting and replying using one’s own website while sending the reply to the original website. (A great example is the one Aaron Parecki is currently working on.) And why shouldn’t this happen? When I think about Twitter and Facebook, they’re simply proprietary feed readers with integrated replies built in. Their problem is that they’re neither open nor distributed which means if I want to converse with friends on any of the hundreds of social media sites, I have to register an maintain an account on all of them that my friends are on primarily because these services are unable to talk to each other. I’ve now got hundreds of these accounts and at some point it’s just not a sustainable model for me. Members of the IndieWeb community are tackling and improving all of these problems because they believe there’s a better way than the current social media models.

      You right that services like WordPress lack solid identification in comments, though I rarely find this to be a serious issue in practice. I could just as easily game an identity on Disqus, but it’s more difficult, expensive, and less productive to spin up an entire website to spoof comments using Webmention. The Webmention spec does go quite a way toward remedying this as it allows people a much more solid way of owning their online identity and commenting on other sites.

      I think that if you look at some of what is growing out of the IndieWeb community, you’ll find a lot that is moving toward making the web a more valuable and interesting place to be and fixing many of the specific issues you’ve brought up.

      Mon, May 14, 2018 11:03pm -07:00
    • Danyao Wang www.stillmuchtoponder.com/blog/author/danyao-wp
      A mini-sabbatical
      Mon, May 14, 2018 2:04am +00:00
    • Aaron Parecki aaronparecki.com
      An IndieWeb reader: My new home on the internet
      Fri, Apr 20, 2018 9:00am -07:00
    • Aaron Parecki aaronparecki.com
      First Quarter 2018 in Review
      Sun, Apr 1, 2018 4:42pm -07:00
    • Chris Aldrich www.boffosocko.com
      👓 It’s Time For an RSS Revival | Wired
      Fri, Mar 30, 2018 1:27pm +00:00
    • boffosocko.com
      It's Time For an RSS Revival by Brian Barrett (WIRED)
      After years of letting algorithms make up our minds for us, the time is right to go back to basics.

      This article, which I’ve seen shared almost too widely on the internet since it came out, could almost have been written any time in the past decade really. They did do a somewhat better job of getting quotes from some of the big feed readers’ leaders to help to differentiate their philosophical differences, but there wasn’t much else here. Admittedly they did have a short snippet about Dave Winer’s new feedbase product, which I suspect, in combination with the recent spate of articles about Facebook’s Cambridge Analytica scandal, motivated the article. (By the way, I love OPML as much as anyone could, but feedbase doesn’t even accept the OPML feeds out of my  core WordPress install though most feed readers do, which makes me wonder how successful feedbase might be in the long run without better legacy spec support.)

      So what was missing from Wired’s coverage? More details on what has changed in the space in the past several years. There’s been a big movement afoot in the IndieWeb community which has been espousing a simpler and more DRY (don’t repeat yourself) version of feeds using simple semantic microformats markup like h-feed. There’s also been the emergence of JSON feed in the past year which many of the major feed readers already support.

      On the front of people leaving Facebook (and their black box algorithmic monster that determines what you read rather than you making an implicit choice), they might have mentioned people who are looking for readers through which they can also use their own domains and websites where they own and maintain their own data for interaction. I’ve written about this in more depth last year: Feed reader revolution.

      One of the more bleeding edge developments which I think is going to drastically change the landscape in the coming years for developers, feed readers, and the internet consumption space is the evolving Microsub spec which is being spearheaded by a group of projects known as the Aperture microsub server and the Together and Indigenous clients which already use it. Microsub is going to abstract away many of the technical hurdles that make it far more difficult to build a full-fledged feed reader. I have a feeling it’s going to level a lot of the playing field to allow a Cambrian explosion of readers and social related software to better leverage more easily reading content on the web without relying on third party black box services which people have been learning they cannot fully trust anymore. Aaron Parecki has done an excellent job of laying out some parts of it in Building an IndieWeb Reader as well as in recent episodes of his Percolator microcast. This lower hurdle is going to result in fewer people needing to rely solely on the biggest feed readers like Facebook, Twitter, and Instagram for both consuming content and posting their own content. The easier it becomes for people to use other readers to consume content from almost anywhere on the web, the less a monopoly the social networks will have on our lives.

      I truly hope Wired circles around and gives some of these ideas additional follow up coverage in the coming months. They owe it to their readership to expand their coverage from what we all knew five years ago. If they want to go a step or two further, they might compare the web we had 15 years ago to some of the new and emerging open web technologies that are starting to take hold today.

      Syndicated copies to:

      Author: Chris Aldrich

      I'm a biomedical and electrical engineer with interests in information theory, complexity, evolution, genetics, signal processing, theoretical mathematics, and big history. I'm also a talent manager-producer-publisher in the entertainment industry with expertise in representation, distribution, finance, production, content delivery, and new media. View all posts by Chris Aldrich

      Fri, Mar 30, 2018 1:27pm +00:00
    • Aaron Parecki aaronparecki.com
      Had a great time at the @pdxnode meetup tonight! Here are some of the resources I talked about!

      https://indieweb.org

      https://indieweb.org/webmention

      Okta APIs which I used to log in to my website
      https://developer.okta.com

      https://indieauth.spec.indieweb.org

      Monocle
      https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader
      Thu, Mar 29, 2018 10:38pm -07:00
    • Stefan Constantine vine.co/v/itXip51ZK57
      every time a social network fucks up

      a nerd makes an open source social network

      which no one uses

      rinse and repeat
      Tue, Mar 27, 2018 12:21am +00:00 (via brid-gy.appspot.com)
    • Stacey DePolo 🌻 staceydepolo.com
      Who else is interested in doing something more powerful than just #deleteFacebook to really build out an alternative to the siloed web we now realize we're trapped in? Kudos to @aaronpk for advancing the #indieweb cause.
      Mon, Mar 26, 2018 7:00pm +00:00 (via brid-gy.appspot.com)
    • Stacey DePolo @ #MarchForOurLives staceydepolo.com
      Great #DeleteFacebook post @johnbiggs techcrunch.com/2018/03/19/del…
      RE: "Maybe someday we’ll get the tools we need to interact with the world. Maybe they’re already here..."
      We can use #indieweb to break free!
      @aaronpk's aaronparecki.com/2018/03/12/17/… will help. cc @T
      Mon, Mar 26, 2018 6:31pm +00:00 (via brid-gy.appspot.com)
    • Andrew Dubber andrewdubber.com
      I love it when you say “I wish someone would hurry up and invent X” and then someone immediately comes back and says “I just bloody did!” :)
      Tue, Mar 20, 2018 5:57pm +00:00 (via brid-gy.appspot.com)
    • tantek.com
      Homebrew Website Club SF!
      Wed, Mar 14, 2018 4:12pm -07:00
    • Percolator percolator.today
      Episode 19: Soft-Launching Monocle and Aperture
      Tue, Mar 13, 2018 5:00pm -07:00
    • Aaron Parecki aaronparecki.com
      Episode 19: Soft-Launching Monocle and Aperture
      Wed, Mar 14, 2018 12:00am +00:00
    • Just a Gwai Lo twitter.com/sillygwailo
      Building an IndieWeb Reader aaronparecki.com/2018/03/12/17/…
      Tue, Mar 13, 2018 2:30am +00:00 (via brid-gy.appspot.com)
    • Aaron Parecki aaronparecki.com
      Building an IndieWeb Reader
      Mon, Mar 12, 2018 5:03pm -07:00 (via www.downes.ca)
    • Aaron Parecki aaronparecki.com
      Building an IndieWeb Reader
      Tue, Mar 13, 2018 3:12am -07:00 (via explodingcomma.com)
    • cdevroe.com
      Mon, Apr 23, 2018 12:30pm -07:00
    • www.godaddy.com
      Fri, Apr 20, 2018 6:37am -07:00
    • Ravi Sagar Ravi Sagar ravisagar.in
      I have been trying to do the same thing on my Drupal site. Recently I also tried using Known CMS which is working fine but I still need to create a reader. So I can manage everything from one place. This is definitely a very good start. Thanks again for posting.
      Sun, Apr 22, 2018 12:00am -07:00
    • Ravi Sagar Ravi Sagar ravisagar.in
      I have been trying to do the same thing on my Drupal site. Recently I also tried using Known CMS which is working fine but I still need to create a reader. So I can manage everything from one place. This is definitely a very good start. Thanks again for posting.
      Sun, Apr 22, 2018 12:02am -07:00
    • sebastiangreger.net
      Wed, May 2, 2018 9:30am -07:00
    • medium.com
      Mon, Jun 4, 2018 4:36am -07:00
    • Aaron Parecki aaronparecki.com
      Tue, Dec 11, 2018 12:56am -07:00 (via boffosocko.com)
    • Aaron Parecki aaronparecki.com
      Tue, Dec 11, 2018 12:56am -07:00 (via boffosocko.com)
    • meta.fiatlux.tk
      Sun, May 3, 2020 2:21pm -07:00
    • lo.hn
      Wed, Apr 22, 2020 4:07pm -07:00
    • blog.itchs.dev
      State of Microsub Servers and Client
      Sat, Jun 27, 2020 8:33am -07:00
    • amitgawande.com
      State of Microsub Servers and Client
      Sat, Jun 27, 2020 11:09pm -07:00
Posted in /articles using quill.p3k.io

Hi, I'm Aaron Parecki, Senior Security Architect at Okta, and co-founder of IndieWebCamp. I maintain oauth.net, write and consult about OAuth, and participate in the OAuth Working Group at the IETF. I also help people learn about video production and livestreaming and dabble in product design.

I've been tracking my location since 2008 and I wrote 100 songs in 100 days. I've spoken at conferences around the world about owning your data, OAuth, quantified self, and explained why R is a vowel. Read more.

  • Security Architect at Okta
  • IndieWebCamp Founder
  • OAuth WG Member

  • 🎥 YouTube Tutorials and Reviews
  • 🏠 We're building a triplex!
  • ⭐️ Life Stack
  • ⚙️ Home Automation
  • All
  • Articles
  • Bookmarks
  • Notes
  • Photos
  • Replies
  • Reviews
  • Trips
  • Videos
  • Contact
© 1999-2023 by Aaron Parecki. Powered by p3k. This site supports Webmention.
Except where otherwise noted, text content on this site is licensed under a Creative Commons Attribution 3.0 License.
IndieWebCamp Microformats Webmention W3C HTML5 Creative Commons
WeChat ID
aaronpk_tv