Prototype的興衰啟示錄
本文的作者Sam Stephenson是Prototype js框架的創(chuàng)始人。他從2006年開始一直在37signals工作做web開發(fā)。除了Prototype外,他還開發(fā)過很多開源軟件,比如rbenv, sprockets 等。
程序員們一起努力來創(chuàng)建共享的軟件基礎(chǔ)工具:這是開源軟件的基本要旨。任何有想法、有激情并且有能力實(shí)現(xiàn)這個想法的程序員都是在為我們解決一個常見問題,向世界分享其解決方案,然后其他程序員會在將來一起改進(jìn)這個方案,這就是回報(bào)。
做這種共享的基礎(chǔ)軟件工具通常需要具有瘋狂的大腦。我早該知道這些。在2005年,我開發(fā)了Prototype腳本庫——現(xiàn)代web瀏覽器應(yīng)用設(shè)計(jì)的第一代JavaScript類庫。在當(dāng)時瀏覽器創(chuàng)新一片死氣沉沉的景象中,Prototype是一個與眾不同的創(chuàng)意:我們能否通過擴(kuò)充 JavaScript的內(nèi)置類型、通過增加具有新功能的類型來彌補(bǔ)JavaScript的固有缺陷?
這種思想很快的被接受。Ruby on Rails選用Prototype作為其JavaScript框架,很快人們就在一些知名的大公司,例如蘋果,紐約時報(bào)的網(wǎng)站里發(fā)現(xiàn)了它的身影。
然而,不久之后,事情越來越清楚:Prototype的核心思想和這個世界的發(fā)展方向是不一致的。瀏覽器廠商對JavaScript復(fù)興所做的努力是增加新的API,其中很多是和Prototype的實(shí)現(xiàn)相沖突。此時,程序員開始展現(xiàn)對一些小的,自我實(shí)現(xiàn),模塊化的腳步庫的偏愛,而不是大型的框架。
僅僅短暫的幾年時間,Prototype從一個最佳的開發(fā)準(zhǔn)則變成了反模式的代表——依賴于你在聽誰說,你甚至?xí)嘈潘荳eb上最糟糕的一個東西。可事實(shí)上,盡管架構(gòu)上有缺陷,Prototype曾給眾多程序員帶來幫助。但是春來春去,我最終發(fā)現(xiàn)我需要走向新的征途。
作為個人,很難獨(dú)自承擔(dān)起Prototype的失敗。批評性的博客文章讓我感覺這是我個人價值的重創(chuàng)??粗笥褌兌既ナ褂闷渌哪_本庫,我感覺我的工作都是在浪費(fèi)時間。
但這是一種我們讓共享軟件向前進(jìn)步的過程。為了跟上最新的技術(shù),我們不僅要能去嘗試新思想,還要能放棄那些已經(jīng)不可用的或者有更好的思想替代的舊思想。我們必須有勇氣的坦率的說出代碼中的問題,去除內(nèi)心的自負(fù)對犯錯的恐懼。
在開源世界里我學(xué)到了——我并不是我的代碼。對我的軟件作品的批評并不是對我個人的攻擊。我的軟件的替代品的出現(xiàn)并不是一個敵意或分化。它只是人們永不停息的對現(xiàn)狀改進(jìn)的愿望驅(qū)動下的一個簡單的更新?lián)Q代的結(jié)果。
我Sam Stephenson,37signals公司的一個程序員。