Extending VO

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Extending VO

Steve Litt
Hi all,

This is just a fleeting thought. I could as easily argue against it as for it.
But I might as well throw it out there.

Imagine if VO's native format were a filesystem. The outline would be a
directory. Each level 1 headline would be a subdirectory of the outline
directory. Every instance of body text would be contained in a file within
the directory representing its parent outline. Cloning would be a symlink :-)
Hoisting and/or groupware would be a matter of marking a directory as "signed
out" and then editing the headline's subdirectory as an outline. Interoutline
linking would be trivial.

Where it starts getting complicated is that headlines must have a text
representation, but must also sort correctly. Perhaps every file and
directory would have 12 character, base 26 filename, and in every directory
file aaaaaaaaaaaa would be reserved for the text representation of the
directory's headline. This would also take care of the unsightly spaces you
wouldn't want in a filename. New filenames would be inserted half way between
those that should be above or below them. However, there must be a facility
to "retree" in the event that filenames in a certain interval become
unavailable.

Where this starts to really unravel is in implementing it within Vim. What a
monumental task that would be! Also, it might marginalize Windows users
because (correct me if I'm wrong) there are no symlinks in Windows.

Well, so much for mental meandering. I've got a book to write :-)

Thanks

SteveT

Steve Litt
Author: Universal Troubleshooting Process books and courseware
http://www.troubleshooters.com/
_______________________________________________
VimOutliner mailing list
[hidden email]
http://www.lists.vimoutliner.org/mailman/listinfo/vimoutliner

Reply | Threaded
Open this post in threaded view
|

Re: Extending VO

Tim Roberts
Steve Litt wrote:
> Where this starts to really unravel is in implementing it within Vim. What a
> monumental task that would be! Also, it might marginalize Windows users
> because (correct me if I'm wrong) there are no symlinks in Windows.
>  

Actually, the NTFS file system DOES support symlinks.  They use the term
"junction point".  Almost no one knows about them.  A standard Vista
system uses them, because they decided to rename the "Documents and
Settings" directory to the more sensible name "Users".  "Documents and
Settings"still exists, but it's a junction to "Users".

Unfortunately, junction points can only point to directories, not
individual files.  NTFS does support hard links for files.

--
Tim Roberts, [hidden email]
Providenza & Boekelheide, Inc.

_______________________________________________
VimOutliner mailing list
[hidden email]
http://www.lists.vimoutliner.org/mailman/listinfo/vimoutliner
Reply | Threaded
Open this post in threaded view
|

Re: Extending VO

Scott Scriven-2
In reply to this post by Steve Litt
* Steve Litt <[hidden email]> wrote:
> Imagine if VO's native format were a filesystem.

Heh, I posted about this on 01-19, subject "Re: [Vimoutliner]
[OT] ThoughtManager".  The idea has been rolling around for a
while, but I haven't had time or motivation to implement it.

Essentially, it's an object tree stored on disk, using filesystem
concepts.  The hard part is that object trees don't map cleanly
onto any major filesystems.  Something gets lost in translation.  
It may be "close enough", though.

As for its relation to VO, well, the idea isn't very compatible
with Vim.  You might end up with an awesome outliner, but it
wouldn't be a good text editor any more.


-- Scott
_______________________________________________
VimOutliner mailing list
[hidden email]
http://www.lists.vimoutliner.org/mailman/listinfo/vimoutliner
Reply | Threaded
Open this post in threaded view
|

Re: Extending VO

Matěj Cepl
In reply to this post by Tim Roberts
On 2008-02-25, 19:02 GMT, Tim Roberts wrote:
> Actually, the NTFS file system DOES support symlinks.  They use
> the term "junction point".  Almost no one knows about them.  

They are IMHO hardlinks, which makes them more difficult to use
(and the reason, why Microsoft itself doesn't use them).

Matej

_______________________________________________
VimOutliner mailing list
[hidden email]
http://www.lists.vimoutliner.org/mailman/listinfo/vimoutliner
Reply | Threaded
Open this post in threaded view
|

Re: Extending VO

Steve Litt
In reply to this post by Scott Scriven-2
On Monday 24 March 2008 20:45, Scott Scriven wrote:

> * Steve Litt <[hidden email]> wrote:
> > Imagine if VO's native format were a filesystem.
>
> Heh, I posted about this on 01-19, subject "Re: [Vimoutliner]
> [OT] ThoughtManager".  The idea has been rolling around for a
> while, but I haven't had time or motivation to implement it.
>
> Essentially, it's an object tree stored on disk, using filesystem
> concepts.  The hard part is that object trees don't map cleanly
> onto any major filesystems.  Something gets lost in translation.
> It may be "close enough", though.
>
> As for its relation to VO, well, the idea isn't very compatible
> with Vim.  You might end up with an awesome outliner, but it
> wouldn't be a good text editor any more.

Hi Scott,

What's an object tree? What's different about it than any other hierarchy? If
it doesn't map cleanly onto a filesystem, how about XML, or maybe Ruby YAML?

Thanks

SteveT
_______________________________________________
VimOutliner mailing list
[hidden email]
http://www.lists.vimoutliner.org/mailman/listinfo/vimoutliner
Reply | Threaded
Open this post in threaded view
|

Re: Extending VO

Scott Scriven-2
* Steve Litt <[hidden email]> wrote:
> What's an object tree?

In short, it's the name for the idea you described.

It's a pretty generic term...  a tree structure, where the nodes
are objects (as in object-oriented programming).  It's one of the
most common structures in programming, along with lists and hash
tables.

The word "tree" isn't exactly right though, since in most
languages the objects in are kept in a free-form graph instead...  
leading to all sorts of complicated garbage collection and
reference counting.  But at least in VO, the structure is pretty
close to a strict tree.  (and on the filesystem, the structure is
also very tree-like)

Storing the outline in the filesystem as you described is
basically an attempt to make a limited object database, except
using a standard filesystem instead of a custom database.

http://en.wikipedia.org/wiki/Object_database

> how about XML, or maybe Ruby YAML?

Those lack many of the benefits of a filesystem, and XML also
lacks most of VO's current readability.  However, XML is one of
very few choices for working, widely-available object
serialization.  I expect, at least, that import/export options
for XML would be necessary, even if it's not the primary format.


-- Scott
_______________________________________________
VimOutliner mailing list
[hidden email]
http://www.lists.vimoutliner.org/mailman/listinfo/vimoutliner
Reply | Threaded
Open this post in threaded view
|

Re: Extending VO

Steve Litt
On Wednesday 26 March 2008 20:22, Scott Scriven wrote:

> * Steve Litt <[hidden email]> wrote:
> > What's an object tree?
>
> In short, it's the name for the idea you described.
>
> It's a pretty generic term...  a tree structure, where the nodes
> are objects (as in object-oriented programming).  It's one of the
> most common structures in programming, along with lists and hash
> tables.
>
> The word "tree" isn't exactly right though, since in most
> languages the objects in are kept in a free-form graph instead...
> leading to all sorts of complicated garbage collection and
> reference counting.  But at least in VO, the structure is pretty
> close to a strict tree.  (and on the filesystem, the structure is
> also very tree-like)
>
> Storing the outline in the filesystem as you described is
> basically an attempt to make a limited object database, except
> using a standard filesystem instead of a custom database.
>
> http://en.wikipedia.org/wiki/Object_database
>
> > how about XML, or maybe Ruby YAML?
>
> Those lack many of the benefits of a filesystem, and XML also
> lacks most of VO's current readability.  However, XML is one of
> very few choices for working, widely-available object
> serialization.  I expect, at least, that import/export options
> for XML would be necessary, even if it's not the primary format.


Hey Scott,

Just for fun, look at my EMDL project, specifically, the EMDL specification:

http://www.troubleshooters.com/projects/emdl/index.htm

This is an outline form language for specifying menus, and it's VERY keystroke
efficient and works great with VO. Perhaps there's a way you could make it
more general so a "schema-file" would define what could go under what and
could define fields and field abbreviations (like the one letter stuff I have
that's followed with a colon in EMDL).

Once you've defined that, converting it back and forth from XML is almost
trivial, so you could use VO as an editor, but store it as XML (or not).

SteveT
_______________________________________________
VimOutliner mailing list
[hidden email]
http://www.lists.vimoutliner.org/mailman/listinfo/vimoutliner
Reply | Threaded
Open this post in threaded view
|

Re: Extending VO

Steve Litt
On Wednesday 26 March 2008 21:57, Steve Litt wrote:

> On Wednesday 26 March 2008 20:22, Scott Scriven wrote:
> > * Steve Litt <[hidden email]> wrote:
> > > What's an object tree?
> >
> > In short, it's the name for the idea you described.
> >
> > It's a pretty generic term...  a tree structure, where the nodes
> > are objects (as in object-oriented programming).  It's one of the
> > most common structures in programming, along with lists and hash
> > tables.
> >
> > The word "tree" isn't exactly right though, since in most
> > languages the objects in are kept in a free-form graph instead...
> > leading to all sorts of complicated garbage collection and
> > reference counting.  But at least in VO, the structure is pretty
> > close to a strict tree.  (and on the filesystem, the structure is
> > also very tree-like)
> >
> > Storing the outline in the filesystem as you described is
> > basically an attempt to make a limited object database, except
> > using a standard filesystem instead of a custom database.
> >
> > http://en.wikipedia.org/wiki/Object_database
> >
> > > how about XML, or maybe Ruby YAML?
> >
> > Those lack many of the benefits of a filesystem, and XML also
> > lacks most of VO's current readability.  However, XML is one of
> > very few choices for working, widely-available object
> > serialization.  I expect, at least, that import/export options
> > for XML would be necessary, even if it's not the primary format.
>
> Hey Scott,
>
> Just for fun, look at my EMDL project, specifically, the EMDL
> specification:
>
> http://www.troubleshooters.com/projects/emdl/index.htm
>
> This is an outline form language for specifying menus, and it's VERY
> keystroke efficient and works great with VO. Perhaps there's a way you
> could make it more general so a "schema-file" would define what could go
> under what and could define fields and field abbreviations (like the one
> letter stuff I have that's followed with a colon in EMDL).
>
> Once you've defined that, converting it back and forth from XML is almost
> trivial, so you could use VO as an editor, but store it as XML (or not).
>
> SteveT

Thinking further about this, any hierarchical database could be created as an
outline with a separate "rules" file that has allowed fields and their
abbreviations, and rules about what can be under which, what has to be under
which, and the like. One could even have self-referential stuff, that would
simulate relational databases and even cloning.

A validator program could be written so that, with the "rules" defined
correctly, an outline could be validated by those rules. Another program
could be written to serve as a quick lookup for fields, based on the rules.

Of course, from the computer's viewpoint, this would be a partially crippled
XML. Its only benefit over XML would be an easy user interface (VimOutliner).

SteveT

Steve Litt
Author: Universal Troubleshooting Process books and courseware
http://www.troubleshooters.com/
_______________________________________________
VimOutliner mailing list
[hidden email]
http://www.lists.vimoutliner.org/mailman/listinfo/vimoutliner
Reply | Threaded
Open this post in threaded view
|

Re: Extending VO

Scott Scriven-2
* Steve Litt <[hidden email]> wrote:
> Of course, from the computer's viewpoint, this would be a
> partially crippled XML. Its only benefit over XML would be an
> easy user interface (VimOutliner).

Yeah, it sounds a lot like XML.  FWIW, XML isn't really that hard
to edit in vim, especially if you use folding and tab completion.

If you want something less verbose than XML, you might find lisp
and s-expressions useful.  Or, if you don't like all the
parenthesis, python can be somewhat coerced into acting like a
declarative language.

I'd guess that XML is probably simpler, though.  :)


-- Scott
_______________________________________________
VimOutliner mailing list
[hidden email]
http://www.lists.vimoutliner.org/mailman/listinfo/vimoutliner
Reply | Threaded
Open this post in threaded view
|

Re: Re: Extending VO

Tim Roberts
In reply to this post by Matěj Cepl
Matej Cepl wrote:
On 2008-02-25, 19:02 GMT, Tim Roberts wrote:
  
Actually, the NTFS file system DOES support symlinks.  They use 
the term "junction point".  Almost no one knows about them.  
    

They are IMHO hardlinks, which makes them more difficult to use 
(and the reason, why Microsoft itself doesn't use them).
  

Actually, that's wrong on both counts.  NTFS does support true hard links, but "junction points" are symlinks, and Microsoft DOES use them.  In Vista, for example, the folder that used to be "Documents and Settings" is now more sensibly called "Users"; the "Documents and Settings" folder still exists, but it's a symlink/junction point to "Users".

There are other examples as well.
-- 
Tim Roberts, [hidden email]
Providenza & Boekelheide, Inc.

_______________________________________________
VimOutliner mailing list
[hidden email]
http://www.lists.vimoutliner.org/mailman/listinfo/vimoutliner