I'll first preface this the fact that I'm totally on board with adding
an RFC process for designing large features. I think that's definitely
entirely reasonable and is something that could do with some better
formalization so that we're all aware of larger developments going on
(assuming we'll have a nice tidy place for storing and referring to
our RFCs and so on).

> This needs to change.

Going through your list:

* Merging BigCouch was admittedly big but that work was very public
[9], starting in March 2013. The merge/commit was voted on in May 2013
[10] however we didn't actually have a 2.0 release including that code
until September 2016 [11].

* Pluggable storage engines were first described at [1] in June 2016.
The API was developed in the open. The first commit notification
mentioning it was in Feb 2017 [2]. And the PR wasn't merged until Feb
2018 [3].

* The scheduling replicator was first mentioned in March 2016 [4]. The
first commit emails started around June 2016 [5]. And it wasn't merged
until May 2017 [6].

* The ticket for clustered purge work was opened in March of 2017 [7]
with commit notifications starting the same day. That PR wasn't merged
until August 2018 [8].

>  In at least a couple of the cases, the PRs were so large that
> any review by non-Cloudant people was effectively impossible.

* BigCouch was a 3 year slog
* PSE: PR open for 10 months
* Replicator: PR open for 1.5 months
* CP: PR open for 1.5 months

Yes these were big PRs, and yes they took a long time to review. But
there was plenty of time for anyone to do that review (and there were
a number of non Cloudant people involved in these listed).

> And, of course, by the time the PR lands, any prototype implementations
> that would have informed the final PR (and helped understand how it
> works) are not visible or available.

While I'm not sure about prototyping, I do think RFCs would help solve
this problem. It definitely helps to know what the reason a PR even
exists and maybe why various other approaches were discarded before
starting to review it. I don't personally know of much prototyping
related to these sorts of features. There's definitely evolution to
them based on various restrictions and that is captured on our
commits@ lists (obviously in a difficult to consume format post facto,
but useful for anyone following along at least).

However, I think describing these as "features [that] landed as PRs on
the CouchDB repository already complete" is way beyond approximately
consistent with history which is what I'm mostly pointing out. Adding
RFCs won't solve the issue that large features almost by definition
have correspondingly large PRs that can be daunting to review. I do
think having an RFC may make it easier, but I don't think its solving
the problem as posed.

[1] 
https://lists.apache.org/thread.html/2d4b4623184504502c29da54eede581c1cf91f4de3f94c024bea1e7b@%3Cdev.couchdb.apache.org%3E
[2] 
https://lists.apache.org/thread.html/d83e8ee320d2b7374ee486234bb645d063238b891f7c1d28878636de@%3Ccommits.couchdb.apache.org%3E
[3] https://github.com/apache/couchdb/pull/496#event-1497125544

[4] 
https://lists.apache.org/thread.html/62254e60737450057509adbb43858a1067466a4f957fcbe4e7fd0936@1458412573@%3Cdev.couchdb.apache.org%3E
[5] 
https://lists.apache.org/thread.html/1387b37835bcfb570a094e5aca488138e9544744a6de9fd89e697199@%3Ccommits.couchdb.apache.org%3E
[6] https://github.com/apache/couchdb/pull/470#event-1082902923

[7] https://issues.apache.org/jira/browse/COUCHDB-3326
[8] https://github.com/apache/couchdb/pull/1370#event-1800759934

[9] https://twitter.com/davisp/status/312099513613549568
[10] 
https://lists.apache.org/thread.html/89777918304b3c5c070d45eb55a369a3be37d271047707d8176d17fd@1367958848@%3Cdev.couchdb.apache.org%3E
[11] 
https://blogs.apache.org/foundation/entry/the_apache_software_foundation_announces99

Reply via email to