更新了最后的部分“參與的好處” -- Good Friday放假沒事寫博客。-2012年4月6日。
之前做了一個MSDN中文Webcast app。當時是為了參加Windows Phone Mango大賽而編寫的,因此設想很多Mango的新功能,后來給炮灰了。第一個版本大概花了10到15天的業余時間進行開發。后來又用了大概2,3周業余時間更新,完成了基本功能。這個app提交了以后一直沒有怎么維護,也沒有做推廣。這里的推廣是指連論壇發貼神馬的,不是指刷榜什么的。如果對app store有了解,中國區好多app都是靠刷榜什么的,國外的app dev聚會的時候一般聊聊創意,開發的問題什么的。國內的app開發者大會,有些演講者直言不諱的說要了解app store的排名算法,花多少錢推廣神馬的。當然國外的app也推廣,而且刷榜這事絕非中國人發明的,但在中國發揮到極致。我當時做這個app是想借參賽的機會學習和大量應用mango的新功能,后來發現還是能幫到別人,也有一些人下載使用的。
下載鏈接
http://windowsphone.com/s?appid=7208ef50-a57d-4b11-b5ab-22f228137288
給力評價
程序還沒有在中國區上線。
功能
這個app包含了以下幾個功能
按照系列,講師和產品分類顯示Webcast
課程簡介功能
下載管理功能
由於官方的視頻是zip文件,需要下載解壓才能播放,所以有下載管理的功能。
搜索功能
收藏功能
Live Tile功能
基本功能都有了,但是與當初設想的還是缺少了不少功能。
難點
剛開始我覺得做這個app難度不大,我大概在一年多前,Windows Phone剛出來的時候就做了一個播放Windows Phone Webcast的英文app。

免費下載地址 http://www.windowsphone.com/en-AU/apps/ddac45bc-4f3f-e011-854c-00237de2db9e
但是在開發這個app的時候還是遇到不少問題,解決這些問題浪費了開發6,70%的時間。這里確實是“浪費”,因為這些工作都不是在做app的關鍵部分,導致了一些設想的功能並沒有完成。導致大量時間浪費主要是如下幾個問題:
后台下載
由於官方的Webcast是通過以zip文件的形式存儲,因此不能直接在線播放,需要下載zip文件到Isolated Storage。后台下載是Mango的新功能,是Background Agent的其中一個,使用后台下載是有些限制的,例如只能最多同時下載5個任務,所以要自己管理下載文件,這個管理流程在程序重啟,墓碑化以后有點麻煩。下載過程中,文件的大小與通信的媒介(WiFi或者3G)都有關聯,代碼編寫的時候還需要避免內存泄漏,因此花了不少時間在編寫穩定的后台下載代碼。
解壓
如上所述,視頻是通過zip文件存儲,所以需要解壓才能觀看,因此我也試了好幾個解壓的庫和源代碼,通過大量的測試和修改,最后發現在Windows Phone中SharpZipLib是最好的,但是這個庫在Windows Phone中運行,有時候也會出問題,例如文件大小大於100M的時候。這里浪費的時間比后台下載要多。
播放
文件一旦解壓成功,需要進行播放,由於官方的時候歷史悠久,有些視頻的壓縮比率非常高,導致Windows Phone不知道這種視頻的格式。在開發過程中,我反復使用MediaElement,Silverlihgt Media Framework或MediaLuancher來試圖播放所有視頻,最后發現有好多視頻三種方式都無法播放,甚至通過zune軟件傳輸到Windows Phone也不能播放。最后只好放棄對一些視頻的支持,這里浪費的時間還要比解壓功能多很多很多。
這些問題不但浪費時間,而且導致這個app不能為用戶提供良好的用戶體驗,例如用戶需要下載等待,下載完畢還需要等待解壓,解壓后有部分視頻還是不能播放(已經屏蔽了一部分,但是沒有完整測試所有不能播放的視頻)。可以說這個app的用戶體驗有一部分是由於官方提供視頻的格式所限制的,如果以后官方提供在線播放功能,這個app的用戶體驗會提高很多。
預計實現的功能
由於浪費了6,70%的時間在處理非核心功能上,導致有好些預先設計的功能沒有完成,主要如下:
搜索關聯功能
在bing搜索中,如果搜索Webcast相關的,可以直接搜索這個app里面的內容,這是Mango的新功能,好像國內的app很少有這個功能。
完善解壓功能
通過后台定時任務自動解壓,不需要用戶等待。可以通過定時任務完成這個功能。
完善播放功能
記錄用戶播放進度,可以隨時回到播放的進度中。需要客戶化播放控件。
微博分享功能
加入社交功能,用戶互相交流等等。
展望
如上所述,有些功能還沒有完成,需要進一步完成上述的功能,同時進行一些功能的完善可以提高app的用戶體驗,所以在未來會考慮如下一些功能:
把主頁面改成Pivot
Panorama是個好控件,但是有時候使用Pivot可能更合適,打算把app改成Pivot控件。
完善UI
由於時間倉促,UI基本沒有進行設計,直接把數據通過數據綁定進行顯示,需要完善UI,增加更多的margin,加入一些圖片等等。
雲同步功能
通過Azure或者其他雲同步一些設置,更新視頻列表等功能,官方的視頻列表是一個xml文件,而且沒有版本信息,檢查更新的時候需要下載整個xml。導致更新困難,通過雲平台可以方便更新。首選Azure,但也考慮其他平台,例如heroku+nodejs,因為平常工作都熟悉使用Azure,想試試其他平台。
支持其他設備
支持iOS,Windows 8,Android,PC等設備,用戶可以通過雲同步各個設備的配置信息,播放進度等等,就像Kindle一樣。由於使用了MVVM,所以移植到Windows 8難度不大,而且我平常也做過不同設備的開發,如果有需要和時間,支持這些設備不是什么問題。
找幫手
以上還是有不少功能需要完善,我希望找一兩個幫手幫我完成,要求如下:
1. 一到兩個,本人以前也做過一些開源項目,一堆人,最終沒有把事情做出來,精簡人員,一步步不斷迭代。
2. 有充裕的時間,最好是大學在讀的同學,app開始拼創意,后期拼時間,沒有充裕的時間,不能完善一個好app,所以希望有充裕的開發者參與。
3. 熟悉Windows Phone開發,Mango的功能,最好熟悉MVVMLight的開發,由於整個app都是基於MVVMLight編寫,基本零code-behind代碼,所以最好熟悉MVVM,對於沒有基礎的初學者,對不起,暫時不能參與,因為分隔兩地,溝通成本太高,我沒有能力把事情安排的很好。
4. 對Windows Phone開發具有濃厚的興趣,因為沒有報酬的。
5. 願意接受下面的事先說明和合作方式。
事先說明:
1. 這里不是找廉價勞工,而是找無酬勞工。沒有任何報酬,我沒有打算通過這個app賺錢,這個app連ad也沒有。這里沒有大餅,入市前請謹慎。
2. 避免以后發生問題,app的總體發展方向由本人決定,本人甚至可以cancel整個app的開發。
3. 避免以后發生問題,如果在合作上有任何問題,本人有權隨時終止合作關系。開發者也隨時可以離開項目,但不能公開源碼。
4. 沒有說明的,一切解釋權歸本人。
合作方式:
1. 通過Agile的方式開發,分為BA和Developer,然后通過迭代的方式增量開發,每次迭代2到4周,視乎開發者的時間,如果專注開發,2周時間能做不少功能,上述的app我大概使用了6-8周的晚上時間進行開發,我試過5天晚上的時間做出4個小游戲,在快速開發方面,Windows Phone還是一個不錯的平台。
2. 我將從開發者轉成BA,主要整理故事,如果有必要會解決一些技術問題。雖然現在不是專門做Windows Phone的開發,但是我對這個平台還是很了解,可以挖掘這個平台的最大功能(任何平台都有限制,需要在限制條件發揮到最大的功能)。下面是一些故事的例子:
1) 作為一個用戶,我在Bing搜索中能搜索到Webcast的視頻。
2) 作為一個用戶,下載完畢的視頻可以直接打開觀看。
3) 作為一個用戶,我能直接參看上傳觀看的視頻,保留播放進度。
參照Agile的方式,一個迭代會完成幾個故事,軟件不斷快速更新,就像當前版本,我當時做1周迭代,現在已經2.0版本了。
3. 快樂編程,平常上班,上課什么都很多苦逼的事,所以不能把這個項目作為負擔來做,高興的時候才專注做,不高興,以后不想做可以隨時離開項目。但我希望要把一個迭代的任務完成了,或者至少完成了一個單獨的故事。
4. 如果有興趣,請加我微薄 @林永堅Jake, 粉我,然后求粉,就可以通過私信溝通。
參與的好處
雖然上述條件苛刻, 為了吸引人參與,下面講述一下參與的好處:
1. 可以把參與部分分享到你的博客,(上面的條件也沒有限制,而且我本人很喜歡分享,每天在微博回答大量問題),只是不能公開全部源代碼,我的目的是想把這個app做好,在我看來,現階段開源不是一種好的方式,如果開源能把這個app做好,我願意開源。我之前也做個好幾個開源,對於這個app我選擇精簡人員,閉源開發。
2. 如果app做得足夠好,可能放到中國MSDN的官方網站進行推廣,對於參與者找工作什么的可能有幫助,對我就沒什么用的。
3. 可以嘗試很多新技術,mango功能,Async神馬的,我都用上,這是一個試驗場,參與者能把這個app做好,技術上完勝大部分國內的app。
4. 可以把我做app的想法分享出來,Metro什么的,各種設備什么的。
5. 可以體驗Agile開發流程,看過不少博客,很多人對Agile什么都當神膜拜,作為在各個開發流程都做過,主要還是喜歡Agile的做法,逐步完善產品的路程。
6. 在本機功能完善后,做做cloud什么的,Azure什么的對我來說也是拿起就立刻出系統。我試過2天時間把一個surface 2 的app從本地變成Azure版本,所以我可以分享這些想法。
寫了上述的對開發者的好處,我也確實在考慮做這個對我自己有什么好處, 好處就是有人幫我把想法實現了,可能讓更多人使用這個app,而且從中受益。什么經濟利益什么的確實沒有。













