做開源也有4,5年的時(shí)間了,從最初的Yaf,到今天的PHP7,我參與的項(xiàng)目越來越多,使用我代碼的用戶也越來越多,明天就要發(fā)布的PHP7,絕對(duì)是我從事開源以來的一個(gè)最重要里程碑,我應(yīng)該紀(jì)念一下今天,就讓我稍微感性一次吧。
PHP7項(xiàng)目開始于去年春節(jié)的時(shí)候,那個(gè)時(shí)候我們基于PHP-5.5的Opcache JIT項(xiàng)目基本上因?yàn)闊o法得到期望的結(jié)果而擱置了,一些在做JIT的時(shí)候收集到的信息讓我們認(rèn)識(shí)到,基礎(chǔ)部分還不夠好,并不能很好的支持JIT,所以在2014年2月左右吧,我們開始了重構(gòu)項(xiàng)目,當(dāng)時(shí)的希望是說通過重構(gòu),能得到30%以上的性提升,為將來的進(jìn)一步優(yōu)化提供基礎(chǔ)。
那時(shí)還沒有給這個(gè)項(xiàng)目起名字,我們只是試試,那幾個(gè)月是我最忙碌的時(shí)刻,因?yàn)橹挥形覀儌z個(gè)人在這個(gè)項(xiàng)目中,我還因?yàn)樽陨砦⒉┑墓ぷ饕脖容^忙,所以基本上只晚上的時(shí)間都撲在了上面. 不過好在,我和另外一個(gè)人有5個(gè)小時(shí)的時(shí)差,所以很多工作可以串行起來。
隨著項(xiàng)目的推進(jìn),我們驚喜的發(fā)現(xiàn)性能提升比我們想象的還要大,到4月的時(shí)候另外一個(gè)人也加入了進(jìn)來,到5月基本上已經(jīng)完成了大部分的工作,于是我們公布了這一個(gè)成果,定名為PHP NG項(xiàng)目。
但我沒想到的是,我們遇到了社區(qū)很大的阻力,因?yàn)樵谖覀兠孛荛_發(fā)PHP NG的時(shí)候,社區(qū)還并行著一個(gè)主要是微軟的同學(xué)們發(fā)起的64位支持的項(xiàng)目,當(dāng)我們公開PHP NG的時(shí)候,他們質(zhì)疑說,突然拿著這么大的一個(gè)Patch出來,沒有其他人懂,后續(xù)如何維護(hù),如何和64位支持的分支合并等,繼而反對(duì)采納PHP NG分支. 當(dāng)時(shí)我是非常沮喪的,持續(xù)好久的爭吵也讓我感到非常疲倦,最后因?yàn)槲覍?shí)在無法排遣,一腔怒火的也不管自己蹩腳的英文,在郵件組回了一封吐槽郵件,呼吁大家珍惜這個(gè)性能提升分支。
還有個(gè)很好玩的插曲,PHP NG的支持者很多,他們也對(duì)這樣的爭吵很郁悶,某天,有一些支持者就在PHP官網(wǎng)上發(fā)布了這樣的一個(gè)新聞: http://php.net/archive/2014.php#id2014-05-27-1 其中寫到:
"When we aren't looking for pictures of kittens on the internet,internals developers are nearly always looking for ways to improve PHP,a few developers have a focus on performance."
但當(dāng)天反對(duì)者們就說,不行,PHP NG還沒有被接納,要求刪除這篇文章,好在考慮到文章已經(jīng)發(fā)出去了,最后就在首頁上下掉了這個(gè)文章的入口,只是在存檔中保留了內(nèi)容. 很多媒體都感受到了這次的烏龍。
爭執(zhí)不下之后,不得已,我們只能發(fā)起投票,來決定是否接納PHP NG,好在,最后投票的時(shí)候,絕大部分人都支持了PHP NG項(xiàng)目,并決定以PHP NG為基礎(chǔ),開始我們的新版的PHP的開發(fā). 當(dāng)時(shí)還沒有確定用PHP6還是PHP7版本號(hào)(后來投票決定PHP7). 我現(xiàn)在經(jīng)常會(huì)說這次經(jīng)歷,讓我感受到了"民主之痛"。
之后的事情大家就都能看到了,在這近兩年的時(shí)間里,各種新特性的加入,性能的持續(xù)提升,很多以前不合理的地方改進(jìn)等等,都加入到了PHP7,讓PHP7越來越豐滿. 從最底層的ZVAL的改變,到標(biāo)量類型提示,從最初的30%的性能提升,到現(xiàn)在超過100%的性能飛躍,每一處變化都讓人值得期待. 然后經(jīng)過幾次不情愿的跳票,終于,到今天,這一切都將呈現(xiàn)于你面前。
有的時(shí)候我會(huì)想,我是幸運(yùn)的,幸運(yùn)在一直有機(jī)會(huì)做沒做過并且有挑戰(zhàn)的事情,幸運(yùn)在一直能感受到自己的成長,幸運(yùn)在所做的大部分努力,終究看到了效果,得到了回報(bào). 也衷心的希望我的幸運(yùn)可以激勵(lì)更多的人參與到開源中來。
未來,我們還會(huì)一如既往的致力于提升PHP的性能,提升PHP的品質(zhì),讓更多的PHPer們,可以持續(xù)享受到透明的提升。
最后,做開源這么久,帶給了我很多的收獲,我要謝謝大家,謝謝這些鼓勵(lì),也謝謝那些善意的謬贊。
PS: 本來想等到PHP7發(fā)布以后再發(fā)的,但是想到可以為它的到來造勢(shì),就先發(fā)布罷. PHP7 目前已經(jīng)可以下載,官方宣布考慮到時(shí)差問題,后天早上來看吧。
PHP7下載地址:http://down.chinaz.com/soft/37302.htm