Hi,

I read all the thread on db-oriented version of Leo. I got lost on implementation details (what is a shame... :-/), so I'm just want to say that the things that Alia points here about a single db file containing all data (external or not) of a project, and collaboration for free is already possible working with Leo + Fossil without the need to reinvent fossil, as Edward fears, but just talking more explicitly to it from Leo. That's what me and my team are doing. It is a newbie non-programmers approach but is working for us. This is what we do to collaborate using Leo + Fossil to work collaboratively on a project called "The Project":

We create a Folder called "TheProject" with the following structure:

TheProject/
|_ theProject.fossil
|_ collaborator1TheProject.leo
|_ collaborator1TheProject.leo
:
|_ collaboratorNTheProject.leo
|_ Folder1/
  |_ file1-1.abc
  |_ file1-2.xyz
  :
  |_ file1-n.xyz
|_ Folder2/
  |_ ...
:
|_ FolderN/
  |_ ...

There is still a lot of shared convention to make this work. The idea is that TheProject contains .leo files which are _personal views_ of each collaborator on the data of the project, usually scattered across external files, which are inside the same folder. theProject.fossil is the personal repo of each collaborator containing the history of the collaboration and the files. We don't need to have versions of each collaborator on external files or on the fossil repo, because putting this data in conversation is the work of fossil, using a central repository or in a p2p fashion (if Internet is not working but we have still Intranet, or at the first stages of a project when there was no central repository). Each of us works on external data or in leo personal views as it fits the workflow of everyone and use fossil for coordination. We abandon, for the moment the idea of shared Leo trees as shared understanding of a project, but we can see others peoples threes when we want and use the Nav button to locate the particular info and see the context of it in the personal view of somebody else. We use some ideas of GoboLinux about[1] having a personal convention for organizing the files and symlinked to canonical Gnu/Linux trees.

[1] http://en.wikipedia.org/wiki/GoboLinux

This convention and hierarchy let us to carry the project and its history in a single Folder, so it can be seen as plain data or as a fossil repository. There is replication on information, having it in the fossil repo and in TheProject folder, but having this alternative approach from the point of view of the repo or the plain files, justifies this redundancy. Still we have a lot of portability carrying just one folder and its contents or just carrying the repo.

Now having convention over configuration was our choice, but we imagine a more automagical world: At first we want to create buttons and commands inside Leo to all the external operation of fossil, but now seeing this discussion I imagine further levels of conversation between fossil and Leo. The idea of a sea of nodes in a Leo database, seems a lot like the idea of a sea of objects in Smalltalk images. And this idea of emergence in the sea of data seems more suited for a NoSQL database, but fortunately Fossil is already a NoSQL database[2], which supports external files, collaboration and portability.

[2] http://www.sqlite.org/debug1/doc/trunk/www/theory1.wiki

So the question is, how to increase conversation between Fossil and Leo to solve some of the problems addressed on this thread? My first idea was to use the DAG[3] support in Fossil to map DAG in Leo, so Fossil would have kind of special trees which are not for tracking project time line[4], but Leo trees and the second one was using NoSQL sea of nodes implemented in the NoSQL fossil database. As I said I have not the proper knowledge about implementation details, so I will hold this ideas until a more knowledgeable person tell me more about the implementation or I have a proper context to play with them.

[3] http://www.sqlite.org/debug1/doc/trunk/www/branching.wiki
[4] http://www.sqlite.org/debug1/timeline

Cheers,

Offray

On 12/26/11 08:19, Alia K wrote:

So, just speculating out loud, let's assume the following:

- the db maintains leo tree state: node content, structure and
versions thereof which are saved by default (until an explicit 'flush'
or 'shrink' command does away with prior or unneeded versions)

- all external files are just rendered views of a particular
(versioned) state of the leo db. i.e. filesystem objects are generated
on demand.

- the leo ui gives the user the option to save, view and edit versions
of leo nodes (and their head + body data)

- the db fulfils the part of @shadow sentinel files




If we are using sqlite, we would therefore get one file (a leo project
file) which carries within it (if unshrunk) a versioned history of all
the changes made to all nodes in terms of content and structure.

If we are using a networked RDBMS (e.g mysql, postgres, sqlserver,
oracle, etc.), we get multi-user leo projects for free (because each
change to the leo node structure is saved on the server and references
a particular user.)

This means that the sql data model for leo projects should be able to
capture all changes by multiple users to all aspects of the project
data and structure.

--
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/leo-editor?hl=en.

Reply via email to