I would vote for single repository and the following release scheme: we build 
and release everything, but deliver only that modules, which have actual 
features / bugfixes, skipping other from release iteration until new changes 
come into them.

Also, I’d propose versioning scheme, that will reflect Apache Ignite’s 
compatibility, i.e. if thin client requires features from Apache Ignite 2.4, 
then it’s own version will be 2.4.A.B (where A - own major version, that will 
be reset every new Apache Release, B - minor/fix version for minor / quick 
fixes goals that will be reset every new A version). 

> On 6 Apr 2018, at 16:15, Vladimir Ozerov <voze...@gridgain.com> wrote:
> Igniters,
> Over the last year we saw dramatic increase in demand for lightweight thin
> clients. We already have four: JDBC, ODBC, .NET, Java. In future we are
> going to have even more: NodeJS, PHP, Python, Go, whatever. I'd like to
> start a discussion on how are we going to host them. There are several
> approaches.
> 1) *Monolith* - everything is hosted in a single repository and released as
> a single artifact. This is our current approach.
> Pros:
> - Easy to manage
> Cons
> - Long release cycle
> - Client features must be developed in sync with each other which would be
> very hard should we have > 5-6 different clients:
> 2) *Modules* - clients are moved to separate repositories with their own
> release cycles. JDBC is released separately, ODBC separately, .NET
> separately, Java (guess what?) - separately, etc..They could have different
> timelines, different feature sets, different release notes, different
> versions. This is natural approach employed by multitude of vendors.  When
> new feature is added we do not need to wait for Apache Ignite release.
> Instead, we release only small client on it's own.
> Pros:
> - Fast and (sorry) agile release cycle!
> - No need to wait for months for new Ignite version
> - No need to sync features between different clients
> Cons:
> - More votes, more artifacts, more release-related code and scripts
> 3) *Hybrid* - all clients are hosted in a single separate repository and
> released in sync with each other, but not with Apache Ignite. Balanced mix
> of pros/cons from #1 and #2 approaches.
> Pros:
> - Relatively fast release cycle
> Cons:
> - Still need to sync features between clients
> I think that we should start moving our clients to #2 or #3 approaches to
> get greater momentum from community, What do you think?
> Vladimir.

Reply via email to