![](http://img.e-com-net.com/image/info10/fa8ea87cc67f4ff8893acbeedffe7a23.jpg)
Doug Hellmann,美国软件开发者,Python 图书作者,Python 软件基金会(PSF)成员,当过两年 Python 软件基金会公关主管。Doug 是 《Python 杂志》的专栏作家,后任该杂志主编。他还是知名博客 “Python 模块周报”(PyMOTW) 的作者,该博客的内容后来编纂成册,即《 Python 3 标准库》一书。Doug 是 Red Hat 的首席软件工程师,主要负责该公司的社区管理,确保 OpenStack 长期、持续发展。
访谈主题:OpenStack、Virtualenvwrapper、Python 2.7 与 3.x 版本对比。
Mike Driscoll:Doug,请问您为什么会当程序员?
Doug Hellmann:小时候,我参加学校组织的夏令营时首次接触计算机,从此,就对计算机产生了浓厚的兴趣。对我来说,编程是一种享受,对研究计算机运作原理也乐此不疲,从小就立志上大学要学计算机科学。大学的经历让我坚信,编程既能让我乐在其中,又能让我养家糊口。
Driscoll:为什么选择 Python?您觉得 Python 有什么特别之处?
Hellmann:最早接触 Python 是 1997 年,那时,我为 ERDAS GIS 软件公司开发工具,负责建立管理组。
我们需要开发工具,管理 Windows NT、95 等 UNIX 平台上的各种构建。包括大量 Makefile 和 Shell 脚本,但这些文件都不能跨平台使用。后来,我们选用了 Python,越用 Python,越觉得可以玩出很多新花样。
Doug Hellmann:‘越用 Python,越觉得可以玩出很多新花样。’
刚一接触 Python ,我就发现这是一种简单、易用的工具语言,我很开心,同时,又很痛苦,公司不让我们用 Python 干些真正的‘大活儿’!
Driscoll:我特别喜欢看您主编的《Python 杂志》,但我不明白这本杂志是怎么创刊的,为什么会停刊?
Hellmann:《Python 杂志》是 Brian Jones 创刊的,他是第一任主编。Brian 想要创办这本杂志,他找到 MTA 出版社寻求支持。这家出版商当时主要关注 PHP 社区,不过也认同 Python 社区可以搞这样一本杂志。
现在看来,当时这种做法是正确的,但纸质付费杂志推出的时机不对。电子杂志的效果可能会更好,但这事儿干起来确实很难。
Driscoll:您编写 “Python 模块周报”博客的初衷是什么?驱使您十年不断的动力又是什么?
Hellmann:这个博客已经写了十年了。2007 年,我开始写 PyMOTW 系列博客(https://pymotw.com),当时只是想形成一种写作习惯。选定这个主题是因为好找写作话题,每周一篇这个目标也不难。
社区里的人对这个博客兴趣增长比较慢,但反馈都很正面。要不是大家的鼓励与支持,估计我早就写不下去了。
Driscoll:您为什么会决定出书?
Hellmann:前几年参与 PyCon 项目时,Mark Ramm 介绍 Pearson 出版社编辑 Debra Williams Cauley 给我认识,我向他们提出了把博客帖子编纂成书的想法。Debra 帮我规划了该书的架构与格式。Pearson 的整个团队都非常专业,与他们合作非常愉快。
Driscoll:您的书对 Python 开发者帮助很大,您对 Python 新手有哪些建议,学完基础知识以后,应该怎么做?
Hellmann:我建议设定一个目标,解决自己希望解决的问题。搭建一个框架,把要学的内容当做可以分解的项目,每次实现一个小目标,有利于在某个时间段内只专注于一项技能。
2015 年 PyOhio 大会时,我曾以自己的一个项目为例,讨论过这种思路。当然,不是所有项目都像 Smiley 这个例子那样复杂,详见这个帖子:PyOhio 2015 Talk on Smiley and Iterative Development
开发一次性工具脚本的同时,程序员还要学会开发更复杂、可复用的项目,所有这些工作都是学习新技能的机会。
Doug Hellmann:‘开发一次性工具脚本的同时,程序员还要学会开发更复杂、可复用的项目,所有这些工作都是学习新技能的机会。’
另一个有利于学习的方式是多参加当地聚会,和同行多交流。Python 亚特兰大小组一直鼓励大家介绍各自的心得体会,了解更多技能,探讨更深入的话题。聚会时,演讲后的问答环节通常信息量最大,茶歇时大家闲聊讨论的话题信息量也很大,有机会可以问一些更细、更明确的问题。
Driscoll:您现在都参与哪些活跃项目?
Hellmann:过去五年来,我一直在做各种与 OpenStack 相关的工作。除了云端软件管理,我们还开发了 pbr 支持库这样的打包工具。
Driscoll:您是怎么成为 OpenStack 的开发者的?
Hellmann:我在 DreamHost 公司时开始接触 OpenStack。几年前,在 Python 亚特兰大聚会上认识了Jonathan LaCour,他是该公司的技术副总裁,当时,他们公司需要招人,正好我也想换工作,就加入了他们公司。我们在亚特兰大有个小团队,团队成员互相引荐,最后大家都加入了 OpenStack 社区。
Doug Hellmann:‘几年前,在 Python 亚特兰大聚会时认识了Jonathan LaCour,他是该公司的技术副总裁。’
Driscoll:这么说是这些聚会推动了您事业的发展!那您现在对 OpenStack 的目标是什么?
Hellmann:Red Hat 给我的授权非常灵活,确保 OpenStack 社区健康发展就可以了。我服务于技术委员会,这是个自行举荐的管理实体。我们希望能指导项目进展,协助重要贡献者参与重要决定的审核工作。
Doug Hellmann:‘Red Hat 给我的授权非常灵活,确保 OpenStack 社区健康发展就可以了。’
我还是 Oslo 团队的领导,管理 OpenStack 服务通用支持库。我们想开发尽最大可能支持复用的支持库,但大多数情况下,其他人根本用不上我们在 OpenStack 中分享的代码。
我还负责优化发布工具,这项工作既要适用于五六个项目这种手动发布流程,还要能支持多达 350 余项可交付物的自动发布流程。我还开发了 Reno,这是一种发布说明管理程序。此外,哪里有需要,我就要去哪里帮忙。
Driscoll:是不是正因为开发了这么多工具,您才开发了 virtualenvwrapper?
Hellmann:当《Python 杂志》技术编辑和主编时,经常要管理不同虚拟环境。每篇文章作者用的工具都不一样,但又必须测试这些文章的代码。
Virtualenvwrapper 这个项目其实是根据工作需要开发的,目的是为了简化管理各种虚拟环境。到 OpenStack 工作后,我的工作方式改变了很多,也没有精力像以前一样提供维护服务,不过,很高兴现在 Jason Myers 接手了这个项目。
Driscoll:不管怎么说,virtualenvwrapper 是您开发的,能讲讲您从中有什么收获吗?
Hellmann:没问题,实际上,我从中学到三件事儿。
首先,开源项目会带来很多意想不到的惊喜。Doug Latornell 提交了支持 ksh 的补丁。我以前只考虑了 Bash,从来没想过有人会对 ksh 感兴趣。估计他当时是在 AIX 系统上使用 virtualenvwrapper,他的补丁一开始就轻易地整合到这个项目里,提供了很好的支持。
第二点是,一定要乐在其中。比如,我看了 Alex Gaynor 的 Tweet,就开发了下面这个网页:
https://bitbucket.org/dhellmann/virtualenvwrapper.alex
“ Virtualenvwrapper.alex 为通用 virtualenvwrapper 安装命令辨识出现错字的别名。这个功能是应 Alex Gaynor 所求而开发的。”
第三点是众口难调,让大家都满意这事儿不现实。所以,virtualenvwrapper 支持大家分享扩展插件,现在,出现了一堆 pyenv、vex 等功能相似的插件,还有很多操作模式大相径庭的工具,这种现象很好!刚才说过,我的工作方式已经改变了很多,不再像以前那么需要 virtualenvwrapper 了。
Driscoll:如果能回到从前,重新开发 virtualenvwrapper 的话,您的做法会有哪些不同?
Hellmann:我之前基于 Python 3 的 venv 而不是 virtualenv 开发的 virtualenvwrapper,现在,我会把它设计成支持子命令的单一主命令形式。
Driscoll:现在 Python 让您觉得最兴奋的是什么?
Hellmann:我一直都很喜欢 Python 这个生机勃勃的社区。Python 的用户越多,Python 应用的领域越多,社区就会蓬勃发展。
Driscoll:您对 Python 2.7 这么长寿有什么看法?
Hellmann:Python 2.7 生命力这么顽强说明大多数公司对重写逆向不兼容软件的需求不高。
建议大家使用 Python 3 最新版开发新项目,便于在平台上部署。绝大多数活跃支持库现在已经支持 Python 3,Python 开发人员应该认真考虑升级老应用的事情。
Driscoll:您希望看到 Python 新版本推出哪些改进?
Hellmann:我现在非常关注打包功能。这与 Python 本身关系不大,主要是 setuptools、twine、wheel、pip、warehouse 这些工具。简化打包流程和发布 Python 包对所有 Python 用户都有好处。
Driscoll:谢谢您,Doug Hellmann。