Web 2.0 編程思想:16條法則

文章日期:03/23/2007 12:32 am

Web 2.0 編程思想:16條法則

2007-03-23 10:40:26 來源:天極Yesky 作者:龍犢

  1、在你開始之前,先定一個簡單的目標。

  無論你是一個Web 2.0應用的創建者還是用戶,請清晰的構思你的目標。就像“我需要保存一個書簽”或者“我準備幫助人們創建可編輯的、共享的頁面”這樣的目標,讓你保持最基礎的需求。很多Web 2.0應用的最初吸引之處就是它的簡單,避免並隱藏了那些多餘的復雜性。站在創建者的立場,可以想象Google的幾乎沒有內容的主頁,還有del.icio.us的簡單的線條。從最終用戶的角度來看,與之齊名的就是Diggdot.us所提供的初始化頁面。你能夠並且希望加入更多功能,但是先做好最開始的。在一個時候只做一個特性,完成一個目標。這聽起來很太過於單純化了,但它將使你更加專注,而且你也會明白我的意思。

  2、鏈接是最基礎的思想。這就是我們稱之為Web的一個理由。
 
  鏈接是把Web中各種實體連接起來的最基本的元素。你的信息、你的關係、你的導航,甚至是能夠被寫成URL的任何內容。這裏有一個鏈接應該遵循的規則(其實你也不必嚴格的遵守):

    1. Web上的任何東西都是可以被URI或者是URL所連接的。
    2. 把所有的鏈接都保存為他的原始出處,這樣可以讓你與任何人、在任何地方、任何時候都能分享它。
    3. 第二條中任何時候的前提是鏈接必須是持久的,它不會在沒有任何緣由的情況下被改變或者是消失。
    4. 鏈接應該是人類可讀的、穩定的、並且能夠自我詮釋的。

  3、數據應該屬於創建它的人。

  是的,你聽我的。任何用戶創建的、貢獻的或分享的都是他們自己的,除非他們很明顯的放棄這個權力來讓你自由處置。他們貢獻到Web上的任何信息都應該是可編輯的、能被刪除的、並且能夠取消共享,無論在任何時候,只要用戶願意。這也包含了那些間接的數據,像他們所關心的記錄、日志、瀏覽歷史、網站訪問信息,或者是任何可以被跟蹤的信息。所有的網站必須清晰簡單的陳訴那些信息是用戶創建的,並且提供他們停止創建的方法,甚至是清除的方法。

  4、數據優先,體驗與功能其次。

  無論它是文本、圖片、音頻還是視頻,Web最終還是把這些解析為數據。換句話說,你無法脫離數據去呈現內容。所有這些數據都通過那些易於發現的URL來定位(參見第2條)。通過另一種形式來看待這些,Web最終是名詞優先,動詞其次,雖然最近正在向動詞偏移。來看看名詞的例子:日歷的條目、家庭照片、股票價格。還有一些動詞的例子:定一個約會、共享一張圖片、買一份股票。

  5、做好積極分享一切的準備。

  盡可能的分享一切,你所擁有的所有數據,你所提供的所有服務。鼓勵不遵循原有意圖的使用,提倡貢獻,不要那些需要分享的內容堅持設置為私有的。在分享與發現之後,提供易於使用的瀏覽方式是顯而易見的需求。為什么呢:話說回來,你會從別人的共享之中受益匪淺。注意:這裏沒有許可讓你去侵犯版權保護的法律,你不能夠去分享你刻錄的DVD或者是擁有商業版權音樂,因為你已經同意不會去分享這些東西。但是你可以發現並分享那些完全開放的媒體內容。一個小小的建議,你可以學習一下Creative Commons license(共創協議).

  6、Web是一個平臺;要讓它成長。

  當然,我們還有很多其他的平臺(Windows、Linux、Mac),但是那些已經不是重點了。換句話說,Web是無法脫離的平臺,不會中斷的平臺,你可以通過各種方式去擴展的平臺。你在Web上提供的數據與服務將會成為Web一部分,最終你會在Web平臺的某一處扮演你的角色。扮演好你的角色並照顧好後來者。

  7、理解與信奉“階梯性”。

  現在的Web越來越大,幾乎蔓延到了全世界的所有國家,並且已經擁有了10億用戶。我的觀點是Web的各個組成部分存在著細微的區別和不同,就像不同地方的用戶那樣。例如Web的設計部分:易用性永遠優先於速度、可靠性、重用性與可集成性。你也應該提供同樣的體驗給你的用戶。它已經被一次又一次的被人們在文檔中強調,忠誠的用戶很快會成為專業的用戶,他們期待更快的速度還有更多。退一步支持他們。同樣,也有很多很多的用戶會進入這個階梯的底端,如你所期待的那樣。他們可能不會說你的語言,不熟悉你的文化,甚至不知道是如何到這裏的。所以你需要向他們表達清楚。

  8、任何東西都是可編輯的。

  或者是它應該被編織的更好。要確定的是,只有很少的東西是不能被編輯的,剩下的都可以,這是一個可寫的Web。這並不意味著原始內容的丟失,而通常被理解為用戶能夠很容易的對內容加以評論,或者評注內容是在那裏發現的。如果你對此應用的好,他們能夠比你所想象的做的更多(把內容串起來並且給予原始內容來創建自己的,等等)。

  9、Web上的身份是神聖的。

  不幸的是,這並不意味著你能夠得到更多的隱私(這完全是上個世紀的想法)。但對身份的驗證是必要的,你應該感謝那些只需一個郵件地址就能確定你身份的服務。這意味只要你對你的用戶承諾了,你就必須保證他們的隱私安全。必要的時候,在這個世界的某處你還得為你的用戶挺身而出,向當地的權威挑戰。如果你沒有打算那樣做,你就得把實際情況告訴你的用戶。另一方面,如果身份是必須的,不要試圖偽裝它,不然在某一天我們將會在Web上放棄我們的最後一點點隱私的權利。

  10、了解流行的標準並且使用他們。

  從一個消費者或者是創作者的立場來看,數據將會以不同的格式與任何一個人交換。同時這樣的數據也會反過來促進標準的完善與採納。這通常意味像RSS、 OPML、XHTML、Simple XML、JSON等簡單標準的流行,而避免SOAP、XSD,還有RDF、ATOM也一樣,使用它們會給我的內心帶來痛苦。請你也為你所鐘愛的標準投上一票來支持它們。

  11、遵循無意使用的規律。

  如果你把非常有趣的數據和服務用廣泛使用的格式開放和共享出去,你將會得到你所應得的,其他人也將會基於你的那一塊Web平臺來構建。或許還會從別人那裏得到更多,所以為這個做一下準備比較好。我已記不清有多少次我看到一個播客(podcasting)服務因為流行過渡而導致服務垮掉,就是因為他們被 Slashdot和del.icio.us給收錄了。這一點要知道:網絡上的大量化意味著如果一個內容非常有趣,即使是一個很小的角落也會得到驚人的訪問量。鼓勵使用這種方式,它還是非常有價值的,前提是你要有所準備。

  12、粒化你的數據與服務。

  我們應該在很早以前就明白這些,大規模集成的數據僅僅適用於無需管理的下載與批量操作。分解你的數據,讓他們獨立成可描述的URL地址,對你的服務也一樣。反過來說,你不要創建一些巨大的、復雜的、像聖誕樹那樣的數據結構和服務。保持簡單,要非常的簡單。讓這些分離的片斷能夠容易的被重組和發現。

  13、提供用戶能夠單獨受益的數據和服務。

  漸漸依賴於這種社會化參與是存在風險的,你需要讓你的用戶有一點點動機來貢獻時間、熱情和信息,除非他們能夠直接受益。社會化分享比個體行為的利益大很多,除非你能夠激發用戶的個人動機,否這你將無法享受這份厚禮。

  14、讓用戶組織並過濾信息。

  不一定是必須的,但卻是非常重要的。讓用戶以他們自己的方式來標注和組織數據,因為你自己是永遠無法及時的處理他們的。用戶會按照他們自己理解的最佳方式來處理並構建。要保證你的Web服務能夠按照用戶所需所想的方式來工作。這也是標簽(tagging)和通俗分類(folksonomies )的方式如此成功的主要因素。

  15、提供豐富的用戶體驗。

  Web一直都在和本地的應用程序進行著激烈的競爭。為什么?因為本地程序還是感覺上好一些,速度也快一些。但是這不會長久的(確信在5年或者15年後,這種競爭就不存在了)。是的,我在談論Rich Internet Applications, Ajax, 還有那些不可思議的交互應用。他們讓Web成為了一個真正的“無平臺”的平臺,如果你知道我是怎么想的。

  16、信奉並支持快速改進和反饋。

  這個通常意味著加快步伐,但也意味著使用輕量級的工具、技術和不要做出那些適得其反的痛苦決定(例如使用一個被層層環繞的Ajax框架來代替可以通過混合來實現的,或者用C++來構建所有的東西,其實使用Ruby會更好一些)。這同時也意味著需要一個非常快速的方式來處理錯誤報告,修復Bug,釋放新版本。從一個用戶的角度來看,報告你所發現的任何問題,還有那些你經常抱怨的地方,甚至那些都不是一個Bug。

  當然,Web 2.0是一個極其廣泛和深奧的話題,沒有一個人能夠列舉出它的所有重點和特徵。如果你對此充滿了興趣,請花一點時間來補充我沒有提到的地方。我想這就是Web 2.0的參與性吧。