I wanna change the whole world. But I can't. Lucky for the world, probably.
So instead, I decided to change my world - by relocating to another hemisphere, at least temporarily. The new world is a gorgeous place, near stunning mountains+sea+beach+skyline views, such as a spot called Jericho Park. Hence the name of my new project: Jericho.
Jericho is about a very narrow and one-sided technological wonder of this planet, called "computer software". The stuff no generation before us has ever been confronted with, and the stuff no generation after us will ever get rid of, probably.
Jericho is about the fact that there is a small group of people, creating products and services which an ever-growing segment of the human race has to put up with. That small group is called "software programmers", who have a tendency to call the rest of the world "users". To add the proper perspective: as software programmer, you're expected to always consider yourself an expert (at everything), and as a computer user, you're expected to feel deeply inferior to (and dependent on) those experts. So far, this ploy seems to be holding up frighteningly well.
Software programmers know what's best for users. They are drawn into more and more elaborate projects, they command fees like only a very small group of skilled professionals (of all disciplines) can, and they deliver the products that make this world a better place.
Humbug. Very few projects succeed (or even get completed!). For some of these so-called "users", work is shifting from a gratifying experience to the dubious honour of pushing buttons, clicking on a mouse, aiming it at all sorts of areas on a computer screen, and other RSI-promoting activities.
Jericho is about the fact that while large groups of "computer professionals" make an ever more luxurious living, and feel ever more important, the outcome of it is terrifying for just about everyone outside that technological elite. If you can't keep up, if you can't see the right way, and find that adopting all that new technology - that continuous hardware and software upgrade race - is too combersome, or too hard, well, then you're on your way out - welcome to the digital divide. Either you join the technocrats or you don't. In that last case, be prepared to face the grim consequences.
Ah, but I'm a hypocrite. You see, I am one of those technocrats. I used to be that weird boy interested in, what are they called again: oh, yes, "computers". I can now indulge in going overboard in technological extremes, cultivating that mastery of a very very imaginary world, consisting of bits, compilers, installers, and about a million other slang words. Computers are my field, I enjoy the fact that I can command and control them to do "things".
But I consider computers to be very strange concoctions, which - with considerable effort - can be made to do useful things. Like get messages across, or help compose creatively (texts, images, music, whatever). The trouble is, that this opinion is not shared by everyone. The common belief, is that computers are inherently good, are inherently doing well and being useful, and that to do more with computers is "progress". How odd. I see people struggling to get their computers to do something new. I see people asking their neighbours to help them figure out why things aren't working yet, or stopped working for no clear reason. I see companies struggling to keep systems working properly, upgrading everything forever, and trying to figure out why application X is no longer working on computer Y since they installed utility Z. I see large enterprises moving from one project to the next, phasing in and out both software and hardware, and getting burried in the conversion efforts needed to maintain a sense of long-term continuity.
Computers are a nightmare. Get a new one and you'll see the latest and greatest fail to behave as expected. Hang on to your old one and you'll see it become obsolete in no time. There are millions of people on this planet, trying to keep up and understand how to deal with them every day. And there are millions more people, struggling to start, fix, or recover things - all related to computers.
Fifty years from now, the human race will be faced with an unbelievable digital soup of information, most of which will be unreadable and un-processable. Every major advancement in information technology will be buried in revision conflicts, complete rewrites, incompatible changes, and more abandoned than active information. It is likely that the majority of software in use today will not work then, even assuming that all necessary equipment is still functioning. Imagine what that means for the carefully collected and maintained data they used to deal with...
In the light of a long-term perspective, every new piece of software we introduce today is a step back: it merely creates yet another barrier between the information we store, collectively, and the access we need once the lifecycle of that new piece of software comes to an end.
As technocrates, we tend to rebuild the world from scratch over and over again. A new day, a new system. A new day, a new technology. A new day, a new tool. A new day, a new team of experts. A new day, a new set of users. A new day, a new skillset. Every new day throws away the investments made so far.
Jericho is about saying "enough is enough". Complexity sucks. Keep it simple. Respect the experience people have, and stay in line with it. Mold computerized solutions to the world they are used in, not the other way around. Stick with technology that gets the job done and is fully grasped, both by those who build solutions and by those who have to work with these solutions. Think about it: does a 3-button mouse make sense? In fact, does a mouse make sense in every context? Do a zillion "configuration options" make sense? Does an "installer" make sense? If someone has always performed task X, does it really make sense to introduce a new way of working which needs an N-day course? Would you rather respond to "Are you sure?" 1000 times a day, or would you rather have an undo / revert facility?
Jericho is about trying to get sanity back into computer-assisted activities.
But as I said, I can't change the whole world. Instead, I want to help define and create tools which hopefully will help others change the world in more far-reaching ways. These tools are very simple, and very low-profile. Their main purpose is to avoid nonsense, and to help create sensible solutions. Solutions which assist people in doing what they want to do.
Jericho is about rethinking the world of software. Software needs to vanish into the backgound. When we use a chisel, it is not the chisel we want to think about, but the wood we shape with it. Likewise, when we write a text, it is not the word-processor, but the text that matters - either on content, or in layout, or both.
Apple Computer got it right, when they created the "Finder" for their Macintosh computers and when they talked about "direct manipulation" as driving metaphor for the user interface (in hindsight, they got it wrong when it comes to proprietary hardware and software - but that's a different story).
Jericho is about trying to "get it right" in other fields, and at another level: the process of creating software solutions which work well, and the process of bringing those solutions in a sensible way to those who want them. It's about software that just works, almost in a goal-seeking manner, to help people accomplish their goals and tasks, and about software that is so trivial to deploy and take with you, that "figuring out to get it to work" becomes "activating and exploring it". It is also about evolution - to the point that "new releases" are no longer the risky and very time-consuming hassle they often are today.
But Jericho is not a revolution. It's not yet another "let's start from scratch" initiative. It's merely an attempt to support the best of what there is today, with emphasis on getting it "out there". It has limited use in one-off deployment situations, its main use is for wide deployment of software solutions, and for cases when the same software must be used under a wide variety of conditions. Jericho is intended to cross hardware-, operating system, programming-language, and application domain boundaries.
Jericho is a project which focuses on delivery and integration of existing technology. It is based on software which is robust and fail-safe, and which minimizes interaction with all other software in use out there. It includes sufficient functionality to be of use in a very wide range of applications.
One way to look at Jericho-based solutions, is that the Jericho software replaces traditional installers. It's the delivery mechanism which makes installation unnecessary.
Another way to look at Jericho-based solutions, is as a way to make solutions "document-centric", i.e. presenting a model whereby people deal with their data as self-sufficient documents, which are sophisticated enough to take care of such details as running the necessary software, and upgrading on-the-fly as needed.
Yet another perspective on Jericho, is as a large and modular grab-bag of software infra-structure. A wide collection of tools which can be combined and activated in various ways to implement various parts of an application. Unlike traditional frameworks, Jericho does not impose specific technical choices such as limiting the solution to a single operating system, or requiring it to be written in any specific programming language. The grab-bag is highly modular, Jericho just makes sure it is/stays consistent and is easily managed.
To people using such Jericho-based solutions, all of the above is largely irrelevant. What they see is a "file", or a "package", which they can obtain from the net (or pehaps a CD-ROM), and which assists them in some specific way.
For people developing Jericho-based solutions, life is good. What they get is a streamlined delivery and management tool which lets them create powerful solutions and be responsive to user demands by easily getting new releases out. What they also get, is a system which leaves them many choices in terms of what tools to build with and how platform-specific or -neutral they wish to be. Last but not least, they get a very complete revision control mechanism, with the ability to update as well as revert their releases.
Technically speaking, Jericho consists of:
- a bootstrap mechanism and runtime system inspector
- a packaging scheme based on a robust storage manager
- a range of programming cores and scripting engines
- a network-based communication mechanism
- a range of user-interface options
- a wide range of scripted extensions for specific tasks
- a generic interface mechanism to existing software
- a version tracking system which can be reverted
Finally, Jericho is about doing things which are future-proof: a tool which makes sufficiently few choices to leave the door open for lots of options, hopefully also those which do not yet exist.
© September 2000