+1 for a single trunk with all the subprojects below it.  It makes checking out 
the whole code base and tagging/branching much easier.  So marking all the 
components as ctakes 2.6 would be a lot simpler.

+1 for multiple jars.  Maven encourages a good practice here that is useful in 
projects whether or not they use maven — each project should produce one main 
jar (it may produce additional jars for things like source and javadocs).  This 
keeps a nice clean one-to-one association between projects and jar files.

+1 on using the standard src/main/java type directory structure.  This is very 
commonly used and I don't think we should invent our own.  It makes it easy for 
newcomers to just know where everything is without thinking about it.

+1 for encouraging building of unit tests and examples.  I'd suggest keeping 
examples in their own projects (core, core-examples, assertion, 
assertion-examples, etc).  This makes it obvious where the examples are and it 
doesn't clutter up the primary release binary.

+1 for the common package structure and naming, though I think this probably 
needs some more thought than just adopting whatever comes first.  All of our 
modules have some similar pieces seeing as their uima components doing nlp work 
(analysis engine, configuration/resources, training, decoding, evaluation, etc).

I agree that models/resources to be managed specially.  I'd like to see these 
managed (on the deployment/release side) as maven artifacts.

For these models, if we do keep them in svn, I'd like to suggest that we do not 
keep them under the common root trunk/tags/branches.  These files are easily 
hundreds of MB to gigabytes.  And I'd like to see the svn operations perform 
quickly.  I'd also like to be able to have multiple version of ctakes checked 
out.

Maybe we could use something like this:

ctakes/modules/trunk
ctakes/modules/trunk/core
ctakes/modules/trunk/lvg
ctakes/resources/trunk
ctakes/resources/trunk/lvg-model
ctakes/resources/trunk

Then if you're not working on model development, you just need to check out 
ctakes/modules/trunk, and maven would pull in any resources as needed.

Matt

Reply via email to