On 10/24/2013 6:33 PM, Edward K. Ream wrote:
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

Ooh!  This I like.

If you want to draw more help, though, you'll have to generalize from 'bzr hook' to 'version-control-system-of-choice hook'. Whether this entails a single universal python script for all vcs', or tailored approaches for each system remains to be seen.

I postulate that for this scheme to become successful, the following version control systems need to be supported (at least!):
  - bzr
  - git
  - hg (mercurial)
  - cvs
  - svn

-->Jake

--
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 leo-editor+unsubscr...@googlegroups.com.
To post to this group, send email to leo-editor@googlegroups.com.
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