最近购得一个openwrt书籍《智能路由器开发指南》,做者张永智。html
Building a smart router with openwrt服务器
做者网址:http://openwrt.bjbook.net/网络
做者提供软件包下载服务,和openwrt代码搜索引擎,同一网站。架构
书中所提到的系统使用openwrt 12.09和openwrt 15.05.1介绍。框架
做者但愿经过本书的学习可以掌握openwrt各类技术的应用,同时在必定程度上能够参考openwrt的技术架构,使本身的职业技能有一个质的提升。异步
在异步社区http://www.epubit.com.cn/book/onlinechapter/43506有本书前两章内容,可供参考。分布式
做者在前言中提到了openwrt成功的秘诀,能够学习参考。工具
能够实现路由器功能的开源软件不少,为何只有OpenWrt成功了?OpenWrt软件成功的关键在于3个方面:领导者、基础设施以及实现软件的技术。一般领导者是最重要的,由于领导者决定着社区的规则和技术方向,可是每一个人都是独特的并且是没法复制的,所以一般没法借鉴。基础设施和实现软件的技术则是能够借鉴的。学习
OpenWrt社区采用六大基础设施工具支撑整个社区的运转,这六大基础设施工具分别是代码管理工具Git、邮件列表、自动构建工具buildbot、文档管理工具WiKi、Trac和技术论坛。测试
代码管理工具Git能够跟踪文件和目录的历史信息,包含4个W(Who、When、Why和What),即谁作了修改,什么时间作了修改,为何修改以及修改的内容是什么。此外,Git还支持分布式代码仓库,适合开源软件项目的跨地域开发,这个工具可让每一个人看到代码的变化过程。OpenWrt通过了12年的发展,代码仓库还保留了最初的提交记录。
邮件列表是代码审查及代码提交集成的地方,开发人员将修改代码生成补丁发送给全部的邮件订阅者,每一个人均可以进行代码评审,核心开发人员看到后会将代码集成到代码仓库中。邮件内容能够永久保存到邮件列表中。邮件列表和普通邮件的主要区别在于订阅机制和存档机制,每一个人均可以自由订阅并查看历史邮件。
自动构建工具buildbot的核心是一个做业调度系统,它会将任务排队,当提供了任务所需的资源时,执行任务并报告结果。buildbot不只仅支持持续集成及自动化测试,还支持应用程序的自动化部署和软件发布的管理。同时在多个平台开发时,一般最后的编译验证都是重复的,编译机器人(buildbot)将这一部分接管过来,每日自动下载代码进行编译验证,并将安装包上传到文件服务器上,若是编译失败则将用邮件通知感兴趣的人。
文档管理工具WiKi的特色是具备开放性,可让任何参与人员很是方便地进行编辑、访问和搜索。大多数软件公司的软件文档均保存为二进制格式,在通过一段时间和人员流动以后,这些文档就会成为固定的资料,由于它会被遗落在某个角落而没法找到,而OpenWrt社区的软件开发文档和使用手册均保存到WiKi上。WiKi是一个协同写做和分享平台,容许全部人修改页面。WiKi使用简化的语法来代替复杂的HTML语言,下降了内容维护的门槛。
Trac是一个集成WiKi和问题跟踪管理系统的项目管理平台,能够帮助开发人员更好地管理软件开发过程,从而开发出高质量的软件。任何人均可以使用该系统来提交Bug并查询当前的进展。Trac采用面向进度的项目管理模型,采用里程碑的方式来组织开发。里程碑是以ticket(问题)来组织的,全部的问题都解决了,就到达了里程碑。但社区并不彻底听从这个标准,由于其开发人员所有是志愿者,一般到了必定时间会发布一个版本。
技术论坛是一个技术讨论的平台,每一个注册用户都可发帖参与讨论。在开发过程当中,每一个新版本的说明经过该平台发布。
社区的运转是经过以上所述的六大基础设施工具来实现的,咱们经过这些工具能够理解到,开源软件和社区的精髓在于其开放性,任何人员都可以经过网络自由地获取其信息并参与其中,这样能够激励每一个人贡献出本身的力量,开发人员同时也从社区得到回报。开源社区的工具大多都是相同的,掌握这些工具能够帮助你深刻了解开源社区和OpenWrt。
OpenWrt技术上成功的秘诀在于:统一编译框架、统一配置接口(Unified Configuration Interface,UCI)、开放的软件包管理系统及其读写分区系统、系统总线ubus和进程管理模块procd。
全部的这些功能并非一次性设计出来的,而是随着时间的推动,根据用户和开发进展逐步发展起来的,每一种技术都有其独特的价值。
那么怎样向openwrt提交代码呢?
参考做者的建议:如何贡献代码