The Sunset HTTP Header Field
tools.ietf.org
tools.ietf.org
Sunset header fields will be served as soon as the sunset date is
Wilde Informational [Page 9]
--------------------------------------------------------------------------
RFC 8594 Sunset Header May 2019
less than some given period of time.
What problem does this solve? How is this more useful than it is cumbersome? also, how do people write this? Do they manually space space space space align the footer and then copy it every 30 or so lines?Not saying that proprietary formats aren’t still a bad idea for other reasons, but predictions of unreadability don’t seem to have panned out for any common file formats.
Could be worse. My dad used a video tape format even more obscure than Betamax.
At the surface layer this era of Excel ("BIFF" documents) isn't too bad, getting say, a table of small integers representing people's annual salaries out of an XLS file is very do-able and many programs today will get that right.
As you start to dig down it gets nastier pretty quickly. Formulae require implementations that match not just what Microsoft's published documents (I have loads of these on a shelf I rarely look at now) say, but what Excel actually did, bug for bug, back in the 1990s. Maybe the document says this implements a US Federal tax rule, but alas Excel got the year 1988 wrong, so actually it's "US Federal tax rule except in 1988".
You also run into show stoppers that prevent the oft-imagined "Just transform it to some neutral format" because Excel isn't a typed system. What is 4? Did you think it's the number 4? Because the sheet you're trying to parse assumes it's actually the fourth day of the Apple Macintosh epoch in one place, but in another place uses it to index into an array. Smile!
Finally in complicated sheets (often "business critical") there's a full-blown Turing complete programming language, complete with machine layer access to the OS. Good luck "translating" that into anything except an apologetic error message.
I'm going to have to steal that line. :)
Even with modern Microsoft Word, the formatting of old documents is often mangled.
To this day, up-to-date PowerPoint can’t reliably display presentations made with up-to-date PowerPoint on a different machine, let alone OS!
LibreOffice
One someone who has not tried could possibly say that.
The numerous doc file formats are a constant headache for anyone doing document processing. Not even Word itself can read its own older formats reliably. Sometimes you have better luck with LibreOffice, sometimes not.
And that's the mostly widely used document file format. Anything else from the same era is completely dead in the water. Manually viewing them can be done in emulators with a bit of work but any automatic processing is a huge undertaking.
Maybe having such a field will help treating those URL differently than "normal" ones, so that the secret is better protected.
edit: I failed to read the question correctly.
RFC 7990 -- RFC Format Framework: https://tools.ietf.org/html/rfc7990
There's various tools to automatically format things as necessary, just like any other kind of text wrapping.
As far as the overall "philosophy" behind keeping it this way, the honest answer is that the IETF is just a particularly unlikely group to change things without a clear need, and there are likely all sorts of tools small and large that expect RFCs to follow these conventions at this point.
> In order to improve the readability of RFCs while supporting their archivability, the canonical format of the RFC Series will be transitioning from plain-text ASCII to XML using the xml2rfc version 3 vocabulary;
Is it readable? Yeah
Is it archivable? Yeah, XML is (AFAIK) one of the most closely followed standards I could think of.
Here's the "source" XML that is authored: https://openid.net/specs/openid-connect-core-1_0.xml
That can be compiled in to this HTML: https://openid.net/specs/openid-connect-core-1_0.html
Or to this RFC-like plaintext: view-source:https://openid.net/specs/openid-connect-core-1_0.txt
Most new RFCs are authored this way.
- everyone can do it with any software (or even a typewriter)
- consistency with legacy documents. The format doesn't just change on you as you're reading through legal history
- it works fine, why change it?
I'd also add a guess:
- There's no room for implementation detail to affect formatting. Last thing you want is a whole bunch of formats that are similar but not identical, just because someone's software is a bit different.
- could you imagine trying to get everyone to change? We should be so lucky that everyone's already this consistent
Yes, this is exactly what I do for a living, consolidating policy and legal documents and their related business workflows into modern applications. My requirements for how the text editors work are far more meticulous than your average app exactly for the reasons you stated. Concerns with formatting that most products would blow off as trivial are deal-breakers in this industry.
Because, in such cases, it wouldn’t really matter if the editor renders the source to text incorrectly, as long as the proofer renders it correctly. Just like with WYSIWYG desktop-publishing software.
Need I say more.
lynx -dump $URL > $FILE
This is a simple way to extract the content of a web page as plain text.Also, I guarantee there are any number of downstream consumers of RFCs which take this sort of format as a given, and which will break on even a minor change. And why break those downstream systems if you don't have to?
Basically, any changes will break something. So the benefits of the changes need to be bigger than the costs of the changes. Not to mention the cost in wasted time of all the humans bikeshedding how to change it to make it "better".
Dealing with the ongoing cost of humans having to read across artificial page breaks is a pretty minor concern compared to the costs of all that.
They are formatted in plain text with fixed page sizes because that's what they've always done, it works fine, and there's no compelling reason to change.
> also, how do people write this?
The thing about keeping the same format for a few decades rather than changing it with each shift in popular fashion is that there is plenty of supporting tooling.
https://www.dropbox.com/sh/duhmxzaehy0dwuc/AADyKPN5UVU1HKT9M...
Looking at the JSON, the structure is pretty basic. You could see it rendering in any format/style pretty easily.
This is all very abstract. No user agent will use this in the same way. You'll end up writing code per application anyway. All this is is a convention that people will interpret a bunch into. This is not going to be interoperable.
The epitome of this is ActivityPub.
For example, I was just thinking that forum software could have their backends scrape image links you attempt to embed; and, if they find that the link has a sunset policy (e.g. it was from an anonymous image upload service that expires posts after a week), then they could rehost the image instead of hotlinking to it. (Or, cache the image for now, and then rewrite the link from a hotlink to a cached link when the deadline hits.)
That’s not something you would standardize behaviour on. But, once you have servers providing the information—not to a particular client, but just spewing it out as an objective fact out into the world—clients can do all sorts of things.
My point was that there will never be a client that will blindly read that value and understand what to do with it. Which is why the only difference to "X-Sunset" is that there's an RFC with suggestions on how it could potentially be meant there, along with a syntax restriction.
ActivityPub is the epitome of this because they supply a lot of vocabulary and syntax variation to express them (including very complex ways to normalise that syntax, JSON-LD is not fun to parse) but doesn't actually made the implementation commit to anything. It's setting up a bunch of arbitrary rules for nothing. Every single AP implementation still orients itself on compatibility with Mastodon.
Sure it does. If the information is standardized then the community as a whole can innovate around it. Browser plugins and the like can be made that make use of the information, etc.
Very different than an HTTP header.
I don't think that graph will ever be readable without vendor-specific hacks applied for every piece of software participating. AS will meet the same fate as XMPP. Some very core features might work, but the diversity in user agents and servers and their quirky implementations will ultimately be to its detriment. Maybe that's leftover pessimism from the time I participated in the XMPP WG. I'd love to be wrong.
I have a lot of respect for implementing AS in Go. I tried and didn't even finish my relay implementation. It was just too counter to the Go core competency and mindset. Or I'm just not a fan of wrangling interface{}s around.
I started typing out a reply on my phone but I think I need to sit with a keyboard and just make a blog post on it -- I hope you don't mind a wait. I hope I'll do a fair job characterizing the problems you identity and give them my alternate outlook.
Ideally such a standard should be really easy to implement, so we get true diversity, and democratisation, but implementing ActivityPub is a nightmare. Of course it doesn't help that the test suite has been down for months. https://test.activitypub.rocks
I chose to go down a very difficult route with go-fed, something I don't think anyone else has done with JSON-LD. So my perspectives on the challenges in the area are very warped. For example, over the course of a mere 8 hours of work I've used go-fed to get my personal blog federated. But I stand very biased.
The IETF has workflows for Informative things versus Standard things. It's still useful to "reserve" things in Informative RFCs in case the RFC later moves to the Standards Track. Or also as some of the April Fools RFCs seem to indicate the internet takes its jokes pretty seriously and you never know when an Informative thing maybe adopted just because it was interesting to some developer for some project.
The other use cases listed in the RFC don't seem incredibly compelling. Anyone have one that comes to mind?
https://en.wikipedia.org/wiki/Application_retirement
However the example given is indicative of a session duration, not a sunset period.
> For example, a pending shopping order represented by a resource may already list all order details, but it may only exist for a limited time unless it is confirmed and only then becomes an acknowledged shopping order.
Admittedly, naming things is hard, perhaps this could have been called Expiry: or Unavailable-After: or Valid-Until:
(To be fair, I'm not sure announcing that kind of mid-term expiry is a real need-to-be-filled in today's web.)
Choose the word that is old, short, and plain. Sunset is a little better than others because at least it is poetic. But for my HTTP headers I would prefer something a little more straightforward, rather than euphemistic --- like Expires, but that's already taken.
Given these use-cases, I could also see the use of a version of the header that doesn’t specify when the retirement of the resource will happen, but just specifies that the resource is, by design, not going to stick around forever. E.g. the URL of a “previous version” of something, where the system only keeps around N previous versions (so as soon as someone adds enough newer versions, the version you’ve linked to will disappear.)
Another fun use-case is sticking this header on everything on a given domain (by e.g. reconfiguring your web load-balancer to emit the header.) Archive.org could then use this as a signal to automatically prioritize archiving content from the domain, before any human being realizes the service is being retired and prioritizes that archiving.
[0] https://apidocs.imgur.com/?version=latest#api-deprecation
[1] https://tools.ietf.org/id/draft-wilde-sunset-header-03.html
Also, from the resource consumer point of vie this could help guide efforts like archive.org to make snapshots before it's too late.
Actually, "E. Wilde" is on of the authors there too.
Here’s another URL for the content: https://www.rfc-editor.org/rfc/rfc8594.txt