apple4us

FIT / WeFIT 开发者冯华君采访

iPhone 上的全局中文输入法(即能够在所有程序中使用的输入法)目前有三种:NativeCniCostaWeFIT。由香港人 Gary 和 iczfirz 开发的 NativeCN 利用了 iPhone 本身内置的日文输入键盘,将中文输入码表嵌入其中实现全局中文输入;身处上海的 Holly Lee 和 Pinxue 在徐家汇的 Costa 咖啡馆里写出了 iCosta。它「本质上是一个附加库,通过 dyld 在启动 SpringBoard 时被自动载入, 并通过覆盖(override)部分方法来实现中文输入」(n000b 语);WeFIT 的情况有些特殊,它由麦金塔平台上最受欢迎的中文输入法之一 Fun Input Toy (FIT) 衍生而来。FIT 的人气为 WeFIT 带来了惊人的期待值,从一开始,iPhone 机友就知道,WeFIT 不仅仅是「又一个 iPhone 中文输入法」而已。事实上它也不负众望,以强大的词组功能挖走了不少 iCosta 的忠实用户。目前 WeFIT 可通过 Installer.app 直接安装在各个固件版本的 iPhone 上,版本号已走到 Preview 6.1。在 1.0 正式版推出之前,WeFIT 的灵魂人物冯华君在密集的开发工作中抽空接受了本站的采访,在此深表感谢。采访以电邮进行,时间为零八年二月廿二日下午四点至晚十二点,全文五千八百余字,无耐心者慎入。

Lawrence: 我首先想了解的是有关 WeFIT 和 iCosta 关系的一些问题。你在网上某处说过最初将 FIT 移植到 iPhone 时曾经找(iCosta 的开发者)Holly Lee 和 Pinxue 谈合作,但最终未能成事。具体的情况是怎么样的,愿意谈一下吗?

冯华君(以下简称「冯」):FIT 2.0 的输入引擎在 iPhone 上编译通过并且获得了比较好的效果,但我们并没有掌握如何把输入引擎嵌入 iPhone 的技术。于是我第一时间联系了 iCosta 的作者,并且发了 FIT 输入引擎(命令行)的给他们测试,我打算无偿提供输入引擎给 iCosta 使用。Holly 老大和 Pinxue 老大肯定了 FIT 2.0 的优化成果,但是合作方面一直没有肯定答复/否定的答复,可能工作太忙也可能有其他顾虑,我也不知道。后来 Laoren 老大和 ChinaET 在 iPhone 内嵌输入法技术方面取得了突破,我们就自己做了。所以自己摸索的技术不太成熟,一出来就被骂了,有人骂我们 SB,怎么自己做,干脆把词组码表给 iCosta 算了。我想反驳:一、不要想当然地认为输入法是「有个码表就能做」的,里面有很多技术难关需要克服;二、我已经找过 iCosta 了;三、国内做手机的公司都盯着 iPhone,一定有很多公司找过 iCosta,但商业上的公司顾虑更多。

Lawrence: WeiPhone.com 上有人说对于 WeFIT 1.0 Preview 3 之后的版本「屏蔽」了 iCosta 感到不解。请问是否确有其事?Preview 3 之后的版本真的有意屏蔽了 iCosta 吗?

冯: iPhone 上输入用的是虚拟键盘,iPhone 1.1.x 以后虚拟键盘的切换键有两个,一个是小地球,用来切换到 iCosta,另一个就是「ABC / 123」,用来切换到标点。我们一开始没掌握如何拦截小地球的切换,只拦截到了标点的切换,所以第一个版本出来是用 ABC / 123 键切换的,马上又被骂了:「WeFIT 怎么不像 iCosta 那样用小地球来切换,不习惯,按标点还要点两下……」经过 ChinaET 的刻苦公关,我们终于知道如何在拦截小地球的切换,于是 Preview 4 版本就开始使用小地球了。iCosta 和 WeFIT 两家都同时拦截 iPhone 的同一个系统调用,当然会出问题。结果又有人说:「WeFIT 屏蔽了 iCosta」,我直接晕倒……我们捣鼓了半天白干了啊?当然大多数用户还是理解的。

Lawrence: 关于小地球切换,技术上有无可能做到两家不冲突?比如按一下小地球出来 WeFIT,再按一下出来 iCosta,再按一下回到英文输入?在两家输入法完全成熟之前,可能有很多机友希望两者并存,方便随时比较优劣,并择一使用。

冯:这个问题 ChinaET 还在研究,希望能够做到。

Lawrence: 对于你来说,速度,齐全的功能,人性化的用户介面等因素中,哪一项对于 FIT 是最重要的?对于 WeFIT 呢?(如果你认为最重要的因素在上述三者之外,也请告知。)我个人认为对 WeFIT 来说速度是第一位的。软键盘决定了这一点。只要按键稍有延迟,用户体验就会大打折扣。

直到现在我还经常犹豫到底该用 iCosta 还是 WeFIT。我是用拼音的,而拼音版的 iCosta 目前还不支持词组。另一方面,虽然 WeFIT 的速度一直在进步,但个人感觉直到 Preview 6.1 仍然不及 iCosta。你认为这与词组功能有关吗?延迟往往出现在打出一个词组并按它选择之后。

冯:我是南方人,拼音不准,zheng 这样的拼音,不好运的话,我要打四次,我那么忍受不了苹果系统的输入法就是这个原因。所以我用 iCosta 在 iPhone 上打字很慢,删改几次才能把一个字打出来。对于我来说,模糊音是最重要的。所以,你会犹豫,我会毫不犹豫选择 WeFIT。词组看似是一个很简单的功能,不就是一个码表吗?但是这些和模糊音简写拼音搀和在一起的话就不简单了,涉及到一个模糊搜索效率的问题,可以等 iCosta 有模糊音和词组功能以后我们来比一比看看谁更快。

我认为 WeFIT 是很快的,其实 WeFIT 第一版就具备现在的速度,我们的延时是主动的约 0.3 秒,因为搜索在 iPhone 上,如果和放大按钮以及播放按键音同时进行的话就会很卡,第二版我们只不过把延时调整到了 0.1 秒,大家就反映快了很多,当然后面的版本我们使用了很多缓存技术,也使 WeFIT 加快了速度。现在的延时好像是 0.05 秒。

现阶段 WeFIT 的开发以稳定性为主,和麦金塔不同,目前 iPhone 版本很不统一,安装环境各异,还常有一些异常退出的情况,我们都在一点一点解决。当然同时我们也在探索一些新功能,比如用数字键盘输入拼音等等……

Lawrence: 模糊音的事牵涉到另外一个问题:你是为自己开发?还是为一个假想中的「大众」开发?毕竟模糊音的受众只是所有中文使用者的一个子集。

为自己开发绝对不是坏事。事实上很多成功的软件(尤其是 2.0 时代的)的出发点都是程序员需要解决自己的某个问题。又如英国有位作家由于不满意现有的所有文字处理软件,自学编程和设计,在 OS X 上开发了给专业写作者用的 Scrivener,卖四十美元,评价很高。他在网站上就明确说:Scrivener 是我为自己开发的,不要来信要求我加这个或那个功能,我很可能都不会再加新功能,只要我自己用得爽就好。但职业作家仍然热爱 Scrivener,前阵子《纽约时报》还有专文介绍它。

你做 FIT 的初衷是什么?证明自己的能力?还是单单为了解决模糊音问题?其实 QIM 也有模糊音支持啊。(当然我不知道是从什么时候开始有的。)

冯:一个子集对我来说就很大了,广州有一千万人口,比瑞典的一个国家还多,我的志愿没那么大。对我来说麦金塔用户一个子集就很大了,iPhone 的子集就很大了,有人建议我开发 Windows,WinCE 的。

我知道我们有很多有大志愿的人,要创业,要做富翁,做一个东西要兼容所有平台。我不是这样的人。

我比较务实,我做的所有事情都是为我自己的,为别人那是附带出来的价值,要不要我用经济学再解释一遍,呵呵。

QIM 出来以后我第一时间买了,当时只有 Paypal 支付,我用十九美金买的,我有文章说过了,我其实一早也有开发输入法的想法,但一直停留在想法阶段。后来我太太也买了一部苹果电脑,我就把 QIM 的 License 给她用了,我那台机就死活装不上,结果我原来的想法又回来了……就做了 FIT。后来和 Glider 证实我的 License 是可以在两台机用的,安装的时候是有 bug 还是什么问题,反正我的机器上用不了 QIM 的模糊音。Glider 笑称客服没做好做出来一个竞争对手,呵呵。

我当然要证明自己的能力,如果不是输入法,我会做别的,总之我会去做一些东西。

Lawrence: FIT 去年以来发展很快,现在已经有了 Mac OS X 版本,Linux 版本和 Mobile OS X (iPhone) 版本。目前工作团队的构成如何?开发工作是如何分配的?(现阶段显然 iPhone 版本是重点。但今后呢?)你曾经表示自己对 Linux 平台熟悉度不够,那么 Fitx 是否有别的牵头人?

冯:实际上,我的重点还是在麦金塔。iPhone 平台迫使我不断优化输入引擎,这些技术很快也会用到麦金塔版本上。Fitx 现在由我的一个朋友 Samson Xu 负责,不过他工作很忙,所以推进可能慢一些。现在麦金塔版本的开发是我一个人,Linux 版本是我和 Samson,iPhone 版的开发人员有三个,还有美工等 WeiPhone Dev Team 的朋友。今后?今后肯定不会以做输入法为生,打工吧。今后是我没办法规划,你知道吗?在 FIT 诞生以前我不知道直接能够做 FIT,WeFIT 诞生以前我不知道我能做 WeFIT。那么多公司看着 iPhone 的市场,给我们这些小字辈爬了头,我们是想都不敢想的。所以我很喜欢一句话,我不知道出处,英文是这样说的,We were moving a mountain before we know we could…..

Lawrence: 这就牵涉到我想问的另一个问题:为什么不考虑收费?关于麦金塔平台有两个现象值得注意:一、总体而言,麦金塔用户比 Windows 用户更愿意花钱买软件,尤其是独立开发人员开发的软件。这也是为什么「给麦金塔电脑开发软件没法赚钱,因为用的人太少」这一说法站不住脚的地方:尽管总人数大大小于 Windows 用户,但麦金塔用户更愿意尝试新的第三方软件,也更愿意为好的设计(不只是视觉设计)付费。第二个现象或许和第一个现象有关系,那就是在麦金塔平台上,同类软件里最好的往往并非开源 / 自由软件,而是商业软件。从介面设计的角度说尤其如此。拿 RSS 阅读器来讲,尽管有免费的 Vienna,但很多人仍然愿意用 NetNewsWire(它是最近才变成免费的)。或者看看 FTP 软件。Cyberduck 免费,但收费的 Transmit 和 Interarchy 仍然有其市场。

我自己是 QIM 的付费用户。如果 WeFIT 或任何其他 iPhone 中文输入法足够成熟之后开始收费,我不会犹豫。众所周知大部分中国用户没有花钱买软件的习惯,所以我可以理解不把 FIT 作为谋生工具的想法,但收费和「不以做输入法为生」或许并不矛盾?想听听你的看法。

冯:道理很简单,我帮 Google 或者百度打工都有一两万一个月,我在腾讯的不少同学是拿几十万年薪的,足够养车供房的。

另外我认为现在的麦金塔用户不一定就是将来的麦金塔用户。Mac OS X 有一天一定可以像 Windows 一样装在 PC 上。我想商业化,但与之相比我希望更多人用麦金塔,更多人知道苹果和它的文化。我不想输入法成为大家转到麦金塔平台的一个障碍,我想让那些用 Hackintosh 的人也觉得苹果好,我是帮苹果打过工的,我和老板承诺过我走到哪里都会宣传麦金塔、宣传苹果。我离开苹果三年了,我想我做到了。

Lawrence: 你觉得 QIM 有哪些方面比 FIT 做得好?反过来 FIT 有什么是值得 QIM 学习的?

冯:我其实觉得 QIM 和 FIT 功能上没有太大区别,我觉得 FIT 比 QIM 做得好,FIT 可以五笔可以和拼音混打,双拼也可以和全拼混打,QIM 现在还不行。QIM 引以为傲的整句智能,用了黑马的技术,我觉得模型太复杂,我对复杂的东西非常抵制,相反我觉得这是一个弱点,下载包非常大,现代计算机硬盘大没关系,但是 iPhone 平台呢?Glider 一定想过要做的。我不敢说 FIT 的智能水平达到了 QIM 的高度,毕竟人家是花钱买的,但是 FIT 现在的新引擎,至少是很接近了。我自己不是很喜欢输入一句话然后赌计算机能不能猜中,万一要是没猜中呢,还得改,也是慢了。我会继续轻量级地改进 FIT 的智能算法。

上面说的区别都不是我最在乎的。我感觉大家用 FIT 的同时,也在和我交流,鼓励我,给我反馈,这是作为一个程序员最享受的。所以我不仅仅会拼命更新软件,我也会拼命写文章讲我想要讲的,我想这个也是 FIT 和 QIM 的区别把。我希望大家喜欢 FIT,喜欢我,这些都是文化上的,不是功能上的。我希望大家用 FIT 也认同我的价值,更简单单纯的世界,坚持理想,面对现实,要有行动。陈可辛说他自己的电影不是想做出来让大家讨论各种不同感受看法,他的电影就是要讲他的看法,他就是想观众接受他的看法,不是想大家从不同角度上去品味他的电影的。我想我也是一样,我从小就是好孩子王,我渴望影响别人。

其实我们消费 Google,我们消费百度,除了根据它们功能上的区别作出选择以外(原谅我,区别可能很小),更多是在消费、接受和认同它们的文化。我做 FIT 是为了大家的认同,是一个程序员渴望创造、渴望认同,这样做出来的东西。因此我很在乎 FIT 在大家心目中的形象。表面上我是在做一个和 QIM 竞争的输入法,实际上我是想感染千千万万个好像我这样耐不住寂寞的程序员行动起来。另外,我也很在乎有没有更多人来了解麦金塔平台的开发。发邮件来问我麦金塔平台编程问题的人我都会竭尽所能回答他,因为我知道他们就像熊猫一样,一定要鼓励他们继续繁殖。当然现在苹果有了 iPhone,这个情况得到了极大的改善。

Lawrence: 我同意你对于整句智能的看法。我也从来不用整句输入。我甚至认为这是一个典型的「解决不存在的问题」的设计。虽然没有统计数字,但我很怀疑有多少中文输入用户有整句输入的习惯。

另外你「……毕竟人家是花钱买的」这个说法很有意思,你心里是不是也预设了「商业软件往往胜过开源 / 自由 / 免费软件」这样一个前提?看到两个功能一样的软件,你会不会先入为主地认为收费的那个「应该会好一点,毕竟人家是收费的」?

冯:我很有兴趣回答你这个问题,因为和经济学有关系。我非常能够接受大家对 FIT 的各种赞誉,包括「顶」,「沙发」这类,但是我非常不喜欢别人说我免费发布 FIT 是活雷锋,我最讨厌雷锋精神,有违经济学常识,而且对我们这个社会是有伤害的。一件事情要商业化才能做大做强的。别看开源社区的理想很崇高的样子,那是因为发达国家的程序员单从赚钱已经找不到满足感了,所以才诞生了开源社区。再说开源社区也未必没有商业化的元素,Eclipse 就是 IBM 推动的,单纯的开源是很难做到那个大的。但是我们国家商业软件都没发展起来,这里面盗版也是问题,央视的《大国崛起》里面就说了,是专利法点燃了天才之火。所以如果做 FIT 可以做成百万富翁的话,我一定会商业话的,而且 FIT 的开发人员会更多,更勤奋,更新速度会更快,FIT 会做得更强大,细致,精益求精。但是,我认为,现在国内环境不具备。

虽然如此,我还是有足够的理由来开发 FIT 和将它免费,因为没做 FIT 以前,我申请调入苹果公司开发部门是会被拒绝的,但现在我猜他们要考虑一下了,这对于我来说也是经济方面的动力。免费的 FIT 会更多人用,精神上的鼓励可以替代一下经济上的鼓励,让我把 FIT 做得更好。FIT 只要能在行业内建立声誉,我本人也会有更多机会。所以「活雷锋」背后是有私心的,但是有私心并不妨碍我们为社会做出贡献,这在经济学上就是面包师和理发师的故事,他们都自私,但是客观上却改善了大家生活的质量。

这样的思维是可以用在很多地方的,比如大家都痛恨的房地产商,我认为没有现代房地产商的话,我们现在还在住单位的大院,更加日久失修,物业管理相当于没有,生活质量比现在更差,大家都不抱怨是因为大家都穷,公平分配,但是同样,这样的环境扼杀了天才之火。就是因为雷锋精神,我们国家诞生比尔·盖茨的机会就没有了,经济学解释了这一切,表面上的正义和道德对社会的伤害是无法计算也看不出来的。

所以无庸置疑,好的商业环境一定可以产生好的软件,没有人可以做一个免费的 Adobe 出来,但是通过商业的驱动就能做到!商业驱动为我们的文明创造了无数个奇迹了,开源运动也创造了很多,但是和商业的奇迹相比,还是少,影响力也要小。

Lawrence: WeFIT 再出几个 Preview 才会到 1.0 正式版?正式版有什么秘密武器吗?还是说功能上目前的 Preview 6.1 已经基本代表了正式版的样子,剩下的工作主要在除虫?另外苹果官方的 iPhone SDK 很快就要面世了。你认为它会对整个 iPhone 第三方软件的生态造成什么影响?对 WeFIT 呢?

冯:我想 Preview 6.1 基本代表正式版了把。秘密武器?让我想想……我也希望有,呵呵。 SDK 的面世非常重要,如果有输入法的部分的话,无数的公司会加入到 iPhone 输入法的竞争上来,希望到时大家还能记住 WeFIT 存在过。

Lawrence: 你在广州的苹果打工时做的是什么样的工作?

冯:我是做 ASE,助理工程师,主要负责售前。我有申请调到开发部门,只是,当你没有做一个 FIT 出来的时候,你又怎么证明你能够做到呢?所以世界就是那么奇怪的……所以我和所有我的师弟师妹们说,一定要去做,多说没用,最重要的是 take action!

Lawrence: 谈谈苹果吧。你接触的第一台苹果电脑是哪台?当年中华学习机(其实也就是苹果 II)风行时你有没有玩过?你是从 OS X 开始接触麦金塔的吗?对于 OS Classic 有没有经验?

冯:我是 OS X 时代的人,OS Classic 一点不懂。我接触的第一台苹果电脑应该是我宿舍一个同学的,零四年他到苹果公司实习拿了一台 iBook G4 800Hz 回来,不懂的问题都问我,引发我极大的兴趣,吸引我的主要是它是 Unix 系统,我在校的时候做很多 Linux 编程,所以很有亲切感,并且用户界面做得那么好,后来我就自己买了一台最便宜的 eMac,八千多,后来经这位同学介绍我才有机会进入苹果公司打工。FIT 有很多代码还在在这台 eMac 上写的。中华学习机是玩过的,但是不知道那就是苹果电脑……

Lawrence: 请谈一下你的教育背景,你是自学编程还是在大学主修电脑?你对经济的兴趣又源自何处?

冯:我毕业于华南理工大学工商管理学院,我很骄傲我在这样一所大学和这样一个学院,它的务实的作风和文化对我很受用。编程是我从小的兴趣爱好,大学也是如此。

经济学显然是我更感兴趣的话题,呵呵。我对经济学的兴趣主要源于一本书,是茅于轼先生编写的《大家的经济学》,很薄的一本,我觉得讲的很清楚,比大学里面厚厚的教材要好。我认为经济学对我们的社会和生活有非凡的解释力,所以诺贝尔有经济学奖却没有数学奖,但是我们看到的经济学有很多是经过包装的假经济学,比如最出名的一本假经济学书籍凯恩斯的《就业,利息,货币通论》,遗憾的是,这竟然是我们宏观经济学的基础,所以张五常说他对近三十年经济学的发展大失所望。政府实际上就是举着凯恩斯的大旗粗暴干预经济的,我们国家这样的现象随处可见,表面上正义的行动实际上伤害了所有人,新《劳动法》就是一例……真正经济学可以解释这一切,不要以为报纸上说股票今天长了,明天跌了,这些就是经济学。我认为,经济学是一个每一个头脑清醒的人都应该研究一下学科,否则太容易被人忽悠了。

Lawrence: 能否介绍一下你的开发环境以及主要的语言?

冯:这是一个我最不感兴趣的话题。我是什么方便用什么,目标驱动型的。我不介意为了开发一个新东西多学一门语言或者是多学一个开发工具。我喜欢简单直接的。可能有人觉得「简单直接」谁都喜欢,这是废话,实际上不是的。Java 在这方面这几年的发展相当不靠谱,有很多所谓「高手」还号称喜欢用记事本来开发……复杂化是人为筑起的一面墙,让外面的人看上去很神秘,我觉得太假了。