For quite a while now, since I was involved with the Rainbow Portal Project I have been kicking around this idea for an item based Web, or rather an item based computing experience. Restricting it to the Web or even the Internet is a mistake. The idea is really simple and yet I haven’t found anyone who has implemented it in its entirety. All of the technology exists to make this a reality. So what’s this idea, you ask?
Say you have a Thing. Microsoft often uses Item or Object to refer to Thing. Your Thing has properties (like name, description, etc), attributes (like width, height, size, etc), and content (like a photo). Thing also has methods or functions that you can do to/with it (like Resize, Email to a friend, Blog it, fix redeye, etc).
The Thing contains enough information about itself to completely reproduce itself. The part that has been most notably lacking has been its ability to completely self-describe its methods and to bring them along as it travels throughout different computers and programs. Now, I’ve used Thing with a photo as an example but Thing could really be anything, even a person.
Things should have the ability to self-host their translators and descriptors. So, one type of thing could be a PhotoTranslatorThing that can take in a photo and turn it into another type of thing, like a FileThing or a UrlThing or a MapThing, or even a PersonThing. The translators are one of the keys to how things move between applications and systems. Things should be able to be translated without losing ANY data. That means that you store your Things in a generic data store (say, SQL?) and move them to XML, and then later move them to some other format, but they always have all of their data tagging along with them, or at least a reference to their data so that when they are translated again it will arrive for them, a RemoteThing (or similar to an object proxy as web services gurus may say).
Here’s another example of the use of Thing. You make a type of Thing that is say, a store item like a shirt. You like the shirt and so you copy and paste it from its icon on your desktop to an email and send it off to your friend. She gets the email and thinks it’s cool and wants to sell it in her online store so she drops it into her accounting system and it instantly drops into her store as well. Somebody goes to her store and has a ProfileThing that tells the store their t-shirt size is XL. They click on the buy button and say quantity 1 at which point the Thing checks the originator location of the Thing to see what it’s cost is and uses the ProfileThing to figure out the billing & shipping information to drop ship it to them. Once the store has that information in place it asks the accounting system about the markup and sale price for the TShirtThing. The person buying it hits checkout and the accounting system uses the RemoteThing method of the TShirtThing to place the order with the original Thing’s creator while providing a TShirtThing to the person buying it that they can then send on to their friends.
Of course the original vendor would have to provide some of that functionality on the Thing to begin with, but that could be automated into a shim layer if need be for a particular store. They’d also need some kind of reseller login mechanism for the backend to ensure "normal" people didn’t get reseller pricing.
All of these ideas are what I believe a large part of the plumbing on the next level of the Internet will be. I know some of the ways this could be achieved and I have ideas for how to make this a reality. My only problem is resources at the moment. Making something like this real means that people need to want it, and then someone with a lot of money has to back it and give birth to it in a way that lets the largest number of people possible access and utilize it. I would love to be a part of this process, but I lack the resources to do it on my own. It is very frustrating as you can imagine.
Ray Ozzie: Wiring Progress…