Every decent programmer knows about the concept of MVC. For the uninitiated, that stands for "Model-View-Controller", and it's a software design pattern that says basically, separate your data (model), presentation of that data (view), and manipulation of that data (controller), so that the different parts can be switched out without having to change everything else. Since Trygve Reenskaug first proposed it in 1979, it's become a pretty common thing in software.
The thing is, it's always been something done by programmers, for programmers. We got all the gains because it meant we could more easily modify and add to software. Something new is happening though. With the internet (or maybe web2.0, depending on your definition of web2.0), for the first time that I've observed, the separation of content and presentation has gone mainstream. Everything is all about sharing, aggregating, publishing, etc. What do you share? Data. What do you aggregate? Data. What do you publish? Data.
Since data is just flying around freely on the internet now-a-days, it's lead to the creation of some really great tools that mash up all of this data and combine it and provide new ways of viewing and interacting with it to make it even more useful. This, of course, is all made possible by the clean separation of Model and View; Content and Presentation. So this is a great thing so far.
Now here's the problem. And maybe I'm just not seeing something, because I can't imagine that everyone else is blindly sticking all the information they can into RSS feeds and providing open APIs to their web-apps when it seems like there's one major problem with all of this. It's probably not an insurmountable problem... but it's a problem nonetheless, and I, at least, am yet to hear anyone address it, or even acknowledge it.
How does google make all of their money? Advertising. How do most web sites make a lot of their money (especially so-called web2.0 sites)? Advertising. And where does advertising go? Well, currently at least, it goes in the presentation. So what does it mean when they provide their pure data to other services, which can then present it however they want? It means suddenly, nobody is seeing their ads, and thus, nobody is clicking on their ads, and thus, their ads are not producing money for them.
Well, perhaps, they could just move the advertising into the data, that way it always goes along for the ride? I think that's a lot easier said then done. That's because data is structured in a well-defined, unambiguous way. Or at least, decent data is. That means anything that's using data with advertisements in it can simply not present them.
So what are some other options? Well... there could be some sort of licensing agreements on data source usage that require the presentation of that data somehow includes any advertisements that come along with it. That's difficult to work out though, and probably even more difficult to enforce. It's also just not really applicable to a lot of applications that might be using that data. Also, it just seems evil.
Ok. Well maybe advertisements could be hidden in data? For example, an XML stream of search results from google could include some paid-for-placement links that aren't marked as such. But that requires degrading the quality of the search results that google provides, or the quality of any data that any service provides. That means that mash-ups would be forcing an overall, intentional, reduction in data quality on the web. And that can't be a good thing.
So what's going to happen? Maybe nothing. Maybe I'm totally wrong and I've missed some really important factor that invalidates this whole argument. Maybe the internet's profit model will just change away from advertising (I kind of doubt that though). Maybe all of these nice data sources will be too much of a fiscal drain on their providers, and start to disappear (along with any other applications that depend on them). I guess we'll just have to wait and see.