Hi,
I'll put my mentor hat on, for now.
It's good to have the discussion over the future of the project, and
it looks like the discussion here is timely.
Janne's reply regarding timing of the rename is worth respecting. I
would like to see more communication to the group regarding the
expected conclusion of the JCR work. I would not like to see JCR delay
the project for more than a couple of months. One reason for a
community of folks working on the project. So while there's no need to
rush things that are coming up quickly, we should try to avoid losing
momentum.
The rest of this post is my technical feedback.
Refactoring interfaces from classes needs a corresponding class
factory. Has this been thought through? There are good reasons for
interfaces with factories, primarily driven by needing multiple
independent implementations. But classes with exernally-written
subclasses are also a good approach if most subclasses just need to
change a small bit of behavior.
Splitting the stable interfaces apart from the implementation doesn't
necessarily need a new package name. Either org.apache.jspwiki or
org.apache.jspwiki.api could be used.
Craig
On Dec 30, 2008, at 8:48 AM, Andrew Jaquith wrote:
Most of you have probably been following the debate on package
renaming, and the associated creation of a separate .api package --
with bated breath I'm sure. It's time to get a consensus from the
group about the direction to proceed.
I ask the group for three votes:
ITEM 1.
Immediate renaming of all packages from com.ecyrd.jspwiki to
org.apache.jspwiki, so that we can move to release an early alpha
Apache build.
Details: This would cause all packages currently named
com.ecyrd.jspwiki to be renamed to org.apache.jspwiki
Recommendation: I vote +1 for this item, and recommend the same to
the group.
ITEM 2.
Refactoring concrete classes (e.g., WikiEngine) into interfaces
whenever possible, and supplementing them with factory interfaces if
warranted (e.g., interface WikiEngineFactory).
Details: For those of you who use Eclipse, this is similar to an
"Extract interface" refactoring step, where concrete classes like
WikiEngine are turned into interfaces that are meant to be stable. The
concrete class WikiEngine would be renamed to something like
DefaultWikiEngine.
Recommendation: I vote +1 for this item, and recommend the same to
the group.
ITEM 3.
Creation of the .api package/package tree, and creation of various
types in this package/package tree (e.g., WikiEngine, WikiPage) for
stable interfaces.
Details: The org.apache.jspwiki.api package has been proposed by Janne
(and partially implemented) as a dedicated package tree where stable
interfaces would live, separate from the existing com.ecyrd.jspwiki
and future org.apache.jspwiki package trees. See the debate at
https://issues.apache.org/jira/browse/JSPWIKI-38 for details. This is
essentially a retroactive vote: majority approval would commit us to
this direction; majority disapproval would cause contents of the .api
package to be reincorporated into the existing tree.
Recommendation: I vote -1 (veto) for this item. I prefer the status
quo, to keep stable interfaces in the existing package tree.
Summary of my votes here:
Item 1: +1
Item 2: +1
Item 3: -1
Craig L Russell
Architect, Sun Java Enterprise System http://db.apache.org/jdo
408 276-5638 mailto:[email protected]
P.S. A good JDO? O, Gasp!