[os-infrastructure] Re: [os-engineering] Model discussion boiled down

Joe Abbate joseph.abbate at ingres.com
Wed Jun 25 06:03:17 PDT 2008


Stephen Ball wrote:
> Two comments:
>
>  - Customers are almost certainly paying us for the support and patching
> we provide on our certified binaries, even availability of GA code will
> make very little difference to that. Whether a customer decides to pay
> us for Support is unlikely to be affected by what source code we give
> them, and is hardly even a consideration in this equation.
>
>  - One other disadvantage of the "fresh" model is that it is complicated
> to code and maintain. We either:
> 	1) work a "two phase commit" model on Piccolo and SVN, which
> means a Subversion crash means piccolo is not available (or vice-versa)
> 	2) Work an "immediate" replication model, which leaves us open
> for collisions, although unlikely.
> 	3) we do "two phase commit" when we can and fall back to
> deferred when one of the systems is down, in which case we have to code
> a way to "catch up".
>   

In my mind, the fresh model implies the following:

(piccolo)
main --------------------------------------------------
\ \ * \
---- 2006r2 --- \ \
--- 2006r3 --- \
--- 9.4 --

(svn)
main ---------------------------
\ \
--- c9.4 \
--- c9.5

The * is the point at which svn is branched from Piccolo main. From that 
point forward, every change submitted to p-main would have to be 
committed to svn and every svn-main change would have to replicated back 
to p-main. Currently p-main is used to cross-integrate changes from many 
different codelines not shown in the diagram, e.g., if SE has to apply 
an oping20 fix to ingresr30, they usually have to integrate via p-main, 
even if the relevant feature is no longer supported in current releases. 
On the Subversion side, I think svn merge allows integrations without 
passing through the trunk, but otherwise you have a reverse flow problem.

An alternative scenario is to use a buffer branch/codeline:

(piccolo)
main --------------------------------------------------
\ \ \ \
-- 2006r2 -- \ \ \
-- 2006r3 --\ \
\ --- 9.4 --
---svncopy---
(svn)
main ---------------------------
\ \
--- c9.4 \
--- c9.5

Although it would require some additional manual intervention, I think 
it lessens the impact of implementing the synchronization and more 
importantly the almost inevitable problems that will arise in actual 
use. Furthermore, if not all platforms or not all features are to be 
included in the Community Edition, the "svncopy" branch need not include 
all the main tree, e.g., if Spatial or VDBA or alpha!cl are not to be 
included, it's easier to control in a Piccolo branch. If nothing else, 
the buffer codeline can be used as an initial sandbox for 
experimentation, until we're comfortable with the idea of continually 
synchronizing the two main branches.

Joe


More information about the opensource-infrastructure mailing list