实时协作

这是阶段3:合作路线图。主要项目有实时协作,工作流,修订,媒体库,块库、和管理设计.

介绍

实时协作的主要目的是将功能构建到 块是一个抽象术语,用于描述使用WordPress编辑器组合在一起形成网页内容或布局的标记单元。这个想法结合了过去可能通过短代码、自定义HTML实现的概念,并将发现嵌入到单一一致的API和用户体验中。编辑,以便并行协作、共享编辑和同行的在线存在成为可能。然而,支持这些工作流不仅仅是关于并发,还涉及解除WordPress中长期存在的限制,例如当两个人同时尝试编辑时锁定一篇文章。有各种技术层支持此功能,所以让我们快速回顾一下它们是什么,以及开始时需要考虑什么。

动画模型显示多个用户在共享编辑器屏幕上移动光标。

首先,这些功能应该面向尽可能广泛的受众。这意味着使用不依赖于复杂服务器设置的技术,这将限制人们在WordPress站点内进行协作的能力,而不管托管基础设施如何。这可能会使我们走上建立在开放网络标准之上的道路,比如网络RTC在这里,我们可以确保部署这些功能,而不会给后端带来任何特殊负担。WordPress本身可以提供一个易于扩展的信令服务器,很可能是通过REST端点进行身份验证握手。

然而,我们还希望确保该系统具有足够的灵活性,可以与其他服务器实现一起扩展,以满足更高级的需求,例如WebSockets服务,以便扩展到超出对等并发浏览器连接或无法建立对等连接的当前限制。这自然是插件插件 插件是一个包含一组功能的软件,可以添加到WordPress网站。他们可以扩展功能或为WordPress网站添加新功能。WordPress插件是用PHP编程语言编写的,并与WordPres无缝集成。这些可以在WordPress.org插件目录中免费获得https://wordpress.org/插件/或者可以是第三方基于成本的插件领土。

除了对等共享设置之外,我们还需要为冲突冲突 当修补程序更改在创建修补程序后修改的代码时,会发生冲突。考虑这些补丁不新鲜的,并将需要刷新或冲突需要断然的.能够通过我们的块数据结构进行推理并随时间编排编辑的解决方案。为此,很可能Yjs公司会派上用场的,真是太棒了开源开放源代码 开放源代码是指原始源代码可以免费获得,并且可以重新发布和修改的软件。开源**必须**通过许可模式交付,请参阅GPL。实现的库无冲突复制数据类型(又名CRDT)显示为共享类型。在过去的大部分探索中,该库都取得了良好的成功古腾堡回购相关项目。该库的作者还直接参与了其中一些迭代,并提供了建议和反馈。虽然它对块数据的处理效果很好,但还没有与多实体文档配套使用。此外,正在进行的SQLite探索可能会为更广泛的离线首次体验发现其他想法和机会,其中CRDT需要在不同的抽象层处理。

范围

这是我们需要研究的广泛任务的总结:

  • 查看所有当前的探索他们的教训和权衡。
  • 概述一组挂钩挂钩 在WordPress主题和开发中,钩子是可以应用于WordPress中的动作或过滤器的函数。动作是WordPress中发生特定事件时执行的功能。过滤器允许您修改某些功能。用于挂钩筛选器和操作的参数看起来相同。需要通过块编辑器提供程序封装协作功能,如在浏览器之间共享编辑和对等状态。
  • 确保在模块顶部构建功能API程序API程序 API或应用程序编程接口是一种软件中介,允许程序相互交互并以有限的、明确定义的方式共享数据。因此,块作者无需对其块进行修改即可在协作环境中工作。
  • 设计并在界面中表示连接对等点的“存在”。将选择状态与界面的其他有用部分集成,如阻止列表侧边栏提要栏 WordPress中的侧边栏是指WordPres主题使用的小部件可读区域,用于显示不属于主内容的信息。它并不总是侧面的垂直柱。它可以是内容区域、页脚、页眉或主题中任何位置下方或上方的水平矩形。.
  • 取消并发编辑限制。现在WordPress将一篇文章锁定给当前编辑它的用户。另一个用户可以接管,但它不允许两个用户同时处理同一篇文章。
  • 查看撤消/重做堆栈和解决方案。这里可能需要一些修改。
  • 如果使用CRDT,请确保其设计用于多实体文档,这是第2阶段的较新要求,而不仅仅是第1阶段。
  • 使用跨块类型工作的对等插入符号和选择原语,并设计其语义和视觉表示。
  • 将离线视为编排编辑和事务时协作的一流用例。
  • 探索在用户浏览文档时“跟踪用户”的可能性。
  • 定义身份验证和消息传递语义。例如,WebRTC握手的特征超文本传输协议超文本传输协议 HTTP是超文本传输协议的缩写。HTTP是万维网使用的底层协议,该协议定义了消息的格式和传输方式,以及Web服务器和浏览器应对各种命令应采取的操作。 REST APIREST API REST API是RESTful Application Program Interface(API)的缩写,它使用HTTP请求获取、输出、POST和删除数据。这是应用程序前端(想想“手机应用程序”或“网站”)如何与数据存储进行通信(想想“数据库”或“文件系统”)https://developer.wordpress.org/rest-api/.请求发送到后端。提供诸如对等连接上的只读会话以及无法建立对等连接的情况等问题的答案。
  • 将WebRTC实现结构为可以交换的适配器。该体系结构应该是可插拔的,以便扩展器可以提供其他解决方案。
  • 概述错误场景和功能与离线第一功能的重叠。例如,对等方在进行编辑时失去了连接。如果您作为单个用户跨不同设备进行编辑,我们希望将其用于相同用户的分辨率。处理保存和修订分配。

参与进来!

如果你对实时协作的挑战感兴趣,或者想对项目留下任何反馈,请加入进来。

#古腾堡,#第三阶段