Yahoo剛剛宣布今後將不再繼續開發開源JavaScript工具庫Yahoo User Interface(YUI)。Yahoo Presentation的技術工程總監Julien Lecomte在Yahoo的官方博客Yahoo Engineering Tumblr blog上宣布了這一決定:「我們做出了一個艱難的決定,從現在起停止YUI新功能的開發,將研發力量集中在新的技術願景上」。
從Julien的博文中可以看出該決定的端倪,Yahoo公司之所以做出這個決定是由於近期JavaScript語言的激烈變革,以及越來越多的開發者對大型JavaScript庫的忌憚並失去了興趣所導致。也正因為這個原因,YUI的大多數核心模塊的活躍維護者已是鳳毛麟角,開發者反饋的問題和功能需求也越來越少。
2005年,Thomas Sha開發了YUI並得到了Yahoo聯合創始人Jerry Yang的贊助。2006年2月YUI首次對外發布並由Yahoo的工程師組建了一支核心團隊開始維護YUI。2009年9月,Yahoo發布了YUI的最新的一個主要版本YUI3。從YUI到YUI3是一個由庫到框架的演變過程,YUI3吸取了YUI2開發的經驗教訓,對當時還是開發庫級別的YUI從底層進行了重構。在這期間,YUI有了長遠的發展和改進,比如為檢索DOM元素增加了CSS選擇器引擎、更加強調模塊的粒度、根據開發需求可選擇加載最小功能單位的模塊、各種語法的改變使開發變得更加方便和快捷等。
YUI的發展過程中也開創了很多深受JavaScript開發者喜愛的技術,比如功能模塊化、動態加載,它們使模塊化開發和依賴管理變得更加容易。然而在過去的幾年中,由於Node.js的出現使JavaScript的開發環境和開發趨勢發生了革命性的變化,正如Julien在博文中所說:
我們都清楚地知道IT產業正朝著新方向發展。眾所周知,在過去幾年中,Web平臺已經發生了革命性的變化,JavaScript史無前例的流行。Node.js的出現讓JavaScript可以在伺服器端使用,為創建同構單頁應用(isomorphic single page application)打開了大門。
正如Julien所描述的那樣,JavaScript的生態環境隨著這些新技術的誕生發生了翻天覆地的變化:
新型包管理器(npm、bower)有效地刺激了第三方生態系統的發展,開源、單一目的的工具相輔相成,遵循著UNIX哲學理念,構建出極其複雜的開發用例。新型構建工具(Grunt和它的插件生態系統、Broccoli、Gulp)使一個個小模塊很容易就可以組裝成大型的集成應用程式。新型應用框架(Backbone、React、Ember、Polymer、Angular等)幫助我們用新的方式構建可擴展、可維護的Web應用程式。新型測試工具(Mocha、Casper、Karma等)降低了持續保證產出物高可靠、高穩定性的技術難度。標準機構(W3C、Ecma)將近幾年已被大家熟知的大型JacaScript框架內容進行標準化,使它們可以原生的兼容大量的設備。最後,瀏覽器廠商現在也都致力於不斷改進其Web瀏覽器,逐漸向標準看齊。為了讓用戶在不知情或者只需進行極簡操作的情況下就能使用支持最新標準的瀏覽器,所以出現了「自動更新瀏覽器(evergreen web browsers)」,就是可以在啟動階段就能在後臺自動更新的瀏覽器,由此我們可以展望今後用戶使用的瀏覽器差異會越來越小。
因為JavaScript語言的敏捷特徵,Julien在博文中這樣說到:
在這種形勢下,Web技術發展的結果是:YUI之類的大型JavaScript庫已逐漸失去社區的青睞。許多開發者如今把大型JavaScript庫視作束縛其發展的圍牆。
雖然Yahoo停止了YUI新功能的開發,但還是會持續修復一些嚴重的缺陷:
此後YUI的新版本會越來越少,周期也會變長,並且只會修復對Yahoo利益有重大影響的針對性補丁。