This page introduces Leo’s features and shows why Leo is a unique tool for understanding and manipulating data.
Outlines and organization: Leo’s outlines are more flexible and powerful than any other outline, for at least three reasons:
External files: Any outline node (and its descendants) can be “connected” to any file on your file system. Three common kinds of connection are:
@edit, @auto and @file allow you to share external files with others in a collaborative environment. With @file, you also share outline structure.
A single Leo outline can connect to dozens or even hundreds of external files. Using Leo, you never have to open these files by hand, Leo does so automatically when it opens the Leo outline. Outlines connected to external files make Leo a new kind of IDE (Integrated Development Environment).
Scripting: Every outline node can contain Python scripts. Moreover, each node in a Leo outline is a programmable object. All nodes are easily available to any Leo script. The structure of the outline is also easily available to any script. Scripts can easily determine the parents and children of any node. Finally, Leo makes it easy for scripts to visit any or all nodes of an outline.
Leo’s headlines provide a natural place to indicate the type of data contained in nodes. By convention, @test in a headline denotes a unit test, @command creates a new Leo command. The @kind convention creates user-defined types that turn any outline Node into a true programming object.
Unifying scripting, data and outline structure creates a new world. We use the term Leonine to denote the Leo-centric (outline-centric) view of programming, data and scripting. Here are some of the implications of this new world:
Data organization: Leo’s clones allow unprecedented flexibility in organizing data. Leo outlines have been used as an entirely new kind of database. It is easily scriptable. As my brother has shown, it is possible to design Leo outlines so that parts of the outline are SQL queries!
Design: With Leo, you always see the big picture, and as many of the details as you like. But this makes outlines ideal for representing designs. In fact, Leo outlines don’t just represent designs, they are the designs. For example, all of Leo’s source code reside in just a few Leo outlines. And Leo outlines can represent input data to other design tools.
Programming/Coding: It’s much easier to program when the design is always easily visible. Nodes provide the perfect way to organize large modules, classes and functions. Nodes also provide unlimited room to save as many details as you like, without cluttering your overall view of the task, or rather tasks, at hand.
Testing: Leo is a supremely powerful unit-testing framework:
Maintenance and support: Leo’s ability to contain multiple views of data is precisely what is needed while maintaining any large project. For every new support task and every new bug, a new (plain) task node will contain all the data needed for that task, notes, test data, whatever. Furthermore, when fixing bugs, the task node can contain clones of all classes, methods or functions related to the bug. Fixing a node in the task node fixes the node in the external file! And as always, you can use all of Leo’s outlining features (including clones) to organize your task nodes.
Organization everywhere: Have you noticed that Leo’s organizational prowess applies to everything? Indeed, you can use outlines and clones in new ways to organize files, projects, data, design, programs, testing, and tasks. Leo doesn’t need lots of features–outlines, clones and scripts suffice. The more complex your data, designs, program and tasks, the better Leo is suited to them.
It’s time to mention one of Leo’s most unique features. Simple, optional markup makes it possible to synthesize (build) scripts and entire computer programs from outlines. Leo is more than a filing cabinet for scripts and programs, Leo is a build tool for scripts and outlines!
Scripting everything: Let’s step back a moment. A single outline can contain databases, designs, actual computer code, unit tests, test scripts and task nodes. But Leo scripts will work on any kind of node. Thus, it is easy to run scripts on anything! Examples:
The Leo Aha is just this: Leo outlines are far more than eye candy. Leo outlines revolutionize your view of data–Leo outlines can organize anything. Leo outlines create a new kind of programming environment, one in which outline structure and user-defined data types create totally new opportunities.