DataLink 1.1 : step towards PR+RFC ????
Patrick Dowler
pdowler.cadc at gmail.com
Mon Jan 9 21:57:50 CET 2023
Hi all,
I have two items on my TODO list for DataLink:
1. clarify multiple #this -- components vs alternatives (from a discussion
Markus and I had during the interop)
2. DataLink: summary from FB, review changes, PR (which iirc means I was
going to compare Francois' summary of changes with the doc changes and the
changelog, I also said I'd list somewhere the changes that we have actually
implemented at CADC and iirc release 1 or 2 that have been sitting on the
back burner... and then we'd be ready for RFC)
I think I can get to this later this week or early next.
--
Patrick Dowler
Canadian Astronomy Data Centre
Victoria, BC, Canada
On Mon, 9 Jan 2023 at 08:38, BONNAREL FRANCOIS <
francois.bonnarel at astro.unistra.fr> wrote:
> Hum,
> Thinking about it, I tend to agree with Markus option one because
> depends of VO tool developpers in that case.
> Anyway I create a new github issue with this discussion
> Cheers
> François
> Le 09/01/2023 à 11:35, Mark Taylor a écrit :
> > Given that the proposed text changes are rather convoluted,
> > and that nobody is, as far as I know, actually using the currently
> > mandated content-type behaviour (evidence: Markus has been violating
> > it and nobody beside validation nerds have complained/noticed),
> > another possibility would just be to downgrade that MUST to a SHOULD:
> >
> > Unless the incoming request included a RESPONSEFORMAT parameter
> > requesting a different format, the content-type header of the
> > response SHOULD be ``application/x-votable+xml'' with the ``content''
> > parameter set to ``datalink'', with the canonical form given in
> > \ref{sec:mime} strongly recommended.
> >
> > So: use the datalink content-type unless you've got a good reason not to
> > (as does Markus, and other service providers that use the same tricks
> > to render links tables in browsers, at least as long as browsers
> > won't apply XSLT to content-types marked with +xml).
> >
> > This would technically be a breaking change from DL 1.0 to 1.1
> > (as would Markus's other proposed changes). But given the likely impact
> > in practice of the change (none?) I think we could turn a blind eye.
> >
> > Mark
> >
> > On Mon, 9 Jan 2023, Markus Demleitner wrote:
> >
> >> Dear DAL, Dear François,
> >>
> >> On Fri, Jan 06, 2023 at 06:49:21PM +0100, BONNAREL FRANCOIS wrote:
> >>> It would nice to have the RFC starting before next interop. I
> think
> >>> it's mature enough.
> >>>
> >>> Thoughts ?
> >> Sure, let's go ahead. Except... there's one skeleton in the closet
> >> that recently came up again, and perhaps we can still somehow bury
> >> it before RFC.
> >>
> >> The problem is the following text:
> >>
> >> Unless the incoming request included a RESPONSEFORMAT parameter
> >> requesting a different format, the content-type header of the
> >> response MUST be ``application/x-votable+xml'' with the ``content''
> >> parameter set to ``datalink'', with the canonical form given in
> >> \ref{sec:mime} strongly recommended.
> >>
> >> The purpose of this language is that clients can (relatively) easily
> >> work out that they are dealing with a Datalink document regardless of
> >> where they get it from (as long as it's http). I think that's a good
> >> idea, although I'm not aware of a client that actually looks at
> >> content-type when retrieving things that could be datalink documents.
> >>
> >> But at the same time this is blocking an important use case:
> >> Displaying datalink documents in the browser (Background:
> >> http://mail.ivoa.net/pipermail/dal/2021-April/008426.html and
> >> https://github.com/msdemlei/datalink-xslt). When I wrote the XSLT
> >> for that in ~2016, I planned it as a temporary hack until there are
> >> good datalink clients, but now I think letting people open datalinks
> >> with the browser and getting something actually usable is a major use
> >> case in itself.
> >>
> >> The trouble with this: Web browsers will not apply the XSLT to
> >> documents with a media type of
> >> application/x-votable+xml;content=datalink. I have to give them
> >> text/xml to start the whole magic.
> >>
> >> I hence at the moment have the choice of violating the standard or
> >> breaking a use case important to me. I weaseled around that first by
> >> inspecting user agent strings and only returning text/xml if the user
> >> agent looked as if I was dealing a web browser, praying nobody would
> >> notice. But that broke rather quickly (I forget the details), and I
> >> switched to inspecting the accept header. If I find a text/html in
> >> there, I return text/xml (yeah, it's that twisted), otherwise I'm
> >> compliant with the datalink spec.
> >>
> >> But it's still a violation of the standard. I had hoped programmatic
> >> use would not be impacted, but it turns out that, for instance, the
> >> JVMs earlier than 11 actually indicate acceptance of text/html, too.
> >> Sigh.
> >>
> >> So... it's trouble, and I have not found any solution that doesn't
> >> make me cringe. But I increasingly have the impression that ignoring
> >> the problem will only make matters worse.
> >>
> >> The least horrible proposal I have would be to replace the text
> >> quoted above:
> >>
> >> When a datalink service returns a datalink VOTable (i.e., absent a
> >> RESPONSEFORMAT parameter requesting something else), it MUST
> >> indicate that in the response's content-type header. When the
> >> request's accept header includes ``application/x-votable+xml'',
> >> then it MUST be ``application/x-votable+xml'' with the ``content''
> >> parameter set to ``datalink'', with the canonical form given in
> >> \ref{sec:mime} strongly recommended. Otherwise, any legal VOTable
> >> media type, including text/xml, is allowed.
> >>
> >> That is: clients wishing to do dispatch based on the datalink media
> >> type must indicate that they accept VOTable. It's a pretty safe bet
> >> that major browsers won't do that (and potential future VO-enabled
> >> browsers wouldn't need the XSLT, I'm sure). And although HTTP
> >> content negotiation isn't as popular as it should be, I think it's
> >> implementationally not very intrusive.
> >>
> >> The only alternative I could come up with would be to codify what I'm
> >> currently doing:
> >>
> >> Unless the incoming request included a RESPONSEFORMAT parameter
> >> requesting a different format, and unless the user agent indicates
> >> it will accept text/html, the content-type header of the response
> >> MUST be ``application/x-votable+xml'' with the ``content''
> >> parameter set to ``datalink'', with the canonical form given in
> >> \ref{sec:mime} strongly recommended.
> >>
> >> We could then have a footnote explaining what the text/html exception
> >> is supposed to do. The downside here is that it's really an ugly
> >> hack to return text/xml when accept has text/html, and there's too
> >> much library code that wantonly sticks text/html into accept behind
> >> the programmers' backs.
> >>
> >> I think given the media type hasn't seen too much use so far anyway
> >> and when a client wants to use it, it would be new code anyway, I'd
> >> go for option one.
> >>
> >> But if anyone had a less painful idea, that'd be even better. Does
> >> anyone?
> >>
> >> -- Markus
> >>
> > --
> > Mark Taylor Astronomical Programmer Physics, Bristol University, UK
> > m.b.taylor at bristol.ac.uk http://www.star.bristol.ac.uk/~mbt/
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ivoa.net/pipermail/dal/attachments/20230109/f2830a91/attachment-0001.htm>
More information about the dal
mailing list