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.