The NetBeans project has a very flat, lightweight governance
structure. Decisions are made in public discussion on public mailing
lists. There are no formal roles - an individual's word carries
weight in accordance with their contribution to the project.
Decisions are made by consensus, rather than voting - most decisions
are of interest only to members of the community who will be affected
by them. The combination of public mailing lists and consensus ensures
that any person who could be affected by a decision both finds out
about it, and has a voice in the discussion.
In the case of an irresolvable dispute, there is a governance
board. The board consists of three people,
who are appointed for six month terms. Two of the members are
appointed by the community, by consensus or vote on the public mailing
lists. The third is appointed by Sun Microsystems, which started the
project and funds the web site and a large number of developers who
work on NetBeans full-time. The board is a voting body, but in
practice, a dispute that cannot be resolved and needs its intervention
is extremely rare.
The nomination and voting procedures for NetBeans Board elections
are described in detail on the Board Election Process
page.
Roles and Responsibilities
There are quite a few ways to participate in the NetBeans project
and community - and not all of them involve contributing source code
to the project! Simply using the IDE or Platform, participating on
mailing lists or filing bug reports or enhancement requests is an
incredibly valuable form of participation.
If one were to break down the forms of participation in the
NetBeans project into a set of roles, the result would look something
like this: Users -- Contributors -- Developers -- Maintainers -- and
finally, "The Board".
Users
Users are the people who use the Platform or the IDE. Users
are using the software, reporting bugs,
making feature requests and suggestions. This is by far the most
important category of people - without users, there is no reason for the
project.
Contributors are individuals who contribute to netbeans.org, but do not
have cvs write access to the source tree. Contributions can be in the form of
source code patches, new code, or bug reports, but could also include website
content like Articles, FAQs or screenshots.
A contributor who has sent in
solid, useful (source code) patches on a project can be elevated to developer status
by the maintainer.
Integration of contributors' contributions is at the discretion of the
project maintainer - but this is an iterative, communicative process.
Note that for code to be integrated, a completed CA is required from
each contributor. See the CA policy page
for info.
How to become one: Contribute in any of the ways described
on the contribution page.
If you're interested in becoming a developer of the source base,
get the sources
to the IDE, make an improvement or fix a bug, and send that code to
the developers mailing list
or attach it to the bug report in IssueZilla.
Developers
Developers have CVS write-access to the source tree, either for the
individual modules they are working on, or in some cases global write
permissions everywhere in CVS.
A developer must complete and send in a Contributor Agreement
form to commit code - see the CA policy page
for info.
How to become one: Submit a some patches via email,
and ask the maintainer of the code you've patched for commit access.
See the contributing
page for more details.
Maintainers
Each module has one maintainer, who has check-in
permissions (either for that module or global), and
"manages" a group of developers. They are responsible for
merging contributors' patches, bug fixes and new code from the
development branch of the source tree onto the stable branch.
Maintainers are responsible for making sure that these contirbutions
do not break the build.
The Maintainer is also responsible for checking that everyone who
contributes code has submitted a CA. See the the CA policy page
for info.
A maintainer is responsible for the web space for that module, at
http://<module>.netbeans.org/ (accessible under CVS), and for
granting check-in privileges for contributors.
For module projects the person who started that project or
currently maintains it is the maintainer. If you start a project, you
are the maintainer of that project.
How to become one:
Start a module project (you need to have written some working code
on your project to do this), or
Have responsibility for that module handed over to you from the
current maintainer, or
Take over an abandoned project - sometimes someone starts
something, but for one reason or another can't continue to work on it.
If it's interesting to you, volunteer!
As mentioned above, the Board consists of three members, made up of one Sun appointed
representative and two at large representatives. The Board
has the high-level duty to ensure that the netbeans.org
project is being run in a fair and open manner. The Board exists as a
last resort to resolve disputes and grievances. Every effort should be
made to solve disputes at the community level before turning to the
Board.
Board members, both past and present, are listed on the
Board pages.
Should you need to contact the board, mail
.
This list includes the current board members, and may also
include past board members, who have the right to opt to
remain subscribed after their term has concluded. Past board
members on the list may participate and advise in any discussions,
but have no vote or power in current events.
Remember the board is a last resort to settle disputes - please
try to resolve problems on the normal public mailing lists before contacting
the board!
We seek to maintain as-lightweight-as-possible governance procedures.
Above all, we invite all interested developers to take
part in the enhancement of this project and seek input from all.
The governance procedures should never become an obstacle to the
momentum of any group or individual within it who seeks to create software
as part of the NetBeans project. As Robert's Rules of Order were not written in order
to create the fillibuster, so we should avoid complexity in governance in
order to avoid the perverse incentives complexity can give rise to.
How to become one: Board members must be nominated by fellow
community members on the public mailing lists. Any participant in the community
is eligible for membership on the NetBeans board. The duty of board members has
historically been very light, but anyone choosing to shoulder responsibility
should be aware that there exists the possibility that they will need to make
decisions that can affect the future of the project.
The nomination and voting procedures are described in detail on the
Board Election Process page.