软工+C(10): 团队项目[NABCD] - 对话式编辑
上一篇:助教指南,持续更新...
下一篇:从命令行开始逐步培养编程能力(Java)
动机(Motivation)
Eating your own dog food, also called dogfooding, is a slang term used to reference a scenario in which a company uses its own product to test and promote the product. --wiki:Eating your own dog food
说明:本文写的略啰嗦,请看评论区的白话版。
[N] Need
典型用户场景
场景1:
小明(xiao ming客串软件工程届系列...)今年9月1号小学一年级入学,直接硬着陆,开始进入一个新环境。正当家长们担心孩子们能否适应新环境的时候,家长们发现真正硬着陆的是家长们自己。语文老师/数学老师/英语老师每日都在群里布置作业,班主任publish了一个又一个开学大礼包:家长微信群里有很多需要协同编辑的文本:例如统一搜集每个学生的某个信息;统计有哪些人要购买一个汉字/英文字母描红本;编辑并发布作业;多人协同报名表单;简单分工文本;
编辑特点:文本段,需要一些简单的装饰(排版),需要一些简单的层级结构,需要能支持快捷的多人协作编辑。
场景2:
高阶兴趣群成员:2-3个这样的群。执行群主在日常运维中,有效提取群里的同主题记录,合并转发到其他群。或者合并后做成PDF等。有时候,很多时候多个同主题记录很有价值,需要经过进一步加工整理成相对正式的文本。编辑过程中,需要多个成员协同编辑。
场景3:
博客/公众号作者:走在路上思考的时候又一些灵感,需要记录下来;在和人face to face聊天中有一些需要临时记录的文本;在看书的时候,有一些需要临时拍照的文本。这些文本需要在稍后做整理合并成更有价值的有结构化的完整的文本,然后发布博客。有的时候需要邀请朋友协作编辑,但是博客/公众号本身并不支持协同编辑。博客也许需要经常更新改正,如何最省成本的更新?
场景4:
摘要重度用户:浏览器里阅读的链接很有价值,需要简要摘录描写并收藏,过后稍微做一些结构化编辑调整,发布,或者可能希望批量提取其中一些条目到一篇文章末尾做参考文献(references);微博上看到一段太酷了的文本,想要复制下来,丢到同主题列表里,过后做一些结构化编辑,增加自己的观点,描写,转成一个段评,并分享/发布到微信群/QQ群,朋友圈。
场景5:
wiki疯子:喜欢对自己分散在群聊天/微博/博客/代码仓库里的的各种文本打标签,并且让这些“分布式”的文本之间有互相link的地方,使得它们可以互相串在一起。就像一条linked-list。
场景6:
表情小王子:最新的消息,滥用别人的头像/照片做表情包次数达到一定层的是侵权的。不过表情小王子很喜欢在文本里插入一些丰富的表情包来让文本生动起来,或者大道强调、弱化、突出对比的作用,这里面暗含着文本结构化的一些规律。
场景8:
虚位以待,你来填充....
....
结论
- 核心痛点:“手机上的编辑App不能满足日益增长的碎片文本结构化协作编辑需求。”
- 可选目标用户:
- 幼儿园/小学/中学:教师与家长交互
- 大学:教师助教与学生交互
- 兴趣群组:群主/成员 日常运维编辑
- 编辑/博客作者
[A] Approch
功能分解
设计软件就是要结合不同的要素,设计出超出预期好用的软件。最开始触发本次任务的时候,核心关键字是:MarkDown+在线协作+Diff。我们经过分析,看到并不是要做一个传统的MarkDown编辑器;在分析的过程中,Diff也暂时丢失了,这没关系,做一个设计变更,把Diff留做后期的高级功能。
在NABCD的过程中,我实际上进行的顺序是:C/N/B/A/D。因此,到了A这里,我们在再次回顾下核心诉求:
- 针对移动平台/浏览器,优先针对Android。
- 针对碎片短文本。
- 独立App还是小程序?选择独立App,但是要与IM有分享/点击使用的可访问性。
定义核心结构:
- 片段管理,一个片段包含:tilte/desc/list三个固定元素,
- 每个元素的内容可以从微信/QQ/微博等地方复制粘贴,或者分享过来,并提供一些针对性的智能格式化
- 章管理,一个章包含引用多多个片段
- 片段/章,都可以打标签,主页通过标签点开对应的聚类面板
定义核心功能:
- 片段编辑:编辑/预览,条目前增加,条目后增加,删除条目,缩进.
- 点击列表元素的时候,内容会自动同步到聊天框,此时可编辑,同步到条目里。
- 章编辑:添加/移除片段,缩进。
- 邀请协作者(设置上限),协作编辑,编辑的同时可以是聊天,所以列表里的条目最后未必会都进入文章,比如灰色显示这是一条留言。
- 样式选择,片段和章,都可以选择与定义的结构样式,例如有的人喜欢用emoji做结构排版装饰,有的人喜欢用表情包,有的人喜欢用好看的字体。
- 分享,导出成纯文本/图片/PDF,分享到其他App。
定义高级功能:
- 片段和章节里需要生成自动插入的标签页面短链接。标签页可以是public/private状态。
定义扩展功能:
- 支持语音输入,自动转文本并插入条目
- 支持图片插入,需要考虑图片的图床选择,让导出的markdown,在插入别的博客的时候不需重新导入图片。
- Diff,怎样算好的Diff,参考:https://github.com/netj/markdown-diff
暂时写到这,上个简陋的草图聊表心意,注意所有的编辑行为看上去都是在聊天对话框里完成的,但是选择是在列表里的:
[B] Benefit
Core
- 有效“编辑”碎片聊天/帖子/超链接/...文本
- 针对碎片文本,针对短文本,瞄准轻结构化
- 提高效率于无形之中,在你看不见的地方动手术
- 让你与自己编辑的文本之间产生对话,看到过程
- 便利的使用经过设计的轻结构套装
FAQ
Q:我用PC软件就可以编辑富文本?
A:我们不得不在PC上编辑,是因为手机上没有好用的编辑。
Q:我用Notepad+MarkDown就可以编辑任意需求的文本。
A:是的,命令行工具很高效,很多时候比GUI软件高效精准,为什么没有一统世界?
Q:Quip/石墨等软件编辑就可以了。
A:要命的是它们都不支持导出MarkDown。
Q:Quip/石墨就可以协作编辑了。
A:它们很优秀了,特别是石墨在微信里分享/协作编辑便利,但是这种协作还是以文档为中心的。
Q: 这和某些语音记录再整理的软件比有什么优势?
A: 你知道,这个世界上有无数的人不喜欢语音,我们做好文本用户就好了。再者,很多场景用语音并不正式。
[C] Competitors
现有Editor简述
十年之前只有PC平台,提起编辑器,大概所有人都会第一时间想到下面这些:
- PC Rich Editor :Microsoft Word/WPS
- Pure Text Editor:Notepad
- For Programmer:VIM/Emacs
- Web Rich Editor:Blog Editor Such as WordPress
十年之后,很多不同,平台已经发生翻天覆地变化,移动设备几乎是占据了生活中的碎片时间段。
- PC上有了更多的Editor:
- Microsoft Word/WPS依然强劲,Microsoft Office 360从卖拷贝变身卖年费,十年前我用过盗版,十年后我续费了好几年了。
- Sublime Text, Initial release: 18 January 2008; 9 years ago,刚发布了3.0正式版,时不时弹框提醒你给作者付费
- Visual Studio Code, Initial release: April 29, 2015; 2 years ago,不收费
- ...
- 移动设备上的普通Editor:
- 移动上的Word和WPS我从来没用来做编辑,只是用来做阅读器。
- 每个手机厂商都自带一个“便签”,有基本的编辑文本功能,这应该是源自苹果,我第一次使用这样的一个便签文本编辑器是在一个IPAD上。
- 在没有选择的情况下,我会使用便签来处理一些简单的编辑。
- 多标签页风格的纯文本编辑器,例如超卓文本编辑器:http://www.phoenixstudio.org/editor
- 很少用来编辑,主要是用来打开邮件里的txt附件。
- 移动设备上的现代Editor,Editor的形态发生了改变:
- 微信/QQ/微博:你没看错,它们应该是移动设备上大部分编辑行为Create/Publish的第一现场,它们才是移动设备上的Editor王者。
- 大量的微信/QQ小程序,很多小程序的功能非常简单单一:比如就是用来给群发一个通知,发布一个作业。
- Evernote/Microsoft Onenote: 由于云同步+编辑+分享,有许多人使用这类笔记软件。
- 微信/QQ/微博:你没看错,它们应该是移动设备上大部分编辑行为Create/Publish的第一现场,它们才是移动设备上的Editor王者。
- 移动设备上的协作Editor:
你会说:“有了这么多好用的Editor,还不够用么?”,我们先做减法:
- 在碎片时间直接在手机上编辑时,我能否不开电脑?PC系列全死。
- 只能用来阅读的,网络不稳定的,又死了一票。
- 少数Geek才知道的软件,不通用,再死一票。
- 歪果仁做的软件不接地气,Quip很好,但是死了。
到目前为止,剩下两个是竞争对手:
- 微信/QQ/微博:你没看错,它们应该是移动设备上大部分编辑行为Create/Publish的第一现场,它们才是移动设备上的Editor王者。
- 大量的微信/QQ小程序,很多小程序的功能非常简单单一:比如就是用来给群发一个通知,发布一个作业。
- 石墨 如果我给它起广告词:“可协同编辑的共享文件夹,微信上第二好的编辑伴侣”。
前者是简单编辑/发布场景,后者是在线协作/邀请/编辑/发布场景。
编辑的语言
Editor System里一直有几大不同的设计哲学/流派:
- WYSIWYG: what you see is what you get,像Microsoft Word/Indesign都算,Indesign不在本文目标范围。
- WYTIWYG: what you think is what you get,这类系统一般用脚本(Script)描述所要的排版结构,LaTeX/Markdown都算,我们只考虑MarkDown。
上述Editor相关的App里,Microsoft Word/Quip是两类在WYSIWYG方面做的比较好的软件。但是这两款都被干掉了,不过Quip这个Editor的智能编辑行为我们可以学习,你可以体验一下Quip的编辑行为。
考虑MarkDown,不考虑PC软件,Web上有stackeditor.io这类左侧编辑/右侧预览风格。以及像CmdMarkDown这里把MarkDown的功能做各种扩展的大而全的方式。然而在手机上,它们没机会,把MarkDown支持的label无限扩展也不是我们的目标。
在Android手机上,搜索MarkDown,只有一款MarkDownX这个App还算凑合:
- 稍加习惯后,可以掌握基本的MarkDown插入Head、List、Table、Picure、Code并得到一个MarkDown文本
- 可以预览并分享,分享的功能里有导出为MarkDown文本,你可以用来发博客。然而并不行,这些MarkDown编辑都有一个通病:图片是使用本地路径,你一旦拷贝到别的地方就只能呵呵了。只有到处为图片是可用的,这满足了基本的需求:简单编辑+导出图片分享。但是不能协作编辑。
PC软件里有一个常见的软件,大家习以为常,然而我认为它的功能却是全世界最成功的文本结构化功能:Microsoft PowerPoint的SmartChart,进化了如此多年,基本上你只要负责填空即可。选择Smartchart之后,你只要在可视化的结构里,填充你要的文本,WYSIWYG,就直接看到了结构的效果。我以前刚做GUI编程的时候,实验过挺多类似Smartchart的控件设计。
[题外话],在编程里也有所见即所得,请看linq2xml,你写出来的代码结构就是你要的xml结构。
[D] Delivery
- 开发中邀请1-2个核心用户使用(碎片编辑需求很高的人)/反馈,改进。
- 每个小发版都请这两个用户提出反馈意见,做反馈的归类,未必直接采纳。
- Alpha发版后,邀请第3个人试用,这三个人在Beta开发中继续迭代,这3个人做天使用户。
- Beta后,邀请1-2个大V试用。这样有5个用户,如果这5个用户满意,就请这5个用户通过邀请方式5个用户试用。
- 对这10个用户反复迭代改进一个周期。可以同期做一些简单的PR。
- 初期目标就只做10个用户,稳定后在一些典型用户群里试用。
- ...