Re: [Dbix-class] GOVERNANCE: An actually concrete proposal w/bootstrap governance system

2016-10-19 Thread John Napiorkowski
FWIW I think the idea of having a 5th user base seat is a great idea and I'd be 
happy to see that idea in other projects as well.  

On Tuesday, October 18, 2016 11:52 AM, Matt S Trout  
wrote:
 

 So, given the balance of comments so far has been in favour of my original
suggested core list, and given neither the mailing list members nor riba have
proposed a fifth, it occurred to me that there's a potentially better way
forwards.

Ladies, gentlemen, and mongers, the fifth "seat" is going to be the user
base, as represented by the subscribers to this mailing list.

Of course, for this to work, we need a voting system. And for said voting
system to not be a colossal pain in the arse now or later, it needs to be
both minimalist and flexible, while still providing checks and balances.

Obviously, being a massive nerd, the logical solution to this was to steal
the core concept from http://enwp.org/Nomic - so our bootstrap governance
is going to be a set of rules for voting, with a built in mechanism for
using those rules to modify the rules.

I've kept the initial list of "things that must have a vote" to just
'making a non-dev release' and 'modifying the rules' on the assumptions that
(a) rolling back bureaucracy is generally harder than creating it (2) any
attempt at guessing up front what we need would likely be a failure (iii)
provided you can vote for "undo X and don't do it again" (which given a
versioned repository is rather built in for most things) people can be
trusted to make reasonable choices about which Xes won't trigger that.

Possibly I've misjudged a bunch of things here. Possibly we'll only realise
that later. However, given the system is built to be evolved as we go, I
think this is an acceptable starting point, and can be evolved into exactly
as much of a checks-and-balances system as turns out to be desirable to
the userbase.

Oh, and I already ran it past castaway/ilmari/frew and made the relevant
tweaks as a result of their feedback (because it's nice to have consensus
and I figured "start as you mean to go on" would be a good plan).

As such, I hereby propose that, assuming the community agrees, the following
document be entered into the repository under the filename GOVERNANCE, and
that the PAUSE administration then update permissions accordingly:

=begin GOVERNANCE

DBIx::Class Core Team and Voting System

Non normative section:

DBIx::Class originally operated under a BDFL system, but one where it was
expected that an informal core team would be maintained, and that where
consensus could not be pre-assumed, the core team and/or the user base
would be consulted publically such that measured decisions could be made.

This document is intended to formalise a form of this system, while still
providing room for the system to adapt later as required.

It is intended that this system provides confidence to the user base that
decisions will be made in the open and that their wishes will be taken into
account.

It is also intended that this system allows business as usual to happen
without unnecessary red tape.

It is not intended that this system becomes the primary decision making
process in and of itself; instead, it is intended that this system is used
to ratify consensus as formed by discussion, and only sparingly as a tie
breaking system when consensus cannot be reached.

Normative section:

Terms: VM - Voting Member - part of the benevolent dictatorship
      LS - List Subscriber - a subscriber to the mailing list
      LAV - List Aggregate Vote - the aggregate vote of the non-VM LSes

Voting Members are:

  Matt S Trout (mst) cpan:MSTROUT
  Dagfinn Ilmari Mansaker (ilmari) cpan:ILMARI
  Frew Schmidt (frew) cpan:FREW
  Jess Robinson (castaway) cpan:JROBINSON

PAUSE release perms are to be held by:

  Matt S Trout (mst) cpan:MSTROUT
  Dagfinn Ilmari Mansaker (ilmari) cpan:ILMARI
  Frew Schmidt (frew) cpan:FRIOUX
  Jess Robinson (castaway) cpan:JROBINSON

(the above two lists may or may not be identical at any given time)

A resolution must be proposed and then successfully voted upon to:

  - Make a PAUSE-indexed (i.e. non-dev) release of DBIx::Class
  - Amend this document

A resolution that amends the 'PAUSE release perms' list is to be assumed to
also intend the permission within PAUSE itself to be updated accordingly.

Adding or removing entries from the list of situations requiring resolutions
is absolutely a valid topic for resolutions.

A resolution may be proposed for reasons including, but not limited to:

  - Force/revert/block a branch merge
  - Add/remove a commit bit
  - Resolve a design discussion
  - Anything you like, but if it gets -5 maybe reconsider your choices

Merges and similar actions that do not have a resolution attached may be made
at the discretion of those with ability to do so, but it is expected that in
any case that might involve non-trivial discussion a proposal will be made.

Having a resolution immediately proposed to revert a merge is expected to

Re: [Dbix-class] GOVERNANCE: UPDATED: An actually concrete proposal w/bootstrap governance system

2016-10-19 Thread Matt S Trout
There've been a number of suggested modifications. Some of them I like,
some of them I don't.

However, updating this document with just the ones I like seems like it
would rather be missing the point of a document built to encourage seeking
userbase consensus.

So, instead, I update my proposal only by adding one sentence:

"This document is currently in bootstrap phase, and as such no merges will be
made to master or blead until this sentence is removed."

This way, we can thrash out the pre-launch changes by running the various
suggestions made in this thread through the proposal system, and then once
we're done with that, remove that sentence via proposal and move forwards.

Anybody who wishes to change their vote as a result of this, please reply
here doing so.

=begin GOVERNANCE

DBIx::Class Core Team and Voting System

Non normative section:

DBIx::Class originally operated under a BDFL system, but one where it was
expected that an informal core team would be maintained, and that where
consensus could not be pre-assumed, the core team and/or the user base
would be consulted publically such that measured decisions could be made.

This document is intended to formalise a form of this system, while still
providing room for the system to adapt later as required.

It is intended that this system provides confidence to the user base that
decisions will be made in the open and that their wishes will be taken into
account.

It is also intended that this system allows business as usual to happen
without unnecessary red tape.

It is not intended that this system becomes the primary decision making
process in and of itself; instead, it is intended that this system is used
to ratify consensus as formed by discussion, and only sparingly as a tie
breaking system when consensus cannot be reached.

Normative section:

This document is currently in bootstrap phase, and as such no merges will be
made to master or blead until this sentence is removed.

Terms: VM - Voting Member - part of the benevolent dictatorship
   LS - List Subscriber - a subscriber to the mailing list
   LAV - List Aggregate Vote - the aggregate vote of the non-VM LSes

Voting Members are:

  Matt S Trout (mst) cpan:MSTROUT
  Dagfinn Ilmari Mansaker (ilmari) cpan:ILMARI
  Frew Schmidt (frew) cpan:FREW
  Jess Robinson (castaway) cpan:JROBINSON

PAUSE release perms are to be held by:

  Matt S Trout (mst) cpan:MSTROUT
  Dagfinn Ilmari Mansaker (ilmari) cpan:ILMARI
  Frew Schmidt (frew) cpan:FRIOUX
  Jess Robinson (castaway) cpan:JROBINSON

(the above two lists may or may not be identical at any given time)

A resolution must be proposed and then successfully voted upon to:

  - Make a PAUSE-indexed (i.e. non-dev) release of DBIx::Class
  - Amend this document

A resolution that amends the 'PAUSE release perms' list is to be assumed to
also intend the permission within PAUSE itself to be updated accordingly.

Adding or removing entries from the list of situations requiring resolutions
is absolutely a valid topic for resolutions.

A resolution may be proposed for reasons including, but not limited to:

  - Force/revert/block a branch merge
  - Add/remove a commit bit
  - Resolve a design discussion
  - Anything you like, but if it gets -5 maybe reconsider your choices

Merges and similar actions that do not have a resolution attached may be made
at the discretion of those with ability to do so, but it is expected that in
any case that might involve non-trivial discussion a proposal will be made.

Having a resolution immediately proposed to revert a merge is expected to be
taken as a hint to be more careful in future.

Rules that restrict this "ask unless you're sure" trust-by-default position
are also absolutely a valid topic for resolutions.

Resolution proposal:

A resolution is proposed by starting a new thread entitled 'PROPOSAL: ...'.

A resolution must be seconded before it is voted upon.

If a VM makes or seconds a proposal, they are required to abstain from
voting upon it.

If a non-VM LS makes or seconds a proposal, no such restriction applies.

Resolution voting:

Once a proposal is seconded, the initial proposer may start a new thread
entitled 'VOTE: ...' (voting does not automatically begin after seconding
in case other feedback leads the proposer to wish to alter and re-present
their proposal).

Each VM may cast one vote, either +1, -1 or abstain.

Each non-VM LS may post +1 or -1, and the aggregate of those form the LAV,
which is +1 if the total is positive, -1 if negative, or abstain if 0.

Voting closes after 72 hours of the last vote by anybody or after the
outcome can no longer be affected by further votes.

A resolution passes if it has a positive total vote count and at least one
VM has voted.

Once a resolution has passed, the resolution will be carried out by those with
the power to do so.  It will not be reverted without a new resolution
amending or reversing the decision of the previous once.

Passed resolutions will b

Re: [Dbix-class] Fwd: Re: GOVERNANCE: An actually concrete proposal w/bootstrap governance system

2016-10-19 Thread Matt S Trout
On Wed, Oct 19, 2016 at 12:22:07PM -0600, Darin McBride wrote:
> Also, this seems to fall in line with an earlier proposal to make the fifth 
> person "compatibility minded" which then earned a rebuke that such things 
> cannot be added after the fact.  However, it can - if the person in charge of 
> such things has an absolute veto over shipping (in this case, a non-dev CPAN 
> upload).
> 
> Chris's latter two suggestions are along the line of my own, but stricter and 
> clearer, so I would add +1 to those suggestions as well.  If you want to say 
> the community has a say, this puts some teeth behind it.  (Suggestion #1 I 
> would abstain from voting on :) )

I quite like Chris' thoughts overall, but feel like adding them by modifying
my proposal a-priori and effectively unilaterally-albeit-via-consultation
would unfairly prejudice the parts I like over the parts I'm less keen on,
so I'm going to leave the bootstrap proposal as-is.

However I would note that having the voting system tweaked using the voting
system as one of the first uses of the voting system is absolutely something
that was supposed to be possible, and would strike me as a pretty decent
validation that the self-modifying approach can at least theoretically work.

-- 
Matt S Trout - Shadowcat Systems - Perl consulting with a commit bit and a clue

http://shadowcat.co.uk/blog/matt-s-trout/   http://twitter.com/shadowcat_mst/

Email me now on mst (at) shadowcat.co.uk and let's chat about how our CPAN
commercial support, training and consultancy packages could help your team.

___
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk


Re: [Dbix-class] Fwd: Re: GOVERNANCE: An actually concrete proposal w/bootstrap governance system

2016-10-19 Thread Darin McBride
On Wednesday October 19 2016 11:20:43 AM Dave Howorth wrote:
> On 2016-10-19 05:07, John SJ Anderson wrote:
> >>> From: Chris Prather 
> >>> Date: Oct 18, 2016 at 11:56 PM
> >>> To: DBIx::Class user and developer list 
> >>> Subject: Re: [Dbix-class] GOVERNANCE: An actually concrete proposal
> >>> w/bootstrap governance system
> >>> 
> >>> So I'm only a interested user of DBIC. I took enough DBA classes in
> >>> college to make me painfully aware that I don't want to understand how
> >>> DBIC does what it does. I'm just very happy it does it.
> >>> 
> >>> I am however deeply vested in how the Perl community self-regulates, and
> >>> as such I've read probably more of this thread (and the related
> >>> threads) than is healthy for someone who really should be busy trying
> >>> to find paying work. That said I think this Governance Policy has
> >>> merit, there are only three changes I would recommend two need to be
> >>> made nearly immutable at the outset to be effective, one has already
> >>> been proposed and can be adopted later.
> >>> 
> >>> 
> >>> 
> >>> 1) The list of people with PAUSE COMAINT permissions and the list of of
> >>> Voting Members should always be identical. Best would be if FIRSTCOME
> >>> were held in trust by some DBIC account similar to how XML permissions
> >>> are held (https://metacpan.org/author/DAHUT), and everyone else on the
> >>> VM list were strictly co-maint. This might be overly complicated for
> >>> what is mostly symbolic reasons but it would go a long way to
> >>> demonstrating the new Governance.
> >>> 
> >>> If someone resigns from the VM then they are removed from COMAINT.
> >>> 
> >>> 2) Voting Members and the LAV (List aggregate Vote) have unilateral veto
> >>> power for any proposal. Meaning if any Voting Member or the LAV make an
> >>> explicit -1 to a proposal. The Proposal as it stands *in that thread*
> >>> is dead. It will need to be re-proposed in such a way that the vetoing
> >>> member either assents or abstains. This protects minority voices. My
> >>> preference would be to require unanimity of consent but that would IN
> >>> MY OPINION simply open the process up to be gamed during it's infancy.
> >>> 
> >>> Finally this has already been proposed but I would add my experience
> >>> with the Moose community.
> >>> 
> >>> 3) A full PROPOSAL is required to merge a topic branch into the mainline
> >>> release branch.
> >>> 
> >>> 
> > 
> > +1 to all Chris’s suggestions.
> > 
> > john.
> 
> I agree with Chris's observations too. It struck me that Matt's original
> voting proposals would mean that the community had no effect in
> practice; Chris's proposal seems to overcome that.
> 
> So +1 to Chris's suggestions
> and -1 to the original proposal as proposed.
> 
> Cheers, Dave
> 
> PS In constructing low-energy buildings it is vital to achieve an
> excellent degree of airtightness, which is not familiar to most
> builders. One way to achieve it is by nominating an 'airtightness
> champion' but that only works if the champion has the power to stop work
> and even order rework. I see a parallel.

This is no different in most fields - when you have something of utmost 
importance, you assign it to someone (or some group of people), and if things 
don't pass their review, all work halts.  We do the same thing with security 
at $work - if the security team doesn't sign off, it doesn't ship.

Also, this seems to fall in line with an earlier proposal to make the fifth 
person "compatibility minded" which then earned a rebuke that such things 
cannot be added after the fact.  However, it can - if the person in charge of 
such things has an absolute veto over shipping (in this case, a non-dev CPAN 
upload).

Chris's latter two suggestions are along the line of my own, but stricter and 
clearer, so I would add +1 to those suggestions as well.  If you want to say 
the community has a say, this puts some teeth behind it.  (Suggestion #1 I 
would abstain from voting on :) )

___
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk

Re: [Dbix-class] GOVERNANCE: An actually concrete proposal w/bootstrap governance system

2016-10-19 Thread Nigel Metheringham
I am pretty happy with either MST's original proposal or Chris Prather's
modified version (if pushed would go with Chris' amendments).

Nigel.


___
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk


Re: [Dbix-class] GOVERNANCE: An actually concrete proposal w/bootstrap governance system

2016-10-19 Thread Aaron Trevena
On 18 October 2016 at 18:34, Matt S Trout  wrote:
> On Tue, Oct 18, 2016 at 01:24:01PM -0400, Ashley Pond V wrote:
>> This starts to feel like a corporate process that will be tuned out by
>> what little community participates. Will more than two or three users
>> engage with this? Will they follow the code closely enough to have a
>> valid opinion?
>
> This was as little ceremony as I could add around a list-as-fifth-slot and
> still have something that seemed like it would work.
>
> And ... I dunno. We used to have some pretty wide ranging discussions in the
> Olde Days, I'm hoping we can get back to that again.

works for me.

> Even if what we end up with is the list mostly just nodding through what
> the core team decides, this system at least forces the core team to propose
> and decide in public, so it still seems like a net win over "trust the core
> team" alone.

Yup.

>> As far as stability goes, I'd like to see—actually, I'd like to insist
>> upon but I'm not a core dev so don't have the right—a performance
>> benchmark in the dist of the last few releases so it's clear when and
>> what code causes a change. DBIC won some extremely welcome performance
>> gains under RIBASUSHI and I don’t think it would be reasonable to ever
>> give them up for the sake of new development.
>
> I'd love to see a decent set of benchmarks written and become a standard
> thing to run before discussing a branch merge.
>
> I would not like to commit to "ever" because a lot of the optimisation has
> involved manual inlining and unrolling of recursion, and at some point we
> may hit a situation where in order to make it possible to add a feature
> outside of core something needs to be un-inlined to render it subclassable
> - and while riba's provided prior art for how to minimise the impact of that
> there would still likely be a slight slowdown, and I think that would need
> to be debated on the merits at the time.

Again agreed.

Sorry not much to add on these points beyond that.

A.

-- 
Aaron J Trevena, BSc Hons
http://www.aarontrevena.co.uk
LAMP System Integration, Development and Consulting

___
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk

Re: [Dbix-class] Fwd: Re: GOVERNANCE: An actually concrete proposal w/bootstrap governance system

2016-10-19 Thread Dave Howorth

On 2016-10-19 05:07, John SJ Anderson wrote:

From: Chris Prather 
Date: Oct 18, 2016 at 11:56 PM
To: DBIx::Class user and developer list 
Subject: Re: [Dbix-class] GOVERNANCE: An actually concrete proposal w/bootstrap 
governance system

So I'm only a interested user of DBIC. I took enough DBA classes in college to 
make me painfully aware that I don't want to understand how DBIC does what it 
does. I'm just very happy it does it.

I am however deeply vested in how the Perl community self-regulates, and as 
such I've read probably more of this thread (and the related threads) than is 
healthy for someone who really should be busy trying to find paying work. That 
said I think this Governance Policy has merit, there are only three changes I 
would recommend two need to be made nearly immutable at the outset to be 
effective, one has already been proposed and can be adopted later.



1) The list of people with PAUSE COMAINT permissions and the list of of Voting 
Members should always be identical. Best would be if FIRSTCOME were held in 
trust by some DBIC account similar to how XML permissions are held 
(https://metacpan.org/author/DAHUT), and everyone else on the VM list were 
strictly co-maint. This might be overly complicated for what is mostly symbolic 
reasons but it would go a long way to demonstrating the new Governance.

If someone resigns from the VM then they are removed from COMAINT.

2) Voting Members and the LAV (List aggregate Vote) have unilateral veto power 
for any proposal. Meaning if any Voting Member or the LAV make an explicit -1 
to a proposal. The Proposal as it stands *in that thread* is dead. It will need 
to be re-proposed in such a way that the vetoing member either assents or 
abstains. This protects minority voices. My preference would be to require 
unanimity of consent but that would IN MY OPINION simply open the process up to 
be gamed during it's infancy.

Finally this has already been proposed but I would add my experience with the 
Moose community.

3) A full PROPOSAL is required to merge a topic branch into the mainline 
release branch.





+1 to all Chris’s suggestions.

john.


I agree with Chris's observations too. It struck me that Matt's original 
voting proposals would mean that the community had no effect in 
practice; Chris's proposal seems to overcome that.


So +1 to Chris's suggestions
and -1 to the original proposal as proposed.

Cheers, Dave

PS In constructing low-energy buildings it is vital to achieve an 
excellent degree of airtightness, which is not familiar to most 
builders. One way to achieve it is by nominating an 'airtightness 
champion' but that only works if the champion has the power to stop work 
and even order rework. I see a parallel.


___
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk

Re: [Dbix-class] GOVERNANCE: An actually concrete proposal w/bootstrap governance system

2016-10-19 Thread Patrick Meidl
On Tue, Oct 18 2016, Leo Lapworth  wrote:

> On 18 October 2016 at 17:51, Matt S Trout  wrote:
> 
> > =begin GOVERNANCE
> >
> .
> > =end GOVERNANCE
> >
> > What say ye?
> 
> This gets the governance issue resolved and puts in place a framework that
> can evolve to fit what is needed at the time.
> 
> +1
> 
> Anything more is just detail which can be added as required by the
> community or core updating the governance in accordance with these rules.

+1

patrick

-- 
Patrick Meidl, Mag.
Senior Expert Software Engineering

IST - Institute of Science and Technology Austria
Am Campus 1
A-3400 Klosterneuburg, Austria

R I21.EG.115 (Building West, BT01)
T +43 2243 9000 1313
E pme...@ist.ac.at
W https://icp.ist.ac.at/search/users/pmeidl



___
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk