Contents
Why, oh why, would anyone be interested in Leo? After all, Emacs and Vim are superb text editors, and Visual Studio and Eclipse are great IDE’s. How can Leo possibly compete with such strong competition? What does Leo offer that these other tools don’t?
Leo does have something unique to offer–something missing from Emacs,Vim, Visual Studio and Eclipse. Leo’s users often speak of an Aha! moment when they understand what this ‘something’ is. The Aha! arises from considering programs, design and data in a new light. You might call this ‘The Leo Way’. In essence, Leo shows that computer programs, designs and data are not, after all, mostly about text. Yes, people usually express programs, designs and data as text. Yes, people manipulate programs, designs and data using text, but text is not the whole story.
In The Leo Way, text is simply a manifestation (a shadow) of something more fundamental. That ‘something else’ might be called ‘organization’ or ‘structure’ or ‘views’ or even ‘architecture’. However, let us use the term node to represent the fundamental unit of structure in Leo. We’ll see why in a moment.
In architectural terms, nodes are bricks that make up a building. In computer programming terms, nodes make up methods, classes, files and entire applications. So the term ‘node’ does not have a fixed meaning–it is simply a unit of organization. Any node can be built from other nodes, and any node can be used by any other node. Leo represent nodes directly, as nodes (headlines) in an outline. An outline node contains a headline and body text. The outline pane shows all headlines; the body pane shows the body text of the presently selected node.
To repeat: the fundamental unit in Leo is not text. True, headlines and body consist of text, but a node is just not text, it is a true (Python) object. This means several specific things:
Earlier I said that any node can be built from other nodes, and any node can be used by any other node. It takes a very special kind of outline for this to be possible. In a typical outline, such as Emacs outline mode, for example, nodes appear exactly once in the outline. This makes it impossible to ‘reuse’ nodes in multiple places. Leo removes that limitation: any outline node can be cloned, and clones can appear in as many places in an outline as you like. Although clones may look distinct on the screen, at the data level each clone is exactly the same node.
Earlier I said that you can think of nodes as representing ‘organization’ or ‘structure’ or ‘views’ or even ‘architecture’. Clones are the crucial feature that allows this point of view. For example, we can build up multiple ‘views’ of data in an outline using clones as follows:
That’s about all there is to it. The view node, and its children is a new view of the outline. This notion of ‘view’ is so important that Leo supports it directly. Leo’s chapters are simply views created as I have just described. When you select one chapter, you only see the nodes of that chapter in Leo’s outline pane.
So Leo offers a new way to understand, organize and manipulate any kind of complex data, including computer programs, designs of computer programs, web sites, personal data, whatever. The Aha that I invite you to experience is this: Outlines are more than mere eye candy. Having organization be real data creates an entirely new dimension, literally and figuratively, in computer programming, computer design and data organization, including web-site design, database design, etc. Leo’s commands use headline and body text in many creative ways. So can you and your scripts. It’s easy, it’s fun, and it’s revolutionary.
That’s about it, except for some words of caution and advice:
Edward K. Ream July, 2007