On Tue, 13 Jul 2004, Ted Husted wrote:
I got the opt- convention from Maverick. They have a core distribution, and then several optional distributions for using the framework with different view technologies. The idea is that all of these other distributions are optional. Of course, Linux also uses "/opt" for packages that are not installed by RPM.
It's my feeling that the repository should be as flat as possible. Each of the top-level directories should represent a discrete subproject, or Maven artifact, with its own release cycle. The subproject under each of these directories would not share any source code. All sharing would be by the JAR each produces.
In other words, we treat the top-level directories like modules even though they would be defined with the one CVS module. Under SVN, you can could check-out any of these subdirectories out as if they were modules, so we can have it both ways. (You don't have to checkout the gorilla if you only want the banana.)
As long as it's easy for me to check out the entire gorilla if that's what I want. ;-)
I don't recommend trying to apply a taxonomy within the repository. If we want to categorize subprojects by technology on a webpage that's fine. But I don't want to have the conversation of whether "faces" belongs under "view" or not. :)
A structure like this (opt names for example only -- I don't know if all of these communities would want to be Struts subprojects or not):
struts-apps/ struts-core/ struts-site/ struts-opt-bsf/ struts-opt-el/ struts-opt-faces/ struts-opt-menu/ struts-opt-stxx/ struts-opt-taglib/ struts-opt-testcase/ struts-opt-workflow/
says that we host 11 distributions (yahoo!). Each of these subdirectory names would also be the name of the Maven artifact produced (struts-core-jar, struts-opt-el.jar). The first three distributions are part of the standard release, and the other eight are optional. You can use them or not, in whatever combination you please.
That sounds nice in theory, but there are going to be cases where we'll need to share code between different 'opt's, and it's not clear (to me, at least) where that fits. For example, where would we put the methods that are currently in RequestUtils but that are tied to JSP? I would be very much opposed to JSP specific code being in core, but I'm not sure where else it would go. Would we need an opt-jsp just for that, that the other 'opt's depend on?
If this many root folders is a real problem for people, I could also see
struts/ ./apps ./core ./site
struts-opt/ ./bsf ./el ./faces ./menu ./stxx ./taglib ./testcase ./workflow
So, a project.xml at
/struts-opt/bsf/project.xml
would generate an artifact like struts-opt-bsf-1.0.1.jar.
Anyway, I'm getting the Struts SVN module setup, and hopefully it will be available later today. This will be a direct dump of the current CVS that we can refactor.
Cool! ;-)
-- Martin Cooper
-Ted.
On Tue, 13 Jul 2004 10:52:44 -0500, Joe Germuska wrote:OK, here's a revised idea. James H had a post (http://thread.gmane.org/gmane.comp.jakarta.struts.devel/18248) where he mentioned a few popular Struts projects. Please note that none of these have been officially invited to be part of Struts, and some may not want to be part of Struts... This is just to help flesh out the exercise.
I'm not sure how we settled on the "opt-*" convention, but my feeling is that it will get annoyingly wide at the top of the module, so this proposes changing "opt" to a directory. I agree with Martin that we may want better names to distinguish between "taglib" and "el", especially if we were to introduce other taglib- ish things (like Struts Menu). But for now -- (a) does anyone hate "opt" as a directory, or really think it needs to be part of another directory name (do we need "opt-*/...") and (b) do people have strong feelings about an opt directory having a subdirectory like "view". Should "view" be parallel to "opt"?
struts/ struts/core struts/apps struts/site struts/opt/view/taglib struts/opt/view/el struts/opt/view/menu struts/opt/view/stxx struts/opt/faces struts/opt/testcase struts/opt/workflow struts/opt/bsf
Regarding a place for non-taglib JSP stuff, I'm not sure how that would look, so I'm not sure how to propose handling it.
Joe
My understanding was that we had settled on a single module, "struts", under which we would have something like below (mostly lifted from an email from Ted to the [EMAIL PROTECTED] list)
struts/ struts/core struts/apps struts/site struts/opt-taglib struts/opt-el struts/opt-faces
etc.
But I'm not married to that. I think a single module is easier for a lot of reasons, and you can partition the space within the module as much as you want so that I don't think you need parallel modules. I don't have a strong opinion about how the module is partitioned. One of the things I need to experiment with is whether it works to have a "site" directory alongside other directories when you go to build the site with Maven. I'm not sure if that'll work or not.
+1 for a single module. We'll need to be disciplined, I think, so that we don't lump a lot of "common" stuff into the top level, but we can work that out.
Regarding the particular structure noted above, I do have a couple of issues that I noted before on this list, mostly related to view technologies.
* I would like to see the core be independent of servlets, portlets, and especially JSP. The above structure has nowhere to put code that is JSP specific, but not related to taglibs.
* While I understand the intent behind opt-taglib, I feel it is misnamed, since opt-el is also a set of taglibs, and opt-faces includes a taglib as well.
* As we move forward, I believe the general concensus is to deprecate (in some sense of the word) the tags that have effectively been supplanted by JSTL. We might want to think about how to separate "legacy" tags from those that retain their utility and are tied to Struts. (The idea of moving the tags out of Struts entirely has been suggested somewhere along the line, but I have concerns about Jakarta Taglibs being somewhat of a SourceForge for taglibs these days, so I'm not sure where I would land on that one.)
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]