[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[wtp-pmc] Agenda for Tuesday, October 03, 2006 telecon
|
Call info:
- Tollfree in the US:
866-214-3176
- Alternate: 404-827-9098
- Access code: 8870689#
Call Time: 7am PDT / 10am PDT
Regrets: Bob Goodman
Agenda:
- Community [Tim]
- EclipseCon CFP sent out;
tutorials are due 11/1 and selections by 11/15. Please solicit content
from your teams and the wider community (this is more than just WTP; we’re
covering our entire domain area).
- EclipseCon review process
- Process issues [Tim]
- David’s proposals for
updates to our development process (see attached)
- Requirements and 2.0 Planning
- 1.5.2 and 2.0 Status (David)
- 1.5.2 schedule and shutdown
sequence
- Visual editor component [Jean]
- Dali/JPA [Neil]
- JSF [Raghu]
|
From: wtp-pmc-bounces@xxxxxxxxxxx on behalf of David M Williams
[david_williams@xxxxxxxxxx]
Sent: Tuesday, October 03, 2006 1:09
AM
To: wtp-pmc@xxxxxxxxxxx
Subject: [wtp-pmc] Clarification
of "code change" process and component teams - PMC Suggestions
added
Attachments: ATT25256325.txt
I think I've included everyone's suggestions, and added a few
clarifications that have come up. With the PMC's approval, we'll
consider this our official code change policy, I'll publish to a web page somewhere, and announce to wtp-dev. and open it up for developer comment and suggestions. Assuming there is PMC approval, I'll put this in to an
HTML form to publish in our website. I think clarifications and improvements suggested by WTP committers can
be made without further PMC vote as long
as the gist is maintained -- the basic structure of having component teams, and no impact on APIs or adopters
without careful review and approval of
component teams. Proposed clarification of "code change" process.
Our WTP Charter, and the The Eclipse general charter it refers to, specifies the general procedure and
decision process used for changing code. I think WTP is far enough along and being used for enough business
critical applications, that we, the PMC would be best to clarify what the
specific procedures and decision
processes are. The charter itself
allows the "The PMC defines the decision process" so, my proposal is not a
change to the charter, just more specific. I think this is important to be clear on this decision process
before controversy arises, since WTP is a very complex project, and
becoming more complex, and is very
heterogeneous in the companies represented. It is not that I anticipate
controversy, just that the current
procedures and process is a bit general. Also, I should be explicit, I have no
doubt of the good will of all involved
in WTP ... but, good will alone is sometimes not enough when folks are
committing their hard work and trying to make long term business plans. I think my proposal is pretty much how we have already been operating,
except that I think moving forward we need to do more "prep work" in side branches, before committing to a release.
Here is what the current
(general) charter says: <quote> The Committers of a
Project or component decide which changes may be committed to the master code
base of a Project or component
respectively. The PMC defines the decision process, but that process must
include the ability for Committers to
veto the change. The decision process employed may change with the phase of
development. Common decision processes include: *
Retroactive - changes are proactively made by Committers but can be vetoed by a
single Committer. *
Proactive - for efficiency, some code changes from some contributors (e.g.
feature additions, bug fixes) may be approved in advance, or approved in principle based on an
outline of the work, in which case they may be committed first and changed as needed, with conflicts
resolved by majority vote of the Committers of the Project or component,
as applicable. * Three Positive - No code is committed
without a vote; three +1 ('yes' votes) with no -1 ('no' votes or vetoes)
are needed to approve a
code change. Vetoes must be followed
by an explanation for the veto within 24 hours or the veto becomes invalid. All
votes are conducted via the developer
mailing list associated with the Project or component. Special rules may be
established by the PMC for Projects or
components with fewer than three Committers. </quote> Here is
the specification I am proposing, that I think covers our project in more
explicit terms: Process
of changes to the master code base [1]: Changes that do not require extra processes or voting (that is, they are
approved "in advance").
Bug fixes, java doc and JUnit tests can all be committed to
the forward (head) stream.
Feature requests, if simple additions, that do not increase
dependancies, or require changes
in APIs. Any new features that involve API or SPI, should
only be done as " official API" -- we don't want to add to our "API debt" -- so would
fall in the "new API" category below. Any evolution of an API, as long as the API
is evolved in a source and binary
compatible way. In general, internal changes for the sake of
better, faster, simpler and cleaner components are greatly encouraged --
with no burdensome process required, if there's no change to API
or impact to
adopters. Changes that do
require a concrete proposal [2], review and prior agreement [3] of component
members:
A change in internal non-API that is clearly identified in "usage reports" as
being used by adopters.
Any such proposed changes needs approval of the components
committers and be open to public review so that adopters can comment, and anticipate and
minimize disruption. A typical part of such a proposal would include what
migration would involve .... a package rename only, argument changes, or a re-work
of fundamental logic. Note: a "change in non-API" in this sense includes changes
in behavior
such as threading behavior, order of execution, etc., not just changes in
signatures.
A new API. The main criteria here is if it meets "API Quality guidelines"
as described in the Eclipse Development Process
and allows for later API evolution. The
committers for a component (and their clients) are the primary stake holders,
and thus is their responsibility
to propose and decide API and ensure its quality.
But, it should be developed in a side branch where it can be better
reviewed and assessed before being committed to a build.
Promotion of provisional API. While final decision is up to committers of a
component (and follows normal, "new API" guidelines above, the type of criteria
here the PMC requires is that
1) adopters can move from the provisional API with no churn
(or, minimal, with well documented migration steps) and
2) that by moving to the new official API, then "that is it", it meets
clients/adopters needs and there would not be additional
required migration later on. Changes to declared API. This is nearly
never allowed. But, there is, judging from history, times when it should be
considered as an option,
either to acknowledge some previous fundamental mistake for
which no other solution can be found. Or, more likely, sometimes an API is
"spec'd" in an ambiguous way, so some change might be interpreted as a
change in behavior by some, though it might be argued that it is not, based on the
intent of the spec. Etc. These sorts of cases, if there is agreement among the
component team, must be brought forward to the PMC for approval.
In all cases, changes
to the code should have a bugzilla associated with it, to allow good
traceability for who changed what when, and why. All
the above is are processes to protect the stability of our code base and the
investment made by clients which adopt our code. It is not intented to
ever be an "excuse" for poor quality, or
"not being able to change" code. It is always only a question of
<b>how</b> to change or fix something, not whether or not some new funtion is desired or some fix
needed.
[1] Master code base means the "head" stream,
to be released for build, milestones, and the release itself.
Committers can do what they want in side branches (within, of course, the bounds
and scope of the project and Eclipse Foundation rules).
[2] By "concrete proposal" is meant at
least a short description of the "problem" and "how solved" and preferably
the "ready-to-go-code" that has been
developed in a side branch, where it can be reviewed. All "new work"
proposed must fit the scope of the
charter of WTP and the themes approved by the PMC for a given release
[3] Prior agreement means prior to
committing to head, or the release. A simple vote in bugzilla or on
developer mailing lists is good if its
"controversial", or if it is considered "obviously agreed to" then formal voting
record is not needed, but, would be
subject to retroactive "veto" if later found objectionable by a committer to a
component. In the event of disagreement between committers, the PMC can arbitrate a solution (which normally will
strive to satisfy all requests, but, may vary priority, schedule,
or exactly which release a change occurs
in, or request other technical solutions be investigated).
Component
Teams Component Teams have the
responsibility for coming up with the specific plans for their components
(within the themes established by the PMC, and the scope of our charter).
This includes all the "normal" duties of
being a committer, providing JUnit tests, participating in test phases,
monitoring bugzilla, and participating on newsgroups and mailing lists.
The component team also has the right
and responsibility to vote in new committers for their component.
The component team lead (listed
first in the lists below) has responsibility to not only lead the team, but also
to represent them in documenting formal votes for release, changes to schedules,
etc. where a WTP-wide vote is needed.
There are two "components" that have
automatic membership, the website component and the releng component.
When a committer first joins WTP by
being voted in a committer to one group, there's a certain amount of "formal"
things that have to happen, papers
signed, IDs given, etc. If that person is then later voted into another
component, it's a much easier process,
since the "WTP membership" has already been established, so its just a question
of the component team member ship. Eventually, component team membership could translate into CVS access,
but, since that can get to be hard to administer, we are in no rush to do that (since cvs is fully traceable, we know
who changed what when, so there is no risk of someone changing something
they shouldn't).
People and Plugins
Note, where a
feature is listed, its assumed to mean all the plugins in that feature,
unless the plugin
is listed elsewhere individually. Common (Component Team that works on current WST and JST Common component
features)
Craig, John, Nitin, Konstantin Komissarchik, Peter Moogk, Chuck Bridgham,
Kate Price, David Williams, Naci Dai
org.eclipse.wst.common_core.feature
org.eclipse.wst.common_sdk.feature
org.eclipse.wst.common_tests.feature
org.eclipse.wst.common_ui.feature
org.eclipse.wst.common_userdoc.feature
org.eclipse.jst.common_core.feature
org.eclipse.jst.common_sdk.feature Server (Component Team that works on current WST and JST Server component
features)
Tim, Larry Issacs, Gorkem Ercan, Marshall Culpepper, Rob Frost
Kate Price, David Williams, Naci Dai
org.eclipse.wst.server_core.feature
org.eclipse.wst.server_sdk.feature
org.eclipse.wst.server_tests.feature
org.eclipse.wst.server_ui.feature
org.eclipse.wst.server_userdoc.feature
org.eclipse.jst.server_adapters.feature
org.eclipse.jst.server_core.feature
org.eclipse.jst.server_sdk.feature
org.eclipse.jst.server_tests.feature
org.eclipse.jst.server_ui.feature
org.eclipse.jst.server_userdoc.feature Datatools (RDB)
DerPing, Shelia, Lawrence, Rupesh, Dirk
Kate Price, David Williams
org.eclipse.wst.rdb_adapters.feature
org.eclipse.wst.rdb_core.feature
org.eclipse.wst.rdb_sdk.feature
org.eclipse.wst.rdb_tests.feature
org.eclipse.wst.rdb_ui.feature
org.eclipse.wst.rdb_userdoc.feature Editors and Source code models: SSE, XML, DTD, _javascript_ CSS, HTML, JSP,
XSD
David Williams, Nitin, Amy, Craig, Keith, Kate Price, Naci
Dai
org.eclipse.wst.xml_core.feature
org.eclipse.wst.xml_sdk.feature
org.eclipse.wst.xml_tests.feature
org.eclipse.wst.xml_ui.feature
org.eclipse.wst.xml_userdoc.feature
org.eclipse.wst.css.core
org.eclipse.wst.html.core
org.eclipse.wst._javascript_.core
org.eclipse.wst.css.ui
org.eclipse.wst.html.ui
org.eclipse.wst._javascript_.ui
org.eclipse.jst.jsp.core
org.eclipse.jst.jsp.ui
Web Services and WSDL (Component Team
that works on current WST and JST Server component features)
Chris, Kathy,
Peter, Craig, Richard, David L, Kate Price, David Williams, Naci
Dai
org.eclipse.wst.ws_core.feature
org.eclipse.wst.ws_sdk.feature
org.eclipse.wst.ws_tests.feature
org.eclipse.wst.ws_ui.feature
org.eclipse.wst.ws_userdoc.feature Web Projects (Component Team that works on current WST and JST Project
models, refactoring, etc)
Chuck, John, Rob Frost
Naci Dai, Kate Price, David Williams
org.eclipse.jst.web_core.feature
org.eclipse.jst.web_sdk.feature
org.eclipse.jst.web_tests.feature
org.eclipse.jst.web_ui.feature
org.eclipse.jst.web_userdoc.feature
org.eclipse.wst.web_core.feature
org.eclipse.wst.web_sdk.feature
org.eclipse.wst.web_tests.feature
org.eclipse.wst.web_ui.feature
org.eclipse.wst.web_userdoc.feature JEE and EJB2 (Component Team that works on current JST J2EE and
EJB)
Chuck, John, Sinan Konya, Naci Dai, Rob Frost
Kate Price, David Williams
org.eclipse.jst.enterprise_core.feature
org.eclipse.jst.enterprise_sdk.feature
org.eclipse.jst.enterprise_tests.feature
org.eclipse.jst.enterprise_ui.feature
org.eclipse.jst.enterprise_userdoc.feature Background "Component" is used in many ways, so for the purposes here,
"Component Team", means those committers responsible for one or more
components of code (and the
corresponding components of bugzilla, cvs, etc). Here's a "picture" of the organization we will have
during WTP 2.0 development (numbers are approximate), I think WST and JST are "too big" for efficient, agile
development by Component Teams.
Webtools (WST and JST) 23
IBM
14
BEA
3
Turkcell 1
Eteration 2
JBoss
1
SAS
1
Oracle 1
Dali:
11
Oracle: 6
Versant: 3
BEA 1
JBoss 1
JSF:
5
Oracle: 4
Sybase 1
ATF:
5
IBM:
5
I think
we should be explicit, that Dali (JPA), JSF, and ATF, will remain being their
own component teams, for
decision
making, planning, etc. as well as them "voting in" their own future committers
that they would find valuable. That is,
if/when they graduate incubation, and if/when joint WTP, they would join
as their own WTP Component Team, in the sense of this document.