摘要
- iCalendar 扩展草案第 08 版新增
OWNER参与角色,却明确规定它只是提示性描述,不能单独授予修改日历对象的权限。 - JMAP Calendars 展示了真正的控制面:带有所有者角色的参与者必须匹配当前账户身份,写操作还要通过日历权利与活动约束的判断。
- 解析标签、身份匹配、授权、保存变更、发送排期消息、远端处理以及参与者看到结果,分别需要证据。
危险的日历对象未必格式错误。它可能完全符合语法,通过所有解析器,并在界面上显示一个极具权威感的“所有者”徽标。真正的故障始于软件把这项描述提升为权限。
iCalendar 扩展草案第 08 版为参与者定义 OWNER 角色。草案说,所有者可以做影响全部参与者的变更,例如调整活动时间或增删参与者与角色。紧接着,它划出更重要的边界:该角色只是提示,其语义取决于所使用的日历交换协议;实现不得仅凭对象中出现这个角色,就允许用户修改日历对象。
这条规则把数据携带的主张与系统实际授予的权力分开。在日历产品里,两者很容易混淆,因为角色与时间、地点、重复规则和参与者一起进入同一个可操作界面。
标签可以跨系统,权限不能自动随行
RFC 5545定义了可移植的日历表示。同一对象可能经过文件、邮件、CalDAV 存储和 JMAP 服务,而这些环境的账户、身份与权限模型并不相同。因此,角色字段不可能携带一个放之四海皆准的写授权。
扩展草案明确没有定义 OWNER 在 CalDAV 中的权限语义。接收方可以保存并展示它,却不能补造交换协议未给出的写规则。即便将来 IANA iCalendar 注册表收录该名称,注册也只是协调标识和规范引用,不会认证参与者、绑定账户或发放权限。
这与最小初始规范的原则一致:共同格式只规定互操作所需的最小语义,不应吞并未来的本地决策。OWNER 可以成为共同词汇,授权仍应留给交换协议和运营它的权威方。
JMAP 把缺失的判断步骤展开了
当前的 JMAP Calendars 草案给出一个具体例子。用户要成为活动所有者,至少要同时满足两个条件:某个 Participant 带有 owner 角色,并且该 Participant 对应账户中属于该用户的 ParticipantIdentity。
即便如此,也没有产生通用能力。mayWriteOwn 只在相应日历拥有该权利、并且用户确实拥有该活动或活动没有所有者时,允许创建、修改或删除。mayWriteAll、mayRSVP、mayShare 与 mayDelete 是不同权限,不能被一个“所有者”开关吞并。
在 CalendarEvent/set 中,服务器必须执行 myRights 返回的权限;不被允许的请求应以 forbidden 拒绝。这个判定结果才是授权回执,角色只是判定输入之一。
活动来源、隐私、重复规则和所属日历还会继续收窄结果。若一份活动副本不是排期来源,即使日历权利看上去较宽,客户端也只能修改每用户属性,因为下一次来自权威来源的更新可能覆盖本地副本。
| 阶段 | 能证明什么 | 仍不能证明什么 |
|---|---|---|
| 解析 | 合法语法中存在 OWNER |
谁声明、是否仍有效 |
| 身份匹配 | 参与者对应当前账户身份 | 对该日历和活动的权利 |
| 授权判定 | 当前规则允许指定操作 | 变更是否成功落地 |
| 状态变更 | 服务器接受了新状态 | 是否发送了排期消息 |
| 传送回执 | 另一系统收到消息 | 是否应用并展示 |
| 参与者回读 | 某参与者看到了变化 | 所有副本是否持续收敛 |
保存成功不等于会议已经对所有人改变
JMAP 可以在修改排期活动时请求发送消息。这个请求与本地状态变更相邻,却不是交付证明。服务器可能成功保存本地副本,选出收件方,随后遇到传输失败、远端拒绝,或把更新送到一份无人查看的副本。
RFC 6638与 RFC 4791说明了为何存储和排期必须分别取证。日历集合、用户的排期权限、发件界面与参与者副本相互关联,却不是一个原子事实。
可信的短记录应把这些回执连起来:源对象摘要、角色位置、账户身份匹配、权利版本、来源与隐私状态、策略判定、变更标识及前后摘要、收件方选择、传输结果和参与者回读。无需记录私人活动内容;受限结果、稳定标识与摘要已经足够。
标准进度不是运行事实
Datatracker 页面显示,第 08 版是 CALENDAR EXTENSIONS 工作组拟作为 Proposed Standard 发布的互联网草案,目前已请求发布。修订历史和 shepherd 报告记录了流程。它还不是 RFC,也不能证明已部署产品的行为。
同一草案新增 SHOW-WITHOUT-TIME,同时强调这个展示提示不会改变用于冲突判断的真实时间跨度。这体现同一种纪律:显示方式不得暗改深层状态;OWNER 标签同样不得暗改授权。
运行代码优先要求检查真正解析到的身份、载入的权利和服务器给出的结论。The Policy Mirror揭示了权力如何藏在身份查找、权利缓存、来源判断和默认行为中。Reality Layers则要求把语法、角色、权限和结果保持为不同现实。
领导者真正该问的不是“日历是否写着所有者”,而是“哪个系统依据哪一版状态授予了哪项操作,后续有什么证据表明变更抵达了依赖它的人”。
来源
- Datatracker 文档页
- 修订历史
- Shepherd 报告
- JMAP Calendars 文档页
- Lu Heng:Minimum Initial Specification
- Lu Heng:Reality Layers
- Lu Heng:The Policy Mirror
- Lu Heng:Running-Code Primacy
- IANA iCalendar 注册表
- 第 07 版文本
- 第 08 版 HTML
- 第 08 版文本
- 第 08 版 XML
- JMAP Calendars 第 31 版
- RFC 4791:CalDAV
- RFC 5545:iCalendar
- RFC 6638:CalDAV 排期扩展
- RFC 7986:iCalendar 新属性
- RFC 9073:活动发布扩展
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance

