Erich在他和Bill的訪談第三部分中談到,他希望支持Eclipse的整個社群,可以維持10到20年的生命期(“ We always keep in mind as we design Eclipse that it has to last ten or twenty years. ….. I really mean that Eclipse should still be able to support an active community in ten or twenty years. ”),甚至更長(雖讓他不敢奢望Eclipse社群會像埃及的金字塔一樣保存上千年)。這種想法,現(xiàn)在確實已經(jīng)非常普遍了,就連Sun的首席執(zhí)行官Jonathan Schwartz也認(rèn)為,“you can compete against a product, but it's close to impossible to compete against a community. (和一個產(chǎn)品競爭容易,但是和一個社群競爭幾乎接近不可能)”(Ecology, Communities and Platform Adoption)。所以,Sun也在不斷的培養(yǎng)Solaris和Netbean的開發(fā)和使用者的社群。
Eclipse需要保持競爭力,關(guān)鍵也在于開發(fā)和使用者的這個社團(tuán)。 Eclipse的plug-in架構(gòu),已經(jīng)保證了這個社群會很快的成長(因為會有大量的開發(fā)者去寫plug-in),大公司(如IBM,BEA,Borland)的加入和支持,也擴(kuò)大了Eclipse的知名度,使得更多的開發(fā)者加入進(jìn)去。 但是如何更好的融合這個社群,如何保證Eclipse的核心基礎(chǔ)架構(gòu)不受外部的困惑(變得更加龐大,或者臃腫)但又會不斷創(chuàng)新,如何協(xié)調(diào)好Eclipse和其他Eclipse.org下面的頂級項目(如BIRT,WTP,AspectJ等)的整合關(guān)系,這些,確實也值得思考。
對interface編程,這個似乎是個老生常談的問題了,但是卻從來沒有思考過,這種編程方式會影響到這個開發(fā)團(tuán)隊的協(xié)同工作,特別是一個超過10人的開發(fā)團(tuán)隊,而對一個分布在不同地方的開發(fā)團(tuán)隊(比如項目外包以后,不同的開發(fā)小組位于不同的城市,甚至國家),這種編程方式帶來的影響更大。
為什么會這樣呢? 在一個只有3-4人的開發(fā)團(tuán)隊里面,任何的改動,可以快速的通知其他的人,而且,現(xiàn)在IDE中的重構(gòu)工具會解決大部分的工作。 但是,當(dāng)一個開發(fā)團(tuán)隊變大的時候,通常就會分成小組,不同的小組對不同的部分負(fù)責(zé)。 在這種情況下,你在自己的模塊中發(fā)布了API,你就必須確保這個API是穩(wěn)定的。“Once you have published an API then it is your responsibility to keep them stable. Otherwise you will break the other components and nobody is able to make progress. Having stable APIs is a key to making progress in a project of this size.” 所以這是一個是否把API發(fā)布以及發(fā)布了以后如何維護(hù)的問題:“So it's the difference, as Martin Fowler would say, between public and published. Something can be public, but that doesn't mean you have published it. ” 即使定義了API,公開發(fā)布(publish)和這個API是公共的(public)是有區(qū)別的:API公開發(fā)布以后,就需要非常的小心,因為任何的API改動都可能會破壞其他在使用這個API的代碼。
Email this store to a friend (send a short email with a subject to this story)
Subscribe to kukooBlog (subscribe kukooBlog's RSS feed)
Send me feedback on this story
Eclipse,Design Pattern
Programming