I’m favour of all that’s outlined here. Thanks for getting this written up, 
Joan!

Best
Jan
—

> On 5. Feb 2019, at 19:27, Joan Touzet <woh...@apache.org> wrote:
> 
> Hi everyone,
> 
> One thing that has plagued the CouchDB project for a while is the
> introduction of new features without much discussion prior to the
> feature landing.
> 
> To put all the cards on the table: it is good that IBM/Cloudant have
> been benevolent and have contributed significant new functionality with
> every recent release of CouchDB. Some highlights include:
> 
>  2.0: clustering code (née bigcouch)
>  2.1: replication scheduler
>  2.2: pluggable storage engines
>  2.3: clustered purge
> 
> However, most of these features landed as PRs on the CouchDB repository
> already complete, or at the very least, with the design process already
> finished, with only implementation details remaining. In at least a
> couple of the cases, the PRs were so large that any review by
> non-Cloudant people was effectively impossible. 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. Further, documentation is often lacking at this
> stage, though increasingly I see excellent README.md files placed at the
> top of each OTP application that are especially welcome.
> 
> This needs to change.
> 
> Fortunately, the Internet has a good precedent for dealing with this
> very issue: the RFC[1]. While we don't need the entire pomp and
> circumstance workflow that follows the RFC, we can certainly steal that
> nice template.
> 
> I've taken a pass at adapting the RFC template to GitHub's and
> CouchDB's needs (PRs welcome):
> 
>    
> https://raw.githubusercontent.com/apache/couchdb/master/.github/ISSUE_TEMPLATE/rfc.md
>    
> https://github.com/apache/couchdb/issues/new?labels=rfc%2C+discussion&template=rfc.md
> 
> I believe this template is not onerous to fill out, and if it contained
> sufficient detail on the proposal, would give committers enough knowledge
> to be able to make informed decisions about the proposal - i.e., vote on
> it.
> 
> 
> I propose the PMC REQUIRE this template for any substantial change to
> CouchDB's HTTP API, or its behaviour.
> 
> I propose developers SHOULD use this template for any change to
> CouchDB's HTTP API or behaviour, even small ones.
> 
> I propose developers COULD use this template for any minor change to
> CouchDB, but it's unnecessary if it's something like a debug interface,
> a config file improvement, etc. Documentation and Fauxton changes would
> likely be exempt from this workflow, too.
> 
> 
> I imagine the workflow being like this:
> 
>  * [DISCUSS]ions like the ones happening now for FDB happen on the list.
> 
>  * Consensus starts to be reached, or, at the very least, the important
>    advantages and disadvantages of the proposal have been clarified.
> 
>  * A filled-in RFC is filed in GH Issues.
> 
>  * (Optional.) A bot watches for issues of this type and forwards notice
>    of them to dev@. This becomes a [PROPOSAL] per our bylaws at that
>    point.
> 
>  * Committers formally vote +1/+0.5/0/-0.5/-1 on the proposal in GH.
> 
>  * (Optional.) A bot could close the vote and sum the responses from
>    committers, emailing the results to dev@.
> 
>  * Repeat if necessary (because the RFC gets rewritten/improved, etc.)
> 
> Note the only two new steps are 1) ensuring that we actually HAVE the
> discussion on the mailing list about the proposed change; and 2) a new
> template we should use for these major changes, which itself should help
> make understanding the proposal and the voting process smoother.
> 
> For me, the question that remains is: at what point do we REQUIRE the
> proposed RFC process to be followed? When is a change "substantial?" And
> I think that it may be sufficient at this point to leave it grey-area,
> with the PMC weighing in as a group if necessary. (The easiest thing to
> do is to simply say "do the RFC anyway," because if any proposal is
> sufficiently unclear as to not be easily translatable into an RFC, then
> it is probably too weak of a proposal to stand muster without one.)
> 
> One other question is whether or not we add a new decision type to our
> decision matrix in the Bylaws for this. Our rules are somewhat unclear
> here, since this is both a technical and a non-technical decision, 
> meaning it probably defaults over to our non-technical decision type.
> That type is lazy majority, with committers being given binding votes,
> but importantly does NOT allow for vetoes (blocking -1 votes). (I have
> one other topic for the Bylaws mailing, which will be separate, so we
> can pick up this discusison in that thread if desired.)
> 
> Thoughts?
> 
> -Joan "evolve or perish!" Touzet
> 
> [1]: https://www.ietf.org/standards/rfcs/

-- 
Professional Support for Apache CouchDB:
https://neighbourhood.ie/couchdb-support/

Reply via email to