Steve Yegge on XEmacs
Smart stuff from Steve Yegge:
Eclipse and similar environments want to be self-hosting, but they're not, because Java is not self-hosting. In spite of Java's smattering of dynamic facilities, Java remains as fundamentally incapable of self-hosting as C++. Self-hosting only works if the code can "fold" on itself and become more powerful while making itself smaller and cleaner. I'm not really talking about macros here, even though that's probably the first thing you thought of. I'm thinking more along the lines of implementing JITs and supercompilers in the hosted runtime, rather than in the C++ or Java "hardware" substrate, which is where everyone puts them today.
I suspect (without proof) that in self-hosted environments, you can eventually cross a threshold where your performance gains from features implemented in the hosted environment outpace the gains from features in the substrate, because of this self-reinforcing effect: if code can make itself faster and smarter, then it will be faster and smarter at making itself faster and smarter. In C++ and Java, making this jump to the self-reinforcing level is essentially intractable because, ironically, they have so many features (or feature omissions) for the sake of performance that they get in their own way.
To be sure, Emacs, the current crop of popular scripting languages, and other modestly self-hosting environments are all pretty far from achieving self-reinforcing performance. But Emacs has achieved it for productivity – at least, for the relatively small percentage of Emacs users who learn enough elisp to take advantage of it. There are just enough of us doing it to generate a steady supply of new elisp hackers, and the general-purpose artifacts we produce are usually enough to keep the current crop of casual users happy.
(Personally, I've abandoned the Emacs religion and switched to TextMate. But I'm among the casual users who will be happy that they can switch back the day I can no longer use a Mac ...)
I continue to use emacs almost exclusively, going back more than 25 years on various systems. I’ll likely continue to do so for many more years.
That said, I think emacs’ future is better as a philosophy than a concrete implementation.
http://www.finseth.com/craft/ lays it all out. The ideas can and should be incorporated into nearly all interactive software.
This reminds me of PyPy, a Python implementation in Python: http://codespeak.net/pypy/dist/pypy/doc/home.html