Sixteen Ways of Thinking in Web 2.0/Web 2.0 编程思想:16条法则/(原文中译对照)

With apologies to Bruce Eckel, I sat down this afternoon and put together a draft list of the first-order elements of Web 2.0 thinking. It’s not that I have the hubris to consider this list official in any way but it should be a serviceable starting point for debate, discourse, and reference. I’d also like to give credit to Jeremy Zawodny for his write-up pointing me to Tom Coat’s excellent presentation notes from his Future of Web Apps talk which partially inspired this effort. I think both of them have really solid source material. But they still don’t quite capture a complete high-level picture of the ingredients, forces, and decisions that have to go into thinking about, using, and building complete Web 2.0 software experiences.

That simple fact is that creating software of any kind is hard work. And creating good software is very, very hard. Never mind creating insanely great software (to loosely borrow a phrase from Steve Jobs), which is so rare that it practically never happens, which is a real shame. And that in the end, that’s the goal of enumerating ideas like this, so we can build on the shoulders of giants and start off with some of the hard decisions already done and get closer towards the truly great software.

And to be sure, the state of the art in software does regularly improve as well as our shared understanding of what makes software good. Of course, the problem with determining the “goodness” anything is that it must be measured with respect to something, some criteria. And in general, the tenets of Web 2.0, such as they are and as ill-defined as they are, tend to state that software that is open, social, interactive, remixable, hackable, and gets better the more its used, is likely the place to begin.

So, in this vein, I took my own studies of Web 2.0 as well as many raw inputs as I could find and came up with a roughly structured list of how to “think” in terms of Web 2.0 ideas. Let me know what you think and as always add your own in the comments below. Let’s create a really terrific guide for those who are just discovering this fascinating and useful study of the next generation of online software.

Thinking in Web 2.0

1. Before you even begin, understand your goal simply. Whether you are a Web 2.0 application creator or user, clearly conceive your goal. Things like “I’m here to save a bookmark for use later” or “I am going to help people create shared, editable web pages” helps keep you grounded and oriented. So much about the initial attraction of Web 2.0 is its simplicity, with unnecessary complexity deliberately and carefully hidden. From a creation standpoint, think Google’s home page or the spare, clean lines of del.icio.us. And from a end-user’s view, the eponymous instaview provided by an initial page load of Diggdot.us. You can and will add more later but get first things first. Build a feature at a time. Complete a goal at a time.This may sound simplistic but it’ll help stayed focused later, and you’ll see what I mean.
2. The link is the fundamental unit of thought. It’s called the Web for a reason. The link is the foundational element for connecting the entire Web together. Your information, your relationships, your sense of navigability, and even chunks (of chunks) of content are all referenceable by a URL. The implications here are manifest and include but are certainly not limited to:

1. Everything on the Web is linkable with a URI or URL (and if isn’t, it should be!)
2. Saving any link lets you get back to what the link originally referenced, and it lets you share it with anyone, anywhere, at any time.
3. The anytime piece in #2 is crucial and means the link is really a permalink that won’t change or go away without good reason and prior warning.
4. Links should be human readable, consistent, and their purpose self-evident.
3. Data belongs to those that create it. Yes, you heard me. Everything a user creates, contributes, or shares is theirs, unless they have given away the right explicitly and by free choice. Any information they contribute to the Web should be editable, deleteable, unshareable by the contributor whenever they feel like it. This also means indirect data like their attention records, log entries, navigation history, site trails, or anything else that might be tracked. And all Web sites must clearly and simply state what information a user is creating and give them a way to stop creating it and even clean up.
4. It’s about data first, experiences and functionality second. Whether it’s text, images, audio, or video, the Web ultimately revolves around data. In other words, you can’t have presentation without something to present. All this data is locatable with a URL that is easily found (see #2). Another way of looking at this is that the the Web is ultimately about nouns first, and verbs second, though the shift is slowly moving towards verbs these days. Examples of nouns: calendar entries, family photos, stock quotes. Examples of verbs: making an appointment, sharing a picture, buying a stock.
5. Be prepared to share everything with enthusiasm. Share everything possible, every piece of data you have, every service you offer. Encourage unintended uses, bend overbackward to contribute, don’t keep anything private that doesn’t absolutely have to be. Go beyond sharing and make discovery, navigation easy, obvious, and straightforward. Why: In return, you will benefit many times over from the sharing of others. Note: This is not a license to violate copyright laws, you will not be able to share your ripped DVDs or commercial music recordings, those are things you agreed you can’t share. But you might find yourself using and sharing a lot more open source media. And for heaven’s sake, learn the Creative Commons license.
6. The Web is the platform; make it grow. Sure, there are other platforms (Windows, Linux, Mac), but they don’t matter as much any more (this list is after all, how to think in Web 2.0). In other words, don’t leave the platform, don’t break the platform, but please, by all means extended the platform. The data and services you provide on the Web become part of the Web and you become a steward of your corner of the Web platform as a result. And please be a good steward and look after those that care about what you’ve added.
7. Understand and embrace the “capability gradient”. The Web is a big place now, in every country of the world, and it now contains 1 billion users. The point here is that all parts of the Web are slightly and uniquely different, as are all Web users. For the machine part of the web: simplicity is almost always preferred for speed, reliability, reuse, and integration. So too is it with the experience you provide people on the Web. It’s been documented time and again that loyal users soon become expert users that want to do more, faster. Support them. Gracefully retrograde. Also, many, many people will come in below the capability gradient that you expect. They may not speak your language, have your cultural assumptions, or even know how they got there. Make it clear to them too.
8. Everything is editable. Or it should darn well be. And if it isn’t, go somewhere else. Sure, a few things might not make sense being editable, but for the rest, it’s the Writeable Web. That doesn’t imply that original content is ever lost and often this only means that users should be able to easily comment on or otherwise annotate the content they find. And if you’re smart, they’ll be able to do a whole lote more than that (i.e. fork off and create their own works based on the original, etc.)
9. Identity on the Web is sacrosanct. Unfortunately, that doesn’t mean you get much privacy (really a 20th century notion anyway). But verifying identity must be expected and be thankful when only an e-mail verification is required. However, this absolutely means you must protect the privacy of your users if you promised it. Be warned that you may have to stand up for your users against authorities somewhere in the world, if that’s what it requires. And you might even win in the long run. And if you’re not prepared to do that, you’d better tell them. On the other side, if identification is required, don’t ever fake it, or one day we’ll all need to give up our last scraps of privacy to do anything we want to do on the Web. So, this must be an unbreakable compact between Web user and anyone running some corner of the Web. Or we will ultimately completely lose what little anonymity and privacy we can muster now.
10. Know thy popular standards and use them. From a consumer or creator standpoint, the data you will exchange with everyone else will be in some format or another. And the useful of that data will be in inverse propotion to how well-known and accepted its standard is. This generally means using RSS, OPML, XHTML, simple XML, JSON. This means tending to avoid SOAP, XSD, and even as much as its pains my inner geek to say it, RDF, ATOM, and others. And please, contribute your standards with your vote either way, below.
11. Obey the law of unintended uses. If you make highly interesting data and services open and shareable in widely used format, you will get what you deserve: Other than will use your corner of the Web platform to build on. Maybe (and probably in fact) a great many others. Prepare for this. I don’t know how many times I’ve seen a podcasting service get disrupted because they were popular, a site go down flat when it was Slashdotted, or del.icio.us/popular grind to a halt. Know this: The law of large numbers on the Internet means that even small corners can get vast traffic if they are remotely interesting. Strong encourage the attention but it can be extremely valuable,, but always prepare.
12. Granulate your data and services. We should have learned this long ago but large monolithic chunks of data are only convenient for unattended downloads and other batch operations. Break up your data, makes its individual internal pieces URL addressable, and do the same with services. Conversely, don’t create large, elaborate, Christmas Tree data structures or services. Keep it simple, very simple. And make the pieces sensibly organized, and make those pieces easily findabe.
13. Provide data and services that are for user’s individual benefit. At the risk of slipping into a socio-political tarpit, there is little incentive for users to contribute time, attention, and information unless they are the primary beneficiaries. Social sharing is a terrific benefit that is greater in the large than the individual benefit, but you won’t get there unless there is personal incentive. Nuff said.
14. User-driven organization and filtering are not just nice to have. Not critical, but very important. Let users tag and organize data in ways that make sense to them, because you’ll never figure it out in time. Users understand their own thinking processes and mental models best. Making sure your place on the Web can work for them can in ways that actually work the way they work and think. Things like tagging and folksonomies can be a long term critical success factor.
15. Offer/use rich user experiences. The Web is still in heated competition with native software. Why? Because it still feels better and runs better. But not for long. (Sure, this might take 5 years or 15, but it’ll happen.) Yes, I’m talking about Rich Internet Applications, Ajax, and all that marvelous dynamic interaction. It works and helps make the Web a true “platformless” platform, if you you know what I mean.
16. Embrace and enable rapid change and feedback. This often just means be ready for a very fast pace but it also means using lightweight tools, techniques, and not making the painfully inrreversible decisions (using an all-encompasing Ajax framework instead of one that is blendable, or building everything in C++ when Ruby might be a lot better.) This also means having a very rapid method for taking defect reports, fixing the bugs, and putting new versions out. And darn it, make it super easy for your users to get a hold of you. From a user perspective, report every problem you find and be sure to gently complain about what bothers you most, even if it isn’t a bug.

Of course, Web 2.0 is an extremely large and involved topic and no one could possibly list all the importants Web 2.0 ideas and ways to think about it. So I encourage you, since you’re here and evidently interested, to take a few minutes and add the things I missed. Web 2.0 is all about participation after all.

============================================
原文:Thinking in Web 2.0: Sixteen Ways
作者:Dion Hinchcliffe

1、在你开始之前,先定一个简单的目标。无论你是一个Web 2.0应用的创建者还是用户,请清晰的构思你的目标。就像“我需要保存一个书签”或者“我准备帮助人们创建可编辑的、共享的页面”这样的目标,让你保持最基础的需求。很多Web 2.0应用的最初吸引之处就是它的简单,避免并隐藏了那些多余的复杂性。站在创建者的立场,可以想象Google的几乎没有内容的主页,还有del.icio.us的简单的线条。从最终用户的角度来看,与之齐名的就是Diggdot.us所提供的初始化页面。你能够并且希望加入更多功能,但是先做好最开始的。在一个时候只做一个特性,完成一个目标。这听起来很太过于单纯化了,但它将使你更加专注,而且你也会明白我的意思。

2、链接是最基础的思想。这就是我们称之为Web的一个理由。链接是把Web中各种实体连接起来的最基本的元素。你的信息、你的关系、你的导航,甚至是能够被写成URL的任何内容。这里有一个链接应该遵循的规则(其实你也不必严格的遵守):

a. Web上的任何东西都是可以被URI或者是URL所连接的。
b. 把所有的链接都保存为他的原始出处,这样可以让你与任何人、在任何地方、任何时候都能分享它。
c. 第二条中任何时候的前提是链接必须是持久的,它不会在没有任何缘由的情况下被改变或者是消失。
d. 链接应该是人类可读的、稳定的、并且能够自我诠释的。

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的参与性吧

发表评论?

0 条评论。

发表评论