Below is a beloved quote from the book: Beautiful Architecture, 1st Edition; Publisher: O'Reilly Media, Inc.
The GNU Emacs text editor is unmatched in its notoriety. Its proponents swear nothing else comes close, and are oddly resistant to the charms of more modern alternatives. Its detractors call it obscure, complex, and outdated compared to more widely used development environments, such as Microsoft’s Visual Studio. Even its fans blame their wrist injuries on its contorted keyboard command set.
Emacs provokes such strong reactions partly because there’s so much of Emacs to react to. The current Emacs sources include 1.1 million lines of code written in Emacs’s own programming language, Emacs Lisp. This corpus includes code to help you edit programs in C, Python, and other languages, as you might expect from a programmer’s text editor. But it also includes code to help you debug running programs, collaborate with other programmers, read electronic mail and news, browse and search directories, and solve symbolic algebra problems.
Looking under the hood, the story gets stranger. Emacs Lisp has no object system, its module system is just a naming convention, all the fundamental text editing operations use implicit global arguments, and even local variables aren’t quite local. Almost every software engineering principle that has become generally accepted as useful and valuable, Emacs flouts. The code is 24 years old, huge, and written by hundreds of different people. By rights, the whole thing should blow up.
But it works—and works rather well. Its bazaar of features grows; the user interface acquires addictive new behavior; and the project survives broad changes to its fundamental architecture, infrequent releases, leadership conflicts, and forks. What is the source of this vigor? What are its limitations?
No comments:
Post a Comment