Windows Phone 8,我們該怎么玩?
微軟6月20日正式發布了Windows Phone 8,引來了網上網下一片熱議,正面和負面的評價紛飛。有一個非常有趣的現象,第一批進入Windows Phone的開發者集體跳反,認為Windows Phone 8背離了自己的路線。
那么,我們就來分析一下,Windows Phone 8為什么引發了如此多的討論,以及在Windows Phone 8的時代,開發者怎么玩,而不是被人玩?
都是內核惹得禍
微軟的發布會上首先強調的一個概念就是“Share Windows Core”,也就是說Windows Phone 8與Windows 8共享內核。很多媒體以此說,Windows Phone 8會完全兼容Windows 8的應用,這一點是錯誤理解。所謂共享內核,只是說Windows Phone 8和Windows 8的內核相同,但并不代表驅動程序、API、應用程序層的全部兼容。
Windows 8 RT是Windows 歷史上第一個支持ARM CPU的操作系統,所以將Windows RT的內核遷移到Windows Phone上無可厚非,畢竟Windows Phone 7的內核是Windows CE。Windows CE在1996年發布,比Symbian年紀還大,雖然經歷了兩次內核重寫,到現在也是垂垂老矣。
微軟還是做了一些工作,至少讓Windows Phone 8能夠兼容所有Windows Phone 7的應用。可是操作系統是上下兩個接口,上面的是API,下面的則是驅動程序。Windows RT在開發時,沒有考慮要兼容Windows Phone的現有硬件,所以,Windows Phone 8也沒有辦法支持原有硬件。
Windows RT是支持一系列ARM CPU的,兼容現有CPU真的這么難嗎?個人認為,如果真的很容易,微軟就兼容了。所以,Windows RT可能在芯片級做了一些優化,導致已有ARM CPU無法正常運行。最有可能的地方是DirectX支持,大家都知道,目前的ARM CPU是不支持DirectX的,而是支持OpenGL ES。如果將DirectX轉化為OpenGL ES,勢必會影響效率,所以,微軟很有可能向芯片廠商施加壓力,讓他們原生支持DirectX。
這一點目前還無法證實,要等支持Windows RT的ARM CPU具體規格出來后才知道,要判斷也很容易,如果能夠支持DirectX的Shader Language,就是芯片級支持,否則就是軟件轉換。
順便多說一句,Windows Surface選了個燙的要死的CPU,又是鋁鎂合金機殼,大家要小心被燙到才好,哈哈!
好了,內核的問題就是這個樣子。Windows Phone 7.8仍舊是運行在Windows CE上的,而Windows Phone 8則是運行在Windows RT內核上的。
大家看到微軟該罵的第一個地方了吧?既然Windows Phone 8的大部分功能能夠跑在Windows Phone 7.8(也就是Windows CE 7)上,你閑著沒事換什么內核啊?如果是Windows,你換就換吧,反正沒人跟你競爭,弄爛一代,再研發新一代。可是Windows Phone還處于一個追趕的地位,在這個時候不是抓緊時間研發新功能,而是忙著換內核,分裂開發者、拋棄合作伙伴、讓已有用戶感覺被拋棄。以上這些損失,換來的只是,所有人聚集在Windows的大旗之下,真的值得嗎?
當技術上的選擇(我沒有用“失誤”這個詞,也許身在局外,不知道其中的無奈吧)無法挽回時,市場能力的缺失給Windows Phone釘上了最后一個棺材釘。Windows Phone 8和Windows Phone 7.8應該會出現在以后MBA課程的經典失敗案例中吧?
你哪怕叫Windows Phone 8和Windows Phone 8 Compact呢?整場發布會中,我們看不到市場部門的影子,事先也沒有就Windows Phone 7.8進行過深入的討論。從這件事上,我們就可以看到市場部門的漫不經心,真懷疑微軟市場部門的錢都花到哪里去了?
微軟市場部門是隸屬于產品組的,這個格局造成了很多低級的失誤。每次看到一群不會講故事的工程師在臺上假裝瀟灑時,總會感覺到一個冷冷的目光在天上注視著他們。
當然,微軟還有機會彌補,宣布Windows Phone 7.8可以升級到Windows Phone 8的一個特殊版本,但是……有多少人會相信呢?
誰是最大的Loser?
對于這個問題,大家的答案一致:諾基亞。去年2月諾基亞上了微軟的賊船,大家都認為是“余則成”的功勞,個人認為,這是諾基亞的必然選擇,“余則成”只是執行者。過去一年中,微軟和諾基亞看似緊密無間,但有幾個跡象讓人覺得有些隱隱不安。
首先是Lumia 610的推出,諾基亞雖然擁有奢侈手機品牌Vertu,但主要的市場還在Feature Phone和低端智能機上,但Windows Phone并不適合開發低端智能機。其他的東西砍不掉,諾基亞只能砍內存了,內存一砍,引出了一系列麻煩,最大的新聞是憤怒小鳥無法運行。這一點上來看,諾基亞不懂智能手機。
另外,雖然諾基亞很早就宣布要做Windows 8平板,Microsoft Surface沒有選擇諾基亞做為硬件合作伙伴,而是選擇了更小更容易控制的Nook。從這一點上來看,固執的北歐人還是讓高傲的美國人吃了一些苦頭的。
所以,這次發布會上,諾基亞的地位并不高,至少沒有過去一年高。想想也是,三星、HTC都是隔岸觀火,有好處就上,沒好處就撤,只有諾基亞沖在前邊,結果Windows Phone 8出來,只有諾基亞要面對大量無法升級Windows Phone 8的憤怒用戶。
而且最可怕的一點是,Windows Phone 8最快還有半年才能出來(個人估計更為悲觀,最快8個月左右才能大量鋪貨),用戶肯定不會購買一面世就落后的機器,而且Windows Phone 8發布會正好撞上iPhone 5。您還以為自己是當年的IT霸主啊?世界變了。
等到Windows Phone 8出來,估計諾基亞的骨頭就可以用來敲鼓了。微軟延續了以往“死道友,不死貧道”的光榮傳統。
現在諾基亞僅剩的一條路就是被收購了,三星、微軟都是潛在的收購者,現在90億美金的市值,哪怕溢價50%,也就140億美金。微軟當年可是準備了400億美金收購雅虎,Skype才花了80多億,還有足夠多的錢呢。別忘了,小米的估值還60億美金呢,諾基亞怎么也比小米強一點吧?
誰是第二大的Loser?
第二個Loser是誰?我覺得是Terry Myerson,現任Windows Phone團隊的老大。 Terry Myerson接替Andy Lees成為Windows Phone部門老大的時間并不長,去年12月才正式交接。關于Andy Lees的去職,坊間傳說主要原因是業績不夠理想。想想這位老兄也夠背的,他離開時,諾基亞的機器還沒有大量鋪貨,今年的銷量完全是因為他的貢獻,成績卻歸了人家。萬惡的KPI啊。
業內傳聞,Andy Lees在制定Windows Phone策略時,采用的是“跟隨戰術”,iPhone有什么,我也有什么。看起來似乎很消極,但這正是微軟打敗諸多強手的殺手锏,微軟的技術積累深厚、工程師隊伍一流,唯一的命門就是創新性不足,跟隨戰術是符合微軟實際的。
多說一句,Windows Phone這個部門也是多災多難,最早屬于移動和娛樂部門,老大是Robbie Bach,一個創造了XBOX之成功和Zune之潰敗的傳奇人物,他離開微軟前的最后一個項目是Courier電子書,一個充滿想象力卻生不逢時的產品。
扯遠了,從這次發布會可以看到,Terry Myerson完全拋棄了Windows Phone 7,全面倒向了Windows 8的設計。本來是自己的東西,被其他團隊拿過去加工完了,自己再拿回來用。結果就是,Metro UI設計的連他媽都不認識了。更詳細的描述可以參考李靖南的文章《別鬧了,微軟!磁貼不是這樣搞的》http://apphub.fm/stop_messing_with_tile
我們可以看到Terry Myerson拋棄了已有的Windows Phone設計,當然這可能是集體決策的結果。去年夏天,微軟總部的工程師過來交流,就曾經提過一個問題“Windows Phone是否應該改成平鋪式的小圖標?”
我當時的觀點是,無論成敗,Windows Phone要堅持自己的路走下去,Metro UI不可能讓所有人都喜歡,但這個東西是非常風格化的,而且識別率非常高,雖然短期內無法被iOS和Android的用戶接受,如果改回圖標式UI,Windows Phone的特色就沒有了,人家為什么還要買你?假以時日,Windows Phone會找到屬于自己的粉絲群的。
一年時間過去,我們可以看到Metro在被大家接受,但是這個時候,微軟卻自作聰明地將決定權交給了用戶,讓用戶可以將圖標縮小成平鋪式,雖然可以迎合一部分用戶的喜好,但是自己的風格就沒了。一個平面的圖標系統,能夠和iOS, Android的水晶按鈕比嗎?
這個其實就是典型的工程師思維,他們是從功能出發的,試圖想辦法解決各種需求,結果到最后做出來的東西只能是不倫不類。其實,解決80%的人的需求就好了,如果能夠有80%的人買你的手機,你不就賺大了嗎?
Windows Phone 8出來,給我一個感覺,形還在,但魂已經不在了。如果說這些都是Terry Myerson帶來的,也未必公平,畢竟長頭發的法國帥哥還在,但我們可以猜測,在過去一年時間里,一定發生了很多事情,讓一批了解Metro精髓的設計師離開了自己的位置,或者放棄了自己的堅持。也許這和Windows RT有關,但誰知道呢?
對開發者的建議
俱往矣,再過幾年回頭看時,我們可以認為Windows Phone開發者此時的吐槽,是對于微軟背叛Windows Phone發展道路的一種失望,類似于失戀之后的反應。
作為開發者,我們能夠改變的東西其實很少,擁抱變化,是我們唯一的優勢。所以,我們挨個梳理一下新增的功能吧。一句話,微軟這次又是該干的沒干,不該干的干了一大堆:
1.IAP
原文這里寫錯了,感謝 @LiveSino 的提醒,Joe Belfiore的文章中提到了支持IAP:
http://windowsteamblog.com/windows_phone/b/windowsphone/archive/2012/06/20/announcing-windows-phone-8.aspx
IAP有了,不過人家好幾年前就搞出來的東西,弄出來也沒什么好驕傲的。可是本地化要多久?人民幣支付要多久?沒關系,我們去賺老外的錢了。
微軟弄了個電子錢包的概念,鬧了半天是NFC支付。NFC的普及至少還有兩年時間,把NFC外設裝進去,等著第三方幫你玩就好了,心急火燎地開始弄應用級的東西,萬一不合適改操作系統啊?
2.企業級特性
Window Phone 8的企業級特征被加強了,想想也是,微軟對于企業級服務市場最熟悉,而且微軟工程師在整理需求時,會以自己所處的IT環境作為樣板。你去問問,全世界有幾個企業登錄VPN要用門卡上的IC卡芯片!
所以,Windows Phone 8上的企業級應用可以開始了。如同微軟不會做消費者市場一樣,蘋果不會做企業級市場,所以還有很多企業在用Windows Mobile。將Windows Phone 8與Windows 8結合的企業級市場空間還是很大的,不過外設、VPN的問題解決了沒有?
3.游戲開發
這次游戲開發的變化是最大的,終于支持C++了。裝配腦袋的分析是最精準的,因為要換內核,如果Windows Phone 7就開放了Native API,到了Windows Phone 8就要重寫,那時候引起的波瀾會更大。
對于游戲開發者來說,DirectX和Havok游戲引擎絕對是利好的消息,畢竟可以在多個平臺間統一使用C++來開發游戲了。不過,基于Windows RT的Managed C++移植到其他平臺上去,工作量恐怕不比C#小多少。
在這里忍不住對XNA的事情發表個評論,雖然對XNA還沒有最后的結論,但前景不妙。但用XNA和C#開發休閑類小游戲,要比DirectX容易的多吧?不支持C++的確不對,但你不能因為有了C++,就放棄對XNA的支持吧?
那我們作為開發者應該怎么辦?
1.將Windows Phone 8看作一個新的操作系統
其實Windows Phone 8是一個新的操作系統,只是能夠兼容Windows Phone 7的部分功能。這次升級并不比Windows Mobile 6.5到Windows Phone 7的變化小。我之前曾經說過,Windows Phone 7其實是1.0版本,現在看起來,我錯了,Windows Phone 7充其量是個Preview版,還是Release Preview版,考驗RP的版本啊。
所以,作為開發者,最好的辦法是找到Windows Phone 8的源頭——Windows 8 RT,從這里開始我們的新旅程。雖然目前還不知道Windows Phone 8對于WinRT API的支持程度如何,但是開發工具、開發語言、類庫都不會脫離WinRT。從以往的經驗來看,Windows Phone 8上的WinRT應該是個精簡版,目前.NET和C++應該都支持,不過JavaScript支持如何就不知道了。
想想微軟的決策者們真的有點天真,大兒子用了套未經驗證的技術,小兒子也一定要用,否則就不夠一家子,可是要玩完一起玩完啊。大兒子身體好,經得起折騰,小兒子……
2.繼續維護Windows Phone 7.8版本
拋棄掉已有Windows Phone 7的用戶,會成為微軟的又一樁罪惡,其實微軟從來就不在乎已經到他的平臺上來的開發者。但是,作為負責人的開發者,至少在一定的時間段內,要維護Windows Phone 7.8版本,其實Windows Phone7.8版本也是能夠運行在Windows Phone 8上的。
但如果是開發新的應用,開發者就面臨一個抉擇:使用Windows Phone 8 API就會不兼容Windows Phone 7,但如果使用Windows Phone 7,就會使用過時的技術。在過時的技術上投入過大,其實是對未來的犯罪。微軟就是這么把開發者架在火上烤的。
對于新應用,我的建議是看量,如果Windows Phone 8的用戶量大于Windows Phone 7,我們可以采用Windows Phone 8來開發,否則停留在Windows Phone 7上是一個相對明智的選擇。
當然,如果是想占坑、或者新的應用使用了Windows Phone 8的某些新特性,那么不用猶豫,直接用就好了。
3.支持Windows 8和Windows Phone 8
比起Windows Phone 8與Windows Phone 7的纏綿悱惻來,Windows 8與Windows Phone8的關系倒是清晰明朗,人家才是親兄弟,只不過Windows Phone 8繼承了叔叔的家業,順便把表弟給殺了而已。好像《哈姆雷特》的劇情啊。
所以,如果想兼容Windows 8和Windows Phone 8,問題其實并不大。而移植的挑戰可能會出現在UI上,比如,操作方式、分辨率。畢竟Windows 8是橫向滾動,Windows Phone上并不適合;而Windows Phone 8設計成那個鬼樣子,也跟要解決不同分辨率有關,而Windows 8解決分辨率問題的辦法,其實未必適合Windows Phone 8。
從Windows 8開始,移植到Windows Phone 8應該是一個較為理想的遷移路徑,不過,中間的挑戰也不小。我不相信微軟能把完整的WinRT API移植到Windows Phone 8上。
這一切只能等到Windows Phone 8的SDK出來后才知道。在夏天的結尾,好詩意的發布日期,估計今年夏天會很長,也許會下雪……
4.開發一個華容道
最后的建議純屬玩笑,昨天已經有人發現了Windows Phone 8新UI與華容道之間的神秘聯系,所以,我們用Windows Phone 8的新UI開發一個華容道游戲,也許能夠火起來。
除了華容道外,同類消除、連連看、猜卡片類的游戲也會成為Windows Phone 8重點應用。
大家可以在游戲結尾增加一個投票:“你喜歡這樣的Windows Phone 8嗎?”。雖然我們改變不了什么,但至少可以讓我們苦逼的Windows Phone開發之旅多一些樂趣。
所謂樂趣就是,我們拿著Windows Phone 7.9的Lumia 800時,會聽到以下的對話:
“聽說這家伙以前是開發Windows Phone應用的……”
“Windows Phone?就是那個害死諾基亞、自己不和自己兼容的手機?”
“是啊,我想不到誰還會為這種操作系統開發應用……”
“哈哈”
好了,吐槽就這么多了,作為Windows Phone開發者,你的選擇空間真的很小。與其停留在期期艾艾中,還不如從今天開始,面對新的變化。擁抱變化,也許是我們唯一能夠戰勝大公司的機會。
當大公司還在評估、調研、討論Windows Phone 8時,我們已經撣干凈身上的泥土,重新上路了。在路上,我們還可以采兩朵野花,放在諾基亞的墓碑旁,紀念一下這個曾經的戰友,雖然這個不靠譜的北歐人給我們添的麻煩也不少。我們可以這樣表達自己的哀思:你妹的256M內存,去掉6M就是你的名字!