There's a couple of related topics being discussed in a few separate
threads right now. Although they're in different threads, I believe the
voter turnout question, the mission statement question, the community
involvement question, and a few long-standing issues are all
inter-related. I will therefore attempt to address all of them in a
single (hopefully) coherent statement. Knowing me this will be long, so
grab some coffee. :-)
Problem 1: Voter turnout from voting representatives is embarrassingly
low. That has the potential to undermine FIG's work, as well as the
legitimacy of FIG's work in the broader community.
Problem 2: Who is FIG's target audience? Member projects? The PHP
community at large? PHP projects that want to interface with member
projects? There are inconsistent answers to this question.
Problem 3: How DO we want people other than FIG voting reps to be
involved in FIG? Or do we?
Problem 4: What projects should or should not be FIG members?
The status quo
=========
First off, to make sure we're all on the same page, as of today (and for
the past few years) FIG is, officially on paper, a consortium of
*projects*. I often equate it the United Nations of PHP. We voting
representatives are ambassadors of our respective projects, here to pass
non-binding resolutions that member projects may or may not ignore.
(Just like the UN...) We are not individuals, we are ambassadors of
projects, only. In some cases the ambassador of a project is also the
head of state; in some cases the ambassador is just a proxy for a core
team that takes their own vote; in some cases the ambassador has
basically free-reign from his/her project. That's up to each project to
determine.
Whatever we want FIG to be, whatever it once was, whatever it has the
potential to be, whatever some wish it were, that is, on paper, what FIG
is today.
That structure also does call into question the "community
representative" role, as it's essentially the "Other" project.
Membership
========
Because we never took the time to define qualifications for membership,
or expectations of membership (other than "don't be a jerk"), FIG
membership has come to be seen as mark of legitimacy. That is, most
people, including us (and including me), make one of the following errors:
1) "I want my project to be a member of FIG because that means it's an
official big-boy project."
2) "We should have project X as a member because project X has insight
to offer", although we never define what insight that is. (Guilty!)
3) "I want to be a member of FIG because I have insights to offer."
That is, we've conflated membership and participation. We're all guilty
of this. That is, I think, a key part of our voter turnout issue and
simply trying to coerce more people to vote is not going to solve the
root issue: What does membership even mean?
Our current standard of membership is, effectively, "people don't
dislike you/your project enough to feel bad for saying no." That is, to
be blunt, an abdication on our part to build an important part of this
group's definition. It is a problem, which is also a direct cause for
our low voter turnout. Yet I think we're afraid to define a metric for
fear that some, perhaps many, current projects wouldn't qualify for it
and grandfathering them all would undermine any changes we make.
Take, as an example, the recent async proposals. Until very recently,
the only member project that had anything to do with async was Guzzle.
So for "us", collectively, async doesn't matter at all and we shouldn't
be interested. Drupal, Symfony, Zend, Stash, Composer, none of them do
anything with async, so have no experience to offer, and are unlikely to
be doing anything with async in the near future. Which means... what do
we have to do with it?
If were were to JUST vote on behalf of our projects, then pretty much
all of us except Guzzle would be voting+0 if at all since it doesn't
affect us. At which point the Promise, Event Loop, etc. proposals would
never pass an entrance vote, or if they did it would be with one +1 and
15 +0s, which would technically pass but I think we'd all think
something fishy was going on. :-)
Yet we actively invited certain projects to join, specifically for these
specs, because we wanted their input. Which directly undermines our
repeated statement that you don't need to be a voting member to be
involved in FIG! We're being rather hypocritical on this front, and I
don't exclude myself from that statement.
There has been much discussion in IRC of late about the "cost" of
membership, which is basically zero. That's part of the problem, and
encourages "I care about PHP so I want to be a member" and "I implement
a bunch of PSRs, so I should be a member". There's nowhere we ask, of
projects, "ask not what FIG can do for you but what you can do for
FIG." In a large part that's because we don't want to require projects
to implement PSRs (because we know full well many will balk at doing so,
and rightly so), but it means we have a gap that is not filled by
anything. the cost/reward for projects to join FIG is all askew, which
is also why we have low turnout. We don't, as Paul Jones likes to put
it, "have skin in the game".
As an aside, this is one reason I didn't get around to voting on
phpSpec's application. I am in the process of re-evaluating my criteria
for when I would support a new member, and I'm not sure yet what
standard I would apply. I'd prefer to have that be an explicit
discussion, and for us to, yes, establish some common semi-objective
criteria that goes beyond "we don't hate you yet".
There are some that argue for "the person has shown they will contribute
to FIG", which while a laudable criteria... misses the point. Because
we are supposed to be voting on the *project*, not the person. So an
individual *person* being active may or may not have anything to do with
the value the *project* brings to the table, and vice versa. This split
personality disorder we have is not sustainable.
History
=====
As others have noted, FIG's origin story is rather controversial. Its
initial launch as the PHP Standards Group generated a lot of backlash,
which mostly boiled down to "Who the f* are you to declare standards
that I'm supposed to use? GTFO!" I was one of those people saying that,
in fact. :-) I believe most, although probably not all, of the "just
for us, please ignore us if you want" attitude that some have is
left-over from that whole affair. It's a way to deflect criticism
(whether legitimate or not).
(Fun fact, if you check the ancient FIG archives you'll find a brief
discussion about adding new members, which included "what about that
Larry guy from Drupal? He seemed involved" followed by "Ugh, that jerk".
<g> I don't rightly recall who said the latter, and I've not gone back
to refresh my memory in the interests of peaceful coexistence.)
Perception is everything
===============
Be that as it may, that was six and a half years ago. FIG has changed a
lot since then, as has its relationship with the community. I believe
Anthony is very correct on this point: Whether it was intended or not,
whether we want it to be or not, FIG is effectively the PHP Standards
Group. We don't need another standards body; despite the name, FIG is
it. I know there are some that don't like that and are still in denial
about it, but we don't get to vote on that.
PSR-2 may have been "just for us", and I've made no secret of my dislike
for some portions of it, but it *is* the coding standard of PHP now,
whether members or not, and has been since IDEs started offering it as a
preset. PSR-7 may have been "just for us", but it is rapidly becoming
the way future PHP projects will deal with HTTP handling, whether
members or not. PSR-3... honestly I don't know how we can pretend that
was "just for us", since it was made very clear during the discussion at
the time that the target audience was "libraries that need logging", the
vast majority of which are not us.
We do have a responsibility to the broader PHP community at this point.
We may or may not want it, but that is, to be frank, irrelevant. We
have it, whether we asked for it or not. We may have no "hard power"
ability to enforce a PSR on anyone, but we have a great deal of "soft
power" influence on the whole ecosystem, which we should use wisely.
Does that itself necessitate some massive change in FIG's structure?
Not on its own, necessarily. It does necessitate a small change in our
own behavior, though: Quite simply, any time you say "it's just for
member projects, everyone else can ignore it if they want so we
shouldn't care about them"... you're wrong. You're harming FIG, and
you're harming PHP. Please stop.
Relationship to the community
==================
This ties into several of the previous points. Just what is FIG's
relationship with non-voting-rep PHP developers? To what extent should
we be reaching out to them deliberately? Again, we've been extremely
inconsistent on this front, to the point of incoherence.
1) Do we want people to get involved individually, reviewing PSR or as
the editor of a PSR?
2) Do we want people to pipe down, instead contributing through their
voting reps?
These are mutually exclusive positions, yet I've seen both stated even
just in the last few days. Every time we tell someone they should talk
to Cal on behalf of the community, we're telling them they shouldn't
engage directly. The subtly in "talk on your own, but talk to your
voting rep on the side about voting" is, I fear, lost on the Interwebs,
especially when that's not how we say it explicitly. This mixed
messaging is problematic and off-putting.
At the same time, which community do we mean? We speak as if there's a
single entity called the PHP community. That's not true. 5 years ago I
would have said that's not even remotely true. The Renaissance of the
past few years and the intensely hard work by many many people have
managed to remove the "remotely" from that sentence, but PHP is still an
enormous ecosystem so we can't really speak of it as a single entity.
Which PHP community? Conference-goers? Reddit Regulars? The
Twitterati? The thousands of people on php-general still trying to
figure out how a for loop works? Facebookies? Internals devs? People
who forget that not everyone installs PECL modules? Those that don't
know what PECL is? The hundreds of thousands of outsourcing consultants
in the US and Europe that clock in, spew some code, and go home? The
hundreds of thousands of outsourcing consultants in India or Southeast
Asia that clock in, spew some code, and go home?
And that's not even getting into project affiliations, who are probably,
in the broad scheme of PHP, a minority. (Meaning Cal nominally
represents likely 1000x as many people as the rest of us do. Some of us
represent a development team of 2-3, or perhaps even 1 for some libraries.)
If even 0.000001% of the entire PHP ecosystem joined this list, we'd
probably melt the server. It is, simply, impossible for all of them to
have a direct voice, and I'd wager that the majority of them don't care
to. Yet far more than that will be impacted by our work, long-term.
Side note: That should be an unsettling thought. If it's not, you
haven't been paying attention. :-)
So while promoting FIG's work in other venues sounds good, and is
probably a good idea... what's the goal? To get more people to know
about FIG? To get more people on the list, by which I mean warm
bodies? To get more people with "skin in the game" (whatever that
means) on the list? To get more people talking to "their" FIG reps
outside of FIG? What is the problem we're trying to solve?
Quality vs. Quantity
============
This question overlaps with the "Relationship with the community" topic,
and the "Membership" question. And it comes down to this very
important, but not always comfortable, statement: Not all contributions
or contributors are equally useful. Cf,
http://www.garfieldtech.com/blog/experts-opinions
Part of what makes this question tricky is that it can also be highly
contextual. There are areas where I am very experienced, and frankly
people should listen to me. :-) Async is not one of those, so when it
comes down to it, Aaron or Chris's voice should be listened to far more
than mine on the "right" way to build an async event loop. In other
areas, it's the other way around.
Does that mean only people above a certain threshold of experience or
cluefulness should be able to vote on a given topic? Or give input on
it? Or that we should somehow explicitly denote those who are topical
experts?
I'm not saying yes to any of those, just that they're fair, if
uncomfortable, questions.
By the same token, though, quantity of input does not guarantee quality
of output. In fact, it may reduce it. That's one reason I'm reticent
to put out a call for everyone in the world to come give input on
proposed PSRs. Adding 100 drive-by reviews of a PSR does not improve
it. If anything I'd say it's harmful if those drive-bys are unaware of
the context and background in question. If multiple non-expert people
are confused by a given point that is valuable input, but it only takes
a few people. In usability testing, diminishing returns start around
5-6 participants. Beyond that, you're not getting any new information.
We have 5-6 uninformed people on any topic we could consider, even just
amongst our own current voting members. :-)
Similarly, there is not a great deal of value to be found in repeating
the same feedback over and over. I'm sure Matthew can relate to this as
well; once a topic has been considered and chewed through and a
conclusion reached, there is little value in rehashing it again and
again and again. Sometimes something useful comes of it, if a new angle
can be brought forward that wasn't previously considered, but the same
raw opinion (not data, but opinion) adds only a little more value the
second time, barely any the third, and by the 5th none at all. At that
point, the quantity of feedback, if it is not of high quality, becomes
counter-productive.
How many of us have seen issues in our own projects stalled out not for
technical reasons but because a few loud voices simply shouted it down,
or worse, was derailed by someone coming in on step 15 of 20 to insist
on reopening step 3? I know I've seen that more times than I want to
remember in Drupal.
I know it's politically incorrect to discourage involvement, or to say
that someone's input is not valuable. You're not supposed to do that,
because "everyone has something to add" and all that. However, that
platitude is not actually true. And we implicitly admit that every time
we tell people to go through their voting reps (eg, Cal) rather than
speaking up on the list directly. In a sense, we push the task of
filtering the useful vs unuseful input to the voting reps off-channel. :-)
I don't have a specific action item for this section, other than
reminding everyone to not confuse quantity and quality. Sometimes a
small, uninterrupted group of experts or committed parties is far more
effective than a broad but shallow group. Depth over breadth.
Where do we go from here?
=================
All of that being said, and at great length... now what?
There are X things I would say we need to do, as a group, in order to
move forward, and as they're all inter-related this is not necessarily
in order:
1) Decide if the UN model really is the right way to organize FIG. On
paper we are. In practice, we're a sort of hybrid between that and "the
cool kids", which is part of the problem. If we want to be just "the
cool kids", that could be valid, but we'd need to define explicitly what
our definition of "cool kids" is, and it would need to NOT include "is
lead of a project that we think is cool by some unclear definition". Or
we could stay with the UN model, but be much clearer on it. The current
split-personality situation is, I believe, harmful. In either case, we
need to have an explicit, written set of criteria for membership that
goes beyond "well we don't hate you so meh".
2) Figure out explicitly, and document, what the benefits are of FIG
membership and the costs. Currently the only cost is "you vote
occasionally", which is too low. There needs to be some ongoing
responsibility and commitment that a project (or person, if we go that
route) makes to FIG's mission statement.
3) Figure out a proper mission statement, which acknowledges the role we
play in the broader PHP ecosystem beyond just the individuals and/or
projects listed on the web site.
4) Figure out a formal way that we want input from non-members (whatever
non-members means), and ensure that it's consistent and not double-speak.
I highly recommend we look into how other standards bodies are organized
for insight before we start brainstorming possible "costs" for
membership. It may even be advisable to get some formal consultation
services.
There is a very good chance that these steps will result in a number of
our current member projects no longer being eligible. It's
uncomfortable to acknowledge, especially when it could be you that may
end up disqualified, and not necessarily just on "size". However, I
think we need to bite that bullet. I've been down this road before,
when the Drupal Association transitioned from a working board to a
policy board and dropped a number of board members. We made sure it was
a graceful process and didn't come off as "kicking out" anyone, but it
did change the composition of the board, and as an organization we've
been far better for it.
For those who are still awake after reading all of that, I'm impressed.
:-) I firmly believe that we cannot look at these various questions in
isolation, which is why I've attempted to document how they all link
together. My hope is that it has made some semblance of sense.
--Larry Garfield