丰富的开源资源为开发者提供了便利,但如何在这么多的资源中找到适用自己项目的呢?国外开发者Daniel Marbach(他的介绍)在其博客中详细介绍了相关技巧。
Daniel Marbach认为利用开源库可以大大提高开发速度,他经常鼓励自己的团队成员在开发中选用开源项目。他总结选用开源库的技巧如下:
1. 首先根据自己的项目性质选择合适的开源许可证。
对你所开发软件的顾客和应用对象来说,许可证是否适用非常重要。例如,在受监管的环境下,通常只有Apache2可用。
2. 定义你要解决的问题类型。
例如需要解决的是软件的分发、缓存、持久性还是松散耦合?
3. 提炼出问题的mate标签和描述性短语。
例如,如果你需要解决的问题是关于在多个机器中的***路径,你的标签或短语可能会是遗传算法、job-Shop Scheduling、规划图、优化调度算法、最短路径等。
4. 浏览codeplex, google code or sourceforge (github.com 也是个很有价值的网站) ,并列出初步筛选到的项目。
例如:在IoC/DI列表里,可以找到ninject, structuremap, autofac, windsor等开源项目。
5. 找到这些项目的主页,分别查看项目的***进展,标出那些很久没有更新或者已经停止开发的项目。
注意主页上的新闻、发布通告、提交记录、网站更新等。我一般会从列表中删除掉那些超过6个月没有做更新的项目。
6. 到代码库页找到相关测试组件。
建议你将没有单元测试组件的项目从列表中删去,也许你觉得这个要求过于苛刻了,但如果没有单元测试,如何能保证这个项目的质量呢?
7. 在项目主页中确认有相关文档。
从选好的项目列表中删去那些没有文档、代码示例或适用指南的项目。毕竟学习一个全新的工具或框架我们需要付出一定的精力,一个全面细致的文档是非常必要的。
8. 检查项目源代码是否指定了版本控制系统,并查看是否有扩展点(extension points)。
理想的开源软件库或框架并不限制你使用特定的日志框架或依赖注入容器(DI container)。而多种扩展点可以为你提供定制化日志系统、容器等的可能性。
还有其他一些筛选原则,你可以根据所作项目的需求进行考查:
1. 是否附有构建脚本(build script)
2. 该开源项目小组是否持续使用同一集成开发环境。
3. 该开源项目是否有清晰的road map。
4. 该项目是否设有问题跟踪器(issue tracker)?
5. 是否很快就有社区补丁推出?
6. 在社区中,关于该项目的问题反馈是否迅速?
7. 其他的开发者是否乐于使用该开源项目,在社区中关于该项目的知识技巧是否很快传播。
8. 有多少活跃的项目贡献者?
9. 版本号管理是否清晰?
10. 对于来自社区的具体需求,该项目的改进和集成情况?
外文出处:http://www.planetgeek.ch/2010/06/20/how-to-select-open-source-libraries/
【编辑推荐】