Hey all,
As you may or may not have read, I wrote a blog post a few weeks ago
about making the PSR/FIG group/standards more open and more beneficial
(
http://blog.ircmaxell.com/2012/05/open-standards-better-way.html ).
Well, as promised, here is my first recommendation to that effect:
Have a canonical source of information for proposals.
Right now, there's a lot of conflicting information around where
proposals live. There's some indication that they should live in the
master repo under /proposed. There is another indication that they
live in other people's forks. Then there's this post
https://groups.google.com/group/php-standards/browse_thread/thread/8d9278f5b7593548
that says it doesn't matter, but it won't be in the master repository.
That's very confusing to an outsider. I shouldn't have to follow mails
on a list to view a proposed standard.
My suggestion: Use the current proposals folder on the master branch
of the master repo (
https://github.com/php-fig/fig-standards/tree/master/proposed
) to document all officially accepted proposals. What does that mean?
Well, let's follow through an example workflow of how a standard might
be adopted (what I would like to see):
Step 1: A draft is written by someone from the community (for clarity,
let's say it's a non-voting member, but it works either way). They
write it however they want (github, blog post, whatever).
Step 2: They start a thread about the draft to the mailing list. It's
discussed and evolved.
Step 3: A voting member decides it's ready (by themselves, no vote
yet), and chooses to "sponsor" the draft.
Step 4: At this point, the draft becomes a proposal, is numbered and
pulled into the /proposed folder of the master repo.
Step 5: The sponsor sends a RFC email to the list about the official
proposal, starting a discussion.
Step 6: After at least 2 weeks in discussion, a last call request is
made by the sponsor (speak now, or forever hold your peace).
Step 7: After 1 week after the last call, a vote is called for by the
sponsor.
Step 8: If approved, the proposal is moved into /accepted. If not,
it's moved into /rejected...
Note that steps 4, 7 and 8 are binding. Once you hit those steps, a
idea cannot go back to an earlier step. So a proposal cannot go back
to draft once it is sponsored. It would need to be rejected first,
then re-issued as a new draft. The reason is so that it's clear what's
being voted on and everyone can understand what was changed (so that
there are not moving targets).
Now, there's some significant rationale behind this methodology. The
first is that nothing can be officially proposed without the backing
of at least one voting member. That should help to keep down proposal
traffic to just proposals that would get at least one vote. Second, it
attempts to keep things solid once they are proposed, so that people
understand what's being discussed (it's not a moving target). It also
allows for the numbering to be consistent (since the numbering is done
at sponsor time by the voting body).
More importantly, it provides a canonical place to view proposals.
Don't undervalue this concept. When PSR-1 was proposed, it took a good
bit of time searching to try to find the official proposal. It wasn't
linked to from the working groups github site. The only way I found it
was to dig through the mailing list archive to find what I assumed to
be the official proposal. Having the proposals be in the master github
account allows people to come view all official proposals in one
place, and not have to worry about old content or conflicting content,
or other changes.
The most important point is that it should lower the barrier to
participation. Both on the proposing an idea side, and the commenting
on proposed ideas side. People may not want to follow the mailing
lists. But that's no reason they shouldn't have first-class access to
the proposals...
Thoughts?
Anthony