The hypothetical time traveler whom Michael Stal wrote about in his 2006 article “From the Future” would be disappointed to learn that “prehistoric computer science,” as the temporal traveler termed it, has not changed much as of 2011, five years down the road. Market analysts and IT experts still report that only about 20 percent of all software development projects reach a successful conclusion. The remaining 80 percent of projects overrun their budgets, go on longer than expected, do not implement all desired functional requirements, or are prematurely terminated out of frustration. We are still faced with the burning question: how can software more effectively be made?
One possible answer has been suggested by software developers in the “Object Spaces” (also called simply “Spaces”) community. According to Wikipedia, Object Spaces is a paradigm for distributed computing and “global” (system-wide) object coordination. Our view is that Object Spaces is the start of the right road towards making a qualitative revolution in computer science: a major upgrade in how software is made, and in the power of what it can do. Improving the overall situation of software development will be made possible through adapting an Object Spaces approach which can be described as holistic, since it takes on infrastructural challenges with an application-centered unified programming paradigm.
Yale University computer science professor David Gelernter, with his tuple space coordination model, is regarded as being the originator of Object Spaces. In mathematics and computer science, a tuple is an ordered list of elements. In a “Tuple Space,” a repository of tuples is accessed concurrently by many processes. A Tuple Space is an example of an Object Space. Together with Yale University colleague Nicholas Carriero, Gelernter laid the foundations of the Tuple and Object Space paradigms in the late 1980s with the development of the Linda programming language. The importance of the approach was already recognized back then, but it is only recently that large-scale implementations of Object Spaces in production software systems have begun.
In our view, the potentially wide-ranging impact of Object Spaces has been deferred in time due to a somewhat narrow (and hopefully temporary) channeling of the paradigm into the two technologies of “Grid Computing” and JavaSpaces. Josef Ottinger, a proponent of the movement of Grid Computing, defines Object Spaces as the setting up of a sort of memory map for Client/Server applications: a network or Grid in which data resides that can be read and written. The Sun Microsystems technology known as JavaSpaces has also tried to implement a Spaces concept. JavaSpaces uses an infrastructure called “Distributed Virtual Shared Memory.” The dimension of distribution is added to shared memory. As the Wikipedia article on the subject states, JavaSpaces provides a “distributed object exchange and coordination mechanism (which may or may not be persistent) for Java objects.” JavaSpaces is a part of the Java Jini technologies for distributed systems. Jini has not been a commercial success. Chief Jini architect Bill Joy has attributed this failure in part to the fact that the dream of distributed systems will require a “quantum leap in thinking.”