60°F

Aaron Parecki

  • Articles
  • Notes
  • Photos

#microsub

  • aaronpk https://github.com/aaronpk   •   Jan 30

    #13 Indicating Item Source

    Aaron Parecki

    My current thought for this is to add a new property to the entry with the source's h-card info:

    {
      "type": "entry",
      "url": "https://example.com/1000",
      ...
      ...
      "_source": {
        "url": https://example.com/",
        "name": "Example Feed",
        "photo": "https://example.com/photo.jpg"
      }
    }
    

    My main question is whether the url should be the home page URL of the feed or the actual feed URL. I'm almost thinking we need to be able to include both.

    If you're following an Atom/RSS/JSONfeed, then the feed URL is not something you'd want to send a user to, so you'd want the "home page" URL instead. For HTML feeds, it would be fine to use the feed URL directly.

    However from a security perspective, if the entry's URL is on a different domain than the URL the entry was found on, the UI may want to indicate this in some way, similar to how my webmentions display the source URL as "via ____" if the source URL domain is different from the entry's reported URL. The main case this might happen is an aggregator where the every item in the feed is from a different domain than the aggregator's feed. Also micro.blog feeds where the post's original URL is reported instead of the micro.blog URL.

    So I'm thinking we might need two properties, feed URL and home page URL. Unfortunately this no longer maps well to h-card. Any ideas?

    Portland, Oregon, USA
    Tue, Mar 6, 2018 8:20am -08:00 #microsub
  • https://github.com/aaronpk/Aperture

    store mapping between channels and default micropub destinations

    in the channel settings, provide a dropdown to select the default micropub destination
    continue reading...
    Mon, Mar 5, 2018 10:17am -08:00 #microsub #aperture
  • Aaron Parecki

    Monocle+Aperture are coming along nicely!

    I just got my GitHub notifications piped into the reader, which is a much nicer experience than reading them via email or trying to track them down on github.com!

    I have a few channels set to show just an indicator dot when there are new posts rather than showing the number of new posts, a much calmer experience.

    Unread posts show up with a faint yellow glow around them, and they're automatically marked as read when they scroll off the screen.

    At this point, I've actually moved all of the feeds I was previously following from IRC into Aperture as a way to force myself to continue putting the finishing touches on it!

    Portland, Oregon, USA
    2 likes 3 mentions
    Sun, Mar 4, 2018 2:22pm -08:00 #monocle #aperture #microsub
  • aaronpk https://github.com/aaronpk   •   Jan 30

    #4 Tracking read state or position

    Aaron Parecki

    I pushed an update to Aperture which allows you to toggle per-channel whether read state tracking is enabled. There are two modes, one where it returns the count of the number of unread items, and the other where it returns only true or false depending on whether there are new items.

    read state settings

    For my super busy feeds, it wasn't useful having the counts, but I do like a subtle indicator there are new posts.

    There are also some channels I don't want to be bothered about at all, so I've disabled read state tracking on those.

    This means the Microsub API is now returning either an integer or a boolean for the unread property on channels, e.g.:

    {
      "channels": [
        {
          "uid": "notifications",
          "name": "Notifications",
          "unread": 0
        },
        {
          "uid": "31eccfe322d6c48c50dea2c84efc74ff",
          "name": "IndieWeb"
          "unread": true
        }
      ]
    }
    
    Portland, Oregon, USA
    Sun, Mar 4, 2018 2:15pm -08:00 #microsub #aperture
  • dg01d https://github.com/dg01d   •   Mar 3

    #22 Standardisation of Content

    Aaron Parecki

    Can you provide examples of what you're finding that is not normalized?

    Microsub is not "merely delivering the content from other locations". Microsub is in fact specifically already doing a lot of normalization of the content it finds, producing a feed that is much more standardized than what it discovered when crawling the feeds, even to the point of making vocabulary-specific decisions about some values.

    Portland, Oregon, USA
    Sat, Mar 3, 2018 10:02am -08:00 #microsub
  • Aaron Parecki
    Monocle is coming along nicely! It now automatically marks things as read as you scroll through the timeline. The unread counts in the sidebar update automatically when new posts come in as well! I'm getting so close to being able to completely switch off of IRC as my reader!
    Portland, Oregon, USA
    2 likes 1 reply
    Fri, Mar 2, 2018 4:38pm -08:00 #irc #monocle #microsub
  • Aaron Parecki
    Fun side effect of using https://granary.io and Aperture to follow conference hashtags is I end up with a private archive of all the tweets! #indieweb #microsub
    San Francisco, California, USA
    Mon, Feb 26, 2018 9:35pm -08:00 #indieweb #microsub
  • https://github.com/indieweb/microsub

    Streaming API

    Clients should have a way to tap in to some sort of streaming API to get updates from the server in realtime.
    continue reading...
    Sat, Feb 17, 2018 5:04pm -08:00 #microsub
  • aaronpk https://github.com/aaronpk   •   Jan 30

    #11 Channel Order

    Aaron Parecki
    I just updated the text to hopefully be more explicit about this: https://indieweb.org/Microsub-spec#Set_Channel_Order
    Portland, Oregon, USA
    Thu, Feb 15, 2018 6:16am -08:00 #microsub
  • aaronpk https://github.com/aaronpk   •   Jan 30

    #11 Channel Order

    Aaron Parecki

    No, that's not what I meant.

    Only the order of the channel IDs specified will be changed

    In your example 1, c has moved as well, even though only d and b were given.

    To move a channel up or down...

    This is equivalent to swapping two adjacent items.

    I didn't give an example of setting the order of three items because I couldn't think of a UI where it would make sense, but it is still possible.

    The nice thing about this approach is that the same update logic works for all the use cases, and doesn't matter how many items are in the list, and is atomic.

    Portland, Oregon, USA
    Thu, Feb 15, 2018 6:04am -08:00 #microsub
  • grantcodes https://github.com/grantcodes   •   Feb 13

    Working on implementing this in together now, I'm sure there is a valid reason, but I'm just wondering why the _id is different from the paging before and after values, could they not be the same?

    Aaron Parecki

    The before and after values are meant to represent pages of data, not necessarily individual records. In my case, the after value refers to an item that isn't in the current page. I could return a string for _id that looks more like the before and after strings, but that's just an implementation detail of my server. Alternately I may switch my before/after strings to look more like the current _id value. Either way, this difference doesn't seem important to the client.

    Portland, Oregon, USA
    Tue, Feb 13, 2018 2:52pm -08:00 #microsub
  • grantcodes https://github.com/grantcodes   •   Feb 13

    #19 Non https content

    Aaron Parecki
    That would be an interesting feature that the microsub server could provide to clients. It does seem like this will always be a problem.
    Portland, Oregon, USA
    Tue, Feb 13, 2018 9:07am -08:00 #microsub
  • https://github.com/indieweb/microsub

    Channel icons?

    I just added emoji in the channel names, and now I'm wondering if there should be a way to choose/upload an actual custom icon for channels.
    continue reading...
    Mon, Feb 12, 2018 11:22am -08:00 #microsub
  • EdwardHinkle https://github.com/EdwardHinkle   •   Feb 12

    Not that it has to be implemented right now, but I do want to make a case for the “updated” field of a channel. In order to reduce “high noise signal”, for most of my channels, I’ll want the channel’s “unread indicator” to disappear when I reach the top of the timeline (even if things are unread). When a channel is updated (receives new posts), I would want to be able to re-enable the unread indicator. Essentially saying “there are new posts here” rather than saying “there are unread posts here”. In fact now that I say it, I might make the indicator a different color as well. That said, the purpose of such a channel is, I want to be able to know what I have and haven’t read, while only being prompted to open the channel if there are new posts. The “new posts” indicator essentially upping the priority of time looking at that channel than one without new posts. That said, when I have more time, to be able to go back to an existing channel and still know what I haven’t read (which is why this can’t just use the “last_read_entry”, even though that is a useful method).

    (Originally published at: https://eddiehinkle.com/2018/02/12/7/reply/)

    Aaron Parecki
    Here's a question. Do you imagine this additional state being something that only individual clients are aware of, or should that be synced to the server as well?

    If the server returns the "updated" date, then the client has enough information to show the indicator itself. But as far as other clients are concerned, they wouldn't know about whether you've seen those posts in another client.

    I'm kind of leaning towards it being a client-only thing, at least for now.

    If that's going to end up getting pushed to the server then I think we need to better define the different kinds of states. Maybe "read" vs "seen", where "seen" is the soft indicator that the client has displayed the post to the user, and "read" means they've opened it up (or maybe even explicitly marked it as read).
    Portland, Oregon, USA
    Mon, Feb 12, 2018 11:02am -08:00 #microsub
  • https://github.com/indieweb/microsub

    Add option to remove entries when unfollowing a source

    When removing a source from a channel, Aperture provides an option in the UI to either remove all the existing entries or just stop adding new entries. It may be useful for this to be an option for Microsub clients as well.
    continue reading...
    Mon, Feb 12, 2018 10:22am -08:00 #aperture #microsub
  • aaronpk https://github.com/aaronpk   •   Jan 30

    #4 Tracking read state or position

    Aaron Parecki

    I'm implementing a draft of this in Aperture right now. Here is the current API.

    Every entry now includes a unique system ID, meant for internal identification of the item (not global identification). This is returned in the timeline response as the parameter _id, and there is now also _is_read. For example:

    {
      "items": [
        {
          "type": "entry",
          "url": "http://example.com/100",
          ...
          "_id": "41003",
          "_is_read": false
      ]
    }
    

    These new _id values are meant to be opaque to clients, and must always be a string. Some servers will likely use integer database IDs, but other servers may use other string identifiers for entries depending on the implementation.

    Retrieving the list of channels now also includes the number of unread entries in the channel:

    {
      "channels": [
        {
          "uid": "notifications",
          "name": "Notifications",
          "unread": 0
        },
        {
          "uid": "YPGiUrZjNM36LNdpFy7eSzJE7o2aK82z",
          "name": "IndieWeb",
          "unread": 7
        }
      ]
    }
    

    To mark an individual entry as read:

    • action=timeline
    • channel=example
    • method=mark_read
    • entry=1234

    To mark multiple entires as read:

    • action=timeline
    • channel=example
    • method=mark_read
    • entry[]=1234
    • entry[]=5678

    Both of the above also work with method=mark_unread.

    To mark an entry read as well as everything before it:

    • action=timeline
    • channel=example
    • method=mark_read
    • last_read_entry=1234

    This is to address the use case of streams, where you really only care about knowing where in the stream you've scrolled to and whether there are any new entries since then.

    This is mostly inspired by the Feedly Markers API Mark one or more articles as read and Mark a feed as read

    Portland, Oregon, USA
    1 reply
    Mon, Feb 12, 2018 8:11am -08:00 #microsub #aperture
  • EdwardHinkle https://github.com/EdwardHinkle   •   Feb 10

    #16 Decide whether Home and Notifications channels should be in the channel list

    Aaron Parecki

    Here is a diff of the changes.

    The main differences can be read here:

    • Channels
    • Retrieve the list of channels
    Portland, Oregon, USA
    Sun, Feb 11, 2018 11:07am -08:00 #microsub
  • EdwardHinkle https://github.com/EdwardHinkle   •   Feb 10

    #16 Decide whether Home and Notifications channels should be in the channel list

    Aaron Parecki
    Okay, it sounds like we have a proposal for some changes around how these channels are handled:

    • The only special uid is `notifications`
    • A Microsub server is required to start with a single "Home" channel, the uid can be whatever it wants
    • Users can remove or rename the initial default channel
    • Servers MUST return the `notifications` channel as the first channel in the list
    • Servers MUST ignore the `notifications` channel when reordering channels
    • Clients SHOULD show the `notifications` channel separately in the UI
    Portland, Oregon, USA
    Sun, Feb 11, 2018 10:36am -08:00 #microsub
  • EdwardHinkle https://github.com/EdwardHinkle   •   Feb 10

    #16 Decide whether Home and Notifications channels should be in the channel list

    Aaron Parecki

    Some silo examples of "home" vs "notifications":

    Twitter

    GitHub

    Facebook

    and of course more on the wiki

    Some discussion from IRC about whether hardcoding a "home" channel even makes sense in the first place.

    Portland, Oregon, USA
    Sun, Feb 11, 2018 9:59am -08:00 #microsub
older

Hi, I'm Aaron Parecki, Director of Identity Standards 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. (detailed bio)

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.

  • Director of Identity Standards at Okta
  • IndieWebCamp Founder
  • OAuth WG Editor
  • OpenID Board 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-2025 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