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