谈谈 软件 开源项目

开源项目  要 发展壮大,  卓有成效,    要做好 模块化 工作    。

 

就是   作者 要 把 代码 写成 、整理成 模块 的 形式,  提供出 简洁 清晰 易用 的 接口,   让 别人 容易 的 使用 。

 

项目 的 架构 要 清晰,   内核模块 和 扩展模块 要 清晰 ,  模块 的 功能 要 清晰 突出   。

 

总之就是 要 清晰 、突出,  让 别人 可以 容易 的 拿去 使用   。

 

这样,  别人就可以容易的 使用 你的 模块 去 创造搭建 新 的 模块,   别人的别人 又 可以 容易的 使用 你们 的 模块 去 创造搭建 新 的 模块   ……

 

如此,  开源项目 就能 生生不息, 发展壮大     。

 

说白了,   开源项目  不是 要让 别人 来 读 你的 代码,  而是 要让 别人 来 用 你的 代码    。

 

读自己的 代码 都很烦,  更何况 读 别人 的 代码 ?          读代码 的 目的 是 学习 。

 

但是 开源项目 要发展,  仅仅把 代码 摆 在 那里 让 别人 来 读 是  远远不够 的  。   需要做好  模块复用 和 模块替换 的 工作 。 

 

模块替换 就是 未来 有新的 ,  更好 的 模块 来 完成 这个工作,  就可以 用 新的模块 来 替换 旧的模块,     这样,  开源项目 就能 生生不息, 发展壮大     。

 

如果 把 代码 摆在 哪里 就能 让 项目 发展壮大,  卓有成效,   那 你们 可以去 把   PostgreSql  或者 MySql 的 代码 拿来 发展 发展 啊,   等你把 PostgreSql 的 代码 读完,  你也 差不多 50 岁 了  。

 

PostgreSql  是 加州大学 历代师生 积累的 结果 。     另外, 很多 开源项目 都是 有 商业支持 的 。   比如  Mono,    Mono是一个由Xamarin公司(先前是Novell,最早为Ximian)所主持的自由开放源代码项目。   见 百度百科   “Mono”   。

 

所以,   一个 开源项目 如果没有 商业支持,  又要想 发展壮大, 卓有成效,  就要做好 模块化 工作 。

 

最后,   我还是 再 重复一遍   Unix 的 一条 编程原则 :        编写一些简单的模块,  把它们连接起来 。

 

比如,  我们可以来写一个数据库,   数据库 可以看作 由 这样一些 模块 组成 :

 

Sql 分析器 、关系运算器 、虚拟存储    等,  这是 最基础 的 。     实际中 还有 优化器 等 。

Sql 分析器 就是 对 Sql 进行 语法分析,    这是 编译器 技术 的 一部分  。

关系运算器 根据 Sql 分析 的 结果 和 关系运算规则 生成 查询计划(更新计划)   。

虚拟存储 类似 操作系统 的 虚拟内存,   把  数据文件 和 内存 映射成一个 虚拟存储, 用于 数据 的 检索更新   。

虚拟存储 又 可以 分为 内存缓存 、IO 、数据文件   这样几个 模块 ,   数据文件 和 操作系统 的 文件系统 差不多  。

Sql 分析器  包括 语法分析器,  语法分析器 又可以分为 很多 子模块 来写 。

 

所以,  模块化 以后,   一个 大型项目, 或者 复杂软件,  也可以 完成,  可以 分期 完成,  多人 完成,  灵活搭配 、局部完成 、衍生分支和副产品 等等,  总之 很灵活,   很有生命力 。

 

大家有兴趣的话,   以后 我 慢慢 发      。

本文已发到了 民科吧  《谈谈 软件 开源项目》    http://tieba.baidu.com/p/6429500905         。

原文地址:https://www.cnblogs.com/KSongKing/p/12152882.html