没错,这又是一个还没实现的理想,缺的是时间资源。
(工程设计)图的窘境
脑图、UML图、PPT中的图形,是经常用到的集中画图的方式。这些方式都会造成图片的绘制限制,或者使用限制。
使用A工具绘制而成的图片,非常容易的在 B/C/D... 等工具和场景中被「引用」。
内容价值弱反馈,变更无感知
目前大部分的绘图工具的设计,都缺乏对「协作」的支持。
也就是说,他们都假设了,「产物的作者 就是 使用者」。
简而言之,就是用同一个工具进行编辑、修改和演示。
从协作的角度来说,「产物的作者 不是 使用者」
简而言之,就是进行编辑、修改的工具,和进行演示的工具不是同一个,是相互松耦合的。
即便是实现了松耦合的工具设计,目前也缺乏 「使用者」 对于上游 「作者」 进行内容更新的通知与提醒。
这些因素,导致了内容的分享变得困难,对内容的价值评价变得无法进行。
二进制图片的内容管理
二进制图片,是没有办法采用面向文本的 diff 工具,对的内容进行精准比较的。
图的重度依赖者,又非常希望能够看到两张图片在内容上的细节差异,不想在一张图片的若干版本中,重复的进行着「找不同」的游戏。
这也是二进制图片,表达「图意」的难点。在数据处理领域,称之为「无结构的数据」。
这种称呼,其实是站在图片的使用者角度,无法用计算机直接理解图片的「图意」。
目前的人工智能或者说是机器学习,对于图片的识别已经有了长足的进步,能够识别「日常」的一些「简单图片」。
不过,对于「工程制图」的结构识别、模型还原的应用,还不多见。
图的制作
商业或者封闭的绘制工具
一般,商业的绘制工具,对图的物理格式,都采用特有的方式进行编码,即便是基于 XML 方式进行解析,大多数情况下,只能靠人猜测其含义。
同时,商业工具,还会持有一些「布局算法」,并可能以专利的形式进行保护。
这样,对于非官方的「图片浏览器」而言,则会产生布局效果差强人意的结果。
很明显的例子是,对于 Office 系列文件的图形化渲染, 用A工具绘制的图片,在B工具内打开,可能就会发生剧烈的变形。
也就是说,这些封闭的绘图工具,在产品设计的时候,有一个基本的假设,那么就是图片的绘制,与图片的浏览,都在本工具之内进行。 这可能是增加产品「用户粘性」的一个手段?
基于文本生成的例子
以git为代表的管理工具,是对文本文件,进行版本管理的最佳选择。
SVG 等等以 XML 为核心的文本格式矢量图,或者是以 PlantUML 为代表的,有自己特有语法的描述语言,可以进行多种输出图片格式的图形转换。
在软件领域,PlantUML ,是在设计阶段,最为「淳朴」的UML绘制工具,也就是说,整体布局由 PlantUML 自行通过算法完成,用户很多时候能够采取一些「小技巧」来实现布局上的「更高要求」。
可以说,PlantUML 是可以解决一些小规模程序的设计图的绘制问题。 同时还能够以文本的形式,对内容进行版本管理。
使用标记语言聚合内容
标记语言,是基于文本的,它很大程度上解决了内容与格式的紧耦合模式。
这种方式,相比传统的 Office套件(无论那个厂商),放弃了一些「所见即所得」的撰写体验(其实也有热心群众提供非官方插件支持),但释放了内容的「复用、分享」能力。
把修饰文字的「元信息」,通过简单的特殊符号,附加在特定的文字周围。
比较简单的和典型的有(按学习难度排序)
这些标记语言,都是基于文本的,并且天然的支持以「URL」的方式对图片进行引用。
例如,本文,就是用 reStructuredText 编写的,引用图片时候,只需要写成:
.. image:: /images/2017/01-13/the-way-of-pubsub-diagram-4.png
:height: 400px
:width: 450px
:align: center
就能够完成对一个图片的引用,当然,还可以是外链的URL。
图的引用
对,我没写错,是「引用」,不是「应用」。
也就是说,图的「作者」不是「引用者」,这种情况,在知识互连、知识共享、知识集成的时代,非常常见。
图的引用场景是广泛的,常见的有:
- 嵌入Office文件,例如Presentation
- PDF或者HTML格式的宣传册、白皮书、说明书
- 网站、博客、微博
- 微信公众号,还可能是多个
- 可内置渠道信息、支持条件跳转与有效期的动态二维码
老态龙钟的 Microsoft Office
其实,Apple家的Keynote也类似。只是Microsoft Office市场占有率更高一些。
- Microsoft Word Version 15.30 (170107)
不支持用URL引用一个「外部远程」图片。
- Microsoft Powerpoint Version 15.30 (170107)
不支持用URL引用一个「外部远程」Slide,图片也类似。
令人失望的 Office 365
可以看到,企业文化、产品理念的差异,很容易体现在「功能细节」上,用户的内心自然而然会有公道的评价。
意料之外的 PlantUML
可以说,PlantUML 是工具解耦上做的最充分的一个工具了(虽然任然有缺陷,例如对于中文的处理)
PlantUML 生成图片,可以基于「Web Service」进行。PlantUML 官方提供了一个演示的例子:
http://www.plantuml.com/plantuml/proxy?src=<your_puml_url>
http://www.plantuml.com/plantuml/proxy?src=https://raw.github.com/plantuml/plantuml-server/master/src/main/webapp/resource/test2diagrams.txt
有潜力的开源项目
Presentation领域的 SlideHub
虽然 SlideHub 不是直接对图片进行的分享,但是它基本上已经是除了 SlideShare 之外,自行搭建演示文稿分享的不二选择了。
SlideShare 和 开源的 SlideHub 都实现了对 Office Open XML 的解析,以及对于Slide的切片。
在 SlideShare 上,每个用户都可以收藏自己重点关注的 Slide ,而不用收藏 Presentation 的全文。
实际上, Office Open XML 是一个开放的 Office 文件标准。
Presentation的物理结构是基本上是这样的(用Zip解压工具,解压之后就能够看到,如果你不想看枯燥的标准的话):
几个关键的目录:
- _rels : 组织整个Presentation的结构,完成内容的编排。
- diagrams : 是以 XML 为物理结构的矢量图。
- media: 外部的二进制图片,或者视频。
- slideLayout : slide的基本布局模板。
- slideMaster : slide母版的基本布局模板。
- theme: 基本的矢量图配色方案。
如果,一系列的 Presentation 作者,是同一个人或者组织,那么这些 Presentation 的风格、主题应当较为类似。并且能够有很多的 diagrams 能够复用。
再进一步地,应当能够基于已有的 Presentation 进行快速的内容编排,形成一份新的 Presentation 。
另一方面,如果一些 Slide 发生了版本变更,那么那些引用这些发生变更的 Slide 的 Presentation的作者,也应当能够收到「变更提醒」,进一步的有帮助他们完成内容的自动更新。
也许这是 SlideShare 企业版所拥有的能力。( SlideShare 有企业版吗?)
不过,Google Slides 已经支持了 Import , 它缺的一个社区,缺一个对 diagram 这些素材的管理:
Document领域的 Mkdocs
企业,对于 Document 的需求是频繁的,例如:合同、使用说明书、设计说明书,或者出版物,都需要有「内容」与「排版」分离的素材管理模型。
MkDocs 是众多的「静态网站生成器」(SSG)中的一个 ( StaticGen 对他们有个简要的介绍 ) 。
另外,最著名的应当还要属于 gitbook ,但是它并不支持在企业中进行 on-premise 部署,只支持以 SaaS 的云模式提供服务。
它们好还是不好,这是个主观的判断,「合适」自身的特点,才是真的好。
最后,还需要一个内容运营平台
这个内容管理平台应当具备几个要素
- 面向个体的素材管理
- 基本形式与转换
- 版本
- 原作者
- 演绎者
- 发布与引用更新通知
- 面向平台的运营生态
- 基于最小粒度的评价体系
- 基于原作者的反馈评价
- 为知识付费