The headlines say things like Oracle and IBM Share Open-Source Java Leadership, releasing bylaws showing how they plan to arrange matters:
Oracle has agreed to share governance of the OpenJDK Java community with IBM, in a move that demonstrates considerable good will, according to one analyst. I know bylaws are boring, but let me show you just a couple of highlights that, to me, show that while Oracle and IBM will be sharing leadership, albeit not equally weighted, the community isn't inside the real loop, not yet anyway. This is draft 7 of the bylaws, so it's not carved in stone. That doesn't happen until March 3, after which it gets voted on by "OpenJDK Community members for ratiﬁcation via an appropriate democratic process", according to Mark Reinhold, the OpenJDK Lead. So please allow me to point out some bugs.
The company has created a series of
bylaws outlining the way the governance will be structured, with Oracle appointing itself chairman and the OpenJDK lead, and IBM taking the role of vice chairman.
Glancing at the bylaws, I note that the Governing Board consists of ﬁve individuals:
I will start by saying that it's a good thing that Oracle sees that it's wise to share leadership, and particularly with a company that has shown good grasp of open source and how to actually respect the community culture. But if the board "manages" the OpenJDK Community, wouldn't you expect to see the community play an important role?
The Governing Board manages the structure and operation of the OpenJDK Community.
The Governing Board consists of ﬁve individuals:
the Chair, appointed by Oracle;
- the Vice-Chair, appointed by IBM;
- the OpenJDK Lead, appointed by Oracle; and
- two At-Large Members, nominated and elected essentially by the community.
But the role of the community is very minor in Draft 7, more window dressing than any actual role in governance, as I read the bylaws. For example, the Board can change the bylaws and "refine existing processes" and such on a two-thirds vote:
The Governing Board is, in part, a legislative body: It is empowered to revise these Bylaws to reﬁne existing processes, to deﬁne new processes, and to dispose of processes that are no longer required. Any revision of these Bylaws must be approved by an Absolute Two-Thirds Majority of the Governing Board. Check my math, but to me that means IBM and Oracle and the OpenJDK Lead, who is appointed by Oracle, can run the show any way they choose, and the community can contribute code and time and effort, but they can't control anything. It depends on how they define 2/3rd. I mean, isn't 2/3rd 66.7%? So wouldn't 2/3rds of 5 be not just 3, but 3.335? So will they think that means they need four votes or three? Three could be just IBM, Oracle and Oracle's appointed OpenJDK Lead. I think they should be clearer up front as to how many have to vote to prevail, by adding language like "If the board has five members, then it would require X number of votes to prevail". And in an ideal world, they'd need at least one community vote to prevail, meaning 4, not 3. Perhaps they understand it that way now, but it wasn't clear to me.
The Governing Board is also, in part, a judiciary body: It is empowered to resolve any procedural disputes which may arise within the Community. Any procedural decision made by an individual, as described in these Bylaws, may be appealed to the Governing Board. If the Governing Board decides to hear an appeal then its judgement must be approved by a Simple Majority vote.
The Governing Board is not an executive body: It has no direct authority over technical or release decisions; that authority is held by the OpenJDK Lead.
Otherwise, if things go waaaaay wrong, there'd be nothing the at-large members of the board could do about it but complain. Well, not precisely, as there is a contemplated appeals process, and here's how it works:
Technical Appeals Process Well, now, who decides if a complaint is in "good faith"? How is that defined and determined and by whom? If it's left this vague, the 2/3rds of the board can just decide that a complaint isn't going to be heard at all. I can just see another Apache-style problem, where a community member of the board hates the direction things are going in, but screams about it a while and nothing changes. Can't you?
If a Governing Board member objects in good faith to a technical or release decision made by the OpenJDK Lead then that decision may be appealed via the following process.
The objecting Board member and the OpenJDK Lead will each nominate a neutral third-party technical expert to arbitrate the decision. These two arbiters will together agree on a suitable third neutral expert to join them in creating an Arbitration Panel of three individuals. These experts need not be OpenJDK Members or even Participants.
Both the written submissions and the judgment of the Panel will be published as soon as they are available unless the Panel, on petition from the objecting Board member or OpenJDK Lead, determines that publication is not in the best interest of the OpenJDK Community.
Within two weeks of the selection of the Panel the objecting Board member will submit to the Panel and the OpenJDK Lead a written description, not to exceed 1,000 words, of the objection.
Within two weeks of the objecting Board memberís submission the OpenJDK Lead will submit to the Panel a written rebuttal, also not to exceed 1,000 words, describing the rationale behind the decision and the way in which it is reasonable.
Within two weeks of the OpenJDK Leadís rebuttal the Panel will render a decision, made by an Absolute Simple Majority vote. The Panel may, during its deliberations, consider any other information it deems appropriate and may consult with other individuals as necessary.
Only three unsuccessful appeals by any particular Governing Board member are permitted in any twelve-month period.
Choosing the third person on the panel is the key to solving that potential problem, I think, in addition to fixing the general sharing of power numbers. There should also be an appeals process, I would think. And the part about keeping
the report private on request, while you can understand how it might sometimes be a good idea, is also written in a vague way that could lead to abuse. The Panel decides if it's good for the community, but what exactly does that mean? I would hope that could be spelled out a bit more fully, to avoid deep-sixing of things that really ought to be public. Clearly, so far, it won't be the community running anything. At a minimum, the membership should have access to all reports, I'd think, if only so they can decide if they wish to keep donating code or prefer to leave. I imagine the Apache-style screaming, but in a closed cell, where no one ever even hears about it.
The sharing between IBM and Oracle isn't 50-50, by my reading, either. Since the OpenJDK Lead has direct authority over technical or release decisions, and he is appointed by Oracle, that sort of gives Oracle control of two seats to IBM's one.
And the Board can also remove anybody, again on a two-thirds vote. A quorum is a majority of the board:
Expanding and Contracting the Governing Board Again, the two-thirds vote is an issue, given the makeup of the board, to me. They can remove a project lead, too:
The Governing Board shall never consist of fewer than ﬁve individuals, and it shall always include a Chair, a Vice-Chair, an OpenJDK Lead, and at least two At-Large seats as described above.
The Governing Board may, by an Absolute Two-Thirds Majority vote, add or remove both appointed and At-Large Governing Board seats.
An individual may be nominated to a new or newly-empty appointed seat by any Governing Board member, and is approved by a Simple Majority of the Governing Board.
The Governing Board may, in exceptional circumstances, remove a Project Lead by a Two-Thirds Majority vote. Same 2/3rds problem. If the community loves a project lead, they can't do anything to protect him from corporate thumbs on the scale, I'd say. And what are "exceptional circumstances" in this context? Shouldn't there be some indication of what might get you removed as a project lead? In advance, I mean, so you can avoid it?
And how long do the appointed Chair and Vice Chair serve? Is it a life appointment unless they are removed in this process? If the At-Large Members serve only for a year, and the other three are in for life, so to speak, then that is another imbalance in the picture, to me. How hard would it be to control the community members by just seeming to know more about everything or saying things no one knows enough to realize are not exactly so?
And after you serve for a year, can you ever serve again?
I'd also like to see the exact role of the Chairman and Vice Chairman spelled out. What is the difference? I mean, one is called a Vice Chairman, which implies less authority or a smaller or contingent scope of activity. And are meetings memorialized in writing? By whom? Who gets to read that, if anyone does so?
This is a significant step in the right direction for Oracle, in that it's sharing at all. So sincere commendation on that. And I hope my input is constructive. It's intended to be. But sharing with the community is part of what one would normally look for in a true open source project. Because if someone authors code and contributes it to a project, he does normally want some
control over what happens to it, after all.
These are all fixable problems, and even if they are not addressed favorably, at the end of the day no one has to donate code and effort if they don't like the bylaws. My purpose is educational in the end, just pointing out what stands out to me, so you can think about how you do feel about not just these bylaws but in general, and so you can better understand the importance of thinking about how the words on paper can play out in real life.
Update: More discussion by Simon Phipps here, Mark J. Wielaard here and here. The OpenJDK mailing list where discussion is ongoing mainly by announced board members. Also you might find it of interest to read the 2007 "OpenJDK Charter" that Sun came up with. The governing group was to be five people, two of them appointed by Sun. But by adding IBM and giving it an appointed representative, it throws the balance off, from the perspective of the community. And there's an amendment at the end, increasing the number on the board to seven, three of them Sun appointees.