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 Oracle, which funds the web site and 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 Governance Board elections
are described in detail on the Governance 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. They use the software, report bugs,
and make 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 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 OCA is required from
each contributor. See the OCA policy page
for info.
How to become a Contributor: 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 write-access to the source tree, either for
the
individual modules they are working on, or in some cases global write
permissions everywhere. A developer must complete and send in a Contributor Agreement
form to commit code - see the OCA policy page
for info.
How to participate as a Developer: Submit a patch (or 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 globally), and
"manages" a group of developers. Maintainers are responsible for
merging contributors' patches, bug fixes and new code from the
development branch of the source tree onto the stable branch; and for making sure that these contributions
do not break the build. The Maintainer is also responsible for checking that everyone
who
contributes code has submitted a OCA. See the the
CA policy page
for info.
A maintainer is responsible for the web space for that module,
at
http://<module>.netbeans.org/, and for
granting check-in privileges for contributors. For module projects, the person who started that project or
currently maintains it is the maintainer.
How to become a Maintainer:
Start a module project (you need to have written some working
code
on your project to do this), or
Have responsibility for a module handed over to you from
the
current maintainer, or
Take
over an abandoned project. Sometimes an individual starts a project,
but for one reason or another can't continue to work on it.
If the project is of interest to you, volunteer!
As mentioned above, the Board consists of three members, made up
of one Oracle-appointed
representative and two at-large representatives. The Board
has the high-level duty to ensure that the netbeans.org
project is 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, send an email:
.
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 governance
procedures that are as lightweight as possible.
Above all, we invite all interested developers to take
part in the enhancement of this project--we 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.
How to become a Board member: Board members must be nominated
by fellow
community members on the public mailing lists during a board election cycle. 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 nomination
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.