Hi all,

*Per the CouchDB bylaws, this is a concrete proposal that will default
to lazy consensus in 72 hours (2017.07.19 ~21:00).*

As we approach release candidates for v2.1 (see next email), we have one
major decision left to make: whether or not to include the scheduling
replicator in 2.1.

Arguments for inclusion:

* New feature allowing CouchDB to manage more replication jobs at
  the same time by switching between them / starting / stopping.
  From the documentation:
  * Handles failing jobs more gracefully (exponnential backoff).
  * Includes a new pair of API endpoints: _scheduler/jobs and
    _scheduler/docs with enhanced information and an updated state
    machine for replication jobs.
  * Shared connection pool improves network resource usage and
    performance, especially with large numbers of connections to
    the same source/target.
  * Improved request rate limit handling.
  * Improved recovery from long but temporary network failures.
  * Better handling of filtered replications.
* Feature includes its own tests, which all pass.
* Feature is fully documented.
* Cherry-picking out the scheduling replicator commits from the
  ~190 commits since then (all bugfixes and minor improvements) is
  labour intensive for the release team, and possibly error prone.

Arguments against inclusion:

* It has been ~9 months since the 2.0 release. Many bugs have been
  found and fixed.
* A new release without the scheduling replicator would provide
  risk mitigation for users who need those bug fixes but are risk-
  averse to new features.
* Scheduling replicator has not seen much real-world testing. Bugs
  may surface in a 2.1 release that could destabilise existing
  installs being upgraded.

I've thought a lot about this issue, and would like to propose that we
release 2.1 *with* the scheduling replicator included. My reasoning is
that the benefits outweigh the potential downsides. If necessary, we
can release a 2.1.1 in the following weeks with urgent bug fixes to
the scheduling replicator if necessary.

Another alternative would be to ~simultaneously release a 2.1 from just
before the scheduling replicator landed (~190 commits ago), then a 2.2
from the HEAD of the master branch with all the subsequent fixes. 2.1
would be missing these more recent fixes, but it would again avoid the
massive cherry-picking operation necessary to port all of them to the
2.1 branch without the scheduling replicator. I'm -0 on this because
of the confusion it might create with release announcements, but
wouldn't block if that was the desired path forward.

Developers, please make your voices heard! :)

-Joan

Reply via email to