Markdown Version | Session Recording
Session Date/Time: 21 Mar 2022 13:30
jmap
Summary
The jmap and extra session covered updates and discussions on several drafts. Key discussions included clarifications and proposed changes for JMAP Blob (renaming blobSet to blobUpload, removing concatenate, and discussing blob/query and metadata retrieval), JMAP Calendars (concept of "server as source," default calendar behavior, default alerts, and per-user properties), and JMAP Tasks (new properties, progress state extensions, and grouping properties into capabilities). S/MIME signing and encryption for JMAP, Sieve Action Registry, Sieve Snooze, Sieve IMAP Process, and IMAP Partial/Message Limit were also reviewed, with several approaching Working Group Last Call or publication.
Key Discussion Points
JMAP S/MIME
- Status: All feedback addressed, minor formatting (XML v3 emphasis) pending.
- Outlook: Expected to be published soon.
JMAP Blob
blobSettoblobUpload: Renamed as it only supports creation, not updates or destruction. Creation IDs are still used for back-referencing.concatenateremoval: The concept was removed; uploads are now always a list of byte/octet sources, simplifying the model.- Capabilities: Simplified maximum upload size specification.
- Metadata Retrieval: Discussion on explicitly noting that
blob/getcan retrieve only the size property, allowing clients to get metadata without server reading the full file. blob/query: Proposal for ablob/queryto list all blobs (e.g., for replication/migration). Concerns raised regarding its fit with JMAP principles (no state string for change tracking, large data implications, pagination challenges). It was suggested that references from actual JMAP objects (Email,CalendarEvent, etc.) remain the encouraged way to find blobs.- JMAP for Files: Confirmed as a separate, future document that would likely leverage JMAP Blob for upload.
JMAP Quotas
- Simplifications: Removed Quota IDs (fetchable via
quota/get), simplified scope and resource type extensions, and renamedsizetooctetsandlimitto a more generic definition. - Review: Alexey Melnikov to review for consistency with the upcoming JMAP Core Quota RFC.
JMAP Sharing
- Status: Near completion, requiring some wordsmithing.
- Outlook: Expected to progress to Working Group Last Call soon.
JMAP Calendars
- "Server is Source" Concept:
- Proposed adding a new property (
isControlleror similar) toCalendarEventto indicate if the server creating/storing the event is its primary "controller" (e.g., responsible for sending invitations). This helps clients determine appropriate UI behavior. - Naming:
isSourcewas deemed potentially confusing due tosourcein JMAP Tasks.isControllerwas suggested.
- Proposed adding a new property (
- Default Calendars:
- CalDAV mandates a default calendar; it was largely agreed JMAP Calendars should align.
- If a default calendar is deleted, the server should automatically promote another read-write calendar as the new default. This behavior should be explicit in the spec.
- The
defaultCalendarIdin user preferences could be null if no scheduling is intended for the account.
- Default Alerts:
- Server may have vendor-specific behavior for copying default alerts when a new calendar is created (e.g., from the user's current default calendar), provided the server returns the set defaults to the client.
- Clarification needed on whether default alerts can be set on a calendar if the user does not have
mayUpdatePrivateACL.
- Calendar Preferences Object: Discussion on adding
firstDayOfWeekand preferred date/time format to theCalendarPreferencesobject. - Per-User Properties: Proposal to modify the
js-calendarspec registry to explicitly mark properties that are treated as per-user (e.g., alerts in a shared calendar) to clarify server behavior in team mode.
JMAP Tasks
- New Properties:
source: String indicating origin (e.g., "email", "mobile app").estimatedWork: Abstract estimation of work (distinct fromestimatedDuration).impact: String for issue tracking (e.g., "major", "block").relatedTo: Extension ofrelationobject to include values likeblockedBy.
- Extended
progressProperty: Added new values (e.g.,done,notDone,deferred,waiting,resolved,feedback) to better map diverse task system states. Clarification requested on the distinction betweenresolvedandcompleted. - Grouping Properties into Capabilities:
- Acknowledging the heterogeneity of task systems (e.g., some don't need recurrence), a capability-based approach was proposed.
- Properties would be grouped into feature sets (e.g., "common," "time estimation," "advanced scheduling").
- Servers would advertise supported capabilities (e.g.,
supportsTimeEstimation: true/false), allowing clients to adapt. - Proposed a new
notSupportedset error for properties a server knows about but chooses not to implement, distinct frominvalidPropertiesfor unknown properties.
- Blob Created Timestamp: For attachments linked to tasks, the "created" timestamp should be a property on the
Linkobject itself, representing the time the link was created within the JMAP system, rather than the blob's intrinsic creation time. - Keywords/Categories with Colors: Explored adding keyword/category properties for task lists with associated colors, potentially aligning with calendar categories.
- Feedback on new properties: Discussion points raised on the interoperability and value of free-text fields for
source, the distinction betweenestimatedWorkandestimatedDuration, and the necessity ofimpactwhenpriorityexists.
JMAP S/MIME Signing & Encryption
- Functionality: Extension to allow signing and/or encrypting messages on send via JMAP.
- Open Issues:
- Control over S/MIME message generation (
multipart/signedvs.application/pkcs7-mime). - Header protection: Default value (true vs. false) for protecting headers. Recommendation from Lamps WG to default to
truewas discussed. - Decryption: Complementary feature that would require a different approach (e.g., via decrypted blobs).
- Control over S/MIME message generation (
- Trust Model: Delegating secret keys to the JMAP server implies a trust model where the client and server are considered part of the user's trusted "end."
EXTRA Quota
- Status: Ready for publication, pending an IANA website text update.
Sieve Action Registry
- Status: Template and initial registrations are complete.
- Pending: Adding comments about
rejectconflicts.
Sieve Snooze
- Status: No updates, implemented in Cyrus IMAP and deployed at Fastmail. Works as intended.
Sieve IMAP Process
- Functionality: A mechanism for users to control how the IMAP server processes iTIP (calendar) messages (e.g., accepting invites, processing updates, removing on cancel), leveraging Sieve.
- Options: Includes specifying external addresses for processing, a default calendar for new invites, options to only process updates (not new invites from untrusted sources), and variables to store the outcome or error messages.
- Feedback: Suggestions to split
updateandcancelas distinct outcome values. The architectural implications for varying IMAP server implementations were noted, but the approach standardizes user control.
IMAP Partial / Message Limit
- Partial: An IMAP extension to request a subset (page/range) of messages in search and UID FETCH responses, especially useful for large mailboxes. Supports negative numbers for "from end of mailbox."
- Message Limit: Server-imposed limit on the number of messages an operation can apply to (e.g., 10,000 messages). This helps servers avoid resource-intensive operations on extremely large mailboxes.
- Interaction with COPY/UID COPY:
- Problem: If a client requests copying more messages than the
MESSAGE-LIMIT, how should the server respond? - Decision: The server should reject (
NO) the operation outright rather than performing a partial copy and returningOK. This avoids misleading clients and ensures clients that understandMESSAGE-LIMITcan perform batch copies. Naive clients would fail safely.
- Problem: If a client requests copying more messages than the
- Interaction with RENAME INBOX: It was suggested that
RENAME INBOX(which often involves copying) should be an exception and proceed regardless ofMESSAGE-LIMIT.
Decisions and Action Items
Decisions
- JMAP S/MIME: Ready for publication.
- JMAP Blob:
blobSetrenamed toblobUpload.concatenateremoved.- Spec to explicitly mention
blob/getcan retrieve only size metadata.
- JMAP Calendars:
- A new property (
isControlleror similar) will be added toCalendarEventto indicate server control. - Servers should ensure at least one read-write calendar for scheduling. If the default is deleted, the server may auto-promote another.
- Vendor-specific behavior for copying default alerts on calendar creation is allowed, provided the server returns what it set.
- The
js-calendarregistry will be modified to mark per-user properties.
- A new property (
- JMAP Tasks:
- Extend existing progress value registry for
progressproperty. - Adopt a capability-based approach with feature sets for JMAP Tasks.
createdtimestamp for blobs (attachments) should be a property on theLinkobject.
- Extend existing progress value registry for
- EXTRA Quota: Ready for publication.
- Sieve Snooze: Ready for Working Group Last Call.
- IMAP Partial / Message Limit: Server should reject COPY/UID COPY requests that exceed
MESSAGE-LIMIT(not partially succeed).
Action Items
- Bron: Post responses to JMAP Blob mailing list, update draft with
blob/getadvice, then request WGLC for JMAP Blob. - Alexey Melnikov: Review JMAP Quota document for consistency with JMAP Core Quota RFC; implement and test
partialin client; request WGLC for JMAP S/MIME Signing/Encryption; request WGLC for Sieve Action Registry. - Rene: Request WGLC for JMAP Quotas after Alexey's review.
- Neil Jenkins: Update JMAP Sharing document, then request WGLC. Make changes to JMAP Calendars based on discussion, add examples, aim for WGLC.
- Joris Baum: Clarify
resolvedvscompletedfor JMAP Tasksprogressproperty; refine grouping of JMAP Tasks properties into capabilities; consider feedback onestimatedWork,impact, andsourceproperties. - Robert M\u00fcller: Draft a
notSupportedset error for JMAP; explore a general property change tracking spec across JMAP object types. - Ken Murchison: Post call for adoption of Sieve IMAP Process on mailing list; update Sieve IMAP Process draft (e.g., split outcome values, add to
sieve-actiondocument). - Working Group: Provide feedback on JMAP Blob, JMAP Quotas, Sieve Action Registry, and Sieve IMAP Process. Discuss default value for JMAP S/MIME header protection.
- Alexey Melnikov: Add an explicit statement to IMAP Message Limit spec regarding
RENAME INBOXas an exception to message limits.
Next Steps
- JMAP Blob: After updates and WGLC, submit to IESG (target Q3 2023).
- JMAP S/MIME: Publication pending.
- JMAP Quotas: WGLC pending review.
- JMAP Sharing: WGLC pending update.
- JMAP Calendars: WGLC pending updates and examples (target Q3 2023).
- JMAP Tasks: Continue refinement based on feedback, focusing on capability grouping and property clarifications.
- Sieve Action Registry: WGLC pending update.
- Sieve Snooze: WGLC to be requested.
- Sieve IMAP Process: Seek working group adoption.
- IMAP Partial / Message Limit:
partialready for WGLC after client testing;message-limitmay require further work and discussion on mailing list. - JMAP Address Book: Updates in progress (target Q3 2023).
- EXTRA Charter: The milestone to update the EXTRA charter will be deleted, as discussions on email core charter are happening in the Dispatch WG.