PHP的未来 - Zeev Suraski访谈录
问:2007年九月发布的Eclipse PHP开发工具(PDT),谁在背后和做了那些工作?
Zeev: PDT 是Eclipse的项目,但Zend起了主导的作用。
问:这和Zend Studio的关系如何?
Zeev: 我们现在同时在干三件事。第一,Zend Studio,我们正在售卖此产品,。。。第二,PDT,面向广大的开源社区。。。第三,扩展PDT的功能,打造成商业版。。。
问:这就是说,PDT不会代替Zend Studio?
Zeev:目前不会。如果发现Eclipse上所有的变化,我们会满担心的。。。
问: Eclipse有什么优点?
Zeev:一个主要的优点是有很多接口,该有的几乎都有了。比如AJAX的和Javascrīpt的。用户还可自我开发。另一个优点是容易贯彻标准 化。。。
问:Zend产品的商业版与免费版有何区别?
Zeev:(商业版中)该有的都有,如CVS,Subversion, XML和支持Java,容易安装。还有PDT不具备的一些商业接口。整合了其他的Zend 产品支持Web services 和特别的数据库。
问:Zend 要和Microsoft 合作在Windows里使用PHP。合作内容是什么?有那些共同开发部分?Microsoft为什么要这么干?
Zeev:夥伴关系建立快一年了。Microsoft打定了主意要和其他操作系统,尤其是Linux,争夺作为PHP的目标平台。到目前为 止,99%的用户建立在Linux 或 Solaris平台上,因为Windows对PHP来说不好用,Microsoft想改变这点。
我们开发Zend的时候也知道大多数的应用都是用在Windows上的。很多基于Windows系统连接互联网的用户,为了维持竞争力,也需要解决方案,这类用户越多,需求越大。。。
我们和Microsoft合作的共同目标是:让PHP在Windows下运行得最好。。。。
问:这是长期的项目吗?
Zeev: 对,大部分已完成了。我顶多能说PHP在Windows上运行得比Linux慢。。。但我们还会继续改进。。。
问: PHP现在怎样?PHP4的支持到年底就结束了,但还有很多人担心从PHP4升级到PHP5会出错?
Zeev:PHP 5 还没出,我就知道会有问题。这个问题不是PHP本身的问题。之前的版本已经很好了。让我们看看PHP的发展过程。。。
到了PHP4,用户群已经非常庞大了。
从PHP4升级到PHP5,问题在于其认受的程度。很多人认为从PHP4升级到PHP5是困难的。在你看来,PHP4足够用了。通常一项技术 很好用时就不会去发展了,不但软件如此,其他事情也一样。比如对我来说,一个用了三年的手机仍然用的很好,即便慢点苯拙点,我也没必要去买个新的花俏的手 机,因为我的目的就是通话。正在用PHP4的人们,抱着同样的心态。很多人也担心从PHP4升级到PHP5会出现匹配性问题。这通常不会出问题,但问题就 在”通常“,(而不是永远)。转换后还要做大量彻底的测试。这些理由合在一起 -- PHP4很好用了,担心匹配性问题了,加上大量测试的需要了,足以阻拦PHP5的贯彻。
所以,对PHP4的支持不会在年底结束,而是延长到明年八月。(对PHP4)安全性的更新还会继续。即使现在,很多功能对PHP4来说都不是新的。PHP5中的新特征,已经存在好一会了。
问: 为什么我们现在要升级到PHP5,而不是等到PHP6?
Zeev:问得好。首先我们目前正处在发展中期:一面要支持PHP4的运作,另一面PHP6还没来。第二--我要很小心得表达下面的句子-- 从PHP5到PHP6之间的匹配性的壕沟是很大的。因为在Unicode编码上和语言中基本元素里的变化很可能会出现不匹配!我们在PHP6中所做的与其 说是”改进“,还不如说是”革命“。把不匹配性尽量降低是一项艰难的任务。也许我们会提供一些自动移植工具。
从PHP4跳到 PHP6 比从PHP4升到PHP5然后升到PHP6痛苦多了!但问题出来了,我们就要解决它。我们正认真小心地进行处理,并从PHP5的推广中吸取经验教训,我们 还没做最后决定,但我们会尽力让从5到6的过渡尽可能平稳。目前来讲,等PHP6出来再升级毫无意义。PHP6至少要等一年后才有可能出来。
问: 我对PHP5发布时,对释放存在的OpCode-Caches方面没有明确的说法印象深刻。老是谈到这个问题是否它没解决好?
Zeev:可能吧。刚推出时很多公司并没有用它,(所以并没重视)。但自从2004年PHP5出来后,很多公司开始使用,不管是开源的或商业 的(OpCode-Caches产品),问题可能就出来了。。。OpCode-Caches在系统搭建时是很重要的。如果没用它,你也许要多用两台服务 器。。。
问: 在PHP6里会注重这点吗?,还会有那些变化?
Zeev:在PHP6里,APC (译者注:Alternative PHP Cache) 会是PHP的一部分。APC也会成为Zend的一个商业产品。
第二部分
问: 你刚刚提到Unicode的问题,它PHP6里将有哪些变化?我们会有哪些期待?
Zeev : 老老实实地跟你讲:我还没空去想它。不是因为我们不想贯彻它,问题在于现在PHP6项目刚提出来,这是否值得我们现在就讨论。
举个简单例子 ”Name Spaces“,过去三、四年来,应各方要求,我们原想在PHP5中贯彻,但缺乏时间。现在我们把原来的决策顺序倒过来,把”Name Spaces“(的贯彻)放到后面。我们对PHP-Namespaces的工作已经做得很好了,原打算整合到PHP6中,但现在考虑把它先放在 PHP5.3里。照目前情况来看,(PHP5.3)大概明年第一季度就可推出,但可能还会改变。到时”Namespaces“很可能也会随之推出,我们可 不想让这么重要的功能干等着PHP6,况且我们自己也不肯定PHP6到底什么时候能出来。
等这些重要事项落实好后,我们才有时间来处理Unicode 和一些有关PHP配置的改变,如全局变量(Registered Globals)等等。到PHP6推出时,很多功能可能已经在PHP3.3 和PHP3.4里实现了,我们不想把什么都等着放在PHP6里。
问:几个月前,Zend Framework 1.0 推出,为什么要把PHP库用在不同的平台上,而不是放在 PEAR项目里?
Zeev :有很多理由决定了我们要开发 Zend Framework。两年前,2005年,Framework的项目开始时,我和Andi (Zend 共创人。译者注)本有几种框架可选,但我们还是决定开发新的独立的框架。
一个理由是:我们想尽可能地把PHP5的优势发挥出来。我们不想让PHP5去迁就一个框架,而是要一个能充分发挥PHP5支持对象和极其出色 地支持web的特性的框架。之前的框架是不可能做到这点的。用PHP5来开发也增加了框架的扩展性,Zend Framework的可扩展性是其一个关键要素。如果基本的贯彻不是100%的用PHP5来做,PHP5的对象模型没有持续使用,那么(这种框架的)精巧 性和扩展性就有很多问题了。
另外一个重要的理由是有关产权方面的:因为Zend Framework是和IBM的合作项目,IBM和相关的公司相当关注用PHP做出来的框架,它的产权(必须)是非常清晰的,卖方必须明确这是原创的,而不是在别人的代码上改进的。。。。
这是两个主要的理由,其他的微不足道。我们特别想要强调一下品质。品质也许是非常主观的(看法),但也包含了一些客观的方面,如”覆盖面“。 我们想从零开始,每个组件(component)在放进框架前,都要做完全,彻底的安全测试。我们希望,当然也会通过很多心理战,让用户知道,这个产品是 经过严格测试的。。。。
问:Zend Framework 还剩下多少活要干?
Zeev :很多。现在我们分开两组:Andi Gutmans 带一组人,做主体性的工作。(另外)5-6个人全职在Zend Framework 项目上工作。。。。
问:Zend Framework 现在做到什么程度了?
Zeev:我想已经到了一个很好的地步。自两年前推出以来,包括1.0的版本,如果没记错,已有近两百万下载量。我们对框架的发展有一个清晰 的方向。以后新版的框架的推出将按照预定的时间表,而不是由增加的功能进度来定。我们现在正在做1.01版,和1.0比相差不大。。。下一步,我们将把框 架集成到其他的 Zend产品中。
问:Stefan Esser 数月前搞了一场PHP安全的辩论会。我的印象是,PHP小组在安全补丁问题的沟通上很畅通,但骨子里变化不大。至今有了那些变化了?
Zeev :我个人认同很多Stefan不认同的公共的观点。不管怎么说这些辩论,就算有些看法我不同意,也是为了PHP的发展。但我不认同Stefan认为这是一个
(PHP小组)精心设计的阴谋,他没明说,但我感觉如此。(我们)并没有在处理PHP网络上的安全问题时故意犯错,并非有意拖延。我们知道还 有很多东西要改,但还没去做。但你要记得(我们的工作次序):一方面当安全问题影响很大,影响到整个体系。另一方面,对安全问题的修补有利于PHP体系的 发展。这就是我们做安全补丁的依据。我想现在的反应时间应该比以前快了。