#sandroben_thatmust, tantek, I have root on as2.rocks, but it seems to disabled at the hosting/os level.
jankusanagi_ joined the channel
#sandro(reached Evan, he says he'll fix it tonight)
#sandroJust thinking about the difference in client-server protocols between mastodon and ap. Huge difference: AP is extension neutral; you could have an AP server that handles posts with details it didn't understand; not so with Mastodon.
#sandroGargron, I'd propose the UI only displays what it knows how to handle. Everything else gets ignored. And new things can say "if you understand me, then ignore X, since its the fallback for me". This is extensibility; without it, the system is basically as constrained as the silos are.
#sandro(and there's a baseline of what every UI is suppose to implement, so you don't have to offer a fallback for everthing.)
#aaronpkI do think there's a difference between fallback and extensibility
#sandroReally? I don't think extensibility can practically be deployed in a decentralized system without fallbacks. Without fallbacks, using an extension is a painful choice, because you're excluding a huge chunk of your audience.
#sandroFor example, if I want to survey my followers, I can either post a link to a survey website, or use an in-post survey extension. With fallback, I can do both and reach everybody. I'd probably have to be brave or foolish to use the extension, in its early days, because I wouldn't be reaching many people
#cwebber2this is actually kind of what happens in pump.io currently iirc, it'll just say "something was posted" but not go into the details
#sandroyeah, that clearly doesn't actually work in the real market. polyfills (fallbacks) are what have allowed modern browsers to finally start evolving.
#cwebber2sandro: you could always try rendering it as the most basic Object type
#cwebber2but you may be missing the whole reason the person posted it :)
#sandroYou have to empower the person posting it to craft a suitable fallback they're comfortable with, other wise they're never going to use anything new for something that is actually important.
#sandroin many case the fallback can be a link to a webpage that offers the appropriate experience.
#sandroI think AS2 works here, because an extension (eg a survey extension) can just be some added properties on the fallback post. This thread started because I observed that the Mastodon c2s API doesn't allow things it doesn't understand (ie extensions).
#sandro(AS2 could perhaps make this approach more clear and easy, but oh well, too late.)
#cwebber2well, at least you can show it in the feed
#sandroI believe there are interactions that don't need server behavior. In fact, I believe surveys could be entirely implemented in the clients.
#sandroOr response-types (I see Facebook just added a new one today). Or checkins. Or item-of-sale posts. Or ride-sharing (for a decentralized uber). Or ... pretty much anything else we do with apps today. :-)
#sandroHow does the fallback work if someone doesn't implement it?
#sandro... because if only 40% of my follows see polls, I want the other 60% to see instead a link to the survey
tantek joined the channel
#cwebber2sandro: there may be another reason that you shouldn't accept object types you don't know of in c2s in AP
#cwebber2sandro: you may remember that, after much discussion, we agreed that posting a non-activity object to your outbox in c2s means that the server will automatically wrap it in a Create
#cwebber2well, how do you know whether or not it's an activity or non-activity?
#cwebber2you might be able to look at that rdf inheritance stuff but I'm not sure everyone knows how to read that
#sandroI wouldn't use rdf inference, no. It has to be something that's mandated.
#sandroIt sounds like we don't actually know how to do extensibility in AP.
#cwebber2it sounds like we have a disagreement over fallback in c2s but I don't think that's the same as not knowing how to do extensibility
#sandrosorry, yes, I should have phrased it differently.
#sandroIt sounds like we don't know how to do fallbacks in AP, and to me that suggests we'll never actually see the system evolve.
#cwebber2I think we already covered that we have a method of displaying fallback information for objects
#cwebber2not accepting object types you don't know in c2s
#cwebber2really does not seem like a big deal to me
#cwebber2but you know, it's implementation dependent, so hey! maybe someone will start accepting them :)
#cwebber2sandro: there's another side to fallbacks too
#cwebber2sandro: if something is really a type, plus extensions
#cwebber2it may be a good idea to take advantage of eg {"type": ["Video", "3dVideo"], ...}
#cwebber2eg, maybe "3dVideo" is a subclass of Video, but using both means that systems that don't know about 3dVideo's property of saying "put on your 3d glasses!" can still play the video meaningfully
#cwebber2that's maybe a bad example; I've thought of this in case we end up providing extensions to the core objects in MediaGoblin really
#cwebber2though in the examples I gave it may be easy enough to just add a new property without adding a composite type
#tantekadding new user-level "types" to a system like this is definitely non-trivial and takes some forethought (for it to be workable at all). the multi-typing that cwebber2 suggests is a good start
#cwebber2the problem with the whole multi-typing thing is that it means that users who expect to use java/ruby/python like classes to represent as2's type heirarchy will be very confused when it turns out an object can have multiple types at the same time :)
#tanteklol devs expecting user types to magically turn into prog lang types
#tanteksandro, regarding whether we don't know how to do extensibility, or fallbacks, whether or not the spec says how (or not), the really proof of this (either way) is when implementations try to actually build extensions in a hetergenous community of implementations, and see what happens. do they figure it out or not?
#tantekvery rarely (like never that I've seen?) has any "extensibility / fallback system" that was designed "up front" actually survived that kind of real world stress test
#cwebber2the proof of the pudding is in distributing the pudding across interoperable systems
#tantekit's like second generation prototyping / incubating
#tantekand you can't really get there without a first generation of heterogenous deployment etc. (hence why monoculture attempts have all been doomed)
#tantekso we won't really know for AP, until we have like at least 3+ impls in use in the wild by real users across servers, and some impl decides to make up a new type and add it and see what happens to the other impls when they federate
#tantekbecause at "small" numbers, there's a *chance* that all the impls can upgrade something simultaneously, but rarely does that dynamic last in any successful standard
#tantekand "all upgrade something simultaneously" is not extensibility, it's spec revision
#tantekin the indieweb world, it's been interesting seeing the extensibility/fallback evolve from replies -> likes -> reacji for example, multiple generations of extensions / fallback as were
#tantekgreat example of why "namespaces solve everything for extensibility!" is big fat lie
#cwebber2to be fair, rss never claimed to be a good spec :)
#tantek(strawman a bit, but ns is also the elephant in the extensibility room)
#sandroHTML gets extensibility/fallback good enough. (clients MUST ignore attributes and elements they don't understand, and MUST use the content of elements they don't understand. That allows for fallback.
#sandroI agree HTML has problems, which is why I said "good enough", not "right". If it didn't get them "good enough" it would have died a long time ago, I expect.
#tanteknevermind <object> tag etc. I mean works in Firefox sure, but cross-browser interop is poor. and without interop, you don't actually have extensibility
#tantekthe only extensibility that I think has worked in HTML is class and rel
#tantekmaybe meta too if you see more value in metacrap that SEO junk
#tantekHTML had something different than extensibility, it had evolvability, which let us go from v4 to v5 with <video> <audio> etc.
#tantekagain, AFAIK, that's not extensibility in the typical "decentralized" implied way by namespace advocates
#sandroMeanwhile, it sounds like AP is hostile to fallback, so if I were someone who was interested in application areas other than cloning twitter and facebook, that hostility would be enough to make me lose interest in AP.
#tanteksandro, I'm not convinced of that. or rather, I'm more optimistic about AP
#tantekwe won't know until we see AP impls try to build in fallback for extensions
#tanteksandro, is what you mean by Fallback in the spec? otherwise we can't put it in the test suite
#sandroI mean, otherwise we'll get lots of implementations that get it wrong, and if you can't rely on it, it's hostile.
#tantekput another way, which section of the spec would you like to see more tests for?
#tantekyou don't need all impls to get it right for it to work out. we've learned that in indieweb. it's ok if it starts out with a few figuring out fallbacks and then eventually it picks up or it doesn't. it's not automatic failure / hostile.