SML: Difference between revisions
SML content |
mNo edit summary |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
= SML (Structured Email) = | = SML (Structured Email) = | ||
SML (Structured Email) is | SML (Structured Email) is a standard for adding machine-readable data to email messages. | ||
It enables developers to create more intelligent email applications that can understand and act on the content of messages, rather than just treating them as plain text. There are infinite use cases in which gathering information from email and re-using them can be useful. Help us to find them all. | |||
What is currently done via email, but manually? How can we automate it? | |||
What is currently not done by email, but whatsapp etc? What could be done, what nobody does right now? | |||
Feel free to add on the list! | |||
= Brainstorm Use cases and UI representation = | = Brainstorm Use cases and UI representation = | ||
Examples of possible use cases for SML: | Examples of possible use cases for SML: | ||
* Polls | |||
* Finding a meeting time that suits most people, or the most important participants. UI: Could show my calendar appointements at the proposed times. Optionally deny all proposals where I have a conflicting appointment. | |||
* Location tracking UI: show on map. Possibly with trace (past locations) and direction (where heading). Open in Google maps, allowing me to route there. | |||
* Email verification Button does http call, no browser page then deletes message | |||
* Invoice, order confirmation sent to accounting application puts products and price in a database of pitched products | |||
* Delivery notification when linked to order and/or invoice by ID, can show overall status of each ordered product , including order, delivery status, dates, price, etc currently scattered in at least 4 emails. | |||
* Order Management: When receiving an meeting invitation, seeing whether you already have appointments can show overall status of each ordered product, including order, delivery status, expected delivery time, dates, price, vendor information, custom notes, etc. Currently, this information is scattered in at least 4 emails, or even more when orders are split or merged during delivery. | * Order Management: When receiving an meeting invitation, seeing whether you already have appointments can show overall status of each ordered product, including order, delivery status, expected delivery time, dates, price, vendor information, custom notes, etc. Currently, this information is scattered in at least 4 emails, or even more when orders are split or merged during delivery. | ||
* Repairs: Guarantee. Terms. Call service technician. | |||
* Related products: Toner for printer, headphones/case for phone | |||
* Related products: Toner for printer, headphones/case for phone | |||
* Parcels | * Parcels | ||
Line 32: | Line 34: | ||
** To make order: Product + Quantity + Price, Customer data -> Order | ** To make order: Product + Quantity + Price, Customer data -> Order | ||
* Coupon | * Coupon | ||
* | <nowiki>*</nowiki> Manage subscriptions | ||
* | * Show list of subscriptions that I pay monthly/yearly. | ||
* | * When it renews, when to cancel etc., make event to cancel at a certain time. | ||
* | * Compare PayPal subscriptions. | ||
* Request email pubkey. | * Show all emails related to that subscription | ||
* Company welcome email requests customer email pubkey. | |||
* Company can send invoices encrypted | <nowiki>*</nowiki> Tell my contacts that I moved to a new home/business address. | ||
* Company can accept customer email signed and as authenticated | |||
* Increases security, for customer and company. | * Ditto for email address or chat | ||
* Update companies that I have a contract with. Authentication using the data (customer/contract numbers) in the original customer welcome email. (Include in the human-readable text part a hint that this contains structured email, to convince companies to accept this.) | |||
<nowiki>*</nowiki> Email encryption | |||
* Request email pubkey. | |||
* Company welcome email requests customer email pubkey. | |||
* Company can send invoices encrypted | |||
* Company can accept customer email signed and as authenticated | |||
* Increases security, for customer and company. | |||
<nowiki>*</nowiki> Signup: Prefill fields | |||
<nowiki>*</nowiki> Location sharing between friends: Facilitate real-time location sharing for efficient meetups. | |||
* Real time updates in a privacy-sensitive way, using server chosen by sender. Allow sender to choose how long to send updates: Not, 1 hour, 1 day, forever. | * Real time updates in a privacy-sensitive way, using server chosen by sender. Allow sender to choose how long to send updates: Not, 1 hour, 1 day, forever. | ||
* UI: Show person on map. Possibly with trace (locations in the last few minutes) and direction (where heading). | * UI: Show person on map. Possibly with trace (locations in the last few minutes) and direction (where heading). | ||
* Open location in preferred routing app (Google Maps etc.), allowing me to route there. | * Open location in preferred routing app (Google Maps etc.), allowing me to route there. | ||
* Also: Location destination (complement to street address), navigation (from/to) | * Also: Location destination (complement to street address), navigation (from/to) | ||
* Calendar invitation (exists, standard, but complex): Propose meeting event. Invitee can respond with Yes/No/Maybe | |||
* Poll: Create a poll system for anything that needs opinion of others, similar to what | <nowiki>*</nowiki> Calendar invitation (exists, standard, but complex): Propose meeting event. Invitee can respond with Yes/No/Maybe | ||
<nowiki>*</nowiki> Poll: Create a poll system for anything that needs opinion of others, similar to what | |||
WhatsApp and other apps do. | WhatsApp and other apps do. | ||
* Event Organization: Agree on the best time for meetings of a larger group. Integrates with the calendar: Can show which options conflict with existing meetings in my calendar, and easily reject those. When an option is chosen, add it to my calendar. Similar to Calendarly etc., but without external web site needed. Directly integrated in the mail. No need to sync my calendar to a third party service, therefore more privacy sensitive | <nowiki>*</nowiki> Event Organization: Agree on the best time for meetings of a larger group. Integrates with the calendar: Can show which options conflict with existing meetings in my calendar, and easily reject those. When an option is chosen, add it to my calendar. Similar to Calendarly etc., but without external web site needed. Directly integrated in the mail. No need to sync my calendar to a third party service, therefore more privacy sensitive. | ||
<nowiki>*</nowiki> Processing email bounces, vacation notifications and other automatic mail. | |||
* | <nowiki>*</nowiki> Email login verification: Button does http call, no browser page. Then automatically deletes the message. | ||
When in the browser form (see below), user agent can send email, without waiting for email from site. web form can contain token that the user sends to the site. User is in the form and confirms that he wants it to be sent. user can stay in the form without going to email app. | |||
* | <nowiki>*</nowiki> Travel Coordination | ||
* | * After booking a flight, adding the event to the calendar. | ||
* | * When the date is approaching, showing local transport options to/from airport, e.g. using Google Maps. | ||
* | * Show weather at target location | ||
* | * Compare KDE Itinerary app. | ||
* | * Flight: Change time zone in calendar app, for that day range only. | ||
* | <nowiki>*</nowiki> Event tickets: Like event + location + song | ||
* Compare AMP, but doesn't have meaning, Form is a JSON. | <nowiki>*</nowiki> Links | ||
* Request Data object (schema.org), contains fields | |||
* UI infers form from the data types | * Show small preview of the web page | ||
* Update form before load, with server sender via HTTP. | |||
* Already submitted | * Fetch page, find Structured Data in the page (e.g. recipe, spotify song etc.), extract the data. | ||
* Show what other people already submitted, e.g. polls. | |||
* Add meaning (SML) to each field. This allows the client to auto-fill the fields. | * UI | ||
* Mobile | |||
* Doesn't support web extensions | * Show it inline in the email (possibly with expander) | ||
* webviewer in mail client | |||
* replace mobile browser | * Show it on the sidebar | ||
* Use cases | |||
* Polls | * with an applet or app (see Song) | ||
* Rating | |||
* Comment | * Store as bookmark, with title, URL, and structured data | ||
* Ticket system changes | |||
* Appointment, e.g. doctor's appointment, with extra data | <nowiki>*</nowiki> Song | ||
* play the song with your preferred song app. Even if you send me a spotify link, I can still play it in Apple Music. | |||
* Follow the artist. Show new songs of that artist. | |||
<nowiki>*</nowiki> News / RSS | |||
<nowiki>*</nowiki> COVID vaccination yes/no with confirmation/signature | |||
<nowiki>*</nowiki> Issue and ticketing system | |||
* Reply to comment | |||
* Close issue, assign, change priority | |||
<nowiki>*</nowiki> Refresh information | |||
<nowiki>*</nowiki> Forms | |||
* Compare AMP, but doesn't have meaning, Form is a JSON. | |||
* Request Data object (schema.org), contains fields | |||
* UI infers form from the data types | |||
* Update form before load, with server sender via HTTP. | |||
* Already submitted | |||
* Show what other people already submitted, e.g. polls. | |||
* Add meaning (SML) to each field. This allows the client to auto-fill the fields. | |||
* Mobile | |||
* Doesn't support web extensions | |||
* webviewer in mail client | |||
* replace mobile browser | |||
* Use cases | |||
* Polls | |||
* Rating | |||
* Comment | |||
* Ticket system changes | |||
* Appointment, e.g. doctor's appointment, with extra data | |||
* Discovery of form via HTTP, after entering email address | <nowiki>*</nowiki> Discovery of form via HTTP, after entering email address | ||
# Patient enters doctor as recipient | # Patient enters doctor as recipient | ||
Line 129: | Line 178: | ||
# Doctor system can auto-process the request, e.g. appointment | # Doctor system can auto-process the request, e.g. appointment | ||
* Requesting appointment with doctor, person, restaurant | <nowiki>*</nowiki> Requesting appointment with doctor, person, restaurant | ||
* On web forms, display link to email with form, advertizing that I can send this by email | |||
<nowiki>*</nowiki> On web forms, display link to email with form, advertizing that I can send this by email | |||
* email client can prefill form values | |||
* calendar can show availability | |||
* calendar can show availability | |||
* Resource booking | <nowiki>*</nowiki> Resource booking | ||
* Meeting room | * Meeting room | ||
* Book it | |||
* Call maintenance staff | * Book it | ||
* Get info about equipment | |||
* Has QR code -> webpage | * Call maintenance staff | ||
* Get info about equipment | |||
* Has QR code -> webpage | |||
<nowiki>*</nowiki> When receiving links | |||
* whitelist of sites that offer schema.org meta data in their web pages | * whitelist of sites that offer schema.org meta data in their web pages | ||
* UI: Offer expander after link. When clicked, fetch webpage, extract schema.org data and offer corresponding UI. | * UI: Offer expander after link. When clicked, fetch webpage, extract schema.org data and offer corresponding UI. | ||
* fetch webpage, extract schema.org data and add it as SML | <nowiki>*</nowiki> When sending links (shared or pasted) | ||
* fetch webpage, extract schema.org data and add it as SML | |||
<nowiki>https://www.audriga.eu/test/sml-web/#/external?visual_debug=true&single=true&source=https://www.tagesschau.de/ausland/europa/ukraine-kinder-besatzung-100.html</nowiki> | <nowiki>https://www.audriga.eu/test/sml-web/#/external?visual_debug=true&single=true&source=https://www.tagesschau.de/ausland/europa/ukraine-kinder-besatzung-100.html</nowiki> | ||
Line 154: | Line 211: | ||
<nowiki>https://miro.com/app/board/uXjVLWh1v_c=/</nowiki> | <nowiki>https://miro.com/app/board/uXjVLWh1v_c=/</nowiki> | ||
== | === Alternatives === | ||
* PKPass (Apple) - Wallet, entry tickets, coupons | * PKPass (Apple) - Wallet, entry tickets, coupons | ||
Line 161: | Line 218: | ||
** Actionable Messages (Microsoft) <nowiki>https://amdesigner.azurewebsites.net/</nowiki> | ** Actionable Messages (Microsoft) <nowiki>https://amdesigner.azurewebsites.net/</nowiki> | ||
== | === Deployment === | ||
<nowiki>*</nowiki> When sending structured email, include in the human-readable text part a hint that this contains structured email and to change email clients. | |||
<nowiki>*</nowiki> Process emails using JS - converts HTML into structured email. Addons. MIT license. | |||
=== How to find more use cases === | |||
<nowiki>*</nowiki> What regular tasks are currently routinely done via email, but manually? How can we | |||
automate it? | |||
* | <nowiki>*</nowiki> What is currently done by WhatsApp etc, but not email? | ||
== | <nowiki>*</nowiki> What could be done, what nobody does right now? | ||
<nowiki>*</nowiki> In what other aspects of users routines there is still space for automation? What other ideas do we have? | |||
====== URI schemes ====== | |||
<nowiki>*</nowiki> Fallback | |||
* Browser or OS have fallbacks hardcoded, for each URI scheme | * Browser or OS have fallbacks hardcoded, for each URI scheme | ||
* Fallback URL in URI schemes, generic | * Fallback URL in URI schemes, generic | ||
Line 175: | Line 243: | ||
<nowiki>https://searchfox.org/mozilla-central/source/toolkit/components/extensions/schemas/extension_protocol_handlers.json</nowiki> | <nowiki>https://searchfox.org/mozilla-central/source/toolkit/components/extensions/schemas/extension_protocol_handlers.json</nowiki> | ||
== | === Webbrowser === | ||
<structured data="JSON with schema.org">Fallback UI</structured> tag | <structured data="JSON with schema.org">Fallback UI</structured> tag | ||
Line 188: | Line 256: | ||
* Show user's preferred music player inline in the page, to play the song. Play via Spotify, Apple Music, local player etc. Player UI in the page. | * Show user's preferred music player inline in the page, to play the song. Play via Spotify, Apple Music, local player etc. Player UI in the page. | ||
== | === PWA: WebShare === | ||
* register webapp in Android for "share" button | * register webapp in Android for "share" button | ||
* register mimetypes | * register mimetypes | ||
== | === Specs === | ||
* HTTP endpoints: | * HTTP endpoints: | ||
Line 214: | Line 282: | ||
** https://<emaildomain>/.well-known/structured/person/<emailaddress>/ | ** https://<emaildomain>/.well-known/structured/person/<emailaddress>/ | ||
** Returns: List of forms -> URL, which returns form content | ** Returns: List of forms -> URL, which returns form content | ||