Polymorph的详细教程

155 阅读8分钟

Polymorph是我的一个项目,旨在创建一个智能媒体平台和生态系统,它是去中心化的、高性能的、低延迟的、易于使用的,并允许用户组成媒体体验。目前计划的功能可以把Polymorph带向许多不同的方向--所以Polymorph到底会在哪里 "着陆 "还得看未来。但总体方向是明确的。 它是关于建立智能媒体的工具。

Polymorph网站

Polymorph的官方网站是:plmph.com。

该网站还没有包含这么多的信息,所以这里的教程系列是目前了解Polymorph项目的最好方式。

什么是智能媒体?

读完介绍性段落后,你可能会有的第一个问题是。我说的 "智能媒体 "是什么意思?

当我们从使用 "手机 "一词转向 "智能电话 "时--使新一类手机 "智能 "的原因是它们能够运行应用程序。因此,手机从一个具有有限的、预装的功能的预置设备,演变为一个平台,最终用户可以在这个平台上决定安装和运行什么应用程序--从而根据最终用户的需要重新使用手机功能。此外,手机和应用程序积极尝试预测终端用户的需求和愿望(如果你让它们这样做的话--它们可能需要收集数据),使智能手机更加智能。

按照这个标准,网络和网络技术并不 "聪明"。一个浏览器只有3个核心功能:

  1. 加载一个网页
  2. 打开多个标签
  3. 将网页加入书签

除了这3个功能,网络浏览器并没有真正让终端用户自己做很多事情(也许除了Brave浏览器)。 默认情况下,只有客户端-服务器功能,没有对等功能。用户沦为网络开发者提供的任何内容的 "哑巴消费者"。没有创造性或突发行为的可能。这有点像平板电脑对台式电脑的作用。一种设备最适合消费,而另一种设备也很适合生产。

很奇怪,对吗?用户似乎能够使用非常先进的网络应用、桌面应用和移动应用--然而,浏览器必须简单得令人难以置信,否则用户就无法理解?

这就是我将试图通过Polymorph项目来改变的--释放世界的创造力。

聪明

我所说的智能是指使用户能够解决各种各样的问题(通用性),同时对普通人来说足够容易使用(易用性)。当然,这总是要在技术上的可能性和实现的时间上进行权衡。

仅仅是Polymorph让开发者变得聪明还不够。Polymorph必须使最终用户也能变得聪明。

此外,Polymorph应该使开发者和终端用户都能很容易地变得聪明,因为它很容易适应他们的需求。这意味着许多合理的默认行为,以及在可能的范围内,智能的自动适应运行时的实际使用。

这导致了以下关于智能媒体中的智能的定义,或目标。

  • 开发者控制的多功能性。
  • 终端用户控制的多功能性。
  • 智能软件的适应性。

媒体

我所说的媒体是指提供智能媒体体验所需的工具。这包括最终用户的应用程序,基础设施,协议,数据格式和内容类型和格式。

一开始,Polymorph将专注于常用的媒体格式,如文本文档、图形、图表、演示、动画、视频和音频。后来,Polymorph可能也会添加更多的应用程序风格的媒体支持--类似于网络应用程序的工作方式--但根据Polymorph的理念。

这导致了以下定义,或目标,智能媒体中的媒体意味着什么:

  • 终端用户应用程序
  • 基础设施工具箱。
  • 基础设施作为一种服务(可能)。
  • 协议
  • 数据格式
  • 内容类型和格式
    • 文本文件
    • 图形
    • 图表
    • 演示文稿
    • 动画
    • 视频
    • 音频
    • 应用程序
    • 上述内容的组合

Polymorph的主要部分

Polymorph由两个主要部分组成:

  • Polymorph Fabric
  • Polymorph应用程序

Fabric很可能是开源的。应用程序将可能是一个免费使用的应用程序,供用户较少的组织使用,而对用户较多的组织则有商业许可。什么是 "较少 "和 "较多 "用户之间的确切界限仍有待决定 - 但目前我倾向于前100个用户是免费的。这意味着一个组织必须达到相当大的规模,才需要为101号及以上的用户付费。

这两个主要部分将在下面的章节中作更详细的解释。

Polymorph Fabric

Polymorph Fabric是一个分布式系统基础设施工具箱。Polymorph Fabric将能够用于传统的客户-服务器拓扑结构,也可以用于其他拓扑结构,如分布式哈希表和点对点的网络。

Polymorph fabric将有自己的多环对等网络拓扑结构,它是为高效的媒体路由、组播和广播以及基于地理的拓扑结构而设计的,还有其他有趣和有用的功能。你可以在这里阅读更多关于如何工作的信息:Polymorph P2P网络算法

Polymorph结构将支持通过非阻塞的IO进行异步通信。为了正确而优雅地支持这一点,必须为Polymorph Fabric设计一个自定义的并发模型--基于单线程的并发技术

Polymorph应用程序

Polymorph应用程序是一个终端用户应用程序,它将作为一种 "智能媒体播放器 "发挥作用。Polymorph应用程序将能够连接到Polymorph Fabric来上传和下载媒体,但也能够通过网络(标准HTTP)下载媒体。

Polymorph应用程序将得到它自己的脚本语言。这种脚本语言将使用户能够通过在脚本中结合智能媒体格式来构成媒体体验。例如,将一个幻灯片演示或采访(音频或视频)与音频背景音乐等结合起来。或者--交互式探索电影,观众可以在某些点上选择动作,使电影采取不同的方向。

可组合性也会使我们更容易对其他媒体片段做评论,或从较小的部分或原始媒体片段组成较大的演示文稿等。我们到底能用可合成性实现什么将是有趣的探索。

Polymorph应用程序有可能在未来获得一些协作功能 - 但第一个目标是媒体功能。

Polymorph技术概述

为了使Polymorph的两个主要部分,即应用程序和织物,能够一起工作,Polymorph项目需要其他几个较小的部分。 我想这些部分(技术)将如图所示。

Overview of the core parts, protocols and specifications of the Polymorph Project

下面是这些部分的一个更有条理的列表:

  • Polymorph Fabric
    • 单线程并发工具
    • 背景线程工具
    • 异步网络IO工具
    • 非阻塞网络IO工具
    • 简单的客户-服务器功能
    • 点对点的网络功能
    • 多态数据格式
    • 多态协议消息格式
    • 多形体RPC协议
    • 多态的订阅-通知协议
    • 多态的多环路由协议
    • Polymorph隐私协议
    • 多态流存储
    • 多态流处理
    • 多形体虚拟机
    • 多态脚本规范
  • Polymorph应用程序
    • Polymorph UI组件规范
    • Polymorph媒体时间线规范

注意:在上图中,虚拟机和脚本是属于Polymorph应用程序的。然而,由于虚拟机在服务中也可能是有用的,并且由于应用程序无论如何都需要fabric工具包中的许多工具(例如,连接到一个结构),所以虚拟机和脚本语言可能位于Polymorph Fabric中。

我将在不久的将来更详细地解释这些部分。

其他技术中的功能相似性

Polymorph的目的是作为一个连贯的生态系统发挥作用。即使如此,Polymorph的不同部分与其他相当知名的产品和技术有一些功能上的相似之处。 Polymorph并不打算成为这些产品的直接替代品。我列出这些相似之处只是为了让你了解Polymorph最终会有哪些功能,这些功能是基于已经相当知名的产品和技术的功能。

例如,Polymorph的部分功能将与Kafka的功能相似,但Polymorph并不打算作为Kafka的替代品。列出这种相似性只是为了让大家更容易理解Polymorph的功能最终会是什么样子。

Polymorph部分其他产品
Polymorph数据MessagePack, CBOR, Protobuf, ION, RION
Polymorph流存储采集
多态流处理Java流、Kafka流、Apache Flink等。
Polymorph Polyring P2P拓扑结构Chord, Kademlia, Pastry, Tapestry