Cal talks about less geeky stuff than Joshua.
Flickr — which turns two this week — has a lot of passionate users. Flickr was built out of passion, not for money. People say they want all sorts of things, but look at their behaviour instead (just like Joushua said).
So, what is Web 2.0? Let’s look at ten things.
- Collaboration. Flickr started as Game Neverending, a MMORPG. That morphed into Massive Multiplayer Online Photo Sharing. Tagging is collaborative metadata. Everything’s is based around the social network.
- Aggregation. Things on the Web used to be stored in separate silos. With aggregation, you can slice data by time, tags, even interestingness. It’s not just about the ten most recent things on a site.
- Open APIs. Flickr and del.icio.us have had them from the start. Flickr built theirs to use themselves for their own Ajax functionality. Then they released it openly. A simple API can be read only: different ways of looking at data. Writable APIs are a step beyond. Now you’ve gone from web site to web application to web service. People can build the stuff that you don’t have the time or inclination to do. Fastr is a good example. If you don’t provide an API, people will build stuff anyway but it will harm you: screen scraping, etc.
- Clean URLs. There’s no need to expose the guts of your app in URLs. Instead make them work in the way that users use the site.
mod_rewrite(which Joshua also talked about as a black art) is very, very useful for this. People will be able to hack URLs if they’re clean. URLs cannot change. Ever. If you change your naming scheme, you must support the old scheme forever.
XMLHttpRequestis also badly named: there’s no need for XML. Flickr uses lots of Ajax e.g. adding tags without refreshing the page. On the client side, the technology is Ajax; on the server side, the technology is the API. On Flickr, Ajax is used for functionality that was already there (e.g. adding tags) but with fewer page loads. In some cases, it’s used for whole new experiences.
- Unicode. Internationalisation is building in the ability to support different locales. Localisation is the translation of your application, UI, etc. into different languages. A big part of providing for internationalisation is using unicode. On the web, that’s usually UTF-8. That’s what Flickr uses.
- Desktop integration. Or, more precisely, platform integration: it might not be the desktop. Flickr made desktop apps because file uploading is a pain on the web. Desktop apps make sense for file uploading and drag’n’drop. Think about integration with email. For instance, it’s really hard to get a file from a mobile phone to anything except an email address.
- Mobile. Remember WAP? (audience laughs). Most mobile phones these days have browsers, like Opera, and support XHTML-Mobile which is a lot better than WML. You need to serve different content to mobile devices. Keep text shorter and snappier with less metadata and smaller images. Think in smaller chunks.
- Open data. Provide methods for people to get data into and out of the system. Allow people to leave whenever they want; that encourages them to stay. Again, APIs do this. That’s how you can get your Flickr pics on DVD, for example: the third party product uses the API to get the pictures.
- Open content. With many sites, when you upload something, the site owns it. With Flickr, you still own the rights. Beyond that, people can use Creative Commons licenses. Then, other people can reuse that content to create cool stuff. For example, every photo in Cal’s presentation is licensed under a Creative Commons license.
Cal’s slides are available online.