A lot of people are talking
about The Web as a Platform
and I think the basic idea missing from these conversations is being able to program the web from the web itself.
If we are to succeed in our quest, we are going to have to get everyone on the same page, using standard technologies with simple interfaces. Web Services is too complicated. API's are particular to every application. It's too much to learn and only a small percentage of the world has the experience and time to do so. Not only that, but to take advantage of these APIs, you have to have your own hardware and software infrastructure. How many Facebook app companies have run out of hardware?
The infrastructure costs for a scalable environment to support applications like these is beyond the range of the majority. Facebook is limiting the potential of its platform by requiring the Application developers to provide their own servers.
REST, Web Service, API, SOA... 99% of the world has no idea what those words mean, but 100% of them will benefit from the free flow of information those ideas enable. While I agree a lot of those technologies make it easy for programmers to integrate systems, they only make it easy for programmers to integrate systems. What about all the non-programmers? What about all the people without 4 year degrees in computer science? How are they going to contribute to the programmable web and how are they going to build custom systems to help them be more productive?There are not enough programmers to solve all the problems that currently require programming.
We need to bring our skills -- not just the applications we build -- to a larger population of individuals.
Today, most users must be content to wait for the programmers to bring them a solution. I've been working on the web for quite a while now and many people have come to me with a great idea to do something or another. A lot of them are really great ideas -- some of them aren't, but I am forced to think of ideas with respect to cost benefit analysis. Is what you want to do on the web going to be beneficial enough to the world that you can recover the costs of development? Usually the answer is no, which is unfortunate, because the applications would benefit a great number of individuals -- just not enough to pay for the development.We must lower the barriers to entry for information systems.
This is a scary thought for a lot of programmers, because some believe we will be working ourselves out of a job. I prefer to believe that we will be making our jobs more enjoyable. We'll take off our shoulders the constant attention to user requests by enabling them to do what they usually relied on us to do: changing field types, altering functionality, modifying the look and feel.
The funny thing about the end user is that the developer can build a tremendously complex system that has all the functionality they need and the most frequent complaints will be nit-picky. "See the big picture!" I think to myself. With Qrimp I just say, "Okay, you can change it. Check this out." I love the look of "Wow!" on a face.
The point I am not so eloquently making is that as developers we must begin to relinquish some control of our systems to the end users. We must allow them to modify those systems to their personal tastes, look at MySpace as an example of this. MySpace allows users to modify the look and feel of their pages and the end result is nearly always horrible, but the desire to customize is evident. 90% of MySpace pages look totally different and yet at the same time, beautiful to the owner. We need to take this capability to the next level and enable the customization of functionality, not only the look and feel. Imagine if MySpace let you determine how users' pages looked to you.Every user of your system will have a different idea about how it should behave.
I can't count the number of times I've visited a web page with a list of the top movies of the year and wanted to click the name and visit IMDB. Doesn't everyone want to do that? Oh yeah, some might want to go to NetFlix or Greencine
. We need to enable our users to change things like this within their own applications. Maybe when I create a new something or other, I want to specify the next page to display. Maybe a list of all the items, maybe the detail view for the particular item. As a user, I should have that level of control over the systems I use.