Thanks Edward for this pre-writing. Hopefully we can contribute in a constructive way. Some comments below.

On 20/10/15 11:08, Edward K. Ream wrote:
This post discusses what I think matters most about Leo. This post assumes you are an experienced Leo user. It does not try to duplicate Leo's Tutorial <http://leoeditor.com/tutorial.html>.

This post will be pre-writing for a version that will be posted to Leo's web site. All comments are welcome.

Leo is a superb tool for understanding, studying and organizing any kind of complex data, including computer programs.

That's why I think that Leo should be easy to install by "anyone". The potential benefits of Leo are beyond programmers, computers scientists, etc. Any writer, teacher, student, anyone who is organizing thought with writing, including data could be a beneficiary of Leo.

The first great Aha in Leo's history was that webs (literate programs <https://en.wikipedia.org/wiki/Literate_programming>) are outlines in disguise. Leo's importers (@auto) make it easy to studying other people's programs. Leo's always-present outline structure clarifies overall program structure and makes many kinds of comments unnecessary.


This idea of an always present outline has been key to me for organizing writings. Some coworkers have found in the past that this helps them when we're correcting their text. On a sightly off-topic, most of them are school teachers making their master studies on education. Some of them were doctors working on writing complex documents. They're good at what they do, but having not technical expertise on computers (or not the proper permissions on school and office machines to install their software, so they weren't unable to continue using Leo)

Leo is a superb browser for code and data. Unlike many other folding editors, Leo remembers which nodes were expanded when you last saved an outline. This is surprisingly important.

Agreed. In my own Leo + IPython inspired outliner I use smalltalk image based persistence to recover the status of all the objects I have being working on, included but not limited to the outliner status. But going back to your old visited nodes and continuing exactly where the cursor was is a great context kicker when you're writing and something I would like to implement in my outliner.

And Leo's clones let you organize any data as /you /want, even if all folds are collapsed.


For me this is the most powerful but misunderstood feature of Leo. Most of the people which compares it with other IDE rant about why Leo doesn't works more automatically imposing structure, but in Leo you're in charger. You impose infrastructure.

Leo is a uniquely powerful scripting environment. This power comes from three sources: Leo's API, Leo's ability to compose scripts from outlines and Leo's underlying data structure, a Directed Acyclic Graph <https://en.wikipedia.org/wiki/Directed_acyclic_graph>, the basis for Leo's clones.

Leo's API consists primarily of *generators*, such as c.all_positions(), p.self_and_subtree(), etc. and *properties*, such as p.b, p.h, p.gnx and p.v.u. Leo's API makes it trivial to write scripts to access or change any node. AFAIK, these capabilities are unique. Simulating them in vim or Emacs is possible, but so is simulating Python's capabilities in C...

Afaik, no other scripting environment allows you to compose scripts from outlines. @file, @clean, @auto, @others and section references and definitions make this possible. Section references and definitions are modeled on the noweb <https://en.wikipedia.org/wiki/Noweb>language, but all of Leo's script composition features are fully integrated into Leo's outline structure.

Leo's outline nodes have headlines (p.h) and body text (p.b) and extensible information (p.v.u). Headlines are descriptions (meta-data) of the data in p.b and p.v.u. Scripts can rapidly discover and categorize data using metadata. Leo's @ convention for headlines (@clean, @file, @auto, @html, etc.) show how extensible this *node typing* is.


For me the second main insight of Leo (besides emergent always present tree structure on almost any file) was to have a tree that is a programmable structure that can be understood and changed by any node inside that tree. I think that Leo brings structure and self-referentiality to the dumb flat file word. So you can create a tree from one (or several) files, deconstruct and reconstructut it they way you want and automatize the way in behaves and talks with the external world. Previously I had compared Leo with the Smalltalk object in the sense that it makes for files kind of what Smalltalk makes for objects. The more I start to focus on interactive writing and going away of the unix inspired OS world, the more the second insight become important to me. I didn't need to deconstruct/reconstruct or impose structure over flat files but to use outlining for structure thought by (interactive) writing and I need the outline be a fully programable object. That's the essence of most of my Leo experience and what I'm trying to bridge with the Pharo Smalltalk world (with the advantage of a fully introspective, portable and moldable computing and visualization environment)

Thanks for Leo and all the key inspiration it brings. And, as always, thanks to the Leo community for the food for thought.

Cheers,

Offray

--
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/d/optout.

Reply via email to