Mod_python: 漫长的故事

这个故事发生在1996年。我当时也就是20出头,在一家小的专门从事在线报告一些医学数据的公司当程序员。

这里有个基于网络的应用(过去的很长一段时间里都认为它是很棒),但很不幸,它是用VB写的,然后我决定对此要改变些什么。当时开源是很流行的,而且我非常赞成,我就让我家里的386运行上了Linux,而且最近我听Guido的谈话时,他提及到了DC Linux中用Python来呈现用户组。Python看起来是替换可怕的VB的最佳选择。

我把自己关到小屋子里并花费数周时间来学习Python以及重构整个应用。(在过去的那些日子里,这就是程序员的工作方式,没有“敏捷”开发和“每日站立式会议”,所有人都理解这些都得花费时间的。我很留恋那些日子。)Python很让人着迷,重构很快就完成了。

我意识到,想要给我的老板解释我这样工作是个大挑战。你知道的,那时没有人知道网络应用也能用Python重构,但后来我不得不展现这是真的,更为重要的是,要证明我的决定是正确的。我需要一个好的理由,那就是基于面向对象编程、代码简介、开源等等耳熟能详的优点。,

那段时间和Python相关的网络编程书籍也就刚刚出现,在书里的某个章节里介绍了如何在Netscape公司的网络服务器上嵌入Python解释器。这个想法让我看起来非常有趣而且它可能包含了我要寻找的那些证据-它可以让应用更快。(当我们要谈论营销管理时“更快”和“更便宜”差不多)。我不能说那时我懂得C,但是用它可以让某些东西正常工作,而且速度显著的提高了。

在之后的一些日子里,我在一个大型会议中展示了被称之Python的新工具,它能比微软的产品快好几个数量级。而且,顺便说说,我昨晚成功的修改了一些很酷的东西-让我来做个活生生的例子吧,看看它有多快!它们可是很乐意的。

他们都不知道,我们的应用已经用Python运行了数月,因为其语言本身的能力,我在其加速方面没有做很多事情。因为我在网络服务器上已经嵌入了Python解释器。当我认为一切都已经就绪后我决定将我的小工具开源,然后我将其放入我的网站上让任何人都能用。我命名为NSAPy,它是Netscape服务器API和Python的组合体。

但我没有停止我的脚步,很快我又在Apache网络服务器上复制了这个工具,当时网络上说我的工具是一场风暴。自从有了mod_perl之后我的工具自然就叫mod_python了。

那段时间一切都很顺利。当时是90年代末,电子商务在网络上才开始流行。我开始为一家小的ISP工作,很快这家公司摇身一变成为一个家规模很大的网络主机提供商,我们运行着数以百万的网站,用数千个服务器来构建新的数据,并掌握着世界上(看起来)近千兆比特流量。随着公司股票上涨,我和我的同事都成为了百万富翁。Mod_python依然运行良好。它工作的网站十分繁忙,并拥有一个很大而且非常活跃的邮件列表以及拥有不停增长的投票用户。我参加各种开源会议来宣传它(令人吃惊的是每个人都知道mod_python)。

然后是2001年,我们刚刚搬了家,我的第二个儿子甚至还没有满一周岁,在夏天一个风和日丽的日子,我被强制邀请参加一个会议。这个会议是关于我们公司的三分之二的人需要离开。虽然我们以前感觉它终究会来的,但是还是让我们非常的震惊。我记得那天早上我回到家我不得不向我的妻子解释我已经被炒鱿鱼了。在这之后的一整个晚上,我忽视了整个家庭,我在担忧未来1年或2年我们怎么应付财政上的问题,因为我丢掉了最重要的工作做最重要的事情。在我看来2007年的经融危机都不能和这次网络不景气相比。下岗的人无处不在,网络成为了一个肮脏的词汇,软件开发被外包给了印度。

在接下来的几年里,我到处承包工作。不管怎么说, 那时mod_python在我最高优先选择里面是不正确的。但是它后来却变得越来越受欢迎,邮件也越来越多,尽管它没有帮我赚到很多钱(至少对我来说)。我尽力让我空闲的时间来做其他的事情,回复邮件和定期的发布新版本。后来发现时间越来越少了,特别是我有很多工作要做,以至于我没有时间放在mod_python 和Python上面。

一天我突发奇想,把我的mod_python捐赠给Apache软件基金会,只有这样才能保证它继续存活,即使我不能在做任何贡献了。然后我就这么做了。最初的事情很顺利——这次捐赠把mod_python加入到了声誉很好的Apache中,这非常棒。Mod_python获得了大量的用户和重要的贡献者。

与此同时我的生活变得更加有压力了。我在mod_python身上的投入越来越少直到没有。我也觉得我的体验耗尽了。在邮件列表中回答问题变得很烦人。我不得不要阅读有不同特性的意见书或着回应一些工作原理,永无止境。这个已经不在有趣了。

我也觉得人们还是不了解mod_python是什么,而且我也没有对其解释好。(它的价值是什么,我任然在思考着)。在我的脑海里它只是给Apache提供的外部接口,但是因为将所有结构和API都用Python重构是不可能的,只能选择的部分才能暴漏。然后,mod_python为Apache提供的方法执行的很棒,比如,全局锁,缓存。最后,它也提供了一些普通的任务并按照Apache指定的方式来实现最大性能;如cookies何sessions都属于这个范畴。出版商和PSP并不严格的属于mod_python,但因为以battery-includedness为故-你得可以构建基本的应用而不用额外的工具。

世上的其他人把它看作一个web开发框架。它不是特别好的一个,尤其是涉及开发的时候,因为它需要root权限来运行。它也无法很好的处理重载那些复杂开发的变化模块。一个贡献者提出了一个值得考虑的尝试来强调模块载入和缓存的特定问题,我从不觉得这很重要,因为对我来说重启Apache看起来就是答案,我不认为人们没有root权限可以使用mod_python。

因为我对mod_python越来越没有兴趣,我仅仅让它顺其自然。我会略读我信任的人的邮件,无论他们提出什么,我会毫不犹豫的肯定回复。对于保持和辩护我对于mod_python的看法没有任何意义。我觉得在2006年左右,我是那么的支离破碎,以至于我无法很好理解mod_python正在从事的最新特性是什么。不知道是我缺乏兴趣还是其他贡献者不再热衷,新的提交如细流般缓慢,并最终停止。我给ASF董事会的季报变成了一个“没有新活动”的剪切-和-粘帖的邮件。

这便是ASF赞助开始面对的消极方面。可悲的是,ASF的规则是项目和社区必须是积极的,所以很快项目便被搁置了起来。尽管我一直告诉自己我不在乎这些,但我必须承认它受到了伤害。一旦被搁置就像进入了一个单向垃圾通道——一旦到那项目就回不来了,还不如重新孵化。

快速推进到2013年。为什么还要重新开启它呢?主要是我厌倦了“mod_python已死”的言论充斥在网络中。每次当我看到一些不够资格的小屁孩在tweet上对它说三道四,我就忍不住意气用事。这是一个开源项目啊,如果你不贡献它只有死。

在众多的怀疑言论中我最不认同的是:mod_python已经是一个过时的概念。从这个说法开始之初我就一直与之争论着。它美好如初。Mod_python仍然是一个能够让你充分利用其灵活的构来实现强大东西的Apache接口。它不是一个Web开发框架,它也不是一个在生产里运行你最喜爱Web框架的工具(尽管它可以做的很好)。

那时候有无用户接口比服务器容量高低有更大的需求,因此不需要WSGI框架来为之助力——我认为这可能是mod_python最有用的场景之一。将Apache和mod_python应用在分布式计算和大数据上也有很大的可行性,事实上Apache是一个很好的job管理者——有人准备用mod_python写一个Map/Reduce框架吗?

我也必须注意到过去几周黑客在这上面的行为是非常的有趣。我想迅速的跟上最新的Python 3和Apache内部组建,特别是event/epoll这个东西,它是一个伟大的实现方式。我也非常的喜欢我可以再一次不需要经过审查做任何我想做的事情。

如果说我在这里学到了一件事情,那就是开源项目如果没有创建者的继续参与,开源项目很难继续存在。小王子曾经说过-“你必须永远对自己所驯服的东西负责”。这样看起来mod_python就是我的玫瑰,如果我不给它浇水,那么就没有其他人会为它浇水了。

备注 我有提到mention mod_python现在可以支持Python 3了吗?

你可能感兴趣的:(python,web开发,分布式计算,面向对象编程)