Following a twitter discussion with Tom Wentworth , Kevin Cochrane and Stephane Croisier on the impact of Facebook Connect on Web Content Management, Stephane made following comment, which needs an answer in more than 140 characters.
Facebook Connect is a technology that allows third party web applications to connect and share data with the Facebook social network. It supports authentication, access to user properties like name and birthday, and it allows sharing of application data on Facebook, for example a website could post custom status notices that would appear in my Facebook activity stream as "Lars did xyz on site abc". Jeremiah Owyang called Facebook Connect an example of Social Colonization earlier this year. And while in Jeremiah's description the colonization turns out to the mutual benefit of Facebook and the connecting site, there is still a negative connotation with the term "Colonization", which is shared by many people in the industry, most of them outside Facebook.
The cornerstone of our discussion is that while Facebook Connect is the most popular example for social network interoperability technology, there are numerous other emerging standards and technologies that can be used to create a distributed social network. The most important examples are:
RSS /ATOM - a way to exchange data in feeds between applications on the web
OpenID - a way to identify yourself to a website using the credentials of another website
OAuth - a way to grant an application access to a certain part of your data on a website
OpenSocial - a way to exchange data about users between social networks
OpenSocial Gadgets - a way to embed small web applications, gadgets into other websites
ActivityStreams - a way to share the activity of an user on a social network with other websites
DISO - a collection of technologies to create a distributed social network
This open ecosystem allows developers to create distributed social networks without relying on a single centralized "Conquistador" like Facebook who controls data and access to the system. Yet, for now I would recommend website owners to invest resources first into implementing Facebook Connect. The main reasons are: you get access to the largest possible user base, the integration model is well tested and needs no fiddling with multiple, developing technologies and users already know what to expect from a Facebook Connect integration. Once the limitations of the centralized model become obvious, for example because the central hub is unable to scale, loses the trust of users, or benevolence turns into malevolence - then it is time to federate and to invest into open standards and open source.
This pattern can be observed numerous times in technology: a proprietary leader defines the market, fails in an attempt to fully dominate the market and is attacked by other players in the industry striving for standardization and openness. "If you have a problem for a long time, maybe it's not a problem, but a fact". It think this pattern is not a sign of our industries inability to learn, but a result of the basic economies of innovation.
Innovation is hard and costly, so you try to keep it for yourself (proprietary)
In technology, network effects make successful innovations wildly successful
In order to fully monetize the hit innovation you had, you have to keep a close grip to it
This explains why hit innovators are favoring closed solutions: it is the easiest way of getting their investment back. What worked for IBM, worked for Microsoft, worked for Oracle, worked for Apple, worked for Facebook, so why shouldn't it work for your next innovation? In fact, it will work for the innovator, it just won't work for users. Companies do not do the right things all the time, but if you are locked in into a technology, you are betting on your vendor hitting one home run after the other. And this is why users and visionary followers are pushing for openness, standardization and decentralization - another significant effort, but one that requires an existing, proven market to justify the investment in standardization.
The reason why history is repeating itself is simple: we cannot start out with a standardized solution, because we neither know what to standardize nor if it is worth the effort. Once we know, there is an established, proprietary player that is holding to his closed technology.
I am reading quite a number of RSS feeds, and I am spending some hours offline every week when I am on a plane. With Google Reader and the Byline iPhone application I have found a way of utilizing this offline time with reading. I can download up to 200 articles to be read while offline, the read/unread state of my iPhone reader is synchronized with Google Reader when I come back online and continue to read it on the web version of Google Reader (enhanced by Helvetireader ). Articles that are interesting for me or require further action (like forwarding, or writing a blog post) will be starred (keyboard shortcut: S) in either Byline or Google Reader. With this I created my stack of "to-read" articles.
The problem is: I have actually two stacks of online content that needs to be read: one are the starred items in Google Reader, the other is my Instapaper account that I can fill while browsing the web using the Instapaper bookmarklet (keyboard shortcut: command+1). On my iPhone I am using the Instapaper Pro application that allows me to synchronize articles and read them while offline, on the plane or in a Swiss railway tunnel. This is really helpful, but does not solve my problem of having two different stacks of items that I want to read and that require some action from my side.
With the recently released Instapaper 2.0 Pro I have found a better way of consolidating my to-read lists. Instapaper supports subscribing to an RSS or ATOM feed as a reading list, and will add everything in this feed to a dedicated folder that can be read on the iPhone. To feed my starred items from Google Reader into Instapaper, I did following:
Go to the Google Reader Settings page
Switch to the "Folders and Tags" tab
Check the item "Your starred items" and select Public in the "Change sharing..." drop-down-box.
A link labeled "view public page" appears. Follow this link
Now your shared items are readable. You will notice the RSS feed icon in the address bar of your browser
Now copy the URL of this page and shorten it using bit.ly, because you will have to type this URL into your iPhone
Launch the Instapaper Pro application on your iPhone (there is no web interface for this feature, yet)
Click the Plus button
In the section labeled "A website's feed", select the "Go to a specific site" button
There has been some discussion lately on the best way of implementing HTML5 video. Laura Thomson started the discussion by describing for using HTML5 video with fallbacks to other formats. Laura's solution consists of detecting the availability of HTML5 video using Javascript. If this tag exists, it will be inserted dynamically into the page, if not, a Flash-based fallback will be added.
This caused a prompt response by Kroc Camen and others in an open letter , no less. The points of criticism are lack of accessibility, lack of security, and most important by treating video as a Javascript feature, the document nature of an HTML page is ignored, making it hard for alternative user agents (something that browser vendors sometimes forget) to deal with the multimedia content correctly, which disables mashups and aggregations. Kroc proposes an alternative solution, called Video for Everybody , which uses the HTML5 video element, with a contained object element that embeds a Flash-based video player as a fallback. This flash player has another fallback, namely Quicktime. If this fails, download links to the video are offered.
While this solution offers the broadest compatibility, does not require Javascript and deals with all the issues mentioned in the original open letter, it does not fulfill the sense and promise of the HTML5 working draft. This working draft specifies more than just a simple video (and an audio) tag, that works like the img tag. HTML5 acknowledges that audio and video are multimedia content that provokes a user interaction and offers the ability to control video playback, implement own controls and register event listeners. It even provides a sophisticated model for source selection that deals with the fact that there is not a single cross-platform, cross-vendor video format for the web.
Neither the Video for Everybody approach nor the original Mozilla proposal seem to recognize this fact, but it is critical for every web developer who wants to embed video into a web application and control the playback. In the Mozilla example this means dealing with two separate APIs, in the Video for Everybody case, it would be 3 or more APIs, with the limitation that the current state provides for only the HTML5 API. Not only will this lead to additional effort for the developers, it will also limit the adoption of HTML5, because it is just another API for video.
For the last week I have been working on a third solution, which is called html5flash , a small Apache-licensed Javascript library that will wrap a Flash video or audio player and expose the HTML5 mediaobject API. This means nearly all attributes, properties, event listeners and Javascript functions of the current working draft are supported, which allows developers to create HTML5 video and audio applications right now, without the need to rely on a proprietary API. Of course, there are still a number of limitations, but the source code is available from github , so that any interested developer can fork the project and contribute.
The technical solution is based on the work and ideas of many people. It works by a technique called gradual enhancement that was introduced to a wider group of web developers by Dean Edward's IE7 script, which fixed many of IE6's glitches, so they could use advanced CSS at a time when only Firefox and Opera would have proper support out of the box. html5flash will detect all video and audio tags in the HTML document and find out wether the browser supports HTML5 already, in which case nothing is done. For browsers that do not support HTML5 already, a wrapper object will be created that implements the HTML5 video and audio spec, making all methods, properties and event handlers available to the developer. Then, the script uses Scott Schiller's soundmanager2 library to create a Flash-based audio or video player. Again, this is not a new idea, actually Mike Chambers, product manager at Adobe has shown how to do it before.
What does this mean for developers? They have now three ways of using HTML5 right now, with the ability to provide workable fallbacks for the 98% of web surfers that do not have an HTML5-capable browser yet, but Adobe Flash installed. The simplest html5flash solution would look like this:
You still have to provide multiple video formats, namely FLV or M4V for Flash, MOV or M4V for Safari 4 and OGG for Firefox 3.5, but with html5flash you have one simple way of embedding video and audio together will full control using the HTML5 mediaelement API.
I have been invited to participate in Kas Thomas latest meme, the invitation comes specifically from Irina. I wanted to answer somewhen, but seing Bertrand's answer today who was tagged together with me was pushing me to write this post. So here are the then things you might not know about me:
I was born in Rostock, a city at the coast and raised in Eberswalde, a small town with trolleybuses. Perhaps this is the reason why I like to eat seafood every day and why I favor cities that have trolleybuses such as Basel, San Francisco, Seattle or Tallinn.
I drink neither coffee (I do not like the taste) nor alcohol (I do not like the effects), but I have a delicate taste when it comes to Cola and can spot the difference between various flavors. The flavors I like best are Red Bull Cola, Vanilla Coke, Coca Cola, Diet Pepsi, Coke Zero, Diet Coke. I cannot stand regular Pepsi at all.
I love books, and buy much more than I can read. Although I can easily finish a book in two days, I seldom find two days that I can spend reading (Perhaps fact #4 has to do with it). In fact, I cannot visit amazon.com or a book store without buying one or two books.
I have three kids, two boys that are seven and four years old and a ten month-old baby girl.
I learned Russian in school, but I could hardly have a conversation in it except for the weather (an only one specific weather condition to be exact).
I have a degree in software systems engineering, but I also considered statistics and aviation as career options. You might guess why I am impressed by Michael Marth's latest blog post.
I am a recovering information junkie. At some point in my life I subscribed to more than 3000 RSS feeds. I reduced it to a little more than 300 feeds and a little less than 300 twitter followers in order to improve the signal-to-noise ratio. I agree when Clay Shirky says: "There is no information overflow, there is only filter failure".
Speaking of filters: I have more than 100 filters in my GMail account. And another set of 100 filters in my work GMail account. And I keep adding a new filter every week.
Aside from being a frequent traveler (I am commuting between Potsdam and Basel and pay for the membership in Easyjet's frequent flyer program) I am also a frequent user of social networks like Dopplr, brightkite and Friendfeed. In at least one case this combination has saved me from missing a flight, when I found out via a Dopplr entry in my own friendfeed that I had a flight planned for that day, but thought that the flight would go one day later. Finally I made it to the flight, so that combination has worked out in my favor.
With these ten facts I have earned enough meme-karma, so I can tag Alexander, Adrian and Martin. And before I forget: 42a4263e9ae40c23da79bd43370fd814
A book review about a book explaining the basics of visual interface design would be nothing notable except that my more thorough readers might say: "Lars, you cannot write a review about a book that is more than ten years old and long out of print." Well, in this blog I have been describing how to design lock-in effects, propagated copying features, invoked The Beatles at least twice and referred to Zombies, so I guess I can.
Designing Visual Interfaces, by Kevin Mullet and Darell Sano, subtitled "Communication Oriented Techniques", was written in 1994, when Netscape was rocking the software world and Sun was still a powerful company and not an acquisition target for IBM. The concepts explained in this book that form the main chapters are elegance and simplicity, scale, contrast and proportion, organization and visual structure, module and program, image and representation, and style are indeed timeless and apply to graphic design as much as to visual interface design. Each chapter is using positive examples abundantly, following the philosophy that becoming a good designer needs first and foremost experience, which can be gained by exposure to works of great design. Additionally there is a section in almost every chapter that highlights the most common mistakes.
As I wrote, the books subject is timeless and not bound to any specific user interface technology, which is illustrated by the examples that are being used throughout the book. Applications and operating like Ami Pro, Windows 3.0, NextStep, Aldus Freehand that are being used as examples in the book might be long gone (or evolved into Windows Vista, Mac OS X Leopard, Adobe Freehand, but the principles that made the user interfaces of these applications exemplary in any sense still apply.
Aside from being reminded of software legacy and the word processor that taught me there were serious uses of computers, the illustrations and examples used in the book serve well to explain the concepts mentioned. On the one hand, visual design was not that prevalent, so that you could find really awkward user interfaces without going to obscure shareware applications, but also in mainstream software such as the Mac OS control panel. On the other hand with simple black-and-white displays and basic user interface toolkits, application developers could not use eye-candy to distract from the underlying weaknesses of their dialogs.
I do not spend as much time reading books as I would like to, but the time invested in this book was surely well spent and I can recommend it to anyone who is looking to understand the basics of visual interface design without having to rely on a cookbook or guideline approach. For readers with a bit of background in using different operating systems, it will be interesting to see how evolutionary lines in the software phenotype can be traced for example from Mac OS to Newton OS to Palm OS or from Mac OS to NextSTEP to Mac OS X.
From my point of view, a better term would be 'covering' a feature. For one, I love cover versions in music, I could spend hours browsing secondhandsongs or finding rare gems in the last.fm covers tag radio. And just as in music, there can be a lot more variation when covering a feature then when simply cloning it.
So Friendfeed's new beta is really a bit like twitter, but they are covering it just like Franz Ferdinand is covering the Beatles' "This Boy", giving it new energy and speed.
On the other hand, covers can simply go wrong. This applies to software as well as to music, but the difference is that awkward covers in music can be quite entertaining, while in software they are most of the time embarrassing to all involved parties.
Next time you are covering a feature, try to make the best out of the cover version, so that your software is able to fit into this equation.
With the latest MacHeist I got a license to Delicious Library 2. I played with the program for about an hour and indeed, it is beautifully designed, the Delicious Monster team clearly popularized the shelf metaphor (and perhaps inspired to the wooden background in the Byline iPhone application, where it makes a lot less sense). The iSight scanning support is marvelous. For one, combined with the automatic Amazon search, it allows for a very fast library building. I managed to import 160 books in one hour, and some of them were German books without barcode, or out of print, so I had to resort to typing the name and author of the book.
What I find interesting is not the features that they added, but some obvious omissions they made with Delicious Library 2, which was released just last year.
Number one is help: there is help on the website, but it is not entirely accurate and up to date, for instance it does not cover the advanced export options that have been added with Delicious Library 2. Secondly, looking for integrated help yields this result:
Number two is the lack of social features: The application was released 2008, appeals to an early-adopter audience and uses social media for viral distribution, yet social features outside the desktop (there is addressbook and iCal integration) seem to miss completely. There is the ability to publish the library to the web using two templates, but neither has support for RSS. The services that the library can be uploaded to include iWeb, MobileMe and FTP, but no blogs, no twitter, no WebDAV.
With a good publishing mechanism like RSS (and perhaps RSS subscriptions to friend's libraries) I am sure services like Shelfari and Goodreads would have rushed to offer deep web-desktop integration. Without this mechanism they leave an opportunity for the competition.
Before I forget: iPhone support would be another obvious feature, but it is already in the works and I will write an update once it is out.
Did you know that there is a Beatles song about the Microsoft Windows, Microsoft Office and Apple's iTunes? Of course, there is not, but there is a song about the lock-in effect. The song is called Chains and appeared first on the Please Please Me album. Listen for yourself.
If you do not have the time to watch the video, this is the crux of the lyrics:
Chains, my baby's got me locked up in chains.
And they ain't the kind that you can see.
Whoa, oh, these chains of love got a hold on me, yeah
Software companies love their customers so much that they would like to keep them forever, so they try to lock them in. The best lock-in effect leaves the customer of the software in a situation that keeps uses chains of "the kind that you can [not] see" and make the lock-in appear as "chains of love".
The best time to attempt creating a lock-in effect is when your new product is having maximum market impact and growth. The reason is that at this time you will have most goodwill in the market, so customers and prospects will be uncritical to your attempts of creating a lock-in. Even if the chains are recognized,hey, they are chains of love. The second reason is that with having achieved maximum growth there is still plenty of time for your product to become a cash cow that can subsidize the development of related products that will reinforce and profit from the lock-in effect.
A good example is how Microsoft created its lock-in of the Desktop. After the launch of Windows 95 and NT 4.0 it had overwhelming market acceptance. My father took me, as a boy to a trade show, just to see Bill Gates speaking. And we were not the only fans eager of new Microsoft products. With this momentum, Microsoft could consolidate its offering by combining the Windows operating system with the Microsoft Office productivity suite, with the Exchange groupware server. This combination created a sustainable ecosystem, that customers happily accepted, developers adopted (remember the times when custom business applications were Visual Basic desktop applications) and that allowed Microsoft to conquer adjacent markets such as the Browser market.
The design problem with Microsoft's lock-in is that it is too visible and obvious, which means customers are aware of it, which creates an opportunity for competitors to attack the lock-in and offer "breaking free from the Microsoft lock-in" as an additional value proposition. As a result, Microsoft's ecosystem of connected applications is under market pressure: Firefox is gaining market share on the browser market and has just surpassed Internet Explorer, at least here in Europe. Google (and millions of web developers) are working to make the desktop operating system irrelevant, with Android they are challenging Microsoft's hold on mobile operating systems. With Eclipse developers have an alternative to the Visual Studio brand of software development environments (yes, I am aware, there are other cool open source IDEs, but not a single one has the breadth of Eclipse). Microsoft, noting how competition is starting to pick the locks, is doing its own job to damage its lock-in by offering a web-based version of Microsoft office that teaches customers to accept compromises on the look, feel and functionality of their productivity software, which opens another window of opportunity for competitors.
For a better way to design a lock-in we should not think of the big padlock, but of the thousand lines that are tying down Gulliver. For one, he is being tied down, while sleeping, which means - start the lock-in while nobody, at least not the customer, is watching. Secondly, with thousand lines there is no single line to identify that drives the lock-in, that can be easily attacked.
A good example of this is Apple's iTunes. Apple offers a very comfortable lock-in to its customers to make sure they stay loyal when new competitors emerge. Wether it is a streaming service like Spotify or Amazon's MP3 download service, all of them are unlikely to lure me away from iTunes - and it is not just iTunes, it is the iPhone, that extends the lock-in to the mobile carrier, it is the Airport Express and Apple TV that wire the living room entertainment system, it is the Genius service that gives personalized music recommendations (which are better than Amazon's item-based recommendations), it is the iTunes remote control application for the iPod touch, it is the Bonjour music sharing, it is the locked iPod database, it is the integration with iLife. If one line breaks down, for example DRM in the iTunes store, there are still enough combination points to make the lock-in effective and attractive.
If you have the opportunity to create a lock-in effect, keep these rules in mind:
do it at the right time
make sure nobody is watching
make it attractive to be locked in
keep building integration points
As a customer, keep in mind that a lock-in is not necessarily a bad thing. Vendors create a lock-in, because they do not trust their customers to stay loyal, customers should ask themselves if they trust a vendor's continued ability to innovate and satisfy your needs. The more mutual trust there is, the more attractive a lock-in appears and the less important it becomes.
Ironically, the most commented article regarding the Day CQ 5.2 launch is on Irina's personal blog, whereas I would have expected the discussion to take place at a more frequently visited professional blog like the CMSWire blog.
Does this show that I am completely wrong, and that personal blogging is not dead, but what we see are the best days of personal blogging? Or is personal blogging 'undead' - it is still moving and causing disruption, but desperately looking for outside inspiration, for 'brains'?
If this is the case, then the 'brains' that undead personal blogs are looking for can be found at Twitter. The microblogging service is fueling discussions, is driving blog traffic and is in many regards a much faster medium than blogging, which already had a disruptive speed compared to traditional online media (which in turn had a disruptive speed compared to print, radio and TV). Not only is microblogging faster, it is also more connected. With Twitter you know who is following you, whereas a blog author never knows who his readers are or if the bloggers that are being linked in a post are actually reading it. Trackback as a technology that allowed to close this feedback loop is nearly irrelevant now, because the mechanism that keeps the Blogosphere together is no longer a technical attribute of blogging, but a new category - microblogging.
Stefano Mazzocchi thinks that Twitter is like sending an instant message to the world, and personal blogging is sending an email to the world, and I agree very much. This means with Twitter becoming the motor of discussions (another case of this pattern is the CMS Vendor Meme) in the Blogosphere (it is obviously to limited for providing all the content) we have a situation that would be similar to sending an email and then sending a second instant message to alert the recipient of the email of the fact that there is an email and to incite a discussion.
Comments [6]