#ancardaUbuntu 17.10. This happened the other day too, although a reboot fixed it. In the process of trying to debug what was going on, I disabled IPv4 in Network Manager and that only took affect this morning when I booted up. Took some time to figure out it was just me being an idiot
#ancardaI'm not sure why it broke the other day though - but now it's not exclusively using IPv4 DNS servers so it can reach Gmail without any IPv4 support now, which is nice
[mrkrndvs] joined the channel
#Zegnat[mrkrndvs], what do you consider “really poor permalinks”?
[jgmac1106], loicm, snarfed, eli_oat, sdfsdfsdf, [markmhendrickso, amz3, [miklb] and tantek joined the channel
#vanderven.se martijnedited /authorship (+970) "/* Other theoretical */ When mapping h-entry with h-cards elsewhere in the DOM, it makes sense to do so before grabbing external resources. Discussion prompted by keithjgrant" (view diff)
#ZegnatHopefully that summarises yesterday’s #microformats talk ^^^
#vanderven.se martijnedited /Micropub-brainstorming (+1146) "/* Micropub for Multi-user Sites */ Thinking about this. Micropub dictates a token-endpoint-per-micropub-endpoint instead of the assumed token-endpoint-per-user-identity." (view diff)
#ZegnatI couldn’t find any thoughts on it :/ Sorry if I copied some prior discussion
#aaronpkI don't think I documented it, but i've already implemented it a couple times
#ZegnatAh, would be great if you can find the time to put that down into writing somewhere then :D
#ZegnatMy 2018-01-01 idea is to do all posting to my blog over Micropub, and because I will be logging in using vanderven.se/martijn/ I have been reviewing some of the micropub & identity decoupling discussions
#Loqi2018-01-01-commitments are implementation and launch commitments publicly made by the IndieWeb community to ship on their personal sites by 2018-01-01 00:00 local time https://indieweb.org/2018-01-01-commitments
#tantekZegnat++ for transparently noting his renewal of his commitment :)
#Loqizegnat has 37 karma in this channel (151 overall)
#sknebelZegnat: yeah, it kind of feels like you'd have to have "profiles" in the community blog and you log in as that profile (which then could do authentication by in turn running indieauth against your main identity), not as the main user
#Zegnataaronpk, yeah I guess that works. It just seems weird to me that we then need a double IndieAuth protocol dance. I also as a user then need to go through the communal blog to revoke a token rather than being able to do it myself.
#Zegnatsknebel puts the “double” better then me :)
#aaronpkZegnat: as someone who maintains that community blog, they would want control of the security of their blog
#sknebelI guess you could have the micropub endpoint go look up your token endpoint and use that to verify the token, as long as it whitelists the allowed identities
#aaronpkmicropub requests happen out of the blue, with no advance notice. I don't want to a) be reliant on hitting an external API to validate every request, and b) I want to be able to revoke tokens I issue
#Loqijkphl has 2 karma in this channel (38 overall)
#ZegnatOh I get that less external calls are good for implementors, aaronpk. I'm only saying that (unless you police when logins are allowed) fear for the token endpoint being compromised is not a reason as the same applies to authorization endpoints.
#aaronpkbut it *is* because of the relative volume of expected requests to the micropub endpoint vs the authorization endpoint
#Loqifollow is a common feature (and often UI button) in silo UIs (like Twitter) that adds updates from that profile (typically a person) to the stream shown in an integrated reader, and sometimes creates a follow post either in the follower's stream ("… followed …" or "… is following …") thus visible to their followers, and/or in the notifications of the user being followed ("… followed you") https://indieweb.org/subscribe
bengo joined the channel
#tantekdefinitely worth capturing screenshots of various subscribing interfaces ^^^
#aaronpkwhat's between indieweb examples and silo examples?
#aaronpkwhen the server is fetching external posts, there are a few situations it might encounter: a uid property, a url property, both, or neither.
#aaronpkright now I prioritize uid, then use url if uid is not present, and if neither is present, I hash the content and use that. that's what I use as the unique identifier internally in order to know whether to update an old post or add a new post
#aaronpk(both uids and urls are scoped to the feed as well, so two different feeds could both use the uid "1234" and they wouldn't conflict)
#[cleverdevil]That seems sane, apart from the case where the content changes for an item with neither a URL or UID property.
#aaronpkthe question is now what do I expose to the microsub client
#[cleverdevil]I sort of view the microsub server as a way to simplify as much as possible about building out a reader.
#[cleverdevil]So, I wouldn't mind just exposing that directly through.
#aaronpkhere's an example: say the microsub client wants to hide/block a specific post, it needs a way to refer to that post when talking to the microsub server
#tantekI'm looking for specific examples that made you want to generalize to solve that
#aaronpksince there's nothing about microsub that limits the server to subscribing to just h-entry
#aaronpkI can subscribe to an Atom or RSS feed as well
#tantekand those items might not have URLs? at least in RSS?
#tantekor have you seen actual RSS files with items without URLs?
[kevinmarks] joined the channel
#aaronpklet's talk about the uid vs url case first
#[kevinmarks]Can you use a hash url, then everything is still a url
#aaronpkin general, if there is a uid, it should be prioritized over url. there are lots of examples of feeds where the URL scheme changes but the uids stay the same. e.g. wordpress uses example.com/?id=400 as a uid but then you can change the URL scheme to /yyyy/mm/slug etc
snarfed joined the channel
#aaronpkif there is no uid, then the url is an acceptable identifier for the post
#LoqiA GUID or Globally Unique Identifier is a (typically) 128-bit number to uniquely reference or identify something; on the IndieWeb, GUIDs are encouraged in some feed file formats as supposedly more persistent than permalinks but in practice GUIDs have been less portable and harder to preserve/migrate/restore than permalinks https://indieweb.org/GUID
#aaronpkI would like this complexity to be removed for microsub clients
#tantekI haven't seen any actual data that shows any use of UID/GUID being more persistent than permalinks
#tantekwhereas the opposite is documented at /GUID
#tantekI think it's that permanence/uniqueness of UID/GUID for posts is one of those aspirational things in feed specs, more than actually useful as intended
#[kevinmarks]A hash works, but only if the other site urls are relative
snarfed joined the channel
#tantekaaronpk, I'd suggest just "URL" for the " *one* way that items are identified between microsub clients and servers"
#tantekand then if you need different kinds of URLs
#tanteke.g. the hash URLs kevinmarks mentions, you can make that decision later
#aaronpkso if that's the case, then what do I use when the post doesn't have a URL
#tantekrather than trying abstract some identifier type that includes URL *and other stuff*
#tantekaaronpk you make up a fragmention of where ever you saw the post, and its contents
#tanteknice thing about fragmention URLs is that they already have a method of resolution defined, and work well in terms of being user browseable
#aaronpksay i'm following example.com and it reports a post with a url like example.org/post/100. For the purposes of storing and deduplicating that, it's fine for me to use that URL within the scope of the example.com feed. However, when I report that to the client, it's no longer within the scope of example.com so there's a security risk that the client may allow that post to be overwritten by some other
#tantekI think only example.org can canonically claim to provide a url like example.org/post/100. if you want to enable example.com to provide an example.org/whatever post, then you start down the path of signatures
#aaronpkso this should be captured somewhere, like in h-entry or h-feed, or at least when talking about following feeds
#tantekthe post would carry a signature with it that it came from example.org, so that example.com or other domain could pass it along
#aaronpkthe obvious question being what should a consumer do that encounters a post with a URL from a domain different from where the content came from?
#tantekI believe that's the reasoning for using signatures in federation, so that a post can be passed along any number of servers (fatping) without necessarily having to contact the original domain
#tanteklike if aaronpk.com decided to offer a feed of select items from tantek.com?
#aaronpkyeah signatures and a key management scheme solve that use case. it's more immediately applicable in the indieweb context for things like in-reply-to and repost-of where the site may be showing expanded content from another domain already
#tantekcurrently consuming code would have to go retrieve the permalink to make sure the content is actually at the claimed location
#tantekand that's how we avoid signatures in the common case
#[cleverdevil]I don't think that's too large a burden, either.
#tantekalso I'd agree that's the 99.9% indieweb use-case
#tantekand helps build on the primacy of URLs as identifiers for stuff on the web
#aaronpkso I need to code this into my feed processing function. if I encounter a URL property from a different domain, I should straight out reject the post?
#[kevinmarks]The other issue is that feeds originally did have external urls - they were local text summaries of what they were linking to
#tantekno it means you have to retrieve the post to get its properties
#tantekyou can't trust the asserted properties in the feed
#[kevinmarks]Some sites still do this eg daring fireball
#aaronpk[kevinmarks]: that sounds like what we've done with bookmark posts
#tantekkevinmarks that was only a legacy RSS problem
#aaronpkokay, so I think I found my first need for a background worker for monocle
#aaronpkI was hoping to avoid it, letting monocle respond to websub payloads directly, but it's looking more complicated than that after all
#aaronpkso, it will get a websub payload with the contents of a feed (h-entry or Atom/RSS or JSON Feed), and will process each item in the list. if that item has a URL that's on a different domain, it's going to need to bump that into the queue to fetch it from the remote URL
#aaronpk[cleverdevil]: btw these XRay URLs are the format that i'm expecting microsub clients to interact with, so I hope it looks relatively easy to consume
#aaronpkaccording to jsonfeed, gruber's Atom feed has the two URLs backwards
#aaronpkhis rel=alternate should link to his own permalink, and rel=related should link to the external post
#aaronpkfrom https://jsonfeed.org/mappingrssandatom "link with rel="alternate" maps to url in JSON. If rel="related" is used for links to an external site, in JSON Feed those map to external_url."
#aaronpklooking at the daringfireball posts, most of those have original content that he wrote, and usually contain a blockquote from the site. that looks an awful lot like my own bookmark posts
#tantekaaronpk, any time you try to use RSS or Atom or some random old feed as an example, you will get super derailed
#aaronpkI don't really want to debate the meaning of what is a bookmark vs what is a quote or whatever
#tantekbecause there is so much historical nonsense there
#aaronpkwell I don't really want to completely disregard Atom and RSS since there are so many existing blogs with those formats that I want to follow
#[kevinmarks]That's fair. The question is how much of this messiness you want to model, and how much you're happy with pruning off to fit into your model
#tantekit's hard to avoid those kinds of debates if you're trying model something that is poorly named "external_url"
#aaronpkso, immediate example of where this is going to happen: indienews
#tantekstart with making it work with h-feed (and possibly jf2 since those should be a direct mapping)
#tantekand only later, after you've got that whole flow figured out, look at what you need to do in addition for feed file formats
#aaronpksince it's an aggregator, all the h-entrys on news.indieweb.org have url properties on different domains
#aaronpkso if I follow https://news.indieweb.org/en in my reader, it should avoid using the content of the h-entrys it gets in the websub notifications, and instead go fetch the individual URLs
#tantekright. exactly why fatpings were not really that useful
#tantekbecause you have to go fetch the individual URLs anyway to get the real substance (as it were)
#aaronpkdefinitely defeats the purpose of fat pings for that, but the fat pings will still be useful for following blogs directly
#aaronpkthis also sounds like a *great* thing for the microsub server to do, to remove all this complexity from individual reader interfaces
#aaronpkso, that solves part of the problem. the remaining issue is how should I handle uniquely identifying posts. right now h-entry lists both uid and url properties.
#aaronpkwhen I encounter an h-entry, I need to know whether i've seen it before, and update the existing one or add it new
#aaronpkright now I prioritize uid and if that's not present I use the url. that's stored internally and I look up the post by that identifier
#tantekthat seems reasonable based on intuitively what I feel like I've seen from existing h-entrys in the wild
#aaronpkso since the goal of microsub is to simplify consuming content when building a reader interface, I want to avoid clients having to do that logic of "use uid if present otherwise use url" etc, especially since some clients might not end up implementing that and we wouldn't know
#tantekI presume you've captured that in a "Goals" section in the spec?
#aaronpkso that begs the question of whether the microsub server should be generating its own IDs for the client to use when deduping items and referring to items at the server
#aaronpkI'm kind of leaning towards just saying that the server should include its own "id" property, and that can be any string value such as the URL of the post or an internal database ID
#tantekmight a client talk to multiple microsub servers?
#aaronpkany other interactions the client would do with the post would be doing things like replying to it, or liking it, which it does at the micro*pub* endpoint and uses the post's URL
#[cleverdevil]I see why this is a bit of sticky decision.
#[cleverdevil]I don't think you're going to come up with a single solution that handles every single edge case and use case.
#[cleverdevil]Might be better to focus in on solving the problem for use cases that are most important.
#tantekalgorithmic synthetic URLs as noted should be enough for the new items / hide items
#aaronpkif i'm doing the thing where I prioritize the uid if present and use url only if there is no uid, that means I have to tell clients how to refer to posts by either of those properties
#aaronpkthe only trick is I don't think I want to make up a URL if there isn't actually one in the item, because I don't want to be in a situation where clients are hesitant to use the value for fear of accidentally misleading users to click on a thing that doesn't exist
#[cleverdevil]Perhaps you could generate it in such a way that its clear the URL is synthesized?
#[cleverdevil]That way clients can choose what to do with the URL.
#[cleverdevil]Or you could include an additional property indicating that the URL is made up.
#aaronpkthat'd be one option, but does mean clients have to add a string check every time they use the URL
#[cleverdevil]You could also just use two different properties.
#aaronpkIMO the easiest thing that would probably have the least consequence if ignored would be to prepend a "#" to an arbitrary string, so clients could check "does the URL begin with '#'? if so, don't show the URL", and if they forget to add that check, clicking that in a browser will not navigate away to some unexpected place
#aaronpkbut yeah the two different properties idea was what I was saying earlier where the microsub server could just always use its own local ID for the client to refer to posts
#[kevinmarks]The point is to make one that resolves - so it could be one that resolves via you (or hasharchive or archive.org)
#aaronpkI guess if the microsub server makes up a URL for a post that exists on its domain and actually displays the post at that URL, then that seems like a pretty good fallback behavior
#aaronpkdoes place more of a burden on the server, but it's not entirely unreasonable
#[kevinmarks]One thing that feed serving did tend to get right was etag/last-modified and 302
#[kevinmarks]So if you do have to poll, you can exit early on either side