Thanks to everyone who replied to my post on this topic, especially Gary and Brett! I hope to find time to think about this a little more and maybe type up a few more thoughts, but in the meantime, I got an interesting message from Marcel Weiher on the MacOS X mailing list today with some quotes from Alan Kay that I wanted to share (I didn't forward the whole message because I didn't get a chance to ask Marcel if he would mind.. I know the post was in a public forum but I don't want to be impolite). The comments on messaging being even more important than objects gives me hope that REBOL truly is exploring a better path! -------- Original Message -------- "Simula to OOP is moving to new things. Simula to ADT (Abstract Data Types: C++, Mesa, Ada) is moving on to better old things." "Java and C++ make you think that the new ideas are like the old ones. Java is the most distressing thing to hit computing since MS-DOS." "If you think programming is a small thing, that's why your programs are so large." "There is nothing more inefficient than 10 years development on an OS that never runs. (Reference to the Apple "Pink" OS project.)" All from Alan Kay's OOPSLA 97 talk. http://www.cc.gatech.edu/fac/mark.guzdial/squeak/oopsla.html Here is a longer message by Alan on the Squeak mailing list: <Alan Kay Quote> Just a gentle reminder that I took some pains at the last OOPSLA to try to remind everyone that Smalltalk is not only NOT its syntax or the class library, it is not even about classes. I'm sorry that I long ago coined the term "objects" for this topic because it gets many people to focus on the lesser idea. The big idea is "messaging" -- that is what the kernal of Smalltalk/Squeak is all about (and it's something that was never quite completed in our Xerox PARC phase). The Japanese have a small word -- ma -- for "that which is in between" -- perhaps the nearest English equivalent is "interstitial". The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be. Think of the internet -- to live, it (a) has to allow many different kinds of ideas and realizations that are beyond any single standard and (b) to allow varying degrees of safe interoperability between these ideas. If you focus on just messaging -- and realize that a good metasystem can late bind the various 2nd level architectures used in objects -- then much of the language-, UI-, and OS based discussions on this thread are really quite moot. This was why I complained at the last OOPSLA that -- whereas at PARC we changed Smalltalk constantly, treating it always as a work in progress -- when ST hit the larger world, it was pretty much taken as "something just to be learned", as though it were Pascal or Algol. Smalltalk-80 never really was mutated into the next better versions of OOP. Given the current low state of programming in general, I think this is a real mistake. I think I recall also pointing out that it is vitally important not just to have a complete metasystem, but to have fences that help guard the crossing of metaboundaries. One of the simplest of these was one of the motivations for my original excursions in the late sixties: the realization that assignments are a metalevel change from functions, and therefore should not be dealt with at the same level -- this was one of the motivations to encapsulate these kinds of state changes, and not let them be done willy nilly. I would say that a system that allowed other metathings to be done in the ordinary course of programming (like changing what inheritance means, or what is an instance) is a bad design. (I believe that systems should allow these things, but the design should be such that there are clear fences that have to be crossed when serious extensions are made.) </Alan Kay Quote>