- From: Benjamin Goering <ben@bengo.co>
- Date: Fri, 24 Mar 2023 12:17:17 -0700
- To: Melvin Carvalho <melvincarvalho@gmail.com>
- Cc: Ryan Barrett <public@ryanb.org>, Bob Wyman <bob@wyman.us>, aaronngray@gmail.com, public-swicg@w3.org
- Message-ID: <CAN+OhBMCN0Y-Y2sYOEHZARMESS2akopFt1YfD5=1buQJCKah1Q@mail.gmail.com>
> Pretty much all the conneg ive seen is broken (e.g. on mastodon too). > But nobody actually cares. I care, Melvin. I care. :) On Fri, Mar 24, 2023 at 10:41 AM Melvin Carvalho <melvincarvalho@gmail.com> wrote: > > > pá 24. 3. 2023 v 18:34 odesílatel Melvin Carvalho < > melvincarvalho@gmail.com> napsal: > >> >> >> pá 24. 3. 2023 v 18:23 odesílatel Benjamin Goering <ben@bengo.co> napsal: >> >>> http content negotiation is normatively required by the activitypub spec >>> (3.2). >>> I'll also point out that some URIs from the TRs already support it. >>> >> >> How do you ensure that each accept header gives back the same triple? >> >> For example, do they in this case. >> >> Not a pedantic point, I've been trying to fix this for years in Solid, >> and its made harder by the fact that the developers dont know how it >> works. In fact the maintainer of the reference implementation said to me >> recently: "What's content negotiation". It's hard to fix these things. >> > > Let me add an extra point > > Pretty much all the conneg ive seen is broken (e.g. on mastodon too) > > It's generally broken on vocabs ive seen too. But nobody actually cares. > Because, people dont actually use vocabs. They may in future e.g. for > xsd:typing but they are barely noticeable today. The whole overhead of the > thing I would argue provides very little developer value other than a > documentation where they can copy and paste. > > >> >> >>> >>> ``` >>> >>>> bengo@bengo ~ ⚡ curl -H "Accept: application/json" >>>> https://www.w3.org/ns/activitystreams | head -n 10 >>>> % Total % Received % Xferd Average Speed Time Time Time >>>> Current >>>> Dload Upload Total Spent Left >>>> Speed >>>> 100 7985 100 7985 0 0 39142 0 --:--:-- --:--:-- >>>> --:--:-- 40125 >>>> { >>>> "@context": { >>>> "@vocab": "_:", >>>> "xsd": "http://www.w3.org/2001/XMLSchema#", >>>> "as": "https://www.w3.org/ns/activitystreams#", >>>> "ldp": "http://www.w3.org/ns/ldp#", >>>> "vcard": "http://www.w3.org/2006/vcard/ns#", >>>> "id": "@id", >>>> "type": "@type", >>>> "Accept": "as:Accept", >>>> bengo@bengo ~ ⚡ curl -H "Accept: text/html" >>>> https://www.w3.org/ns/activitystreams | head -n 10 >>>> % Total % Received % Xferd Average Speed Time Time Time >>>> Current >>>> Dload Upload Total Spent Left >>>> Speed >>>> 0 0 0 0 0 0 0 0 --:--:-- --:--:-- >>>> --:--:-- 0<!DOCTYPE html><html dir="ltr" typeof="bibo:Document " >>>> prefix="bibo: http://purl.org/ontology/bibo/ w3p: >>>> http://www.w3.org/2001/02pd/rec54# as: >>>> https://www.w3.org/ns/activitystreams#" lang="en"><head><meta >>>> charset="utf-8"><meta name="generator" content="ReSpec 20.7.1"><meta >>>> name="viewport" content="width=device-width, initial-scale=1, >>>> shrink-to-fit=no"><meta property="dc:language" content="en" lang=""> >>>> <title>ActivityStreams 2.0 Terms</title> >>>> >>>> >>>> >>>> >>>> <style>/***************************************************************** >>>> * ReSpec 3 CSS >>>> * Robin Berjon - http://berjon.com/ >>>> *****************************************************************/ >>>> >>>> 100 33068 0 33068 0 0 148k 0 --:--:-- --:--:-- >>>> --:--:-- 153k >>>> curl: (23) Failure writing output to destination >>>> >>> ``` >>> >>> On Fri, Mar 24, 2023 at 10:16 AM Ryan Barrett <public@ryanb.org> wrote: >>> >>>> Sure! And feel free to redirect to a different venue if we're getting >>>> off topic. Off the top of my head: >>>> >>>> 1. Most web developers are not aware that conneg exists. This is >>>> usually fine, since it's uncommon, but can be an unpleasant surprise when >>>> they first hit it and don't understand it. >>>> 2. The `Accept` header is notoriously complicated to parse, >>>> generate, and fully comply with. Imo much of that complexity is unneeded in >>>> practice. >>>> 3. It often breaks caching when it's first introduced. Internal and >>>> external caches generally ignore Content-Type and Accept (etc) by default, >>>> so when conneg is first introduced, clients often get the wrong response >>>> type. Developers learn the hard way that they need to add Accept to Vary >>>> and to their framework's cache. >>>> 4. URLs leak across contexts. They may start out within a single >>>> service or API, but they gradually proliferate into user-visible links, >>>> object identifiers in other systems, add-on services, third party tools, >>>> etc. These generally don't know the original conneg requirements, which >>>> causes unpleasant surprises. >>>> >>>> I think most of this boils down to: modality generally considered >>>> harmful. When something always behaves the same way, it's reliable and easy >>>> to use. When it behaves differently based on something far away in the >>>> environment that you may not know exists, it's unreliable and surprising. >>>> Add in a very large ecosystem of independent tools that all need to >>>> interoperate, often in fine-grained ways, and you have a recipe for failure. >>>> >>>> On Fri, Mar 24, 2023 at 9:42 AM Bob Wyman <bob@wyman.us> wrote: >>>> >>>>> Melvin, Ryan, >>>>> Could you provide at least a short summary of why "content >>>>> negotiation" has not lived up to expectations? It is good to know that it >>>>> is non-optimal. It would be better to know why. >>>>> >>>>> bob wyman >>>>> >>>>> >>>> >>>> -- >>>> https://snarfed.org/ >>>> >>>
Received on Friday, 24 March 2023 19:17:42 UTC