When I was a kid, I played with Lego. I didn’t go all crazy about the little bricks like some people, but I did enjoy building pointless little contraptions. As I grew out of Lego and my rather embarrassing childhood haircut, I have turned to sticking together other types of blocks. Technology are blocks I now play with.
After spending some time wandering round an incredible Lego shop in Birmingham, my memories of Lego got me thinking about how things fit together these days. Lego fits together because the blocks are the right size, the sticky bits fit in the other sticky bits, and of course, it is all made by the same company. It is pretty amusing how so many Open Source hackers were raised on possibly the first and most prevalent proprietary technology that we were exposed too.
The ability to put things together is everywhere. All my electrical appliances fit into the same plug sockets, my computer devices mostly come with USB leads, the nozzle on the petrol pump fits my car, my guitars fit my amp. It all just works. It seems that in the physical world, plugs are very important. Without plugs we would be, er, well…disconnected.
In the IT world, we are reasonably well connected too. Sure, many of you will balk at the huge range of Operating Systems, networking protocols, window managers, wireless standards and suchlike. Although the application level layer often provides a range of competing frameworks, it is still important to remember that the underlying structure is usually pretty good at doing the predictable heavy lifting. All windows managers use the X plug, all Linux applications use the kernel plug, all Operating Systems for PCs will run on a PC plug. At this level of plugging, the results are fairly predictable and rather unexciting. So, a window manager runs on X? Whatever. An application uses the kernel? Whatever. This is the nuts and bolts of the computing world. There is nothing special here, please move along.
The area in which my spidy-senses flutter is when you try to step beyond the predictable - when you put the instruction book back in the box, and you are left with some bricks and just your imagination. This is where the fun happens, and this is where the innovation begins.
In the last few years, Open Source development has gone on to become more integrated and more expansive. Only five years ago, the culture was more akin to passing the buck between a range of isolated islands. If a challenge confronted a specific project, the responsibility was often passed down the direction of the dependency chain. A specific feature in GNOME or KDE would often be directed onto the XFree86 team, and at that point the chain died. The lethargy and bureaucracy that riddled the XFree86 project denied a solution, and each side of the dependency became more isolated. The GNOME and KDE guys hacked on their code, the XFree86 guys hacked on their code, the kernel guys hacked on their code, and the users discovered continuity holes in the natural inclination to plug things together. The assumption that a floppy disk drive could plug into the desktop was simple, but the reality was different. The bureaucracy of the plug makers meant that the user ultimately lost out.
In recent times, this has changed. Further innovation in GNOME and KDE, the birth of the far more open X.org project, the proliferation of freedesktop.org and technologies such as HAL/DBUS/udev/inotify/gstreamer/cairo/glitz and others have meant that things do now fit together. The once difficult premise of graphically mounting drives, plugging in USB sticks, switching screen resolutions, configuring printers automatically and other common-all-garden IT chores have become second fiddle on the modern Linux desktop.
Facing the web
Although the Linux Operating System is making leaps and bounds in plugability, the same can’t really be said for web applications. With the humble web browser generally staying open and used for the vast majority of the day, web applications have become a big deal. Tim O’Reilly’s incisive thoughts on web applications as the new computer applications we all use is becoming reality. Amazon, eBay, PayPal, Google; they are stalwarts of regular computer users.
Aside from online hosted applications such as the heavyweights above, in-house hosted web applications are rapidly on the rise too. As a professional Open Source consultant, no end of people are interested in Customer Relationship Management (CRM), Content Management Systems (CMS), project management, resource planning, groupware and more. With a large and impressive stable of Open Source solutions such as EGS, Sugar, dotProject, Mambo, Wordpress, Hula, OpenGroupware and more, there is plenty of choice. The ease of use, choice and stability is not the problem here though, it is the plugability.
A typical SME will want a CRM, a CMS and possible some groupware. How do you fit them together? How do you make the CRM talk to the CMS? How can the events on a website hook in with a delegate list in the CRM? How can interactions with the CRM be reflected in groupware with shared calendars, email and TODOs? How can membership information on the website relate to real world CRM leads and statistics? How can an intranet Wiki pull in data from the other web applications?
These are not niche or edge case questions. These are the real questions that are asked on a daily basis by many of my clients. For the casual observer, a web application is seen in exactly the same light as any other application. Sure, you interact with all the web applications via the same interface (the web browser), but then again, all those games you play on your Playstation 2 are controlled and viewed via the same interface, all you electronic devices get electricity by the same interface. The consistency of plugs in other parts of our world makes light of the glaring inconsistencies of plugs in these other areas.
Some of you may suggest web services as the solution, but this is the equivalent of the plastic casing of a physical plug; it is merely a component inside a bigger picture. Web services provide a transport for web applications to talk to each other, but they don’t map the real world ins and outs of one application to another. If I were to plug my laptop into the wall, I don’t want to have to think about current and voltage - I want to plug it in and have it work. In the same way, I don’t want to think about RPC, XML, methods and state - I want to think about making this contact on my CRM talk to that web page on my CMS. I want to map the reality of one application with the reality of another.
My assumption is that much of this will happen in the future, but it will happen in a similar way to the Open Source desktop. As flag waving standards have come and gone, dominance and popularity will win out. In Open Source development it is incredible difficult to define a new standard or framework and get everyone to buy into it. It happens very, very rarely. This is no different in the web applications space. The challenge is in the perception.
Bolting in plugs and bridges between these different applications is only half the battle. Web applications are intended largely as centralised systems; systems in which you focus a specific aspect of your life on. All the contacts and activity tracking goes in the CRM. All of the public content goes in the CMS. The problem with these kinds of centralised systems is that developers often forget how people interact with the information as opposed to the system. People use email clients, desktops, desktop sticky notes, PDAs, watches, music players, SatNav systems, cars, phones, TVs and more. There is so much opportunity to plug these different disparate mediums together in the software world that makes sense in terms of usably streaming information between different systems.
The challenge is in developing good technology. The evolution of the Open Source desktop is a telling reminder that having the most hands up doesn’t win; its having the right hands up. Create good technology that developers are psyched about, and there is a real opportunity for innovation and change. The bricks are there - we just need to fit them together.
What do you think? Can this work or is it all pie in the sky? Share your thoughts here.