前一篇,我们分享了《2013深度DAU大会:王勇讲述 Linux Deepin 的发展趣事》,本文中,深之度开发部桌面应用开发组负责人侯少辉从软件开发的角度分享了 Linux Deepin 软件的开发历程,对此感兴趣的朋友可以看看本文的演讲实录。
侯少辉:Linux Deepin应用开发部主管
【侯少辉简介】
深之度开发部桌面应用开发组负责人。早期从事网络和运维相关工作, 后转职做开发, Python推广者, 擅长GUI编程和Web后端开发,深度音乐代码编写者。
【演讲实录】
在开始之前,我们先聊一下Linux的现状。Linux桌面系统,是非常混乱的。任何一个普通的Linux用户,都能说出几个或者10多个不同的发行版本,就不说是否安装或者使用过了。到目前为止,世界上至少有300多个发行版本,都在想方设法地吸引用户。那究竟有哪些呢,我们可以先来看一下(如图)。非常之多,Linux Deepin也是其中的一份子。
那大家会想,在这么混乱的情况下,我们依然坚持做Linux操作系统,这是什么原因呢?原因在于我们是一个非常有想法的团队。我们每个团队成员在加入之前都有3~5年以上的Linux使用经验。我们团队的每个成员都觉得,大家应该聚在一起,共同来改善一下Linux桌面系统。我们大家在一起做了很多努力,让Linux更加易用。我们想把Linux可爱的一面呈现给普通用户,而不只是一个程序员的玩物。比较重要的一点,就是从武汉、从全国各地吸引了许多优秀的设计师加入团队,让我们能在交互和设计上做得更好。
我们在这两年过程中,也取得了许多不错的成绩,刚才王勇也有讲到。当时软件中心1.0版本发布的时候,我还没加入团队。我就在国外论坛上看到评论“这是Linux上***的软件中心”,这对当时的我鼓舞非常之大。我觉得,中国终于有这样的一份力量,来让世界知道中国有这样一个优秀的发行版本。
大家也可以看到我们获得的开源大赛的一些奖项。大家可以看看这份数据:DistroWatch上 Linux Deepin 一年以来排行的变化。一年之内,我们的排行是67位,6个月我们是56位,3个月是45位,***的时候是到了15名之内。我们在这几年当中,也更多被世界所认可,国外的用户非常之多。他们说,哇,原来Linux在中国能做得这么好。他们也经常给我们提出非常有建设性的意见。在这里我想感谢团队3年来付出的努力。
下面我会从软件开发的角度回顾一下我们软件的开发历程。
在11.06版本的时候,我们发布了软件中心1.0。软件中心1.0在业界引起了很大的轰动。***次发现,原来在Linux下做软件也可以像在Windows上一样漂亮,给我们印象不是非常差的灰色调调。
11.12发布的时候,我们基于GNOME Shell进行了深度定制,大家可以去体验一下,我们比原生做得更加易用。体验之后,你可以体会到当时我们团队所花费的心血。
深度截图,王勇刚刚也提到了,是用2天时间开发的截图工具,那证明在Linux上开发不是非常困难的事情。大家如果学到了王勇一般的水平,只需要动动手指,就能够写出非常赞的应用程序。为什么说一直以来都没有人来做这个事情?我也有这样的疑惑。不过很庆幸我们团队能够开发出这么多精彩的应用,让Linux用户觉得终于有更多非常赞的应用来使用了。
在12.06的时候,我加入了开发,开发团队也不断壮大。期间,我们开发了深度影音和深度音乐。为什么要开发这些东西,原因是我们认为用原先的一些应用的时候非常非常难用。程序员罢了,但是作为普通用户,很难想像这个操作是用来听歌的吗?我们在思考。待会,我们来做一个演示,看一下为什么我们要做这些事情,包括我们改善了那些东西。
在12.12的时候,我们开创性的创造了自己的深度桌面,一个新的桌面环境。在易用与美观方面,做了很大的努力。我们为该桌面环境加入了很多移动终端的元素。我们有桌面分组功能,场外有一些体验机,大家可以体验一下。
同时,我们发布了软件中心3.0。软件中心3.0与之前有什么不同呢?我们几乎完全重写了,我们重新定义了一个框架。之前呢,不管是后台还是前期的安装软件都需要密码。这个体验非常差,我们就做了这个框架,让用户可以很轻松的安装软件。
最近我们发布了深度游戏中心1.0。之前我们一直缺少娱乐化的东西,我们做了之后呢,给我自己***的感动是,之前我女朋友不用我的电脑,她觉得上面没什么可玩的,在游戏中心推出之后,她居然抱着我的笔记本玩了一些Flash小游戏。这对于我们的团队来说也算是一个很大的鼓励。一些普通的用户,他们也可以在我们的系统上做一些操作或者使用。
中秋节的时候,王勇在社区发布了一个“深度终端”的测试版本。大家可以试一下。这个应该是到目前为止linux下最赞的一个终端程序,它可以分屏,还可以做很多事情。大家如果有兴趣,可下载“深度终端”体验一下。
我们现在来做一个简单的DEMO,比较之前的多媒体体验和我们现在的体验改观了多少。如果使用过linux,应该知道这个播放器。这个播放器是Ubuntu系统原生自带的一个应用。我觉得这个给大家的***印象是什么,或者说你看到这个播放器你有没有用它的欲望?界面上没有给我使用的欲望。
我们先看下它的整个操作。先做的***件事情想把这个歌曲导入进来,这里,我们看到下面这个“+”号应该是从文件载入……好吧,这个东西太难操作了,我不知道怎么玩它。如果说一个应用程序让我这样来导入,导入不了的话我就完全放弃了。现在大家可以看到,其实如果你真的导入的话,一些咱们中文的歌曲你拿到linux下会出现乱码的情况,英文歌曲是没有这个情况的。更重要的是,你拿到这个应用之后你需要折腾一件事情就是歌词。我觉得普通用户的话根本就弄不出来歌词。
这个是我们自己开发的深度音乐。大家可以与Windows下类似应用进行比较下,可以说是差不多啦。从没有到与它相似或者超越它,我们还需要一段时间,但目前我们可以看到,作为一个音乐播放器,应具备的所有的功能已经很完善了。然后从我们这边也是一样格式转换等等,这边歌词也是一样,应该说我觉有些方面比windows上的体验还要好一点,特别是它这个我们在歌词这方面出了一个高斯模糊,就是让歌词浮在上面的感觉。
更重要的是,这个软件在设计方面也做了一定的功夫。可以看到,在这边切换的话,是表面都在切换。这样做的原因是因为我们不单单是想做一个音乐播放器,我们想做的是一个框架,什么框架呢?当我们切过来的时候它就是一个豆瓣电台,那我再切到本地,他就有本地音乐,两边都可以放。然后在接口提供之后,社区开发者他们可以帮我们做这件事情。在linux中呢,有很***的在线音乐的体验,那,这百度音乐了。所以,我们做这件事情并不是说就是为了造轮子而造轮子,其实我们想做的是改善所有的在上面的应用的一个体验。
时间有限,我就只演示一些深度音乐的设计和一些功能了,有兴趣的话大家可以把其他软件也看一下。我也承诺,如果在下一年在的时候,我们所有的应用,或者深度音乐,或者深度影音,会进入到另一个设计或者操作的台阶上面去。
大家刚才可能看到我们做到了很多应用程序。社区部分朋友经常问我们,你们能不能做其他的呀,做这个,做那个。这些东西,说白了我们都想做,不管是浏览器还是手机助手,但是我们现在已有团队的能力,我们真的是没有时间来做。东西太多了,团队不能太分散。
我觉得团队后期重心应该放到两个方面上去:***个是在系统的稳定性,我们会再优化我们的系统启动速度,或者系统优化方面;最最重要的一件事情,我们要搭建一个统一的平台。这个平台为了要做什么样的事情呢,其实现在我们都在做,我们想做一个集设计师、开发者、用户于一体的大平台,最终的目的是我们想让linux桌面的应用程序有一个量的提升。
那么我们应该怎么做,我们先看一个框架图,框架图大家可能看的不是太清晰,我会每一项都拆开给大家讲解的。
我们现在做的这个框架,能给未来linux的开发带来多大的一个便利?那我们先从这个开发工具来讲吧,其实在这2~3年中间我们也尝试做了很多开发工具,比如我们做了deepin-emacs,如果是emacs玩家真的可以去体验一下,或者任何开发者可以去体验一下,它到底能提高程序员多少开发速度,待会后面会提供一个视频会给大家看一下。emacs玩到一个什么样的高度才称为真正的emacs玩家。这里需要介绍的是开发者王勇,他是世界上***的emacs玩家,或者说这里有emacs的用户你们手上有些插件,有可能这些插件就是他开发的。但是这个人为人低调,国内好多emacs用户一直认为他是一位国外玩家。他就是我们团队的成员,非常难得。我们在做开发的过程中,相对于普通用户所遇到的问题,发现开发者所遇到的问题非常严峻。怎么说呢,linux本身是一个非常复杂的环境,然后又充斥着大量的底层包,它存在什么问题,就是版本不兼容。还有一些就是对于我们这些开发者入门门栏比较高,因为玩Linux的大部分是相对有一定层次的开发者,他们碰到文档的情况比较少,英文的也不是很全面,何况是中文的文档。我作为一个资深小白呢,***次做一个事情,我想开发一个东西,我说“这个大神啊,有没有中文文档啊,或者说详细的中文手册?”大神回复我的***句话说“这哪需要看什么文档啊,直接看源码去吧。”认为在linux下开发就应该是去看源码,你就能学到很深,我觉得这个应该增加了我们低级开发者入门的一个门栏。
我们应该怎么做呢?我觉得我们应该做一个强大的IDE,当然是为中级用户所提供的。有一些初级开发者可能并不陌生,因为在windows上大家可能用到VB,.NET,然后在苹果上可能有XCode,在Linux下没有一个统一的、可用的。那么。我们团队正在做的一件事情就是强大的IDE工具,这个工具我们也做了一些尝试,能够让大家很简单地开发应用程序。
在图形引擎这方面,我也想讲一点,就是说在linux也不缺乏强大的图形引擎,也在目前流行的主要有两个,主要是GTK和QT,为什么我们还要造一个,原因在于QT是一个C++的产物,在C++上使用可以说是非常之好。当然我们Deepin用的最多的是python,或者未来我们会使用Go语言来编写。Python在QT上遇到的问题主要是QT4和QT5不兼容,要么是用这个,要么使用那个,所以说我们遇到了很多问题。我们觉得我们做一个图形引擎,能做什么样的事情呢,绑定任何语言,当然这个图形引擎不是我们刚才说看到的深度音乐所搭建的这么简单的,因为我们那是基于GTK所构建的,我们现在团队正在探索的是下一代的UI技术,究竟是什么样呢,它肯定是离不开Web的。我们做的一件事情是把webkit的引擎提取出来,做一个全新的渲染框架,大家可以关注一下。我们要把我们2~3年的大量的开发经验转化成知识或者能量,传递下去,让更多的初级开发者加入开发者当中来。
当然,任何一个开发团队不能缺少一种人,这种人就是设计师。设计师非常重要,其实在我们当时做的过程中发现,设计师在整个应用中起到主要作用。我们Deepin现在也是以设计为主导的,就是说,不是说程序员你们加一个功能就能加的,不是这样的,我们是设计师通过讨论之后,有益于用户的使用,我们再这样做。这个平台呢,我们也是这样做,设计师可以在这个平台上去寻找开发者。大体是这样一个情形:如果说你是一个设计师,你有一个屌爆的产品,设计的非常赞的产品,但是没有人实现它。你每次打开电脑,哇,这么好的东西,谁能帮我实现一下,你有这样的困惑,对吧?那么怎么样做呢,我们就说这个平台,我们可以让你来找到开发者。开发者你们也可以来做这样一个事情,那么你的东西呢,为了你后期的,或者说你是在校学生,你学的东西也学有所用,你知道你学了那么些绘画,或者说漫画的东西,到底究竟用在哪,用在什么上面,要体现它的价值。当然了你开发的应用,在这个平台上推广和运用了之后,世界各地的用户都可以用得到,我觉得你自己也是非常有成就感的。我觉得Linux平台上始终缺少女性用户,那么我觉得设计师参与了,会在这方面注入一些能量,也为我们这些屌丝程序员提供了一些机会。应该说是设计师与开发者进行配合才能够开发出优秀的产品。 目前来说,我们还遇到的一些情况来说,因为设计师呢一般来说是在Mac或者Windows的比较多,目前没有一个很好的聊天工具让开发者与设计师进行有效沟通。这个也是社区期待已久的产品。我们想的很全面,我们为大家做了一个全新的跨平台的聊天工具Deepin Talk。究竟是什么样呢,我先放两张截图来看一下。这个应该是我们第三个的设计方案,目前还在做,大家可以看到我们也增加了新的元素,这是聊天窗口。未来我觉得这是在linux平台上***用的聊天工具。不用***件事情找QQ,QQ非常的麻烦,你要么用webQQ,要么Wine,体验就非常的差,未来我们将做这样的一个东西,其实我们现在已经在做了。明年初的时候大家已经可以体验我们的聊天工具了。
当然前面我们说到,这个平台我们想召集开发者和设计师,大家不要以为有了开发者和设计师,我们就可以做出非常赞的产品了,不是,因为你在开发的过程中会遇到很多的bug,你的程序不可能没有bug,所以说这个时候呢,我觉得让更多的使用者来参与到其中,他们也来提交bug。在我们Deepin这2~3年的开发过程中,也得到了一些经验,我们Deepin是把用户遇到的问题当作头等大事来对待,我们从微博、QQ群、包括各个论坛等等收集用户提交的意见和bug。我们每周三下午举行会议,讨论这周遇到一些bug,我们选择去还是留,做还是不做,或者说修还是不修这些问题。我觉得这是非常有Geek文化的一个公司。每周四我们会放下我们的脚步,这天会放下手上所有的工作来专门解决用户所遇到的问题。如果解决不了,当然我们加班中提供了很多零食和娱乐活动,非常好。就这样,我们这样的产品得到了很多用户的认同,我记得有个朋友在微博上说“我昨天提交的问题,这周Deepin已经帮我们修复了,Deepin真是一个非常用心的团队。”我们这种方式得到了用户的认可,产品也逐渐走向成熟。用户参与了,他也觉得了他为社区贡献了力量。但是在我们的过程中,我们发现目前我们的bug依然很多。用户提交bug是很困难的一件事情。未来,我们将在桌面上或其他地方做一些入口,把你问题的描述,增加一个截图,提交到我们的服务器。问题修复所需的系统信息等方面也会进行收集,方便问题处理。那如果说你是一个开发者的话,你的用户说你的手机在我的桌面上突然挂了。或者说,把你的哪个文件夹哪个下面的log文件提交给我吧,用户会说“***,你的文件到底在哪里我怎么知道?”这样一来,有个好处:让用户用更少的时间来提交他认为有益的事情。另一个好处就是可以不断的关注用户,比如说你提交一个bug,然后我们一旦确认就通知用户,或者修复了通知用户,用户会觉得“原来我的问题也被他们关注了”,就有种参与感。这样做也激励了用户下次会更乐意来提交bug。***也可以激励开发者。他做的事情得到用户、得到我们公司同事的认可了之后,他也非常有信心把产品做好。我们最终打造的目标是增加Bug管理系统,来让开发者和用户之间零距离的沟通,使得用户看到我们是在用心的做产品,产品越来越易用。我们可能会对QQ有很多改进想法,但没有地方提交给它。他们接受或者不接受是另外一回事。我们这样做,会拉近大家的距离。
这个平台还会提供一个功能:国际化。国际化有多么重要呢,我认为,当你的作品让更多的国外用户体验到或作为开发者,收到国外用户的邮件,对你的产品表示赞美。这是很鼓舞人心的,对开发者来说是一个很大的激励。这个翻译,是交给社区来做的。我们社区目前有一支很专业的翻译团队。有一名社区翻译爱好者,他贡献了很多项目的翻译,我问他你在翻译过程中得到了什么,或者是什么驱动你提交这些翻译的内容。他说,当我每次打开程序点击“关于”的时候,看到翻译者名单中有自己的名字时很有成就感。同时,也有益于提高自己的英语水平,词汇量也增加了不少。未来我们会做这样的事情,希望大家参与进来。Bug管理系统也在做,未来不久大家就可以看到了。
下半年我们会推出一个最重要的产品:深度云服务。云服务,大家也知道,这个词已经被各大厂商说烂了。现在,不管是百度,还是360,都提供了无限空间的存储服务。那么,云服务在深度上是什么样的体验?我们是做桌面的,我们如何做才能更加贴近用户。那我们会做一件事情,大家可以想象下面的场景:我是作为一个爱折腾系统的人,每次装完系统后,折腾什么呢?折腾输入法、Flash、歌词,再折腾桌面美化和主题,一下子到了凌晨两三点。如果系统崩溃了,你是不是有种非常沮丧的感觉,我再也不玩这个系统了,对不?我们做云盘的时候,你只需要同步就可以了,包括你所有的配置。下次只要你换了电脑,或者重装系统,你只需要做一件事情:登陆深度ID,你所有的配置和应用程序,应用程序,不管在不在仓库里面,都可以同步过来,直接满状态复活。
我今天的演讲就到这里,非常感谢大家。我相信,在不久的将来,Deepin在应用程序开发,或等到我们的平台搭建成功之后,在Linux上使用软件应该是一个轻松的事情,让大家不会再觉得Linux非常难用,在国内应该实现三足鼎立的局面。
谢谢大家。