BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

与苏哲谈开源以及基于Linux的软件开发
录制于:

| 受访者 苏哲 关注 0 他的粉丝 作者 霍泰稳 关注 1 他的粉丝 发布于 2009年1月17日 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。
23:04

个人简介 苏哲,初中开始学习 C 语言编程,高三用C++开发出曾经非常流行的小工具软件 Smart Fdisk。1994年进入清华大学物理系学习,1997年开始接触 Linux 操作系统和开源软件。1999 年开发出 Smart Boot Manager 工具软件。2001 年转战研究 Linux 本地化与国际化相关技术,率先实现了 Linux 下图形用户界面对国标 GB18030的支持。随后潜心开发Smart Common Input Method platform。2002 年取得清华大学物理系凝聚态物理专业硕士后加入 Turbolinux 软件公司。随后于 2004 年加入 Novell 公司 SUSE Linux 开发团队,负责国际化和本地化相关组件的开发与维护。于2007年2月加入Google。

   

1. 今天也非常荣幸邀请到Google Linux客户端软件开发小组的负责人苏哲,我想大家都是非常熟悉的。OK,那苏哲你给我们大家介绍一下你自己和你现在所主要负责的项目。

我叫苏哲,苏州的苏,哲学的哲。我是去年2月份加入Google的。在Google负责开发LINUX端的桌面上的应用软件。那么我们现在主要集中精力在做一些跟开源相关的一些项目,我们这个小组人不是很多,我们小组的关注点非常地明确,就是要做Linux桌面端的开源应用软件,以此推动Linux桌面的普及。大家都知道Linux桌面一直都很难大规模推广开来,很大一个原因就是软件太少,所以我们在做这方面的工作。那么我们现在负责的这个项目叫做Google桌面小工具Linux版,这是一个开源的项目。这个小工具简单说来就是可以在你的桌面上运行很多非常有意思的各种各样功能的一些小应用软件,比如说可以运行一个显示天气预报的,一个小的天气预报的玻璃球,可以显示你所关心城市的天气预报,比如说可以显示新闻的,可以实时的给你显示最新的头条新闻,然后还有比如说可以显示网络上的照片,显示你的股票信息等等。那么这样的小工具对用户使用桌面来说,第一个可以使用户时刻关心他想要知道的一些信息,那第二个有很多这种有意思小工具可以做一些用户时刻需要的事情,比如说,我们有些小工具是可以帮用户记录笔记,那这种笔记呢,不光是可以记录在用户桌面的,还可以被同步到用户的某一个网上的帐号里面,这样的话可以在不同的电脑之间去同步笔记等等,比如说还可以去显示一个日历,去设定你的日程安排,等等类似这种功能。

   

2. 但是我们也知目前Linux在国内应用的还不是那么普遍,特别是在客户端,那你们要做基于Linux的桌面搜索,还有那些桌面小工具,初衷是什么?

其实这就是我们的初衷,主要是因为Linux在全球说实话都很不普及,那么前段时间有一个数据出来说,Linux在全球的桌面占有量刚刚达到1%,这是非常小的一个占有量,只有1%的占有量。大家知道Linux是一个开源的操作系统,现在全球有很热的这种潮流去推进开源的事业,因为软件说白了就是知识,知识应该是被全人类所共享的,但是Linux经过了这么长时间的发展,一直都很难发展起来,其实这里面很大一个原因就是说,到目前为止,Linux桌面确实不是足够好用,对用户来说他拿到Linux桌面,可能很多他想要的东西都没有,那这里面怎么样让Linux桌面发展起来,就一定要给这个桌面增加更多实用的、好用的功能,这些功能都要有人去做,我觉得作为Google来说,Google是目前可能业界数一数二的开源的用户,我们在公司内部,所有的员工、所有的工程师都在使用开源,都在使用Linux做开发,这是一个对Google来说,开源实际上是一个非常重要的战略,那么它不光是帮助Google,就Google不光是利用开源开发了所有Google内部的各种服务器系统,而且Linux在Google内部还是所有工程师的日常桌面环境,那么对Google来说Linux包括开源都非常重要,我们除了在使用开源,使用Linux获得收益的同时,我们也希望对Linux开源界有所贡献,就我们觉得,可能Google在Linux其他领域,比如在Linux服务器领域、互联网领域已经贡献了很多开源的代码,大家有很多很熟悉的比如说Google的GWT、Web Tool Kit,有好多相关的代码贡献出来,但是在Linux桌面,Google在这方面的贡献其实不是特别的多,那我们小组其实就是致力于这方面的一个小组,我们专门在这方面做一些相关的贡献。

   

3. 那我们也知道,从前你负责的项目是Google桌面搜索Linux版,对于那个项目你认为最值得骄傲的三个功能是什么?

那实际上Google桌面搜索Linux版是我们小组做的第一个项目,这个项目到目前为止已经进入一个比较稳定的状态,作为一个做搜索的、一个搜索专业行业的公司来说,搜索显然是Google的强项,所以对这个项目来说,我们最骄傲的第一个优势就是它的性能,它的性能我们可以相信,在所有的Linux版的桌面搜索产品里面应该是最好的,我们测试过的产品里面应该是最好的;那么第二个优势就是说,他不光是做桌面搜索,他实际上是一个桌面搜索和互联网搜索结合的产品,你可以在同一个界面里,同时去做网络搜索、做桌面搜索、做各种各样的混合的搜索,你可以同时,比如做你的Email搜索等等,这是一个非常不错的特性;那么第三个我觉得就是说跟其他桌面搜索、相关搜索产品比起来,他的尺寸、他的这种依赖关系都相对比较简单,比较小,所以用户在安装的时候会比较方便,而且在使用的时候不会感到对系统的性能有太大的影响,因为他的这种尺寸、内在占用和性能都会比较好。

   

4. 我们也知道在Linux领域另外一个桌面搜索工作,像Beagle做得非常不错,而且据我了解Goolge从前也是Beagle的赞助商,那在你从前参与谷歌的桌面搜索Linux客户端的时候,有没有从Beagle这个项目中获得什么经验,有没有和Beagle的团队做过交流?

其实我们的这个项目跟Beagle没有任何关系,我们也没有从Beagle那里获得任何的经验或者有任何交流,因为实际上这两个项目从底层设计、从代码、从架构来说是完全不一样的。大家可能知道Beagle的桌面搜索是构筑在.Net技术上的,他的所有程序都是用C#写的,所以实际上他的这个架构,可以说Beagle其实是有个很好的架构,他的架构设计相当不错,扩展性也很好,如果你们去看现在的Beagle,他能支持相当多的文件格式,可有很多种不同的插件,他跟系统的集成也相当不错。因为它是.Net和C#写的,所以他开发起来可能相对会比较简单一些。用.Net和C#在这方面会比较好,在架构上、在开发上会比较好,但是同样也会带来一些负面的影响,包括性能和依赖关系的影响,因为他会需要一整套的.Net平台环境才能运行起来,那么在开发的时候,我们内部的桌面搜索,在做Linux版之前已经有很悠久的积累,因为我们有Windows版的桌面搜索,有苹果版式的桌面搜索,所以我们再做Linux版的时候,我们其实主要是去借鉴Windows版和苹果版的设计和代码,所以并不会去参考Beagle,因为它的技术跟我们是完全不一样的。

   

5. 那如果说要在Google的桌面搜索Linux版和Beagle之间做一个比较的话,你会给大家提供什么样的信息?

如果做比较的话,我觉得各有特色,对于Beagle来说他是希望做成一个非常全面、非常灵活的桌面搜索架构,他的着重点是架构的灵活性,然后做一个大而全的东西。那对于Google的桌面搜索来说,他是希望做一个短小精悍的小软件,在任何一个平台装上都可以用的,不需要有非常复杂的依赖关系,不需要有很大的下载包,而且对Google的桌面搜索理所应当的跟Google的相关网络搜索等等结合的比较好,这是Google桌面搜索的特点。

   

6. OK,那我们InfoQ去年在采访Beagle负责人的时候,他提到一个关联,Beagle是Linux平台上功能最强,也最可用的桌面搜索系统,而且支持超过二十种数据语言和超过六十种的数据格式,现在你对他的这一观点是怎么看的?

我是基本认同的,对于Beagle来说他确实是目前支持的文件数量比较多,而且支持的数据格式也会比较多,那么从功能上讲它还是相当强悍的,界面也是比较强、比较复杂。那么最大问题在于它的性能,其实这也是大部分用户不愿意启动桌面搜索的一个根本原因,我所了解到的几乎所有的用户给我一个反馈就是说,在开了Beagle以后,计算机性能下降到无法使用的地步。

   

8. OK,那我们接下来谈一谈,现在您所负责的桌面小工具这个项目,目前的进展如何?

目前是这样的,我们目前这个项目已经进入BETA阶段,我们的第一个版本已经于5月30日发布了。小工具项目跟桌面搜索的最大的一个不同在于,我们这个小工具项目是完全开源的,而且是用Apache License,就是用Apache的版权协议,这种协议是一个非常开放的协议,它跟GPL不一样,GPL是别人如果用你的代码,别人也要开源,Apache是别人可以随意使用你代码,是底部开源,甚至可以在商业产品中使用,所以Google在这方面还是比较开放的,就是Google希望完全的贡献出去,而不是说我要什么保留,或有什么所取。那么对我们来说,从5月30日第一版发布以来,在全球的开源界也得到了很好的反馈,也有很多评价和评论反馈过来,总的这个评价还是相当正面的,那么我们也在积极地修正一些用户反馈回来的问题和错误,因为现在用的人比较多,所以会不断的有用户报告一些Bug和问题,提一些建议等等。对我们来说我们希望尽快的使这个产品稳定下来,使产品能够达到用户日常使用的一个阶段。这样对用户来说,他就可以在日常的桌面环境中安装这种桌面产品,不用担心崩溃,不用担心对性能有什么影响,他可以放心的使用,这是我们现在的情况,我们希望很快就能达到这样一个阶段。

   

9. 如果说用户他要去用Google的桌面小工具,你认为他选择这个小工具的主要的原因是什么?

我觉得最主要是对他有用,实际上我们这个桌面小工具有很大特色是,实际上是一个小工具软件平台,我们开发的是一个运行环境,这个运行环境是支撑用来运行叫谷歌桌面小工具的这一系列的小工具的。这个小工具实际上是任何人都可以开发的,它是开放的开发平台,目前来说,大概已经有一千多个桌面小工具可以使用,这些小工具大部分都是由谷歌之外的第三方开发人员开发的,对用户来说安装了这个平台以后,就意味着他有一千多个小工具可以用,我相信总有那么几个款可以适合用户的这种需求。

   

10. 那么这个小工具,他的一个未来的规划是什么?目前就是正在开发,可能还没有公布的功能是什么样子的?

我们现在实际上,非常希望把这个小工具作为一个软件开发平台来推广,因为这个小工具大家都知道在做这种桌面软件开发的时候,如果你用C语言、你用C++语言,甚至你用JAVA或其他的相关语言,开发一个桌面软件,他的难度相当大,如果开发一个桌面软件很简单的话,我想Linux不会是现在这种样子,对不对?所有人都去开发软件了,因为它开发起来确实很难,但是我们设计了这样小工具的一个所谓的API,设计了这样的开发环境,那么他的开发难度会大大降低,只要会JavaScript、只要会XML就会写软件,所以我们希望把这样一个开发环境和平台推广出去,然后吸引更多的开发者去开发这种小工具,而不是去用C写Linux软件——用C写软件非常复杂,他如果同样的功能,用这种JavaScript加XML来写的话,有可能他很快就写出一个可以用的软件,然后推广出去,大家都可以使用了。那实际上这种状态就是一个非常好的双赢的状态,对Google来说,如果所有用户都使用这个平台的话,就会有很多用户去使用这个小工具,这个其实对推动Linux桌面的使用有非常积极作用的。

   

11. 那么你们这个团队除了桌面小工具,还计划在Linux平台上开发哪些新的项目?

其实我们的计划是很多的,因为我们这个团队并不是一个很大的团队,现在我们的精力主要集中在桌面小工具这个项目上,我们对未来有很多很多规划,但是我们觉得首先要做好桌面小工具这个项目,然后基于这个工具项目再去听取用户的意见,我们会希望用户给我们反馈,如果用户觉得某个功能非常实用、非常需要,我们就会去衡量一下,根据我们的这个资源情况,根据我们小工具这个项目的情况,在未来的适当时刻,我们会去选择一个新的项目去开发。

   

12. 那么最后一个问题,在从事Linux平台开发的时候,你们团队,包括你个人所遇到的最大挑战是什么?是如何刻服的?

我们觉得最大一个挑战,对我们团队而言,我们现在做的是开源软件开发,那么对于开源软件来说,其实你在开发的时候就有很多限制,你有很多这种非开源的技术,很多非常好的东西你是不能用的,很多东西你必须要去想好怎么样开发这样一个软件,怎么样选择你开发的技术路线,怎么样去实现你可能在别的某些软件里面已经有的一些功能,但是你不能用这些代码,必须要用开源的方式来重新实现等等。以我们这个Gadget的小工具项目来说,实际上我们内部做了非常多的工作去实现这样一个平台,如果我们用Windows这样一个开发环境去开发的话,你有很多现在的这种闭源的组件可以使用,我们的代码量会小很多。但是我们在Linux底下开发,其实我们也用了很多很多开源的组件,但是相对来说我们还是自己写了很大量的代码,去做一些额外的这种工作,当然这个挑战,其实对我们来说也是一个机会,我们是能够,我们自己主动的控制一些事情,控制很多feature,控制很多实现的细节,这对我们来说是可以更好的掌控我们这个项目,如果我们都用别人的代码,就很难掌控自己的项目。另外我觉得一个挑战,在Linux桌面上开发的时候碰到的问题,在初期的时候,用户数量和这个参与者还是相对比较少,毕竟Linux用户的基数还是相对比较少。对我们来说虽然我们项目已经发布了几个月了,但是真正能够参与到我们项目一起开发的这种第三方的开发者、志愿者还是非常少,虽然我们现在用户数量已经相当多,但是真正能参与进来的还是非常少。我们的最终目标还是希望这个项目不是全部是Google的人在做的一个项目,我们希望这个项目变成一个所有人共同参与的项目,这才是真正开源的理念。但是到目前为止基本上还都是我们的人在做这种编码的工作,我们希望在不久的将来,会有更多的人参与进来,共同改进这个产品,这样我们才能更好的完成我们这个目标。

   

13. 再追加一个问题,目前你这个团队在做桌面小工具项目的时候,所用到的那些平台、工具介绍给大家一下?

其实很有意思,我们这个产品发布以后,有非常多的用户给我们反馈,第一个反馈就是我们依赖的东西很多,我们依赖了一大堆的这种第三方的软件库,这种开发平台、源代码什么的,然后导致编译起来很困难,那举个例子我们依赖哪些东西呢,比如我们依赖了Firefox,就是Mozilla的这个Firefox的JavaScript引擎和网页引擎叫Gecko,我们依赖了这个,比如说curl的这个网络库,我们依赖了比如XML的Library,我们还依赖了比如QT的这个库,我们依赖了这个GTK的库,甚至还依赖了比如Zip的这个软件包,有很多很多时候这种第三方依赖,那么作为开源软件,这是一个大家都在用的一种模式,因为不要重新发布名字,当然你要尽量使用已有的这些代码,那么实际上我们在做一个很大的工作就是,因为在开源世界里面,各个项目都是千差万别的,大家在设计自己产品、设计自己开发库的时候,并没有一个统一的标准可以遵循,不像微软开发一个Windows,里面的接口几乎是一样,我们用的这些组件其实是千差万别,我们做了很大工作是写了好多代码去把这些组件粘在一起,让他们能够共同工作,这是我们做得非常重要的一个工作。

   

14. 那会用到哪些工具?

我们现在用到的开发工具,其实并不是很复杂,在我们这个小组内部,最常用的开发工具,其实就是Vim,加上GCC,然后加上一些编译的脚本,比如MAKE等等,然后可能会通常在调试的时候我们会用到gdb,然后可能在做一些性能检查或内存测试的时候我们会用到Valgrind,还有Sysprof等等。我们没有用到这种可能通常在Windows底下开发的时候,大家都喜欢用的IDE,对我们来说,我们大部分的开发者还是习惯于这种Unix开发风格,用命令行、用文本方式的这种开发方式。

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT