一、阅读内容
第四部分
第十一章 GNU Emacs滋长的特性是其优势
第十二章 当集市开始构建教堂
二、笔记总结
(1)Emacs的架构
Emacs架构采用的是在交互式应用程序中应用广泛的模型-视图-控制器模式。在这个模式中,模型是程序所操作数据的底层描述,视图则是向用户展示数据的方法,而控制器则负责实现用户与视图的交互,并对模型进行相应的更新。值得注意的是Emacs拥有显著的可滋长的特性。当一个程序拥有越来越多的代码的时候,维护它就需要付出更多的努力。当一个开发人员发现了一个可实现的特性的时候就把实现的代码放在一个文件中,从一个简单的命令开始不断重复这个过程,这使得最后代码文件渐渐成为一组互相协作的命令集,这时我们对这些文件进行包的封装,最后再将这个包纳入到Emacs的发行版本中,使得Emacs得到了扩展。采用了类似的架构的程序比较经典的是eclipse和firefox。
(2)KDE社区里ThreadWeaver和Akonadi项目的发展
在十多年的发展历程中,各种不同的人群都对KDE做出了贡献。KDE项目最初的目标是为开源的UNIX系统提供一个集成的桌面环境,但是实际上KDE的范围是十分广泛的,在编写KDE程序库代码时需要和各种不同的工具链打交道。应对不同平台的特性,以灵活,可扩展的方式整合系统服务,明智、谨慎的使用硬件资源。加上其代码库拥有大量的目标受众,因此提供的API必须是易于理解的、有用的,适用于不同背景的程序员的。在开源程序的开发过程中可能遇到很多挑战,在技术方面由于软件要面对不断增长的数据量,而且数据将变得越来越复杂,个体和组织需要的工作流也是如此。但是更大的挑战是来自社会性和协调性方面的,这个方面的工作量是十分巨大的。Akonadi的核心观念是为系统中所有的PIM数据和相关的元数据建立一个集中的缓存。另外,Akonadi还有一个基础性的视角,那就是用来访问特定类型的存储后端的组件将以单独的进程运行,这样就可以避免服务器中潜在的错误影响到整个系统。ThreadWeaver是KDE4.0中的一个核心程序库,它与Akonadi形成了鲜明的对照。ThreadWeaver是负责并行操作调度,其目标是在多线程软件中管理和分配资源的使用。另外一个目标就是为应用程序开发人员提供一个实现并行机制的工具,与那些在开发GUI应用程序中所使用的方法类似。ThreadWeaver为问题提供了一个备选的方法,当程序库作者以及预期的用户社区开始在其自己的项目中采用它的时候就逐渐进入了成熟期。