OpenJDK GB Minutes: 2007/7/12
Mark Reinhold
mr at sun.com
Thu Oct 4 12:05:56 PDT 2007
Attached please find the minutes of the first meeting of the Governance
Board. The minutes are also available on the web:
http://openjdk.java.net/groups/gb/2007-07-12.html
To answer an obvious question: These meetings were held way back in July;
why are the minutes only being published today? Summer vacations, busy
schedules, and a series of unforeseeable non-work calamities conspired to
induce this delay. As Chair of the GB I will endeavor to produce minutes
in a more timely fashion going forward.
Respectfully submitted,
- Mark
-------------- next part --------------
OpenJDK Governance Board Minutes: 2007/7/12
Mark Reinhold <mr at sun.com>
The first meeting of the OpenJDK Governance Board took place via conference
call on Thursday, 12 July 2007 at 16:00 UTC, with the following agenda:
1 Chair selection
2 Work plan and working style
3 Constitutional principles
All GB members were present: Doug Lea, Fabiane Nardon, Dalibor Topic, Simon
Phipps, and Mark Reinhold.
The intent of these minutes is to capture the conversational flow of the GB's
discussion and also to record agreed-upon resolutions. If you are interested
only in the latter then search for the word "AGREED" throughout the text.
1 Chair selection
Doug immediately nominated Mark to chair the GB; Dalibor seconded the motion.
Mark observed that the responsibilities of the position are primarily to
coordinate and run meetings, take notes, and publish minutes. No other
nominations were offered. The GB then unanimously
AGREED: Mark Reinhold will Chair this OpenJDK Governance Board.
2 Work plan and working style
The primary task of this interim GB, as set forth in the OpenJDK Charter, is
to write the OpenJDK Constitution. Mark proposed that the GB should start by
brainstorming on a set of abstract principles for that document. The idea is
not to spend six months boiling the ocean but, rather, to get all the GB
members onto the same page, more or less, as the first step of the drafting
process. The GB agreed to this plan.
Mark then observed that, since this Community is about open development, it
follows that as much of the discussion as possible should happen in the open,
on the gb-discuss mailing list. Simon agreed that anything less would be
looked on "rather dimly." Dalibor agreed, and wondered whether he should've
asked people on IRC for input before this meeting. Mark said he thought this
would've been fine, and consistent with being open. He said he expected that
publishing the minutes from this meeting would get the discussion going, both
amongst the GB membership as well as with the wider community.
Simon noted that the OpenSolaris GB has published its conference-call number
and arranged it so that anyone can call in and listen, though only GB members
can speak. Mark added that he'd seen that they were posting mp3 files of
their meetings, and asked: Should the OpenJDK GB should operate in the same
way?
Simon said that this "scared the willies" out of him. Doug said that it
sounds fine; if anyone is crazy enough to listen to us, then more power to
them. Simon replied that he's generally found that these types of meetings
go more smoothly if you don't have to worry about being politically correct
all the time, and that as long as the results are transparent then publishing
mp3s is not all that helpful; Mark agreed.
Simon further proposed that the published minutes shouldn't just be a list of
agreed-upon resolutions but, additionally, a record of the conversational
flow so that observers can get a sense of the discussion. The general idea
is that all results and the pathways to get to those results should be
documented. Mark agreed that this seemed reasonable.
Dalibor said that from an extremist viewpoint opening everything up would be
good, but on the other hand written, conversational minutes would be much
more valuable than mp3s. Simon observed that a great way to prevent openness
would be only to publish mp3s -- who would have time to listen? Mark agreed,
noting that he'd much rather read well-written minutes than listen to an
hour-long mp3.
Dalibor suggested that if the issue is ever raised before the GB then it can
consider publishing mp3s. Simon further suggested that it's important to
express a willingness to open up any aspect of the meeting that the community
thinks appropriate, though practically what we're going to do is have private
group discussions that are then publicly documented. It was then generally
agreed that the GB will try to have as much of its discussion in the open as
possible.
Simon proposed an elaboration of this principle: All traffic should, by
default, go to the public gb-discuss list; if the GB decides to use the
private list to discuss a specific issue then it should announce that fact
beforehand on the public list. This way everything that happens on the
private list has a "shadow" on the public list that people can track, which
is useful not only to observers but also to future GBs that need to
understand past decisions.
Mark agreed, but suggested that administrivia such as coordinating meetings
doesn't need to be on the open list. Simon said that could be handled by
saying, just once on the public list, that administrivia will be handled on
the private list.
Simon further elaborated that if the result of a private discussion is
private then the GB should say so publicly. This will help the GB to avoid
developing a habit of using the private list for things that don't really
need to be private. If you have to announce beforehand that you're going to
use the private list then each time you do so you're going to have to work
out for yourself how good you feel about keeping something secret.
The GB unanimously agreed to the following resolutions:
AGREED: GB meetings, whether in person or via conference call, shall be
private. Detailed conversational minutes shall be posted to the
public gb-discuss mailing list after suitable review by the GB
membership.
AGREED: Administrative tasks such as coordinating meetings, reviewing draft
minutes, etc., shall be handled privately.
AGREED: By default all other GB discussions shall be in the open, on the
gb-discuss list. If the GB would like to have a private discussion
then a GB member shall first announce, on the public list, that
such a discussion is going to happen. Once the discussion is over
the results shall be summarized to the public list, unless the
results themselves are considered private.
3 Constitutional principles
The discussion was structured around two lists of draft principles prepared
by Mark and Fabiane. The GB discussed most of the items in Mark's list for
the remainder of this meeting; the rest, and those in Fabiane's list, were
discussed in the following meeting. (For ease of reference the principles
are labelled P1, P2, etc., in these minutes.)
Mark described his list as having been generated by discussions both inside
and outside of Sun over the last year, and started with
P1: The Governance Board is a legislative and judiciary body;
it is not an executive.
Mark elaborated that in his view the GB exists to manage the structure and
operation of the community, and to settle disputes, but it doesn't set
technical direction and it doesn't make technical decisions.
Doug asked for a pair of contrasting examples, observing that these issues
are often intertwined. Simon answered that an example of executive action
would be deciding that a particular release is ready to be shipped. A
legislative action would be devising a process that members of the community
could use to decide that a release is ready to be shipped; the GB would
thereafter intervene only if the community couldn't run that process. To
summarize, he said that the GB exists "to create processes where none exist,
to dispose of those that are redundant, and to resolve disputes that arise
from faulty processes."
Dalibor suggested that the GB amounts to a constitutional court, rather than
an executive. Simon agreed, saying that in U.S. terms the GB is like the
Senate, the House of Representatives, and the Supreme Court combined; it's
not the President or the Executive Branch. Mark agreed with this analogy.
Dalibor further observed that this is how projects like GCC work. The GCC
Steering Committee doesn't have the power to make technical decisions; it
exists to resolve disputes between interests or members. They expect people
to "behave like reasonable adults." If people end up in a dispute then the
committee makes a decision and then everyone tries to figure out what they
meant.
Simon suggested that the GB must actively resist falling into an executive
role when disputes arise. In such situations the GB should fix the process
by which the dispute arose and then put the decision back to the community
rather than settle the dispute directly. If the GB doesn't fix the process
then people will keep finding legalistic reasons to keep coming back to the
GB and asking for decisions, thereby politicizing the GB.
Doug said that he found this hard to believe, at least based on his own
experience. Simon replied with some specific examples which he had seen.
Dalibor added that the GCC Steering Committee actively discourages people
from calling on it to settle disputes. Doug answered that he now understood
the distinction.
Simon further asserted that a truly successful GB should never need to meet,
an idea that Mark, as Chair, found appealing. A successful GB will have
created processes that work on their own, and will only be called upon when
the outside world changes and some process change is required. Dalibor
likened this to the GB being an "exception handler" that is activated only in
exceptional situations.
Simon then described another kind of inappropriate executive role for the GB,
namely as the intermediary between Sun and the Community. In Simon's view,
if a community group needs to engage with Sun for some reason then it should
do so directly rather than via the GB. Fabiane agreed.
Mark asked how a community group that needs to engage with Sun would figure
out what part of Sun to talk to. Simon replied that that's a minor problem;
they may well, e.g., ask the GB Chair to help them. What he wants to avoid
is declaring the GB to be the intermediary to Sun, since by definition that
means that no one else is. Dalibor added that even if a GB tries to
monopolize that function, in practical terms it can't. Sun can always
establish additional contacts even if the GB declares itself to be the
mediator; this was one of the issues that inflamed the OpenSolaris GPLv3
discussion.
To the larger point, Dalibor mentioned that at JavaOne he'd talked with
people both inside and outside Sun who assumed that, since he was a GB
member, he could answer questions that were really either internal Sun
management issues or else issues of direction that the GB wouldn't have any
business making.
Simon added that he'd had the same experience; people assume that since
you're on the GB you have executive power. He suggested that if someone asks
the GB to exercise executive authority then that's really an indication of a
flawed or missing process that the GB needs to address. If someone in the
OpenJDK Community wants to propose that Sun be asked to change the license
from GPL to BSD, e.g., it's not for the GB to say yes or no but rather to
create an open process that the community can use to come to a consensus.
There was general agreement on the conclusions to this point, though Doug
reiterated his sense of disillusionment. Simon, tongue in cheek, asked Doug
if he was disillusioned because he was hoping to be king. Doug replied that
that is the next-to-last thing he wants to do.
Doug went on to say that the very last thing he wants to do is write any sort
of governance document, not because he dislikes doing so per se but rather
because he's been frustrated too many times by writing such documents only to
have them be transformed into unreadable legalese by lawyers. Simon asserted
that this is Mark's job, to which Mark agreed. Simon further noted that the
Sun legal team made hardly any changes to the OpenSolaris Constitution, and
that this was perhaps in large part due to the fact that it was written
exclusively by one person, Stephen Hahn, based upon a detailed draft written
by another, Roy Fielding, with extensive guidance and review by the rest of
the OpenSolaris GB.
Dalibor asked whether it'd be okay for him to raise the various questions he
was asked at JavaOne on the gb-discuss list, just to make sure that they get
aired. Mark said he thought this'd be a good idea, though perhaps best timed
to appear right after these minutes are published so that observers see the
context.
Mark then proposed the next principle:
P2: Community participants are individuals, not corporations.
He said that, in other words, there should be no such thing as corporate
members of the OpenJDK Community that have powers beyond those of the
individuals who happen to be employed by those organizations.
Simon observed that he thinks this is part of a difficult meta-topic. While
he doesn't find the principle controversial, in the past he's found that it
leads to the question of whether the community's governance structure should
be completely blind as to the employers of the community's participants.
When a new community is created around an existing body of code owned by a
single organization then the vast majority of the initial committers will be
employed by that organization. If you want committer-led governance, which
Simon believes is the correct model, then there's a strong risk that the
initial elected GB will not reflect the long-term vision for the community.
You therefore have to make a difficult judgement call as to whether to
artificially bias the GB membership to force non-Sun (in this case) members
to be elected to it, or if you're just going to hope that people are going to
elect non-Sun people.
Dalibor noted that the GDB Steering Committee uses the rule that no one
organization can have more than half the membership of the SC. They came up
with this rule after a massive civil war in which factions within single
companies were arguing with each other within the context of the SC.
Simon replied that he had proposed something similar to the OpenSolaris GB,
but the non-Sun members of that board strongly argued that it should not
matter at all who the employers of community participants are; the only thing
that should matter is individual merit. The OpenSolaris Constitution is
hence completely blind as to who employs whom on the GB or in other positions
of elected responsibility.
Simon suggested that this GB should, at its first face-to-face meeting,
discuss the
OPEN ISSUE: Should the Constitution be blind as to the employers of
community participants?
Fabiane then asked for clarification: If participants are individuals rather
then corporations then does that mean that if I'm a member and I change jobs
then I'll retain my privileges even though I'm working somewhere else?
Mark and Simon both agreed that yes, you would retain your privileges. Simon
elaborated further that this principle implies that if a company is investing
heavily in Java, and a key participant employed by that company quits, then
the company can no longer be represented in a manner proportional to its
investment since it's unlikely it'll be able to hire someone new who'll have
the same standing in the community.
Fabiane observed that such a strong separation between individuals and their
employers could make it difficult to entice corporations to pay some of their
employees to work on OpenJDK. To ameliorate this she suggested that we find
a way to acknowledge the investments made by corporations, or other types of
organizations, even though such entities don't have any special powers.
P3: The investments made by the employers of Community
participants should be acknowledged publicly.
On a similar note, Simon described how he'd been asked repeatedly by the
press why this OpenJDK Interim GB didn't include representatives from IBM or
Oracle. At the very least there's a perception issue here. The problem, of
course, is that granting status to anonymous representatives of industry
players immediately gets you into a "really dodgy piece of territory"
governance-wise.
Simon went on to observe that there are a large number of ways to try to
address this problem. The Eclipse Foundation, e.g., handles this tension
with a dual governance structure: There's an advisory board composed of
anonymous members of paying corporations and a separate meritocratic,
committer-led governance board for the code. The OpenSolaris Community, as
noted earlier, decided simply to be blind to participants' employers. Other
organizations have tried yet other ways to address this issue.
In the end Simon believes that this problem is pretty well intractable.
There's no perfect fix, and whatever structure we wind up with will be the
result of a compromise, though personally he prefers the employer-blind
option.
Doug said that he likes the purity of Simon's preference, but he's unsure as
to exactly how it would work out. Making the community employer-blind could
wind up discouraging contributors if their employers are just too afraid to
go along with it. He suggested that it'd be helpful to ask potential
contributors from various corporations (e.g., Google) whether they'd be
allowed to contribute to such a community, and then agreed to go do so and
report back to the GB.
TODO: Doug: Ask potential contributors from various corporations whether
they'd be allowed to contribute to an employer-blind community, and
report back with the results.
Mark proposed the next principle, which is closely related to, but distinct
from, the previous one:
P4: Community privileges are granted on the basis of proven
merit, as judged by peers; they are not granted on the
basis of one's employer.
Dalibor indicated agreement. Simon observed that this principle leads to a
bootstrapping problem, and Dalibor in turn noted that there are two ways to
bootstrap a community like this: One is to get people from outside to become
members, while the other is to accept whole projects into the community.
Mark agreed, and observed that we already have a set of interim governance
rules for expanding the OpenJDK Community by recognizing new Members, Groups,
and Projects. The goal is definitely to get to a point where many Members of
the Community are from outside Sun, and hopefully to get to that point before
we get to ratifying the Constitution.
Mark asked whether the GB is comfortable with the interim governance rules
for bootstrapping the OpenJDK Community. Doug said he thinks they're not
fundamentally flawed, and suggested that until and unless we find that they
are we should leave them as-is. The GB then
AGREED: The interim governance rules are fine for now.
Dalibor observed that they seem to be working so far, with one side project
(Iced Tea), and a flow of patches, and that we'll eventually need to figure
out the status of people and give them appropriate privileges.
Mark agreed that, as this effort moves along, it's particularly important to
figure out how the Iced Tea project relates to all of this. Dalibor replied
that his long-term goal is to make sure that "the whole structure of the
Classpath Community kind of merges into the structure of OpenJDK." Mark
noted that the developers hacking on Iced Tea in some sense obviously ought
to be members of the OpenJDK Community, and there's a way in the interim
governance rules to make that happen, we just need to make it happen when the
time is appropriate. Dalibor agreed, saying that this applies to most of the
Classpath VMs as well, since they're starting to integrate class libraries
from OpenJDK. In other words, the community is already migrating; we just
have to figure out how to make that formal.
At this point Doug took the opportunity to ask: What does this have to do
with the Apache Harmony project, and is there anything this GB should do
about Harmony's "current stances on just about everything?"
Dalibor replied that he's long been a strong advocate of open-source TCKs as
well as reference implementations, and that having an open-source TCK would
solve a lot of the problems that the Harmony project faces. He can't figure
out the Apache/Sun conflict on the TCK issue since he's not a party to the
negotiations and hence hasn't read the contract. He would definitely like to
make sure that anyone distributing OpenJDK can get the TCK and be able to run
it as part of their build process. Harmony could, in theory, get access in
the same way as everybody else, though of course there are licensing issues
and it seems unlikely that Harmony would move over to OpenJDK.
Doug strongly agreed that Harmony would not move over to OpenJDK. Dalibor
replied that they wouldn't have to move the project, they'd just have to
become eligible for the TCK on the same terms as everyone else. Dalibor's
long-term plan to move the TCK issue forward is to come at it from the
distribution and engineering sides of things, and to try to ensure that the
JCP in the future acts in ways that are consistent with both the JSPA and
with open-source ideals.
Doug stated that he very much doesn't want OpenJDK to become another "cold
war proxy battleground" between large, heavily-competing corporations, which
is how he currently views the JCP. After some discussion of this concern,
Mark and Simon suggested that the OpenJDK Community be defined as a Free
Software community that's working on one particular compatible Java
implementation. Mark proposed that the definition and overall goals of the
Community should be discussed further in e-mail, and offered to initiate that
conversation.
TODO: Mark: Initiate e-mail discussion of definition and goals for the
OpenJDK Community.
Mark then suggested the next principle:
P5: One need not have proven merit in order to start
participating in the Community.
Put another way, a newcomer to the Community should not only be able to
exchange e-mail with existing participants but also subscribe to the mailing
lists and make code contributions, perhaps though a sponsorship mechanism
like what's already in place.
Simon observed that OpenSolaris started with a sponsor-request process. It
was initially motivated by the lack of a public source-code management
system, but it turns out to be a good way to get people engaged with a very
large code base. A newcomer with a bug fix to contribute has no idea whom to
talk to, so they send a message to the sponsor-request list in order to get a
sponsor. It'd been assumed that this mechanism would go away once a public
SCM becomes available, but it's worked well as a mentoring process whereby
people can gain experience, prove their merit, and eventually be recognized
as committers, and even sponsors.
Mark replied that the interim contribution-sponsorship process for OpenJDK is
quite similar, the main difference being that there's no specific list for
requesting a sponsor. He'd always assumed that this process would persist as
a way to grow new OpenJDK contributors.
The next principle:
P6: Community privileges do not last forever.
Mark observed that in some open-source communities it's possible for someone
to gain privileges that persist long after one's involvement in the community
ends, which allows for some kinds of bad behaviors. He suggested that the
OpenJDK Constitution should define a way to downgrade the status of someone
who hasn't actually done any work for, say, a year or two.
Dalibor noted that status is persistent in the Debian community, and this
creates tension by allowing people to hang on to packages without doing any
work. He suggested that an "emeritus" role would be useful; he was unsure,
however, as to whether it should be enforced by the Constitution or, rather,
as part of a social contract, i.e., a status that inactive people would be
encouraged but not forced to accept, with the option of returning to active
status if they come back.
Mark noted that the OpenSolaris Constitution does formalize an emeritus role,
which is an honorary title without commit or voting rights. It also defines
a process by which members "time out" after a while and are forcibly declared
to be "emeritus."
Simon gave the example of his own status, which will expire in two years, as
a "core contributor" in the OpenSolaris Governance Community Group. If at
that time he's still seen as active then his status will be renewed; if not,
then it will be downgraded to emeritus.
Simon supported the idea of expiring privileges, but suggested further that
it must be enforced automatically. The OpenOffice Community has a rule that
commit privileges expire if you don't use them for some time, but it was
never enforced until one faction used it to revoke the privileges of another
in the middle of a debate over the direction of a particular project.
Doug expressed concern about this sort of rule, noting that a lot of people,
including himself, might be very active for a few months and then inactive
for six months, and then become active again. They're not irresponsible,
they're just busy doing something else for six months.
Simon asked Doug if a timeout period of two or three years would be
acceptable. Doug replied that any timeout period that people could agree to
would probably be so long as to make a policy defined around it look silly.
Fabiane observed that an automatically-enforced policy has the advantage of
avoiding conflict; without a deadline then the people enforcing the policy
have to decide when to confront apparently-inactive people about their lack
of participation, and it can get fairly nasty. The deadline should, however,
be long enough that people can go on vacation for three or four months.
Doug suggested that downgrading a participant's status after a year of
inactivity would probably be fine. Simon countered that two years would be a
better duration, arguing that the main problem you're trying to address here
is that of a participant who returns after a long period of inactivity and is
no longer well-known to the current set of participants yet still has the
ability to commit changes to the code. That kind of scenario is more likely
to play out over two years than one. A two-year period also means that
status renewals come around less frequently than if they were yearly, so they
interfere a bit less with the regular activity of the community.
Dalibor asked if the two-year period would be measured from the time of a
participant's last commit, or from the last release that the participant
worked on, or something else?
Simon explained that in the OpenSolaris Community the timeout is based upon
the date on which a participant's status was granted. His own status, e.g.,
will expire three years after its grant date, at which point the system will
notify the appropriate community leader that his status is expiring.
Dalibor observed that, under that rule, if he gets enough people to join
OpenSolaris in the next year and a half then they would get to decide whether
Simon gets his status renewed. Simon confirmed that yes, the system is
gameable in that way, and that for OpenJDK he'd suggest that we instead use a
rolling status grant, based upon a fixed period from a participant's last use
of that status. This would avoid the hairy bureaucratic problem, which
OpenSolaris will face in about three years, of nearly everyone in the
community coming up for renewal at the same time.
Dalibor then suggested that if status expiry is to be tied to a specific
action then perhaps the action should be that of voting, whether in GB
elections, release decisions, technical decisions, etc. It's probably safe
to declare inactive anyone who doesn't use their voting rights for two or
three years, and doing it this way would avoid the "re-bootstrapping" problem
that OpenSolaris is going to have. Mark agreed that this seems like a good
idea to explore further as another
OPEN ISSUE: Should status expiry be based on the date on which status
was granted, or the date of the most recent use of some
right associated with that status, or something else?
Mark then moved the conversation on to the final principle of the day:
P7: Community governance is distinct from project governance.
In other words, the social structure of the community is distinct from the
structures used to govern projects within the community. Many open-source
communities don't make this distinction, which tends to lead to a narrow kind
of community that's really only oriented around the code as opposed to the
code as well as other valuable things that are worth doing, e.g., marketing,
documentation, operations, or administration.
Mark elaborated, explaining that in his view there are two orthogonal axes of
governance. The governance of the community decides things like participant
roles, processes for granting status and taking it away, for creating new
community groups, etc.; as noted earlier in the P1 discussion, however, it
doesn't have direct control over actions related to bodies of code or other
specific artifacts. The governance of projects, by contrast, is about
actions related to those artifacts; as such it is fundamentally different
from community governance and needs a different set of rules.
Mark suggested that a uniform set of rules for all projects would probably be
a mistake. He expects there to be many different kinds of projects, ranging
from little one-off research efforts that only a few people work on to fairly
large ones such as JDK 7 itself. There should be some amount of flexibility
in the system so that those involved in a project can figure out themselves
how to govern it in a way that's appropriate for the size and scope of what
they're doing.
Fabiane said she agreed with this idea, but suggested further that perhaps
there should be a set of common rules, or principles, in order to avoid undue
complexity in the community. Mark agreed that that would be good, as long as
they allow sufficient flexibility. Dalibor also agreed, noting that it seems
likely that project governance of JDK 7 will likely be quite different from
that of, say, the Kaffe VM project, assuming that the latter were to migrate
into the OpenJDK Community.
At this point the GB adjourned until its next meeting on 2007/7/17.
[end]
More information about the gb-discuss
mailing list