开源架构师谈SCIM

 在多数Linux中,都可以发现中文输入法SCIM,中文输入法SCIM几乎成为开源中文输入中的“紫光拼音”了,今天就请苏哲来为大家揭开SCIM的神秘面纱,介绍SCIM的历史及其鲜为人知的逸事。

为什么开发SCIM

时间还要追溯到6年前。当时的Linux系统还不能很好地支持国际化语言环境,在X Window环境下唯一可用的输入法接口是由Hideki Hiura先生开发的XIM输入法协议。由于存在严重的设计缺陷,这个协议无法同时支持国际化语言环境,因此也无法同时支持多国语言的输入。

图1 配置模块

当时在国内最流行的Linux中文输入法是由余明俭等人开发的ZWinPro/Chinput。但由于该输入法直接依赖 XIM输入法协议,而且没有考虑到对多语言环境的支持问题,因此这个输入法从架构上只支持中文输入。
后来我接收维护ZWinPro/Chinput项目,负责对其进行改造以便支持GB18030、BIG5-HKSCS等编码。但由于本身架构的缺陷,这样的改造非常困难。即便经过改造可以支持这些编码,将来要想支持其他编码和语言也是非常困难的。
经过几个月的工作,我觉得继续维护这套代码不是长久之计。推倒现有设计, 采取一套全新的架构才是可持续发展的道路。

图2 输入法前端模块(FrontEnd)

开始,我并没有想要重新开发一套全新的架构,而是想看看有没有现成的成熟架构可以使用。
通过上网搜索,我发现XIM的作者Hideki Hiura先生也已经意识到XIM本身的弊端,从而已经在开发一套全新的架构IIIMF(Intranet & Internet Input Method Framework)。但IIIMF虽然是一个非常新颖的架构,但由于设计过于复杂,导致开发难度很大。而且当时的IIIMF还非常不成熟,我甚至都没能正确运行过IIIMF。

图3 输入法引擎模块(IMEngine)

经过一段时间的研究和思考,我最终决定重写一套全新的输入法架构,其目的主要有以下几个方面:
◆大大简化输入法引擎的开发难度;
◆用一套输入法框架同时支持多国语言的输入;
◆降低输入法框架对平台和底层输入法协议的依赖,以便于将来移植到其他操作系统平台。
基于这个想法,我就开始设计SCIM输入法框架。恰巧当时我在学习C++语言,觉得面向对象技术比较适合输入法框架的开发。因此决定尝试采用C++语言开发整个框架,这个决定后来被证明是正确的,因为这大大降低了SCIM框架的开发难度,为开发者提供了一套非常简单、便于上手的编程接口。由此吸引了大量开发者加入SCIM输入法模块的开发行列。

SCIM输入法框架现状

经过五年的不断开发和改进,期间经过大约三次重构,现在SCIM的架构已经基本稳定。由于SCIM基于完全模块化设计,可以很容易的添加输入法模块,目前在国际上已经涌现出很多基于SCIM框架开发输入法模块的团队。
目前稳定的输入法模块已经可以支持多达40多种语言,包括中日韩语、东南亚各国语言、中亚各国语言等,同时也支持各种拉丁语言的输入。已经有众多的Linux用户在使用SCIM输入法,因此SCIM也被业界大多数Linux发行版厂商所采用,包括国际知名发行版Novell SUSE Linux、Red Hat、Ubuntu、Mandriva,以及很多国内及亚洲发行版,如Aisanux、Red-Flag和TurboLinux等。

图4 进程间通信模块


图5 输入法Panel


图6 输入法Heiper

目前SCIM已经进入一个稳定维护期,只进行错误修正和小功能的增强,不再进行大的框架改进。下一个目标是开发一套全新的输入法框架,来取代现在的SCIM。

输入法框架展望

两年前由中日韩三国发起成立了东北亚开源软件论坛 (NEA OSS),在这个论坛的指导下,三国发起成立了一系列工作组来负责相关合作研究的课题。其中包括一个开源标准研究工作组(WG3)。这个工作组的主要任务是研究和制定与开源软件 (主要指 GNU/Linux) 相关的标准。其中最主要的内容就是输入法开发接口的标准 (SWG1 子工作组),我作为该工作组的成员,参与了输入法接口相关标准的制定工作。
目前我们正在进行相关可行性研究工作。这个全新的输入法框架具备更加灵活的架构,功能丰富,易于扩展。我们希望这个新的框架能够最终统一Linux下输入法开发平台,给输入法开发者提供一套强大、完善、易用的开发平台和工具库。

与其他输入法的关系

很多用户往往混淆SCIM输入法框架和基于该框架开发的某一输入法之间的关系。简单而言SCIM输入法框架就是为输入法开发者准备的一个开发平台,开发者基于SCIM框架可以用很简单的代码实现自己的输入法。
基于SCIM框架开发的输入法都是以插件的形式存在,由SCIM主程序负责调用和执行。我除了负责开发SCIM框架以外,还开发了多个SCIM框架的输入法插件,比如智能拼音输入法、通用码表输入法和内码输入法等。

关于SCIM的展望

SCIM是一个输入法框架,其具备以下特点:
◆完全用C++编写,采用完全面向对象的结构;
◆完全模块化,各种功能模块,如输入法模块、图形界面模块、配置模块等,都以独立插件形式存在,具有很高的灵活性;
◆采用Unicode编码,完全支持国际化语言环境;
◆输入法模块完全独立于图形界面,便于开发和跨平台移植。
经过众多输入法开发者和用户的使用与检验,SCIM已经被证明是一个成功的项目。
目前除了日常维护SCIM输入法框架以外,笔者正在致力于开发一个全新的智能拼音输入法核心,将具备良好的整句输入能力和丰富易用的功能。我的目标是:开发一款完全免费、开源、好用的拼音输入法,解决中国用户使用GNU/Linux系统的首要障碍。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值