Our recent collaborative discussions have created a stunning new way to 
collaborate using Leo.

Suppose a group contains L Leo users (Leonard, Lester, ...) and N non-Leo 
users (Nancy, Nadine,...).

We may as well assume L > 1 and N > 1.

Kent and Terry have (finally!) convinced me that that Nancy a) must never 
see sentinels and b) must never pay any substantial price for not seeing 
them.  Furthermore, only one .leo folder can exist anywhere on Nancy's 
machine (and that should be in an innocuous place).  Let's call this folder 
the **cache**.  For now, we care nothing about how it works.

Zoom.Quiet provided an essential hint: use bzr/git hooks.  Earlier schemes 
for using such hooks failed because there were **pairs** of files floating 
around: with sentinels and without.  This creates an impossible-to-solve 
problem: namely ensuring that pairs were always in synch.

Standing in the shower after my swim this afternoon I saw the solution.

Suppose the "transmission line" (pushes and pulls) only carries files 
*with* sentinels.  This ensures lossless transmission of data and sidesteps 
the intractable synchronization problem.

The Leo project must provide *two kinds* of bzr hooks, one for Nancy and 
one for Leonard.

When Nancy does a bzr pull, **her pull hook will strip Leo sentinels**. My 
first thought was OMG: it can't be that easy!

Well, not quite.  Nancy can change a file and then push it.  How does 
Nancy's *push* hook recreate the file with sentinels??  Think about it...

Answer: Nancy's push hook uses the @shadow algorithm!!!  Nancy's *pull* 
hook will save the file *with* sentinels in the cache.  When Nancy pushes a 
file (without sentinels), the push hook will use the @shadow algorithm to 
create the file (with sentinels) that actually gets transmitted over the 
wire.

This will work!!!

Leonard needs neither a push hook nor a pull hook, but a pull hook that 
simulated @auto for files that *never* had sentinels might be useful.

Let's verify that Nancy will be (fairly) happy:

- Installation is low cost: she just installs Leo's push/pull hooks.

- Nancy will never, ever, will see a Leo sentinel.

- Nancy will see *slightly* slower pushes and pulls than will Leonard, but 
probably not slow enough to be noticeable.  In particular, paired files 
never get transmitted--only the (recreated) file *with* sentinels goes over 
the wire.

This scheme completely appears to solve the technical issues!

Let's consider management (team) issues.  They will typically depend on the 
ratio L/N.

- If L or N is zero, there is no problem ;-)

If L is one, this scheme has no advantages over @shadow: Leonard is not 
sharing Leo data with anyone!

If N is one, Nancy can probably be persuaded to accept *slightly* lower 
performance in order to please the group.

Otherwise, negotiations (or an edict from management) will decide whether 
this scheme will be acceptable to Nancy, Nadine, et. al.  If it isn't, 
Leonard, Lester et. al. will have to use @auto or @shadow.

This may be a perfect technical solution; team-related considerations might 
kill it.  Nevertheless, it is *far* better than anything I ever imagined 
before.  

This Aha would not have happened without Zoom.Quiet's questions and 
comments about collaboration. The Aha is a direct response to Terry's post 
that *finally* convinced me that is, um, unreasonable to blame people for 
not accepting Leo sentinels ;-)  It's a good thing Kent and Terry were 
around to stop me from making an ass of myself. This has been a stellar 
collaboration.  Thank you all!

Your comments please.

Edward

P.S.  No, this won't delay b1 further :-)

EKR

-- 
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/groups/opt_out.

Reply via email to