Swoole开源项目从2012年开始发布第一个版本,至今已有近7年的历史。在这七年中:提交了8,821个代码更改,发布了287个版本,收到并解决了1,161个问题反馈,合并了603个pullrequest,总共有100位开发者贡献了代码,在GitHubCoroutine2018和2019收获了11,940颗星,我们推出了新版本的Swoole4。在此之前,Swoole的主要编程方式是同步阻塞方式或者异步回调。基于协程的新型CSP编程逐渐成为我们唯一推荐的编程模式。协程大大简化了复杂的异步编程。使用Swoole4协程简单而强大。在未来的Swoole5版本中,我们计划删除非协程相关的特性和代码,减少历史包袱,提高稳定性,降低复杂度,减少不必要的选项,纯协程化。在过去的6年里,我们的团队主要从事兼职开发。团队成员大部分来自腾讯、阿里、滴滴、百度、360、小米等国内一线互联网公司,其中不乏国外的PHP开发人员,甚至是PHP开发人员。ZendVM内核语言的作者DmitryStogov也为Swoole贡献了代码。此外,我们还招募了一些大学生为Swoole编写代码,逐步培养年轻一代的开发者。2018年7月,我们组建了专职开发团队,专注于Swoole核心、SwooleCloud云原生组件和生态链的开发。告别过去草率的团队,转型为专业的开源技术研发团队。我们的目标是让Swoole项目成为像Node.js和Go一样的工业级技术,成为PHP编程语言在异步IO和网络通信方面的基石。研发管理在组建专职研发团队后,我们逐步建立了一套非常完善的研发管理体系,以提高Swoole的软件质量。主要包括以下几个方面:测试驱动(TDD)现在我们在实现单元测试脚本、压力测试脚本、自动化测试、提高单元测试覆盖率方面下了很大功夫。目前测试用例680个,压测项17个。你可以在Travis-CI平台上看到每个Commit和PullRequest的编译和测试结果。研发工作也是基于TDD。在开发新功能、重构和修复bug时,会先编写相应的单元测试脚本,测试覆盖代码变更的所有场景。代码审查(CodeReview)团队成员进行代码交叉检查和相互代码审查,充分评估和讨论代码变更的细节。对于重大更改,将进行团队审查,并花费数小时甚至数天的时间讨论每一行代码更改的细节。RFC机制对于非BugFix、非性能提升、非重构、新特性或可能改变底层行为的变更,我们将其分为4个步骤。发起RFC提案,https://github.com/swoole/rfc...,提案内容将详细说明本次变更的前因后果、相关配置项、影响范围、使用方法、示例。提案讨论,我们将对提案进行充分的讨论,追根究底,分析利弊,推敲细节。在所有问题都讨论清楚后,该项目最终获得批准并得以实施。开发负责人创建git分支,编写单元测试脚本,编写代码,实现提案中的所有内容,最后发起PullRequest交叉评审,检查代码,提出改进建议,反馈给开发负责人继续完善细节。最后并入主干。整个过程在GitHub平台公开进行,对Swoole项目感兴趣的PHPer都可以参与。灰度测试为保证正式版的稳定性,我们会在发布前对内部项目进行灰度测试,检查新版本的稳定性。另外,我们已经和大部分Swoole框架的作者建立了联系,新版本会提前发给各大框架的作者试用。有重大底层变更或不兼容会提前与Swoole上的其他开源项目作者沟通。总结一下,这几年Swoole项目不是很专业,BUG多,不好用,很多用户踩了很多坑。经过近六个月的专职研发团队的组建,我们在研发管理上有了飞速的进步,Swoole的稳定性和成熟度也不再是往日的样子。稳定永远是第一位的,以后我们会更加谨慎严谨,保证质量。重构2018年下半年,我们对底层代码进行了多次重构,在代码结构、可读性、复用性、封装性等方面做了很多优化。让Swoole软件更加简洁优雅。在编程语言方面,我们现在逐渐使用C++代替C。C++提供的面向对象、智能指针、容器、模板等特性可以帮助我们进一步提高团队的开发效率。我们也欢迎所有PHPer参与Swoole项目,贡献代码。文档Swoole的文档也是被开发者广泛诟病的一个方面。2018年,我们的团队逐渐加大了对文档的投入。重写整理文档,增加丰富的示例程序,增加更详细的图片,修复细节,删除情绪化的陈述,更加客观、中立、严谨。2019年新的一年,我们主要围绕三个方向。做减法删除非协程特性,删除不需要的模块,减少历史包袱,提高稳定性,降低复杂度,减少不必要的选项,精简再简化。Swoole内核层面将持续重构精简,减少代码行数,清理冗余代码,尽可能实现代码复用。深入项目2018年底,我们逐渐开始与大量生产环境使用Swoole的企业建立联系,包括腾讯云、阅文、好未来、陌陌、优信等企业。了解实际应用场景和商业模式,深入交流合作,提供建议,帮助企业技术团队更好地解决业务问题,接受反馈改进底层。生态链2019年我们将开发一些基于Swoole4协程的配套工具和组件,弥补PHP在CloudNative时代生态链上的短板。
