編者注:這是一篇難得的科普及技術分析,從五方面詳細地闡述了近日甚囂塵上的“自主”手機操作系統:為何政府企業都說要“自主”操作系統、考核政策的不足、如何判定一個操作系統是否“自主”(阿里雲算不算)、如何開發及相關建議等,長達萬字堪稱論文,可用如上索引像查工具書一樣查看所需。
──政府需要在更長的周期內,考核受資助企業的市場份額是否有擴大,是否建立了良好的生態系統,讓使用者、開發者欲罷不能,而不是簡單的著作權証書和專利數量,或者是否達到了一個給定的出貨量(因為出貨量是可以作假的)。
──馬雲同志啊,光有錢是不行的,你身邊還得有個把技術大牛幫你把關、出謀劃策才行啊。
──這事兒如果恰好讓你負責,那簡直是,怎麼說呢,是個“揚名立萬”的機會啊!可你要知道的是,這事兒和制造“兩彈一星”差不多。
近一個月可謂多事之秋,IT和互聯網領域也不平靜:阿里雲操作系統受到穀歌打壓,華為任正非提出要開發自己的操作系統,中興也宣布今年第四季度將發布操作系統。一時間,微博上有關自主知識產權操作系統的討論甚囂塵上。這樣的討論就像水木清華某些版面上的“月經貼”一樣,隔段時間就要火一次。但大部分討論如同盲人摸象,大家基本上只是站在自己的立場,基於個人經驗判斷孰是孰非。
這篇科普性的文章,將從政治、技術、工程、法律等幾個方面說明“自主”操作系統,並嘗試給出一些技術、工程等方面的建議。
本文所指“操作系統”,以及大家近期討論的操作系統,其實基本上僅限於移動終端領域,就是指能和Android、iOS、Windows Phone等相提並論的操作系統,主要用於智能手機、平板電腦,而不是實時操作系統、操作系統內核或者服務器操作系統──准確講,應該是指一個針對智能手機和/或平板電腦的軟件平台以及對應的生態系統。不過,我們當前還是把它稱為“操作系統(OS)”吧。
對到底要不要“自主”操作系統的問題,不同的人有不同看法。碼農,尤其是喜歡Google的碼農,通常會說,Android是完全開源的,沒有必要重複發明輪子;企業決策者或者政策制定者,則往往認為必須有自主的操作系統。
在談“自主”操作系統的必要性之前,筆者先談談“自主”操作系統的不必要性:
在開源軟件大行其道的今天,操作系統不再那麼神秘,任何有足夠財力的企業,依賴現有的開源軟件,都可以比較容易地推出一個能夠運行的操作系統。出於此觀點,很多人認為有Android這樣的開源操作系統,就沒有必要再開發一個自己的操作系統了,到底誰擁有開源操作系統的知識產權,是無所謂的事情。
這個說法是有一定道理的。
從法律(指開源軟件許可証)和技術上講,就算穀歌不打算開源新的Android版本,不允許某些廠商使用Android,我們一樣可以在已經開源的Android之上繼續發展自己的Android系統──只要遵循已經開源的Android的許可証約束即可,而Android系統主要使用的開源軟件許可証有GPL(Linux內核)、LGPL(各種運行時函數庫)、Apache(Dalvik虛擬機及Java類庫),其實是非常寬松的。
這個說法的不足之處在於,未考慮到可能的專利(軟件相關的專利通常和實現無關,就是說,你重寫一段代碼,並不表示你可以規避對應的專利),以及是否有能力自行發展Android的問題。
前者非常要害。穀歌在開發Android,尤其是Dalvik虛擬機以及Java類庫的過程中,肯定積累了大量專利,而這些專利是淩駕於軟件的著作權和許可証之上的。也就是說,如果你基於現有的Android派生了一個分支,想要將這個Android派生版本運行在自己的手機里並銷售,穀歌馬上可以拿出專利大棒來限制你。當前,穀歌尚未拿出專利大棒來限制各種派生系統。在阿里雲OS和穀歌最近的爭論中,穀歌也只是說阿里雲OS導致Android不兼容。但一旦有廠商真的使用了阿里雲OS,穀歌馬上就會拿出專利大棒,這將毫無疑問。
至於有沒有能力來自行發展Android的問題,在中國有大量碼農基數的基礎上,只要有源代碼,就可以在短時間內組織團隊自行發展Android。
然後,是“自主”操作系統的必要性:
強調需要“自主”操作系統的主要有兩類人:政府中的政策制定者以及大型企業的決策者。
對政策制定者來講,面對未來由中美兩國主導的國際環境,作為兩極世界中的中國,有沒有自主的芯片、操作系統,關系到兩個層面:一個是國家安全,一個是面子。在這樣的認識下,“核高基”的出現自然而然,其目的是支持國內企業發展核心電子器件、高端通用芯片及基礎軟件產品。我們暫且不談核高基項目在實施過程中存在的制度性問題,它表明的國家是在戰略上的一種布局,是一種國家意志,涉及到政治領域。
作為企業決策者,沒有自主的操作系統,他將在很多方面受制於人。就拿阿里雲和穀歌的爭議事件來看,宏碁受到了來自穀歌的壓力,然後就乖乖投降了。這里邊有兩個值得思考的地方:(1)既然Android這麼好,為什麼宏碁還要和阿里OS合作?後者肯定沒有Android成熟啊。(2)為什麼穀歌一施壓,宏碁就放棄了和阿里OS的合作呢?顯然,宏碁有動機選擇另一個OS給自己的智能手機,可能的原因無外乎兩種:阿里給錢了或者宏碁不希望被穀歌控制;另外,宏碁又那麼容易地被穀歌搞定,說明穀歌能帶給宏碁的利益遠遠大於阿里。
另外聯想到微軟向Android廠商收取專利許可費的事情,像宏碁這樣的廠商,肯定也會被微軟勒索,也包括中興、華為等國際化的Android手機廠商,無一例外。對企業決策者來講,這很難受──給別人做嫁衣啊,有時候還兩頭受氣!所以,小的廠商需要投靠大樹來庇護自己(大多數乖乖就範於穀歌或微軟),大的廠商就要考慮是不是開發一個“自主”的操作系統來抗衡了。
這樣的思路下,華為、中興等大的智能手機廠商,開發“自主”操作系統的動機非常強。
像阿里這樣的公司,開發OS的目的是要複制穀歌的商業模式,加上阿里OS又沒有撇清和Android的關系,受穀歌的打壓就在情理之中了。
根據上面的分析,看來我們還真的需要有“自主”的操作系統。但是,“自主”到底是自主什麼呢?
在功能手機和實時嵌入式系統領域,我們不是沒有“自主”的操作系統,比如MTK或者展訊的操作系統,以及諸如早期的Hopen、道系統等。在通用操作系統領域,國家也長期支持了諸如麒麟操作系統、紅旗Linux、中標Linux、新華Linux等多家本土操作系統廠商。但市場表明,國家支持的這些操作系統都將消亡或者正在消亡。
本人認為,國家支持下進行“自主”操作系統開發的確有合理之處,畢竟開發操作系統是一件比較困難的事情。但是,這里邊有一個重要的誤區和制度設計上的錯誤,就是只強調了“自有知識產權”,而沒有強調“自己主導”。
在強調“自由知識產權”的情況下,政府對受資助企業的“自主”操作系統進行考核時,大部分情況下考核的是企業有沒有獲得對應的知識產權,就是軟件的著作權和/或對應的專利,而並沒有考核能否主導一個產業鏈。受資助的企業,能否類似穀歌控制產業鏈一樣,做到讓別人用了你的操作系統,就沒法不繼續用下去?在這樣的思路下,政府需要在更長的周期內,考核受資助企業的市場份額是否有擴大,是否建立了良好的生態系統,讓使用者、開發者欲罷不能,而不是簡單的著作權証書和專利數量,或者是否達到了一個給定的出貨量(因為出貨量是可以作假的)。
也就是說,我們應該重新定義“自主”這兩個字,從“自有知識產權”向“有效知識產權保護下的自己主導”轉移。
為什麼這里強調“有效知識產權”呢?這是因為,在開源軟件成為趨勢的情況下,構建一個自己的操作系統,可以使用很多已有的開源軟件,我們沒有必要所有代碼都自己編寫,而且越底層的代碼就越沒有必要自己重寫一遍。這如同一只桃子,好吃的是果肉,而不是果核。像內核、基礎庫、常用運行時函數庫等等,都不必自己重新開發。而且這麼做幾乎沒有任何潛在的法律問題,當然,前提是你要告訴大家你用了哪些開源軟件,而且你也尊重了這些開源軟件的許可証。這樣下來,一個操作系統的軟件著作權已經不再重要,重要的是相關的專利、自己獨有的創新以及圍繞操作系統建立起來的生態系統。
那麼,“自主”操作系統應該長什麼樣?要回答這個問題,我們先看看假的“自主”操作系統長什麼樣。所謂假的“自主”操作系統,就是那些號稱“自主”操作系統,但其實:
‧只是在已有的開源操作系統之上加了一層皮。比如各種基於Android的第三方ROM,比如MIUI、Flyme等。這種操作系統僅僅在UI/UE上做了一些工作,就如同一個人換了一身衣服那樣,實質上這個人不會因為換了一身衣服而從張三改叫成李四。
‧修改了已有開源操作系統的內部代碼,做了一些優化或者去掉了別人的一些東西,添加了一些自己的內容。比如阿里OS就屬於這種,或者哪些號稱深度定制的Android系統也屬此類。這種做法如同整容,的確動了些刀子,甚至改變了性別,但人還是那人,改了名字或性別也還是那人。
這麼類比下來,讀者應該就知道了,真的“自主”操作系統,必須要有自己的靈魂,通俗一點講,不是換衣服或者整容,只有換了腦袋的才能是一個全新的個體。
那麼在操作系統當中,什麼東西是靈魂?這個問題回答起來蠻難的。我們先看看哪些東西肯定不屬於靈魂:
無法形成有效知識產權的軟件組件,或者說,滿世界有很多(開源的)實現的軟件組件。比如內核、基礎函數庫、網絡協議、圖形庫、瀏覽器引擎等等。這些東西可以看成是形成一個智能動物(比如“人”)的骨架或者軀體、甚至心髒,但遠遠算不上腦袋或者靈魂。這也是為什麼筆者主張在“自主”操作系統中要盡量使用現有的成熟開源軟件、而且不建議再行發明此類輪子的原因。
要知道哪些東西是靈魂,我們分析下穀歌在和阿里OS爭論的過程中主要維護的是什麼東西:
穀歌的說法:阿里雲OS採用了Android的虛擬機和Framework,但又不兼容Android,破壞了Android的生態系統。這個說法可能還不是穀歌打壓阿里OS的最關鍵原因,但起碼說出了他們的擔憂:阿里OS是想借Android打造自己的一個生態系統!但除此之外,穀歌對那些只換衣服的Android系統則採取聽之任之的態度,和他們一貫以來標榜的“只要兼容,我們歡迎”的態度一致──也就是說,這些系統沒有從根本上動搖穀歌的生態系統。
所以,真正的“自主”操作系統的靈魂,就是那個背後的、無形的生態系統,一個看似開放但其實封閉的生態系統。一旦加入這個生態系統,你就很難下來──正所謂“上了賊船下不來”。
這就是我的回答:一個真正“自主”的操作系統,必須建立自己的生態系統,一個開放的,但在某種程度上又封閉的生態系統。
操作系統生態系統?這名詞大家說了很多年了,一個生態系統具體應該是什麼樣子?筆者從如下幾個方面解釋一下:
技術層面。操作系統必須通過某種技術將自己和其他的操作系統區隔開來。比如Android採用Java語言,但使用了不同於Sun(現在是Oracle)JDK的API;iOS採用了ObjectC語言,為應用程序提供的接口和框架甚至有別於蘋果自己的Mac OS X;Windows Phone採用了C#語言,在.Net框架下進行開發。為什麼這些操作系統不使用C/C++這類語言呢,C/C++尤其是C可是這些操作系統內核的編程語言啊!?這里有如下幾個原因:
操作系統開發者不希望普通的應用程序通過使用比較低級的編程語言來控制系統或設備,畢竟操作系統是給智能手機、平板電腦這種消費類的電子設備使用的;通過採用更加高級的語言來簡化編程和開發人員的學習難度;通過對看起來非常複雜的框架的持續演進,達到牽著開發者和廠商鼻子走的效果;便於形成依附於某個操作系統的獨有的開發者社區和文化。
法律層面。操作系統必須通過創建自己的有效知識產權體系來保護自己。前面已經說過,越底層的軟件組件越沒有市場價值(碼農們可能不喜歡聽這話,但現實就是這樣的)。通過建立全新的、包裹在底層操作系統之上的框架、編程接口、編程語言等基礎設施,操作系統開發商才有可能建立起有別於他人的有效的知識產權保護體系。也就是說,如果連框架、編程語言、編程接口等都抄襲他人(就算是開源的、許可証允許的),那永遠也無法形成一個可以有效保護自己的知識產權體系。
市場層面。通過和上下遊企業的合作,建立某種聯盟或者許可、授權機制,讓操作系統的用戶(芯片廠商、手機廠商、平板廠商)能夠從中獲益。比如Android開放聯盟,做的就是這個事情。
開發者社區。一個好的操作系統之生態系統,要充分照顧開發者的利益,具體有如下幾點:要有好的開發工具,便於開發者學習、開發和調試軟件;要有好的文檔或者教程,幫助開發者迅速掌握相關開發技巧;最重要的,要能夠讓開發者賺到錢。
看到這里,相信大家都會意識到:這也太難了吧!的確,這非常難,這也是為什麼Moblin、MeeGo、Bada、webOS等操作系統相繼失敗,而到目前,只有iOS、Android、Windows Phone這三種操作系統的原因。
但是,世上無難事只怕有心人。接下來我告訴你如何搭建一個真正的“自主”操作系統。
開發“自主”操作系統的主要目的有兩種:一種是想再造一個類似Android、iOS的操作系統,並作為其競爭者;一種僅僅是為了在商務談判和合作中獲得一個比較好的籌碼。當然,還有一種目的就是騙取政府的財政支持,對這類不良目的,不屬本文討論範圍。
我們先猜度一下國內外這幾年出現的一些“自主”操作系統,其目的是什麼:
Firefox OS:這是Mozilla公司推出的純粹基於HTML5/CSS3/JavaScript等網頁前端開發技術推出的操作系統,和HP收購自Palm的webOS有類似的軟件架構。HP收購了webOS之後的半年,即宣告放棄webOS,而Mozilla卻希望通過類似技術的Firefox OS成為Android的競爭者。一會兒我們分析下為什麼Firefox OS要比webOS有更強一些的生命力。
華為提出要開發的“自主”操作系統:作為一個智者,任正非不可能不知道一個真正“自主”的操作系統應該是什麼樣子的。華為就算再有錢,再有人才,短時間內也是搞不定一個“自主”操作系統的(如前所述,主要是建立對應的生態系統太難了)。這麼說來,華為開發“自主”操作系統,其目的其實就是做一個“備胎”,以便在和Android、Windows Phone等合作時能夠有一個可以討價還價的砝碼。也就是說,華為並不是真的要做“自主”的操作系統;或者這麼說,支持團隊去做,做成Android那樣最好,做不成Android那樣,如果真有一天打起架來可以湊合用也行。
阿里雲OS:馬雲同志的野心很大,他做阿里OS,就是要複制穀歌在移動互聯網的商業模式,進而在移動互聯網領域推廣阿里體系的服務和內容。可惜的是,馬雲貌似不太懂技術,也沒個明白人給他做參謀,結果花了錢還被人捏住了七寸。最新的消息,阿里雲OS獨立運行,再投個2億美金繼續搞。馬雲同志啊,光有錢是不行的,你身邊還得有個把技術大牛幫你把關、出謀劃策才行啊。
好,面對這兩種開發“自主”操作系統的目的,應該有什麼樣的策略呢?其實策略很簡單,不管你是真心還是假意,都應該按照本文第三章給出的“自主”操作系統之特征進行開發,除此之外,別無他法。任何期望找捷徑的方法,都不可能獲得成功。這里所說的找捷徑的方法具體有:
‧給Android整容。如OMS、阿里OS。
‧忽略操作系統中生態系統的重要性,在Linux或其他開源操作系統內核、系統庫等基礎上包裹一個簡單的框架而形成的操作系統。這種操作系統,其複雜度和Linux發行版相當,離本人定義的真正“自主”操作系統還差十萬八千里。讀者可能會問,這樣的系統做備胎不是還行嗎?為什麼也得按照真做那樣開發呢?你要知道的是,對手也不是傻子,人家看你的架勢,就知道你不是真做──你起碼得拉出真做的架勢來,人家才能怕你啊!
順便談談我對基於瀏覽器技術的web操作系統的看法。
理論上講,瀏覽器可以做很多事情,甚至可以替代PC機上的通用操作系統。但是,最新的瀏覽器技術(HTML5/CSS3等),還存在一些技術上的問題。主要的問題有如下兩個:
‧瀏覽器主要採用的JavaScript編程語言,本質上是一種難於管理(源代碼保護、無法進行有效的軟件架構設計、難於調試等等)的編程語言,同時內存消耗巨大,性能不佳。最新的說法是,Facebook創始人直言全面採用HTML5的策略是個失誤,正在向操作系統的原生應用轉移。也就是說,JavaScript語言難以承載一個良性發展的生態系統。
‧因為許多原因(主要是利益和政治因素),HTML5相關的標准有分裂的跡象,同時進展緩慢。
HTML5技術作為原生應用的一種補充,可以起到很好的作用,但是,如果要想在瀏覽器技術上建立一個真正可以和Android等競爭的操作系統,恐怕還需要很長的時間(技術上必須有突破)。要不然,穀歌現在主推的應該是ChromeOS,而不是Android。
現在回答剛才提到的問題:為什麼Firefox OS可以比webOS的生命力更長久些?主要的原因是,Firefox OS是開源的,有比較強大的企業在主導其發展,作為一個脫胎於開源基金會的企業(Mozilla公司),也能獲得合作夥伴的一些好感;相反,因為webOS是封閉,HP又沒有能力像蘋果那樣打造一個完全封閉的平台和生態系統,所以最終的命運是被人拋棄了。雖然後來webOS也走上了開源的道路,但大勢已去,HP不親自帶頭搞,光靠開源社區是搞不成的。
假定你是一名“自主”操作系統項目的技術管理者,你第一步要考慮的問題是什麼?許多人的回答可能是:先選操作系統內核、基礎庫什麼的。其實錯了,第一步要考慮的應該是你打算選擇什麼編程語言作為原生應用的編程語言。
世界上的編程語言有很多種,有些語言貼近機器,比如匯編語言、C語言,有些語言貼近人,比如Basic、Java,還有些語言用於特定領域,比如網頁服務器端使用的PHP,有些適合做不同軟件之間的粘合劑,比如Perl、Python。本文第三章已經解釋了編程語言以及圍繞編程語言形成的運行環境、框架是將操作系統區隔於其他操作系統的主要技術特征。因此,我們必須慎重選擇一種編程語言。而且一旦選定了一種編程語言,“自主”操作系統在開發者看來長什麼樣,其實就基本上定了。
選擇編程語言要考慮如下因素:這種編程語言是否易於學習和掌握?是否有龐大的開發者在使用它?這種編程語言是否具有高級語言的基本特征,比如,支持面向對象編程?這種編程語言是否是編譯執行的?這種編程語言是否利於保護開發者的知識產權?這種編程語言是否有完整的工具鏈支持?這種編程語言是否有集成開發環境的支持?這種編程語言是否易於保護整個操作系統不會被惡意代碼輕易破壞?如此等等。
其實很多讀者看到這里,都會想到Java語言。是的,Java語言或其派生語言如C#是構架“自主”操作系統的最佳編程語言。可惜,已經被Android和Windows Phone給捷足先登了。
如此一來,你可以考慮重新設計一門類似Java的語言,也可以通過其他手段,讓你使用Java語言構建的操作系統有別於其他操作系統。比如,構建自己的虛擬機,如Android使用的Dalvik那樣(Dalvik和Oracle的JDK標准虛擬機有很大不同,從而讓Oracle還挺難告贏穀歌的);你也可以用Dalvik,但讓類庫、運行環境和Android不同(這樣做的法律風險要大一些)。總之,你需要有自己的創新,全部抄襲是不行的。
確定了編程語言,接下來的工作其實就比較直接了,從上而下設計就是了。主要有:
1、定義和實現提供給原生應用程序的基礎API和/或虛擬機。
2、在應用程序基礎API、標准C/C++函數庫和相關組件(通常都是開源軟件)的基礎上構建操作系統的運行環境和框架。主要涉及系統服務、模塊之間的通訊機制,包括圖形界面、瀏覽器引擎、OpenGL ES支持接口等等。
3、同時選擇操作系統內核,通常也就是Linux,要與眾不同,用BSD也行。
4、搞定集成開發環境和模擬器,讓開發者可以在PC機上為你的操作系統開發應用程序。
5、讓你的操作系統運行在真實硬件上,為開發者提供應用樣例和文檔。
6、持續迭代,讓你的“自主”操作系統不停往前發展。
上面的第一點和第二點,是“自主”操作系統有別於其他操作系統,且支撐你可以和其他人競爭的關鍵點。往下的東西都不是構成“自主”操作系統真正競爭力的東西。
這麼看來,其實也挺簡單的。不是嗎?貌似有錢、有個把技術上的明白人就能做到。技術上沒問題了,市場、法律等方面的事情,請專業人員幫忙,中國這類人才還是蠻多的,缺的,其實還是技術人員以及懂系統工程和軟件開發的管理人員。
這里給大家介紹筆者早先和美國一家公司合作,嘗試搭建的一個操作系統,其實在當年這些東西的基礎上,搭建出來一個有別於Android的開源“自主”操作系統還是非常快的。
這個系統使用了Linux內核和標准的C/C++函數庫,以及一些和Android體系結構類似的C/C++運行庫,使用了筆者公司的開源軟件MiniGUI、WebKit瀏覽器核心引擎等等。基礎的東西就這些。之上是開源的KaffeJVM(後來改成了CacaoJVM),和符合J2SE規範的類庫實現,再往上就是運行環境和框架了。見下圖:
可惜的是,真正具有核心價值的運行環境和框架,是美國合作方自己開發的,我手里沒有源代碼。相信讀者也能明白,美國合作方掌握的才是精華。
如果要在這套系統基礎之上快速開發一個“自主”的操作系統,我們需要:
‧重新定義類庫,也就是基礎API,讓我們的系統從靈魂上有別於其他系統。必要的話,優化或替代開源的虛擬機(淘寶最近開源了一個JDK虛擬機,不過是針對J2EE的)。
‧全新設計和實現適合於智能手機的運行環境、框架。
‧全新設計基本的智能手機應用軟件。
‧開發模擬器,並集成到Eclipse集成開發環境中。
‧還有,這個系統是2006年開發的,我們還需要將底層的內核、基礎函數庫等更新到比較新的版本。
要做的工作還是蠻多的,但這個系統在2007年的時候,就已經可以運行在主頻在200MHz左右的手機上了。
當然,這個系統離本人定義的真正“自主”的操作系統還有很大的距離。但是,起碼技術上的方向是基本正確的,要知道,這個系統幾乎是和Android同時發起的。後來在2007年,穀歌宣布開源Android後,美國合作方敏銳感覺到了Android將是未來的趨勢,就直接轉向了Android平台,項目也就終止了。
這里所說“政策制定者”主要指的是“核高基”等政府資助項目的決策人。其實前面已經說過了,這里重申一下:
政府需要在更長的周期內(至少五年),考核受資助企業的市場份額是否有擴大,是否建立了良好的生態系統,讓使用者、開發者欲罷不能,而不是簡單的著作權証書和專利數量,或者是否達到了一個給定的出貨量(因為出貨量是可以作假的)。也就是說,我們應該重新定義“自主”這兩個字,從“自有知識產權”向“有效知識產權保護下的自己主導”轉移;在知識產權方面,要強調有效專利數量,而不是著作權;甚至應該要求受資助企業按某種許可証條款開放源代碼。
政策制定者甚至可以參照本文第三章給出的“自主”操作系統之定義,將整個“自主”操作系統的研發和推廣分為三個部分:
‧科研類,兩到三年為周期,以研究新的編程語言及其相關設施(如虛擬機及其優化技術)為主。
‧工程類,兩到三年為周期,圍繞指定的編程語言發展外圍工具鏈(編譯器、調試器)、開發工具、運行環境、框架等。
‧法律類,半年到一年為周期,研究和分析採納已有編程語言面臨的知識產權風險,如何規避等等。
政策制定者切忌急功近利,要按照客觀規律辦事,將科研類的課題交給研究機構,將工程類以及市場推廣等方面的課題交給企業,將法律類的課題交給大專院校。只有這樣,才能首先讓方法正確,方法上正確,加上合理的考核制度,才能讓錢產生真正的效益。
在花錢方面,在一盤大棋下的統一部署下,初期讓多一些的企業或機構參與,一年一驗收,逐步淘汰那些不合格的,最後剩下來一、兩個企業就好。十億美金,外加企業自籌部分,我看基本夠了。
有意開發“自主”操作系統的大型企業決策者首先要明白,開發“自主”操作系統是一個長期、艱巨的系統工程。甚至,你需要准備一大筆錢來和已有的巨頭打官司(微軟賠付給Sun幾十億美金之後,才讓自己的C#和.Net平台成為“幹淨”的語言和平台)。
另外,如前所述,不管是真心還是假意,都要拿出十足的架勢來真做,而且,對內、對外都要強調這點。要知道,你期望得100分,下屬大多數情況下只能給你80分;你期望得1000分,下屬也許就可以給你500分。這樣才能超出決策者自己的預期,才能收到更好的效果。
這事兒如果恰好讓你負責,那簡直是,怎麼說呢,是個“揚名立萬”的機會啊!你要知道的是,這事兒和制造“兩彈一星”差不多。
首先你要掂量掂量,你有沒有這個本事。所謂“沒有金剛鑽,不攬瓷器活”,說的就是這個道理。有興趣的也別來找我,我做點小項目可以,真要我負責,我沒這個本事。
另外一方面,你要是違背知識分子的良知,幫助一些不良人員騙取國家的資助款項,就更不應該了。這可是要被人戳脊梁骨的;有沒有錢拿永遠是小事,昧了自己的良心可是大事。
在具體的研發實施過程當中,開發負責人必須特別注意工程方面的問題:
先做什麼、後做什麼,或者那些可以並行做。
不同的軟件模塊,應採取不同的軟件開發管理模型。API設計、框架等的開發,適合採用瀑布法模型;應用軟件或者小型模塊的開發,適合採用敏捷開發模型。但整個系統,應要不停迭代,所以版本控制非常重要。
特別要注意代碼的質量控制以及文檔的全面、完備、簡潔和邏輯性。
作者魏永明授權《創事記》發表,較原文略有改動,轉載請注明作者出處。
我們也開了Google plus page,如有Google plus account的你,也可follow 我們吧!
https://plus.google.com/104792312952728477864