IEEE Internet Computing Magazine Interview

Brad Cox
Dec 12, 1998

This page is an email interview for IEEE Internet Computing magazine on Dec 12, 1998. The question column is by M. Wiggins, the response column is by Brad Cox.

I had a lot of fun reading your site, thanks for the wit and energy you bring to it. I'm enclosing a set of questions. There are only two constraints here: one, we are an Internet magazine and so I have maintained a loose focus on the Web and components; two, the questions have to get your juices flowing.

If the ones I have written don't do that let me know. Feel free to write your own! ( I am not aiming at hard hitting journalism here but at giving you a chance to take a broad look at the Web as a computing platform, and at where software engineering is heading.)

If there are too many questions answer the questions (or parts thereof) you find most interesting. In terms of audience of course you are writing peer to peer with software and hardware engineers and programmers.

Question

Response

Since the 1980s in which you developed Objective C and wrote your landmark book, Object-oriented Programming, An Evolutionary Approach (FTN: Brad Cox and Andrew Novabilsky, Addison Wesley Publishing Company, Second Edition 1986), how would you evaluate the evolution of object-oriented programming?

This is a chance to basically let you talk about what ever you want, as a visionary in the field. If it is too broad a question then go ahead and answer it in an Internet context (since we are an Internet magazine), as in the next few questions.)
OOP hasn't changed at all. The period of revolutionary change that led to Simula and Smalltalk entered a period of "normal science" (Thomas Kuhn; Structure of Scientific Revolutions) more than a decade ago. What changed was the web. This created an electronic frontier, a promising place ordinary folks might settle if they could see how to make a living out there.

I'm not talking about the hairy-legged indigeneous nerd population. We get by just fine flint-knapping our implements with low-level tools like Objective-C, C++ and Java. I mean "the rest of us", folks who might be capable of building a house with hardware and lumber from Heckingers, but not by building their very own teepee with a flint knife that they themselves chipped from a rock. More of us are capable of assembling workable solutions from libraries of pre-fabricated components than at fabricating everything from first principles as the software community has done to this day.

The web set the stage for resolving the problem that has kept the software industry in the primitive stage of evolution (fabrication from scratch) and kept us from advancing to assembly of interchangeable parts.

The reusable components that the construction industry relies on so heavily are made of atoms. Software-ICs are made of bits. Software doesn't abide by the conservation laws that Heckingers (and the factories that supply them) use to maintain their business. So a software components industry never evolved, certainly not comparable to Heckingers and Intel.

This is the problem that "Superdistribution: Objects as Property on the Electronic Frontier", my second book, addresses. Technically, the solution is ludicrously simple. Let people acquire the components for free (eg superdistribute them), but charge when the components are used. Instead of enforcing ownership with lawyers as we do now, lets use engineers instead. Let them build usage meters that components can use to send usage information to billing institutions over the internet.

But socially, this is a very hard problem indeed. It involves a paradigm shift from the property-averse values of the indigeneous indian tribes to the property-conscious values that those who pushed the indians onto the reservations accept as the norm today.
How have the Internet and Web explicitly impacted OO programming? The web obviously had considerable impact on Java. But I'm not sure it impacted OO programming one way or the other. OO Programming in Java and Perl feels exactly like programming in C++ or Objective-C. The big difference isn't the OO bits but in the communication environment, the context, that surrounds these languages.
Elsewhere in this issue Frank Manola makes a case for the Web being a natural platform for OO computing. He views the Web as a simple form of distributed objects in which HTML pages can be considered as objects, with identity being provided by URLs and methods invoked via HTTP servers. Do you view Web-native technologies such as HTML/XML and HTTP as a suitable platform for OO programming?

(Here I thought it might be good for you to reflect on your own OO use of Perl as a kind of case study)

(I can send you Frank's paper. The long version is at http://www.objs.com/OSA/wom.htm)
While I agree web pages are indeed a primitive kind of object, I spend more of of my time fighting the deficiencies of html pages and cgi scripts as objects than praising their similarities.

First, encapsulation really sucks... state and procedure aren't bound into hybrid entities that maintain state and exhibit behavior. Data is here, procedure is there, exactly as with card decks and fortran.

Seond, it is exceedingly difficult to build useful and robust applications in a stateless cgi-style environment. Its like trying to build software in a language that only has goto statements and no subroutine calls. Building multi-step applications as cgi programs and an OO-database is excruciating for exactly this reason.
What do you envision the Web being like if it does evolve into a more complex distributed object system? I mainly see Brooks' style horrors until this industry stops thinking in terms of a vast galactic stew with everybody's objects pushing and shoving willy-nilly, and starts thinking in terms of digital property; things that people own and take a personal interest in improving.

Superdistribution may help us to transition from the open-range mentality of the early indians and explorers to something more along the lines of the attitudes towards property that are characteristic of advanced engineering societies.
How would you evaluate current directions in the area of metadata, such as the Resource Description Framework, or XML Schema? What principles do you think should underlie semantic self-description in a Web context? Or, what advice would you give to those who are designing such systems? I've been working half-time within the Educause/IMS effort, part of which is defining meta-data standards for digital courseware exchanges between universities. Although I admire and support their efforts, my own work has been in leading the superdistribution task force. So I'm not the best one to judge the meta-data standards effort. I don't feel I understand it.
How would you evaluate the current directions in component technologies such as Java, COM, and of course CORBA? Do you think we are moving any closer to a scenario in which reuse will become realistic? These technologies are a great help. But they don't really engage the fundamental problem. So long as its not possible to robustly buy, sell and own digital property (eg objects), we won't have the kind of objects people will want to reuse. I know, things aren't quite as black and white as I've said; Java/Perl libraries are wonderful. Yet if you compare the quality of the components in, JDK, Linux or CPAN with those in Heckingers, our free components look very primitive indeed.
Your book Superdistribution; Objects as Property on the Electronic Frontier (FTN: Brad Cox, Addison Wesley 1996; ISBN 0201502089) examines the economic implications of the virtual nature of objects. To quote from your article in IEEE Software (FTN: Objects as Property, vol X, no 1, 1997)

I believe that superdistribution can serve as a new paradigm for the ownership of digital property. By creating a technological basis for buying, selling, and owning goods made of bits, we can move software engineering onto the same growth curve that hardware engineering has occupied since the industrial revolution. By providing a two-tier infrastructure for enforcing ownership of digital property, we can let software engineers assemble their products the same way hardware engineers assemble theirs, building upon other people's efforts instead of fabricating everything from first principles.

Two years later how do you assess the software industry in this regard?
The big change is that the climate for starting down this road in earnest has started to look very encouraging indeed.
What do you think of the "open source" paradigm as a solution to the ills that beset software development? In a sense they throw more bodies at the problem of complexity rather than providing an economic incentive. We covered the Halloween exchanges between Microsoft and OSS in my Taming the Electronic Frontier course this fall. I see it as a confrontation between the communitatarian, property-averse values of the indigenous tribes (OSS) and the capitialistic, property-conscious railroad and cattle magnates (Microsoft) who displaced them in the end.

That's certainly a battle no doubt. But looking back from the Heckinger-style post-industrial culture that we live in today, these both look quite primitive indeed. I've chosen to view that battle from the sidelines and to concentrate my energies on laying the foundation for the emergence of a truly advanced successor.
Can we fully characterize the ways in which component design is different in hardware vs software?
Yes. Hardware is made of atoms so its trivial to buy, sell and own it. Software isn't similar. Without superdistribution software is exactly the opposite. Primiitive, not advanced. Fabricated from scratch, not assembled from existing components.
  The main impact of the web was to attract the interest of property-conscious folks who're interested in earning their living out here, thus establishing the precondition superdistribution needed to take hold.
Patty Maes, the well-known AI theorist, told us last year that technologicalpossibilities of the Internet changed her view of machine learning, and directly inspired her development of collaborative filtering. How has the Internet changed the way you look at components and objects?

(and pls describe how you describe the Net, as an inherently chaotic configuration of loosely coupled, distributed machines, or whatever slant you take on it...)

Your virtual school applies the concepts of OO programming to curriculum development. Could you describe your idea for a "new university" to our readers, and talk about the technologies that underlie its realization?


Feel free to abstract as much as you need from http://virtualschool.edu/heu. Particularly note the Coordination Technology section.

I got interested in OO because I saw it as a means to an end. I built Objective-C's predecessor when I was at ITT when I realized that C was too primitive to do what I was really interested in, Coordination Technology (as defined above).

I returned to academia five years ago because I needed a temporary haven to lay the foundation for superdistribution. I then realized that the web had created the kind of environment I needed to build Coordination Technologies. Furthermore education was an ideal place to experiment with technologies that simply amplify signal+noise to the point that the signal is lost in the noise. For example, witness the internet today. The educational experience changes slowly (essentially unchanged since Socrates' day). This made it feasible to invest the huge amount of labor it takes to build coordination tools in the primitive (property-averse) environments we have today.

So as a secondary interest, since I had to teach anyway, I started building the perl-based coordination technology that led to the Paul Allen award. The key idea is that immersing students in a noise-intensive exploration-style user interface mainly encourages aimless wandering and getting lost. My tools take the opposite approach of amplifying signal alone. That is they present only what the student must do this week to succeed. A simple change that makes all the difference in the world, according to my students at least. The Paul Allen Foundation seems to like it too!
Clearly you have a creative way of looking at objects not only as bits but as evolutionary building blocks, and as economic and social units. How did you arrive at this outlook, and what are the intellectual factors that are driving your work forward today?
The biggest single factor was the Stepstone experience, where we went through $29M of other people's money trying to build an Intel for the software industry. Thats an educational experience few people can afford! And even so, I never realized until much later that the root of Stepstone's problems (and the software industry's as a whole) was that our products were made of bits while Intel's were made of atoms. Everything since has been refining that key insight, and trying to convey it to people, who exactly like the indigeneous indian tribes, believe with indian-like fervor that ownership of digital property is evil, that "software wants to be free".

Subsequently, I've discovered many sources within economics and biology that reinforce this basic insight. I've collected most of these in my website at http://virtualschool.edu/Economics and http://virtualschool.edu/Bionomics, so that interested readers might explore them on their own. I particularly recommend Hayek and Rothschild.