開發臉書AP你不可不知道的事-Developer Roadmap

這幾天修了一個邀請朋友的UI bug,這個畫面大家應該都不太陌生:

2010年我剛做這個應用程式時,是使用Javascript SDK去parse XFBML的方式,一直正常使用到2012年7月初:

<fb:serverFbml width="755">  
  <script type="text/fbml">  
  <fb:fbml>
  <fb:request-form action="${ap_url}"
    method="POST" invite="true" type="XFBML"
   content="歡迎一起使用登出國軍倒數計時器 <fb:req-choice url='${fb_apurl}' label='開始使用' />  " >
   <fb:multi-friend-selector showborder="true" exclude_ids="${exclude_friend_string}" actiontext="邀請你的朋友加入"/>  
  </fb:request-form>  
  </fb:fbml>  
  </script>  
</fb:serverFbml>

現在改用FB.ui去叫出邀請朋友的dialog,在兩年前是沒有這個method的:

  FB.ui({
    method: 'apprequests',
    message: '讓我們一起來倒數吧!'
  });

除了這個故事外,還有許多改變在我維護臉書應用程式時,偶爾跳出來荼毒我。讓我想到一個很重要的觀念: 「沒有完美的軟體」。如果做出了一個超強的雲端殺豬系統,但除了殺豬又要可以燉東坡肉煮滷肉飯,這樣要怎做到time to market? 九品工程師用加班達到time to market的話,會不會導致肉的調味不正卻而讓使用者怯步呢? (不懂含意請自行翻閱笑談軟體工程 Page.18)

言歸正傳,這故事告訴我們: 「Facebook在不停的改變,我也要不停的改變。」

Facebook算很有良心,提供了Developer Roadmap讓你知道: 它即將要廢掉你的什麼武功。點擊開發人員頁面中的部落格 Tab就可以找到Developer Roadmap:

這頁面包含兩個項目: BlogDeveloper Roadmap。Blog為臉書開發人員的Blog,裡面會發佈即將可能出現的新功能,或較瑣碎將改變的功能,可選擇看或不看。Developer Roadmap較重要,在改變生效的90天之前,會先公布於Roadmap中,這是它的90-day breaking change policy。因此在這裡你可以看到即將要做的改變是什麼。舉例來說,8月1號即將生效的修改是: 1. 將不支援FB.Canvas.setAutoResize(調整Cavas大小的JavaScript API); 2. Graph API/FQL Page Post GETs操作的權限調整。

在你看到之後,就可以提早將FB.Canvas.setAutoResize改用FB.Canvas.setAutoGrow,而Page Post GETs操作要多加上Access_token。對Facebook來說,功能的改變、舊功能的相容、存取權限的改變都會出現在這裡。哪天你的程式不會動了,不妨來看看這寫了些什麼。(前陣子還遇到書籤功能已經被Facebook列為預設的功能,因而導致fb:bookmark標籤的廢止)

在功能改變生效之前,Facebook提供了Migrations功能讓你可以預先知道你的應用程式是否能正常使用。這個設定位於應用程式設定>進階中:

在Migrations中,會列出即將要生效的改變,這可以和Developer Roadmap中所列出的對應。在你將應用程式修改到符合新的存取方式或使用了新功能後,就可以透過這個設定去做Preview。不可否認,Facebook還蠻貼心的呢!

這篇文章告訴你兩個重點:

  • 養成關注Developer Roadmap習慣,也許是一星期一次。這將能讓你的程式永遠在最新的狀態,並減少Facebook造成你應用程式產生Bug的機會。
  • 不要怕改變,將改變當作學習新知的機會。O'Reilly有出一本FBML的書籍,但Facebook在2012年7月後不再支援FXBL後,它們會怎麼樣嗎? 當然是再出一本新的書去講解新的API啦!

友藏內心獨白: 我也不希望它變來變去阿!