My recent return to the compiler, as well as a lot of web development with Content Management Systems such as Drupal, has had me thinking a lot about software that's useful as well as the problems associated with it. The Hedgehog project, still on the backburner, is an example of that.
For non-technical people, the web browser is something that's simply supposed to work and allow them to do things that they want to. It's all largely social and is built on concepts that are somewhat old by Internet standards - largely because of business models.
The Internet, despite the idealism that inspired it, is largely the best example of TANSTAAFL ('There Ain't No Such Thing As A Free Lunch') available. You want free social networking? Someone sells your data. You want a free encyclopedia? You donate money to Wikipedia (which is paying for it). You want free news? You get advertising - though this model hasn't been working out too well for print media transitioning to the web for - yes - business reasons. At the end of the day, everyone involved with creating content and technology needs to get paid somehow. For example, I can't point bill collectors at stuff I write, code or otherwise. Of course, I haven't actually tried that and I could be pleasantly surprised if they did, but I'd say that the likelihood of that is very close to 0 and negative.
Business models on the Internet have always been about data. Before weblogs showed up on the timeline, large companies dominated with their content. Some businesses, through discussion boards, capitalized on user generated content - I was a moderator for one such place, CramSession.com - where I also firest got paid for writing.
Weblog software came along and at least a billion monkeys set themselves to work in generating the works of Shakespeare.
Social networking sites came along to harness the monkeys.
That's about where we are now.
But beyond these business models, the technology has been pretty much the same. Some people will argue that, citing new languages and technologies that have shown up such as content management systems, languages such as Perl, Python and PHP, databases such as MySQL, and so on. On the surface, there has been a lot of change as people see all these evolving technologies yet these technologies have been evolving based on one implicit assumption: The data belongs on the server, typically the business owner's server. When you tap at the keyboard on a site, even on this very small niche of the web, what you share becomes a part of the site - for better and worse. Your thoughts, your opinions, your content - all of that goes onto a server somewhere and sits there until someone decides you're interesting enough to research. I don't mean to scare you but if you're not a little scared by that idea, I have to tell you that you should be scared - at least a little.
It wasn't too long ago that 'Spyware' and 'Malware' were seen as problems - I'll add that this created a niche industry for a while - but the data people were worried about losing from their systems they freely give on the Internet. This is largely seen as a necessary sacrifice to have access to networks and, with present popular technologies, it's true. Myself and others have made a living off of
Increasingly, though, the technologies seem to be an attempt to force oversized square plugs into undersized round holes. I don't mean to pick on Drupal, but I know it best - as it grows into a 'framework', it becomes unwieldy because of the technologies it's based on (though some of the architecture choices seem less than inspired). This is not to say Drupal isn't good but that Drupal can't outgrow the technologies it's based on - like any other CMS.
Yesterday, while bumbling around on NPAPI developer lists, I came across Google's Native Client :
The Native Client open-source technology is designed to run native compiled code securely inside browsers. Native Client puts web applications on the same playing field as local applications, providing the raw speed needed to compete with traditional software like 3D games, video editing, and other applications. Native Client also gives languages like C and C++ (and eventually others as well) the same level of portability and safety that JavaScript provides on the web today.
It's limited by being only available for Chrome. I read up on it some more and found it lacked a fundamental part of the technology I'd be most interested in - local support of databases - though I don't think that would be hard to drop in. As I looked at it more deeply, as a developer I found it very attractive on a few different levels. First, not being limited by web present web technologies and with the potential for real threading without having to learn Yet Another Language is very attractive (I'll be looking into Ruby on Rails later today). Next, it's an open source project which makes it easier to extend. Truth be told, I had been speaking with a few people about the idea that the present browser is outdated and we need to rethink how we use the Internet - and this looks like a step in the right direction.
In a world where marketing largely creates and manages user expectations, it's going to take a real game changer to throw the web browser train off the rails. So far, I have no clue what that will be.