Django 奖学金项目:回顾

作者:Tim Graham 发布于 2015年1月21日

在过去的三个月里,我有幸在试点项目期间担任“Django 奖学金获得者”。我在django-developers 邮件列表上每周总结我的活动,但 Django 软件基金会要求我在此博客上做一个回顾。

一年前,Django 没有与拉取请求进行持续集成。它取决于提交者在本地运行测试,或者希望贡献者在所有我们支持的不同数据库和 Python 版本上运行测试。不幸的是,这导致了频繁的构建中断,这些中断通常会持续几天甚至几周得不到修复。这阻碍了开发,并使后续的中断更难以调试。去年春天(奖学金之前),我编写了一些Ansible playbook,以便构建一个小型 Jenkins 机器集群,这样我们就有足够的执行器来使拉取请求集成变得可行。这取得了巨大的成功,既有利于保持构建的正常运行,也有利于帮助贡献者测试他们的贡献,因为他们通常没有在本地设置所有环境。在奖学金期间,我使用运行 Ubuntu 14.04 的一些机器扩展了我们的 Jenkins 集群(现有机器在 12.04 上),以支持使用更新的数据库和 GIS 依赖项版本进行测试。这有助于识别更新的依赖项中的错误,并且还需要测试一些新的contrib.postgres功能即将在 Django 1.8 中推出。我还添加了拉取请求上的 flake8 集成,以便在样式警告意外提交之前将其标记出来。自动化这些检查减少了代码审查期间审查人员需要担心的内容。

同样在基础设施方面,我将 djangoproject.com 网站从 Django 1.6 升级到 1.7。多亏了许多志愿者的努力,我们推出了 djangoproject.com 的新设计。在上线之前,我帮助对新设计进行了质量保证。

在我们的工单跟踪器中,我每周都会对大约 10 个新的工单进行分类,防止“未审查”的工单队列像过去那样累积到 40-50 个工单。

转向我们的发布流程,Django 一直难以沟通并发布及时的错误修复版本。问题的一部分原因是只有少数人(两人)能够发布版本。Django 团队通过修改我们关于谁可以发布 Django的政策来解决此问题。我发布了一系列错误修复版本以及安全版本在这个月。通过准备补丁并将它们反向移植到所有受支持的 Django 版本来协调安全版本是一项耗时的任务,它受益于奖学金计划提供的专注关注。

作为 1.8 的发布经理,我每周都会发送电子邮件更新发布阻碍因素的状态,我们本周早些时候实现了功能冻结的目标,并在上周五发布了Alpha 版本。Django 版本很少像这样按最初的计划进行。我们在1.8 路线图中设定的所有主要功能都已完成。我花了很多时间审查其中许多功能。查看1.8 版本说明,了解我们完成的所有出色工作。为了确保及时发布,当其他人没有时间或兴趣处理发布阻碍因素(回归或新功能中的重大错误)时,我自己解决了这些问题。

我们还努力修复了稳定版 1.7 分支上的问题。到目前为止,1.7.x 系列版本已修复了 100 多个回归或新功能中的错误。

在代码审查方面,我每周平均审查 15 个来自核心开发人员和社区成员的补丁。我认为提供及时的代码审查是奖学金计划最重要的任务之一,因为它可以改善项目的文化并防止潜在的贡献者放弃我们。我认为这不是什么秘密,这是 Django 在过去一直努力解决的事情。请考虑来自 Loïc Bistuer 的以下推荐,他目前是 Django 的团队成员

当我开始为 Django 贡献代码时,补丁(尤其是重要的补丁)往往会在拉取请求队列中滞留。在一些我的贡献在几个月内都没有得到审查后,我最终放弃了贡献。然后 Tim 开始投入大量时间到 Django 并审查了我的贡献。及时的审查和快速的反馈循环起到了催化剂的作用,在短短几个月内,我们一起发布了 100 多个补丁,包括 Django 1.7 的 4 个主要功能。历史上,Django 贡献者的流失率非常高,奖学金项目是对这个问题的直接回应;对于 Django 和所有依赖它的人来说,这是一个绝佳的机会。

我希望您能考虑向 Django 软件基金会捐款,以帮助续订奖学金项目及其支持的所有激动人心的工作。

返回顶部