On Wed, Jan 23, 2013 at 8:04 PM, Sergiu Dumitriu <[email protected]> wrote: > Short story: > > We should have less VOTEs, since too many votes is tiresome and > counter-productive. A vote should be fired only for critical stuff, or > when a compromise solution between suboptimal alternatives is needed.
+1 > > > Long story: > > According to the rules [1], a VOTE comes with strong requirements on the > committers: every committer must respond to votes, and vote only after > carefully analyzing and understanding what's being voted. > > In theory, this has several benefits: > - it ensures the openness, democracy and meritocracy of the community > - it ensures that all the affected parties can make their voice heard > when changes might affect them > - it lets the community know about big changes in the code, even if not > everybody votes > - it tries to maximize the quality of the code, since every design is > first validated by all the sharp minds participating in the project > - it tries to maximize the global shared ownership of the code, since > every developer gets involved in everyone else's code > > And all these are good goals, but when too much votes occur, downsides > emerge: > - decision fatigue [2], which means that votes get less attention, and > +1-ing is just an automated process -- +1 after reading just the > subject, or +1 if someone trusted already voted > - decision paralysis [3] will actually cause committers to stop voting > altogether on non-essential issues > - developer frustration, when every change has to be discussed at length > -- in theory, the vote process rules explicitly say that only major > changes must be voted, and even for major changes, only when the > committer isn't sure that everybody else will agree with the vote; > however, recently there has been an increase in the situations in which > things must be voted, and in most weeks several votes are started > --- [4] says that 103 votes were started last year, almost two every week > - reduced efficiency, less time for actual coding, since a lot of time > is spent on trying to understand what's being proposed in the votes > - it transforms the democracy into a bureaucracy > - it reduces the self-confidence of developers; in theory, a contributor > becomes a committer when the other committers consider him/her to have > the required knowledge, skills and overall understanding of the XWiki > code and guiding principles to be allowed to freely commit their own > changes. In practice, most changes still have to be discussed, voted, > validated before the actual commit can happen. > - while the vote right mean that all committers can say their opinion, > it also means that the vote is a two-way obligation, the obligation to > have their opinion validated by everybody else, and the obligation to > get involved and validate everybody else's code > > > I've been monitoring a few other communities, especially Apache > projects, the ones that we're supposedly modeled after, and I haven't > seen this huge amount of votes in any of them. Votes are actually > exceptional events, when something important happens: > - new committers > - releases > - major infrastructure changes, like switching from Ant to Maven, or > from SVN to Git > > For example, the Velocity project had 15 votes in the past three years > [5]. Maven had 125 votes last year, but almost all of them are release > votes, one for every plugin, and they have a lot of plugins [6]. > > > So I'm proposing to stick closer to the original voting rules, which > means that votes are sent only for major changes (in code, > infrastructure or community), and rely more on the lazy consensus > advertised in the vote rules [1]. Some of the purposes that the current > vote requirements try to address can be accomplished by other means: > > - API changes can be just announced > - code changes should rely on lazy consensus, and committers should > spend more time doing commit reviews Doing real code review (no just code style check) requires background information on the domain targeted by that code. Writing a mail to explain why you choose a particular solution is still a good exercise, even if it doesn't involve any API changes. Thanks, Marius > - we can use feature branches and pull request more often, since a pull > request is a request for comments > - we can go back to trusting the skills and common sense of our committers > > > [1] http://dev.xwiki.org/xwiki/bin/Community/Committership#HVoting > [2] http://en.wikipedia.org/wiki/Decision_fatigue > [3] http://en.wikipedia.org/wiki/Decision_fatigue#Decision_paralysis > [4] > http://xwiki.markmail.org/search/?q=subject%3Avote+date%3A201201-201212+-subject%3Are > [5] > http://velocity.markmail.org/search/?q=subject%3Avote+date%3A201001-201212+-subject%3Are > [6] > http://maven.markmail.org/search/subject:vote+date:201201-201212+-subject:re+-subject:result+-subject:cancelled+list:org.apache.maven.dev > -- > Sergiu Dumitriu > http://purl.org/net/sergiu > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

