Doc Searls has a post entitled Resistance isn't futile where he writes

Russell Beattie says "it's game over for a lot of Microsoft competitors." I don't buy it, and explained why in a comment that's still pending moderation. (When the link's up, I'll put it here.)

Meanwhile, I agree with what Phillip Swann (who is to TVs what Russell is to mobile devices) says about efforts by Microsoft and others to turn the TV into a breed of PC:

...it's not going to happen, no matter how much money is spent in the effort. Americans believe the TV is for entertainment and the PC is for work. New TV features that enhance the viewing experience, such as Digital Video Recorders, High-Definition TV, Video on Demand, Internet TV (the kind that streams Net-based video to the television, expanding programming choices) and some Interactive TV features (and, yes, just some), will succeed. Companies that focus on those features will also succeed.

But the effort to force viewers to perform PC tasks on the TV will crash faster than a new edition of a buggy PC software. I realize that doesn't speak to all of Russell's points, or to more than a fraction of Microsoft's agenda in the consumer electronics world; but it makes a critical distinction (which I boldfaced, above) that's extremely important, and hard to see when you're coming from the PC world.

It seems Doc Searls is ignoring the truth around him. Millions of people [including myself] watch TV by interacting with a PC via TiVo and other PVRs. I haven't met anyone who after using a PVR who wants to go back to regular TV. As is common with most Microsoft detractors Doc Searls is confusing the problems with v1/v2 of a product with the long term vision for the product. People used to say the same things about Windows CE & PalmOS but now Microsoft has taken the lead in the handheld market.

The current crop of Windows Media Centers have their issues, many of which have even been pointed out by Microsoft employees. However it is a big leap to translate that to people don't want more sophistication out of their television watching experience. TiVo has already taught us that people do. The question is who will be providing the best experience possible when the market matures?


 

Categories: Technology

Recently Ted Leung posted a blog entry entitled Linguistic futures where he summarized a number of recent discussions in the blogosphere about potential new features for the current crop of popular programming languages. He wrote

1. Metaprogramming facilities

Ian Bicking and Bill Clementson were the primary sources on this particular discussion. Ian takes up the simplicity argument, which is that metaprogramming is hard and should be limited -- of course, this gets you things like Python 2.4 decorators, which some people love, and some people hate. Bill Mill hates decorators so much that he wrote the redecorator, a tool for replacing decorators with their "bodies". 

2. Concurrency

Tim Bray and Herb Sutter provided the initial spark here. The basic theme is that the processor vendors are finding it really hard to keep the clock speed increases going (that's actually been a trend for all of 2004), so they're going to start putting more cores on a chip... But the big take away for software is that uniprocessors are going to get better a lot more slowly than we are used to. So that means that uniprocessor efficiency matters again, and the finding concurrency in your program is also going to be important. This impacts the design of programming languages as well as the degree of skill required to really get performance out of the machine...

Once that basic theme went out, then people started digging up relevant information. Patrick Logan produced information on Erlang, Mozart, ACE, Doug Lea, and more. Brian McCallister wrote about futures and then discovered that they are already in Java 5.

It seems to me that Java has the best support for threaded programming. The dynamic languages seem to be behind on this, which is must change if these predictions hold up. 

3. Optional type checking in Python

Guido van Rossum did a pair of posts on this topic. The second post is the scariest because he starts talking about generic types in Python, and after seeing the horror that is Java and C# generics, it doesn't leave me with warm fuzzies.

Patrick Logan, PJE, and Oliver Steele had worthwhile commentary on the whole mess. Oliver did a good job of breaking out all the issues, and he worked for quite a while on Dylan which had optional type declarations. PJE seems to want types in order to do interfaces and interface adaptation, and Patrick's position seems to be that optional type declarations were an artifact of the technology, but now we have type inference so we should use that instead. 

Coincidentally I recently finished writing an article about Cω which has integrated both optional typing via type inference and concurrency into C#. My article indirectly discusses the existence of type inference in Cω but doesn't go into much detail. I don't mention the concurrency extensions in Cω in the article primarily due to space constraints. I'll give a couple of examples of both features in this blog post.

Type inference in Cω allows one to write code such as

public static void Main(){
  x = 5; 
  Console.WriteLine(x.GetType()); //prints "System.Int32"
}

This feature is extremely beneficial when writing queries using the SQL-based operators in Cω. Type inference allows one turn the following Cω code

public static void Main(){

  struct{SqlString ContactName; SqlString Phone;} row;
  
  struct{SqlString ContactName; SqlString Phone;}* rows = select
            ContactName, Phone from DB.Customers;
 
  foreach( row in rows) {
      Console.WriteLine("{0}'s phone number is {1}", row.ContactName, row.PhoneNumber);
   }
}

to

public static void Main(){

  foreach( row in select ContactName, PhoneNumber from DB.Customers ) {
      Console.WriteLine("{0}'s phone number is {1}", row.ContactName, row.PhoneNumber);
   }
}

In the latter code fragment the type of the row variable is inferred so it doesn't have to be declared. The variable is now seemingly dynamically typed but really isn't since the type checking is done at compile time. This seems to offer the best of both worlds because the programmer can write code as if it is dynamically typed but is warn of type errors at compile time when a type mismatch occurs.

As for concurrent programming, many C# developers have embraced the power of using delegates for asynchronous operations. This is one place where I think C# and the .NET framework did a much better job than the Java language and the JVM. If Ted likes what exists in the Java world I bet he'll be blown away by using concurrent programming techniques in C# and .NET. Cω takes the support for asynchronous programming further by adding mechanisms for tying methods together in the same way a delegate and its callbacks are tied together. Take the following class definition as an example

public class Buffer {
   public async Put(string s);
   public string Get() & Put(string s) { return s; }
}

In the Buffer class a call to the Put() Get() method blocks until a corresponding call to a Get() Put() method is made. Once this happens the parameters to the Put() method are treated as local variable declarations in the Get() method and then the code block runs. Similarly a call to a Get() method blocks until a corresponding Put() method is called. On the other hand a call to a Put() method returns immediately while its arguments are queued as inputs to a matching call to the Get() method. This assumes that each Put() call has a corresponding Get() call and vice versa.  

There are a lot more complicated examples in the documentation available on the Cω website.


 

Categories: Technology

An RSS Bandit user has created the RSS Bandit Flagged Item Merge Utility. The description of its usage states

If you use RSSBandit as your feedreader, you've probably used the Flag Item feature to store interesting articles for future access. However, if you use RSSBandit on multiple computers, your flagged item lists aren't synchronized. While you could upload your data to a central location, I find it more convenient to use a USB Memory Stick to keep these flagged item lists. I wrote this utility to synchronize from various lists to your main list. Get it here.

Usage: Select your main flagitems.xml file as the RSS Bandit Flag File and the file you want to merge into it as the Import File and hit Start. The application will display the items that it imported successfully or failed.

Although it is quite cool to see people writing tools to work with RSS Bandit, the fact is that you can already get this functionality out of RSS Bandit without resorting to tools. One of the options in the Remote Storage tab of the Tools->Options menu is 'File Share'. Although this option states that it only works on network shares it also works on local drives as well. So this means you can select an external drive such as "H:\" or whatever drive letter the USB keychain maps to and then synchronize with that.

That way all you need to synchronize RSS Bandit between two machines would be your USB keychain. I guess this means we should probably update the text of that dialog to explain that it's actually any drive not just network shares.


 

Categories: RSS Bandit

C|Net News has an interview with Bill Gates entitled Gates taking a seat in your den. One of his most interesting answers from my perspective was his take on Microsoft and blogging. The question and his answer are excerpted below

One of the big phenomena of the year has been Web logging. Has the growth surprised you?

Well, actually I think the biggest blogging statistic I know, which really blew me away, is that we've got close to a million people setting up blogs with the Spaces capability that's connected up to Messenger.

Now, with blogs, you always have to be careful. The decay rate of "I started and I stopped" or "I started and nobody visited" is fairly high, but as RSS (Really Simple Syndication) has gotten more sophisticated and value-added search capabilities have come along, this thing is really maturing.

And we've done some things in Japan and Korea that are unique blog experiments. The Spaces thing is a worldwide effort. It's a great phenomena, and it's sort of built on e-mail, and so we need to integrate more blogging capability into the e-mail world--and as we do the next generation of Outlook, you'll see that. We need to integrate it more into our SharePoint, which is our collaboration Office platform, and then, as I discussed, MSN is embracing it so that instead of thinking about, "OK, I go to one community to do photos, one community to do social networking, one community to do this," we say, "Hey," off of Messenger, which has got your buddy list already, then, "Let's let you do the photos and the social networking and everything--but starting in an integrated way off of Messenger."

I also have been quite impressed by our signup rate, it has totally exceeded expectations. As BillG says above, we at MSN have been thinking a lot about the problems facing the existing social software landscape and how we can create the best place on the Web for people to communicate, share their experiences and interact with friends, family and strangers who may one day become friends or family. You guys haven't seen anything yet.

It's going to be a fun ride.
 

Categories: Mindless Link Propagation | MSN

I was quite surprised to find out that my blog was mentioned in the Wall Street Journal. For those that don't have a WSJ subscription below is an excerpt of the story (***fair use***)

The rivalry between Google Inc. and Microsoft Corp. has been heating up since the Redmond, Wash., software behemoth last year unveiled its own search-engine technology. But tension between the two recently flared amid an online scrap about Google's use of open-source software.

The scuffle started with a Dec. 29 Web log post by Krzysztof Kowalczyk entitled "Google -- we take it all, give nothing back," in which the former Microsoft employee accused Google of freeloading. Mr. Kowalczyk, who now works at PalmOne Inc., cited a blog post by Google executive -- and former Microsoft staffer himself -- Adam Bosworth in which Mr. Bosworth called for open-source programmers to build better database software that Google and other big companies could use.

Mr. Kowalczyk wrote in his blog that Google gets an estimated tens of millions of dollars worth of software for free thanks to open-source developers, who release their programs without charge. And he alleged that Google gives little back to open source in return: "Microsoft creates more open-source code than Google." Microsoft staffer Dare Obasanjo excerpted portions of Mr. Kowalczyk's post on his personal blog and also took issue with at least one element of Mr. Bosworth's blogged response.

Mr. Bosworth fired back, posting in the comments section of Mr. Obasanjo's blog. "For Microsoft to condemn those of us who benefit from Open Source is rich," he wrote.

Spokesmen for Google and Microsoft declined to comment on the exchange. The Microsoft spokesman said the company "treats blogs as individuals expressing their independent opinion."

For those who missed the discussion and the original posts you can find them in my work blog in the posts entitled  Google and Open Source and More on Google and Open Source.


 

January 5, 2005
@ 03:54 PM

I finished my first article since I switching jobs this weekend. It's tentatively titled Integrating XML into Popular Programming Languages: An Overview of Cω and should show up on both XML.com and my Extreme XML column on MSDN at the end of the month. I had initially planned to do the overview of (C-Omega) for MSDN and do a combined article about ECMAScript for XML (E4X) &  for XML.com but it turned out that just an article on  was already fairly long. My plan is to follow up with an E4X piece in a couple of months. For the geeks in the audience who are a little curious as to exactly what the heck  is, here's an introduction to one of the sections of the article to whet your appetite.

The Cω Type System

The goal of the Cω type system is to bridge the gap between Relational, Object and XML data access by creating a type system that is a combination of all three data models. Instead of adding built-in XML or relation types to the C# language, the approach favored by the Cω type system has been to add certain general changes to the C# type system that make it more conducive for programming against both structured relational data and semi structured XML data.

A number of the changes to C# made in Cω make it more conducive for programming against strongly typed XML, specifically XML constrained using W3C XML Schema. Several concepts from XML and XML Schema have analogous features in Cω. Concepts such as document order, the distinction between elements and attributes, having multiple fields with the same name but different values, and content models that specify a choice of types for a given field exist in Cω. A number of these concepts are handled in traditional Object<->XML mapping technologies but it is often with awkwardness. Cω aims at makes programming against strongly typed XML as natural as programming against arrays or strings in traditional programming languages.

I got a lot of good feedback on the article from a couple of excellent reviewers including the father of the X#/Xen himself, Erik Meijer. For those not in the know, X#/Xen was merged with Polyphonic C# to create Cω. Almost all of my article focuses on the aspects of Cω inherited from X#/Xen.


 

Categories: XML

January 2, 2005
@ 04:20 AM

In response to Krzysztof Kowalczyk's post entitled Google - we take it all, give nothing back and some of the responses to that post, Adam Bosworth has fired off a missive entitled We all stand on the shoulders of giants. He writes

Recently I pointed out that databases aren't evolving ideally for the needs of modern services and customers who which must support change and massive scale without downtime. This post was savaged by an odd alliance; the shrill invective of the Microsoft apparachiks perhaps sensing an opportunity to take the focus away from Ballmer's remorseless attack on all that is not Microsoft (but most especially on Open Source) and certain Open Source denizens themselves who see fit to attack Google for not "giving back" enough apparently unaware that all software benefits in almost infinite measure from that which comes before. As usual the extremes find common ground in a position that ignores common sense, reason, and civility.
...
It would seem that these cacophonous critics, yammering about giving back and sweepingly ignoring the 100's of billions of times people use and appreciate what Google gives them for free every day from Search to Scholar to Blogger to gMail to Picasa, do not understand this basic fact.

It seems Adam Bosworth's position is that Google gives back to the Open Source community by not charging for accessing Google or Blogger. This seems to imply that advertising supported services like MSN Search, Hotmail and MSN Spaces are some sort of charity as opposed to the businesses they actually are.

Mr. Bosworth's statements seem to make a number of the observations made by Krzysztof Kowalczyk in his recent post Google - comments on comments more interesting. Krzysztof wrote

More importantly, Chris DiBona, formerly a Slashdot editor and contributor to a book on open source, now a Google employee, calls me ignorant and lazy for not knowing about Google’s open source contributions.

Maybe I am. However:

  • I do follow my share of open source projects (a bad addiction, really) and I’ve never seen a Google employee participating in them. Which, of course, proves nothing but one data point is better than zero.
  • I did ask on my weblog for pointers to Google’s contributions. Despite temporary popularity of my blog, no-one sent me any.
  • I’ve read all the weblog posts commenting on my piece and no-one else in blogosphere was any less ignorant or lazy.

All that leads me to believe that Google’s contribution, if not a mythical creature, is not that easy to find.

Chris promises a list of Google’s contributions in “coming months". I would rather have it now. The good thing about promising to do something months from today is that you don’t have to do it. You can just rely on the fact that everybody will forget that you’ve made such promise.

I think no additional commentary is necessary. Krzysztof's post and Adam's response speak for themselves.


 

Mike Vernal and I are supposed to be writing a Bill Gates Think Week paper about Social Software. However given how busy both our schedules are this may turn out to be easier said than done. For this reason I've decided that I'll continue blogging my thoughts around this class of software that led me to switch job roles a few months ago.

Today's entry is inspired by a blog post by Stowe Boyd entitled Mark Ranford on Open Standards for Social Tools. Stowe writes

I would like to see -- as just one example -- a means to manage my personal social tools digital identity independently of the various services through which I apply and augment it. None of the social tools that I use today -- whether communication tools, coordinative tools, or community tools -- support anything like what should be in place. My eBay or Amazon reputation is not fungible; my slash dot karma cannot be tapped when I join the Always-On Network; and the degree of connectedness I have achieved through an explicit social networking solution like Spoke, LinkedIn, or ZeroDegrees or through a more implicit social media model as supported by blogging cannot interoperate in the other context in any productive way.

We are forced to live in a thousand separate walled gardens; a thousand, disconnected worlds, where each has to be managed and maintained as if the other don't exist at all.

As a result, I have gotten to the point where I am going to retreat from those worlds that are the least open, the least integrated to others, and the most self-centered. The costs of participating with dozens of tiny islands of socializing are just too high, and I have decided to extricate myself from them all.

This is the biggest problem with the world of Social Software today. I wrote about this in my previous post on the topic entitled Social Software is the Platform of the Future. In that post I wrote

So where do we begin? It seems prudent to provide my definition of social software so we are all on the same page. Social software is any software that enables people to interact with one another. To me there are five broad classes of social software. There is software that enables 

1. Communication (IM, Email, SMS, etc)
2. Experience Sharing (Blogs, Photo albums, shared link libraries such as del.icio.us)
3. Discovery of Old and New Contacts (Classmates.com, online personals such as Match.com, social networking sites such as Friendster, etc)
4. Relationship Management (Orkut, Friendster, etc)
5. Collaborative or Competitive Gaming (MMORPGs, online versions of traditional games such as Chess & Checkers, team-based or free-for-all First Person Shooters, etc)

Interacting with the aforementioned forms of software is the bulk of the computing experience for a large number of computer users especially the younger generation (teens and people in their early twenties). The major opportunity in this space is that no one has yet created a cohesive experience that ties together the five major classes of social software. Instead the space is currently fragmented. Google definitely realizes this opportunity and is aggressively pursuing entering these areas as is evidenced by their foray into GMail, Blogger, Orkut, Picasa, and most recently Google Groups 2. However Google has so far shown an inability to tie these together into a cohesive and thus "sticky" experience. On the other hand Yahoo! has been better at creating a more integrated experience and thus a better online one-stop-shop (aka portal) but has been cautious in venturing into the newer avenues in social software such as blogs or social networking. And then there's MSN and AOL.

Since posting that entry I've changed jobs and now work at MSN delivering social software applications such as MSN Messenger, Hotmail and MSN Spaces. My new job role which has given me a more enlightened perspective on some of these problems. The issues Stowe has with the existing Social Software landscape will not be easily solved with industry standards, if at all. The reasons for this are both social and technical.

The social problems are straightforward, there is little incentive for competing social software applications to make it easy for people to migrate away from their service. There is no business incentive for Friendster to make it easy to export your social network to Orkut or for eBay to make it easy to export your sales history and reputation to Yahoo! Auctions. Besides the obvious consequence of lock-in, another more subtle consequence is that the first mover advantage is very significant in the world of Social Software. New entrants into various social software markets need to either be extremely innovative (e.g. GMail) or bundle their offerings with other more popular services (e.g. Yahoo! Auctions) to gain any sort of popularity. Simply being cheaper or better [for some definition of better] does not cut it.

The value of a user's social network and social information is the currency of a lot of online services. This is one of the reasons efforts like Microsoft's Hailstorm was shunned by vendors. The biggest value users get out of services like eBay and Amazon is that they remember information about the user such as how many successful sales they've made or their favorite kinds of music. Users return to such services because of the value of the social network around the service (Amazon reviews, eBay sales feedback, etc) and accumulated information about the user that they hold. Hailstorm aimed to place a middleman between the user and the vendors with Microsoft as the broker. Even though this might have turned out to be better for users, it was definitely bad for the various online vendors and they rejected the idea. The fact that Microsoft was untrusted within the software industry did not help. A similar course of events is  playing itself out with Microsoft's identity service, Passport. The current problems with sharing identities across multiple services have been decried by many, even Microsoft critics feel that Passport may have been better than the various walled gardens we have today.

The technical problems are even more interesting. The fact of the matter is that we still don't know how to value social currency in any sort of objective way. Going back to Stowe's examples, exactly what should having high karma on Slashdot translate to besides the fact that you are a regular user of the site? Even the site administrators will tell you that your Slashdot karma is a meaningless value. How do you translate the fact that the various feeds for my weblog have 500 subscribers in Bloglines into some sort of reputation value when I review articles on Amazon? The fact is that there is no objective value for reputation, it is all context and situation specific. Even for similar applications, differences in how certain data is treated can make interoperability difficult.

Given the aforementioned problems I suspect that for the immediate future walled gardens will be the status quo in the world of social software.

As for MSN, we will continue to make the experience of sharing, connecting and interacting with friends and family as cohesive as possible across various MSN properties. One of the recent improvements we made in getting there were outlined by Mike Pacheloc in his post Your contacts and buddy lists are the same! where he wrote

Over the last couple of years we took the challenge of integrating the MSN Messenger buddy lists and your MSN Address Book Contacts into one centralized place in MSN.  Although they were called Contacts in both MSN Messenger, Hotmail, and other places in MSN, only until now are they actually one list!  Some benefits of doing this:

* You can now keep detailed information about your MSN Messenger buddies.  Not just the Display Name and Passport login, but all their email addresses, phone numbers, street addresses and other other information.
* Creating a buddy in MSN Messenger means you immediately can send email to that buddy in Hotmail, because the information is already in the Hotmail Contacts list!
* If you define a Group in Messenger, that Group is available in Hotmail.  You can email the Group immediately.  If you rename the Group in Hotmail, the change is immediately made in Messenger.

These are a few of the benefits of the integration we did on the services platform.

The benefits listed above do not do justice to the how fundamental the change has been. Basically, we've gotten rid of one of major complaints about online services; maintaining to many separate lists of people you know. One of the benefits of this is that you can utilize this master contact list across a number of scenarios outside of just one local application like an email application or an IM client. For example, in MSN Spaces we allow users to use their MSN Messenger allow list (people you've granted permission to contact you via IM) as a access control list for who can view your Space (blog, photo album, etc). There are a lot more interesting things you can do once the applications you use can tell "here are the people I know, these are the ones I trust, etc". We may not get there as an industry anytime soon but MSN users will be reaping the benefits of this integration in more and more ways as time progresses.

Well, I have to go eat some breakfast, I'm starved...

Happy New Year!!!


 

Categories: MSN | Technology

December 30, 2004
@ 08:38 PM

In Adam Bosworth's post Where have all the good databases gone he asks the Open Source community to target some problems with relational databases that the Big 3 vendors have seemingly been unable to solve.

Krzysztof Kowalczyk has an interesting response to Adam Bosworth's post entitled Google - we take it all, give nothing back where he writes

Open-source - not working as advertised.

The popular theory ("myth” would be a better name) is that open-source works because of this positive feedback loop:

  • source code for product foo is released
  • it’s free so it gets used
  • if it doesn’t fully meet someone’s needs, that someone can code the functionality (since the code is open) and submit the changes back to project (something not possible if you use closed products like Windows or Office or Google)

  • those contributions improve the product for everyone else, so more people use it so more people contribute the code and so on. Sky is hardly the limit.

The good thing in this theory is that it doesn’t rely on kindness of strangers but on englightened self-interest of those who benefit from free software. The bad thing about this theory is that in theory it works much better than in practice.

It’s all because of a weblog post by Google’s Adam Bosworth. Read it yourself, but the gist of it is that, according to Adam, commercial database vendors don’t understand the needs of companies like Google or Amazon or Federal Express. Relational database rely on static schemas and there are no good ways to dynamically reconfigure databases without the disruption in service. Adam ends with a plea to open-source fairy:

My message is to the Open Source community that has, so ably, built LAMP (Linux, Apache and Tomcat and MySQL and PHP and PERL and Python). Please finish the job. Do for databases what you did for web servers. Give us dynamism and robustness. Give us systems that scale linearly, are flexible and dynamically reconfigurable and load balanced and easy to use.

This is why the theory of open source doesn’t work in real world. A multi-billion company has a clear need for software that works well for them but instead of investing in existing open-source projects like PostgreSQL or MySQL to make them do what they need, all they do is ask some magic, undefined entity they call Open Source community to do the work for them. For free.

Google - we take it all, give nothing back. Come work for us.

Let’s estimate how much money did Google save by using open source software that they would otherwise have to purchase. The operating system for tens of thousands of their computers. Web servers they use. All the Unix utilities they use. Editors, compilers and debuggers they use to write their code. E-mail smtp server. E-mail pop servers. Languages like Perl and Python. Databases like MySQL and PostgreSQL. It’s safe to say that if Richard Stallman was never born, the licenses for those kinds of software would cost them tens of millions of dollars.

And what does Google contribute back? Where are their patches to gcc, gdb, python, postgresql, sendmail, emacs?

Google - we leave open-source to Microsoft. Come work for us.

It’s very ironic that I can find more open-source code created by Microsoft and its employees ( RSS Bandit, IronPython, Windows Installer XML (WiX), FlexWiki) than by Google employees. Not saying that there aren’t any but they are certainly not easy to find, even when I use mighty search engine trying to find google open-source.

Google - we like our hardware cheap and our software free. Come work for us.

If you’re into this stuff you know that Google is known for it’s highly tuned process of selecting hardware components (i.e. all those thousands of computers they need to index and store the web) to hit the best price/performance ratio. In a way, they use the cheapest thing, when you define the cost as the total cost of ownership (as opposed to simply the cost of buying the hardware). Thanks to Adam’s admision:

Indeed, in these days of open source, I wonder if the software itself, should cost at all?

we also know, that they like their software free.

As a side note, it’s a surprising statement coming from Adam who knows very well that writing software costs a lot. Open-source doesn’t eliminate this cost, it just shift the costs and allows unlimited number of free-riders, like Google.

I’m picking on Google, but they are not alone. Amazon, yahoo, ebay, aol. Any large business that uses web as means of providing services and making revenues is enjoying enormous savings by using open source stack on their back end. And what do they contribute back? A good approximation of zero compared to benefits they reap.
...
But Adam’s example shows that there’s a fat chance of this happening. Adam is not a rank Google employee. He was not hired to give free massage to stressed Google employees. Before Google Adam was a high-ranked executive at Microsoft and BEA. He led teams that created successful products (IE, Access among them). He’s in position to influence what Google does. He understands technology, he understand the cost and difficulty of making software. He has a weblog and deep thoughts. If only he understood the strategic value of open source.

If someone like Adam cannot see further than the tip of his own nose and his ideas are as bold as asking others to write the software he needs for free, then I don’t have much hope for anyone at aol to get it either.
...

Google - do no Evil. Do no Good. Just like everybody else. Come work for us.
...
In those days of focus on corporate profits (where there any other days?), Google’s motto “Do no Evil” is refreshing.

Or is it? It’s a nice soundbite, but when you think about it, it’s really a low requirement. There are very little things that deserve to be called Evil. If a senior citizen is taking a nap outside his house on a sunny day and you kick him in the groin - that’s Evil. Most other things are bad or neutral. Not doing Evil is easy. Doing Good is the hard thing.

I doubt that this is the kind of response that Adam Bosworth was expecting when he posted his plea. The fun thing about corporate blogs is that it gives people more places to read between the lines and learn how a company really thinks. I suspect this is why Google doesn't have many authentic bloggers and instead has favored the press release page masquerading as group blog approach at http://www.google.com/googleblog/.


 

Thanks to Danny Ayers post entitled Attention, Attention.xml I finally found a link to the attention.xml specification that was referenced in Robert Scobles post Gillmor's report on Attention.xml is done where he wrote

One of my 2005 predictions is coming true. Steve Gillmor's report on Attention.xml is included in Esther Dyson's Release 1.0. Thanks to Mike Manuel for letting us know the report is now available for $80. I'll have to check our corporate library and see if it's available there (I believe it is).

Danny Ayers does a good job of taking a critical look at the syntax chosen for the attention.xml format. I on the other hand, have fundamental questions about the purpose of the format and how it expects to solve the problems highlighted in its problem statement. As at the time I wrote this post the attention.xml problem statement stated

  • How many sources of information must you keep up with?

  • Tired of clicking the same link from a dozen different blogs?

  • RSS readers collect updates, but with so many unread items, how do you know which to read first?

Attention.XML is designed to to solve these problems and enable a whole new class of blog and feed related applications.

These are rather lofty goals and as the author of a moderately popular RSS reader I am interested in solutions to these problems. Looking at the attention.xml format schema description it seems the format is primarily a serialization of the internal state of an RSS reader including information such as

  • what feeds the user reads
  • when feeds were added or removed from the users subscription list
  • the last time a user read a feed
  • the amount of time the user spent reading a post
  • which links in the post the user cliecked on
  • the users rating for a post or feed
  • etc

This list of data seems suspiciously like a format for synchronizing the state between multiple aggregators or an aggregator client and server. This makes it very similar to the Synchronization of Information Aggregators using Markup (SIAM) format  which I authored with input from a number of aggregator authors including Luke Hutteman (author of SharpReader), Morbus Iff (author of AmphetaDesk) and Brent Simmons (author of NetNewsWire).

Before going into some of the details around the technical difficulties in recording some of the information that the attention.xml format requires I want to go back and address the problem statement. I can't see how the internal state of an RSS reader serialized to some XML format solves problems like users seeing multiple blogs posts from people linking to the same item or determining the relative importance of various unread items in a users queue. The former can be solved quite readily by aggregators today (I don't do it in RSS Bandit because I think the performance cost is too high and it is unclear that this feature is actually beneficial) while the latter is bordering on an AI problem which isn't going to be solved with the limited set of information contained in the attention.xml format. In short, I can't see how the information in an attention.xml document actually solves the problems described in the problem statement.

Now on the technical and social difficulties of creating the attention.xml format. The first problem is that not every aggregator can record all the information that is required by the format. Some aggregators don't have post rating features, some won't or can't track how long a user was reading an item [which will vary from user to user anyway due to people's different reading speeds], and others don't record the user's relationship to the author do the feed. So attention.xml requires a lot of new features from RSS readers. Assuming that the spec gets some traction, I expect that different aggregators will add support for different features while ignoring others (e.g. I can see myself adding post rating features to RSS Bandit but I doubt I'll ever track reading times) which is the case with support for RSS itself within various RSS readers today. The fact that various RSS readers will most likely support different subsets of the attention.xml format is one problem. There is also the fact that logging all this information may be cumbersome in certain cases which would also reduce how likely it is that all the information described in the spec will be recorded. Then the problem is what to do when clients speak different dialects of attention.xml. Are they expected to round trip? If I send Bloglines an attention.xml file with rating information even though it doesn't have that feature, should it track that information for the next time it is asked for my attention.xml by Newsgator which supports ratings?

Don't take this post to mean that I don't think something like attention.xml isn't necessary. As it stands now I want to increase the number of synchronization sources supported by RSS Bandit to include the Bloglines sync API and Newsgator Online synchronization but they use different web services. It looks like Technorati is proposing a third with attention.xml. I'd love for there to be some standardization in this area which would make my life as an aggregator author much easier. Client<->server synchronization of user subscriptions is something that users of information aggregators really would like to see (I get requests for this feature all the time) and it would be good to see some of the major players in this area get together with aggregator authors to see how we can make the ecosystem healthier and provide a better story for users all around.

I don't believe that attention.xml is a realistic solution to the problems facing aggregator authors and users of RSS readers. I just hope that some solution shows up soon as opposed to the current fragmentation that exists in the syndication market place.