From: wayne+gopher@waynewerner.com To: everyone.everywhere.all.at.once Date: Sat, 03 Jun 2023 13:36:59 +0000 Content-type: text/markdown Subject: Everything Email Email is not *strictly* accurate, however it's close enough. Really what I mean is [RFC (2)822][email-rfc]. It's pretty incredible what you can accomplish with this RFC. You may want to scrape some data into another read or random access friendly format, but I would be surprised if 90-100% of the things that you generally do on the Internet could not easily be expressed in terms of the aforementioned RFC. If you understand a very few things, basically everything else can flow from that -- build whatever the heck you want to on top of it! 1. Emails are simple, but have a header section that can contain (arbitrarty)_ metadata. 2. You can combine email messages using the [mbox format][mbox] format. 3. [Links][uri], or URIs (sometimes conflated with URLs, which is fine) are perhaps surprisingly powerful -- but moreso given the fact that they provide how to specify a protocol, combined with other information. Since protocols are how we connect to different resources, and they can be handled arbitrarily by different programs, they can be (mis)used in very creative ways. Let's take some quick examples. You're probably reading this post via gopher. The original URI for this document would be: gopher://gopher.waynewerner.com/0/ideas/everything-email.eml The gopher protocol [doesn't have an email type][gopher-protocol], so this is would be a text type. It's very unlikely that your client will do anything beyond rendering this as text. Which is fine! Since as a human being you can gather the rest of the information yourself. But if you had a client (built yourself or by someone else) that understood that the `.eml` extension on this file meant the file should be parsed and rendered as an RFC 2822 compliant email message then it would read the header block, [correctly determine the content-type][markdown-content-type] of this message was markdown, and render it appropriately, making the links appear as links. I could even add attachments to this message via multipart message, or create the HTML rendering myself, or any other manner of (un)wholesome activities. And all of this with just text! And a client that understands how to represent it correctly. And of course using markdown (or HTML) I could specify things like tables, add inline images, specify font sizing and appearance, and all manner of other shenanigans. And accessibility! Screen readers do love them some plain text! --- You may be old enough to remember when Skype came on the scene and you could make calls from your computer to people's actual phone numbers. Now in 2023 it's likely that if you see a phone number on a website you can just click the number and your phone will dial it. That happens when you get a link that's formatted like this: tel:1-555-555-5555. In HTML you would write it like `Call me maybe`. Want to link to a webpage? https. Want to send an email? mailto. In fact you can specify some pretty slick behavior with a mailto link: [Say Thanks!](mailto:wayne@waynewerner.com?subject=Thank you!&body=Thanks!). Clicking on that link in a well-behaved client should create a new email with the subject "Thank you!" and "Thanks!" pre-populated in the body. Want to tell someone that they need to come get the file from you personally? Maybe `sneakernet:Ronald Frobnitz?passcode=12345&file=super+secret#some-part-of-the-file` could be handled by your client to print out a map to your location along with the credentials that they need to get into your building. That issue tracking system that you have? It could just be a series of email messages, complete with attachments, and whatever metadata you want to attach. That social media you use? Same. So now you can /really/ mean it when you say, "This could have been an email" -W [email-rfc]: https://www.rfc-editor.org/rfc/rfc2822 [mbox]: https://www.rfc-editor.org/rfc/rfc4155 [uri]: https://www.rfc-editor.org/rfc/rfc3986 [gopher-protocol]: https://www.rfc-editor.org/rfc/rfc1436 [markdown-content-type]: https://www.rfc-editor.org/rfc/rfc7763