...
Interim Conclusions (as of 1pm7am, 1 3 Dec 12):
- yes, to idea of independent, more granular releases (this means that separate modules so don't share common parent, ie are separate artifacts)
- yes, flatten the modules at least as an interim step
- refactor the groupId/artifactId's to aid understandability:
- all artifactIds have an 'isis-' prefix so that, when assembled together in a single directory (eg WEB-INF/lib), they are easily identifiable as being Isis'.
- all artifactids also specify the component type, otherwise would be confusion between isis-sql.jar: is it an objectstore, or is it a security impl, or what?
- prefer that artifactIds read well, ie "isis-nosql-objectstore" rather than "isis-objectstore-nosql"
- consolidate artifacts where makes sense
Still being debated:
- what groupIds to have. I prefer them go with a small set of groupIds, broadly reflecting nature of component
- combine core and runtime artifacts
Still being debated:
- do directory names have to follow artifactIds? I'd rather they didn't, instead use component-impl format so lists better in OS shell (ls, dir)
- which modules to retire, if any?
- do we move the separate modules into their own git repos?
- exactly how do we combine artifacts (stuff below is Dan's suggestion)
- whether to use 'edition' instead of 'archetype'. In previous iteration, was using 'edition', but have now reverted to using 'archetype' once more
Refactoring: Resultant GroupIds
Refactoring: Resultant GroupIds
The table at the end of this page summarises The table at the end of this page summarises proposed refactorings for all the current Isis artifacts. But to cut to the chase, we would end up with the following groupIds:
...
Code Block |
---|
archetypes/ dnd-xml scimpi-nosql wicket-restful-jdo core/ applibdeployment/ applib # for end-users to reference bytecode-cglib bytecode-javassist core # most of core; basically the metamodel, facet factories, default progmodel, and a runtime API integtestsupport runtime # for end-users when writing their apps, also used internally for tck end-to-end tests objectstore-inmemory profilestore-inmemory runtime # the default runtime impl (IsisContext service locator, default impls of components, objectstore API) security-noopdevelopment/ security-file tck/* integtestsupport unittestsupport # for end-users #when core'swriting testsupporttheir moduleapps, mostlyalso used internally for our own unit testing purposes unreleased/tck end-to-end tests tck/* unittestsupport # core's excludedtestsupport frommodule, releasemostly usingfor Mavenour profileown (ifunit aretesting releasedpurposes in future, then movewebserver up to root directory, ie ../..) profilestore-sql # not in runtime because is only a dev env utility components/ # all components are released separately from core (have org.apache:apache as their parent) objectstores/ inmemory jdo/* nosql/* sql/* xml/* profilestores/ profilestore-xmlinmemory progmodel-groovysql xml progmodel-wrapperprogmodels security-ldapgroovy security-sqlwrapper viewer-bddsecurity/* viewer-junitnoop webserver file ldap sql viewer/ # not inbdd/* runtime because is onlydnd a dev env utilityjunit objectstore-jdo restfulobjects/* objectstore-nosql/* objectstore-sql/* objectstore-xml scimpi/* wicket/* retired/ monitoring viewer-html/ viewer-dnd viewer-restfulobjects/* viewer-scimpi/* viewer-wicket/* html |
As noted above, all of the pom.xml's in these top-level directories for each of the components are separately releaseable (have org.apache:apache as their parent).
...
- C = core, parented by "org.apache.isis:isis" (as currently)
- L = rolled up into parent with other modules, see Notes column for further details
- A = alternate implementation, not parented by org.apache.isis:isis (instead would define its own parent), thus separately releasable. Might move to own git repo
- A = edition, ie an archetype, not parented by org.apache.isis:isis (instead would define its own parent), thus separately releasable. Might move to own git repo
- X = excluded, parented by "org.apache.isis:isis" but not released (excluded through use of Maven profile). Might one day be promoted to being an alternate implementation.
- R = retired
- D = deleted
IN THE TABLE BELOW, I HAVEN'T YET UPDATED THE PROPOSED LOCATION COLUMN; SEE INSTEAD THE DIRECTORY LIST ABOVE
current | current | proposed | proposed location | proposed | proposed |
|
---|---|---|---|---|---|---|
groupId | artifactId | action | (relative to root dir) | groupId | artifactId | Notes |
o.a.i | isis | C | . | o.a.i | isis |
|
o.a.i | applib | C | core/applib | o.a.i | isis-applib |
|
o.a.i | isis.core | C | core/core | o.a.i.core | isis-core | "Source from submodules rolls up to this parent (packaging=jar not packaging=pom)" |
o.a.i.core | commons | L | — | — | — | Rolled up into oai.core:isis-core |
o.a.i.core | metamodel | L | — | — | — | Rolled up into oai.core:isis-core |
o.a.i.core | progmodel | L | — | — | — | Rolled up into oai.core:isis-core |
o.a.i.core | testsupport | C | core/unittestsupport | o.a.i.core | isis-unittestsupport | "Not rolled up because intended to be referenced with scope=test; renamed to distinguish from integtestsupport" |
o.a.i.core | webapp | L | — | — | — | Rolled up into oai.core:isis-core |
o.a.i | isis.runtimes | D | — | — | — | "Delete module due to flattening " |
o.a.i.runtimes | dflt | C | core/runtime | o.a.i.core | isis-runtime | "Source from submodules rolls up to this parent (packaging=jar not packaging=pom)" |
o.a.i.runtimes.dflt | runtime | L | — | — | — | Rolled up into oai.core:isis-runtime |
o.a.i.runtimes.dflt | testsupport | C | core/integtestsupport | o.a.i.core | isis-integtestsupport | Utilities for end-users to write integration tests using Isis (cf Arquillian); also used by tck tests internally |
o.a.i.runtimes.dflt | webapp | L | — | — | — | Rolled up into oai.core:isis-runtime |
o.a.i.runtimes.dflt | webserver | C | core/webserver | o.a.i.core | isis-webserver | Utilities for end-users to bootstrap Isis as a webapp |
o.a.i.runtimes.dflt | bytecode | D | — | — | — |
|
o.a.i.runtimes.dflt.bytecode | dflt | C | core/bytecode-cglib | — | isis-cglib-bytecode | "Suggest no longer positioned as 'default' since JDO for example does not require this module." |
o.a.i.runtimes.dflt.bytecode | identity | L | — | — | — | "Rolled up into oai.core:isis-runtime; is the new 'default'" |
o.a.i.runtimes.dflt.bytecode | javassist | C | core/bytecode-javassist | o.a.i.core | isis-javassist-bytecode |
|
o.a.i.runtimes.dflt | monitoring | R | retired/monitoring | o.a.i.monitoring | isis-monitoring | Suggest we retire this module |
o.a.i.runtimes.dflt | objectstores | D | — | — | — | "Delete module due to flattening " |
o.a.i.runtimes.dflt.objectstores | dflt | C | core/objectstore-inmemory | o.a.i.core | isis-inmemory-objectstore | "Suggest rename to be more descriptive removing 'dflt'" |
o.a.i.runtimes.dflt.objectstores | jdo | A | objectstore-jdo | o.a.i.objectstore | isis-jdo-objectstore |
|
o.a.i.runtimes.dflt.objectstores | jdo-applib | A | objectstore-jdo/applib | o.a.i.objectstore | isis-jdo-objectstore-applib |
|
o.a.i.runtimes.dflt.objectstores | jdo-datanucleus | A | objectstore-jdo/datanucleus | o.a.i.objectstore | isis-jdo-objectstore-datanucleus |
|
o.a.i.runtimes.dflt.objectstores | jdo-metamodel | A | objectstore-jdo/metamodel | o.a.i.objectstore | isis-jdo-objectstore-metamodel |
|
o.a.i.runtimes.dflt.objectstores | nosql | A | objectstore-nosql | o.a.i.objectstore | isis-nosql-objectstore |
|
o.a.i.runtimes.dflt.objectstores | sql | A | objectstore-sql | o.a.i.objectstore | isis-sql-objectstore |
|
o.a.i.runtimes.dflt.objectstores | sql-impl | A | objectstore-sql/impl | o.a.i.objectstore | isis-sql-objectstore-impl |
|
o.a.i.runtimes.dflt.objectstores | sql-tests-common | A | objectstore-sql/tests-common | o.a.i.objectstore | isis-sql-objectstore-tests-common |
|
o.a.i.runtimes.dflt.objectstores | sql-tests-served | A | objectstore-sql/tests-served | o.a.i.objectstore | isis-sql-objectstore-tests-served |
|
o.a.i.runtimes.dflt.objectstores | xml | A | objectstore-xml | o.a.i.objectstore | isis-xml-objectstore |
|
o.a.i.runtimes.dflt | profilestores | — | — | — | — | "Delete module due to flattening " |
o.a.i.runtimes.dflt.profilestores | dflt | C | core/profilestore-inmemory | o.a.i.core | isis-inmemory-profilestore | "Suggest rename to be more descriptive removing 'dflt'" |
o.a.i.runtimes.dflt.profilestores | sql | X | core/extras/profilestore-sql | o.a.i.profilestore | isis-sql-profilestore |
|
o.a.i.runtimes.dflt.profilestores | xml | X | core/extras/profilestore-xml | o.a.i.profilestore | isis-xml-profilestore |
|
o.a.i | progmodels | D | — | — | — | "Delete module due to flattening " |
o.a.i.progmodels | dflt | L |
| o.a.i.core | isis-progmodel-dflt | Suggest simply roll up into core |
o.a.i.progmodels | groovy | X | core/unreleased/progmodel-groovy | o.a.i.progmodel | isis-progmodel-groovy |
|
o.a.i.progmodels | groovy-applib | X | core/unreleased/progmodel-groovy/applib | o.a.i.progmodel | isis-progmodel-groovy-applib |
|
o.a.i.progmodels | groovy-metamodel | X | core/unreleased/progmodel-groovy/metamodel | o.a.i.progmodel | isis-progmodel-groovy-metamodel |
|
o.a.i.progmodels | wrapper | X | core/unreleased/progmodel-wrapper | o.a.i.progmodel | isis-progmodel-wrapper |
|
o.a.i.progmodels | wrapper-applib | X | core/unreleased/progmodel-wrapper/applib | o.a.i.progmodel | isis-progmodel-wrapper-applib |
|
o.a.i.progmodels | wrapper-metamodel | X | core/unreleased/progmodel-wrapper/metamodel | o.a.i.progmodel | isis-progmodel-wrapper-metamodel |
|
o.a.i | isis.viewer | D | — | — | — | "Delete module due to flattening " |
o.a.i.viewer | bdd | X | core/unreleased/viewer-bdd | o.a.i.viewer | isis-viewer-bdd |
|
o.a.i.viewer | bdd-common | X | core/unreleased/viewer-bdd/common | o.a.i.viewer | isis-bdd-viewer-bdd-common |
|
o.a.i.viewer | bdd-concordion | X | core/unreleased/viewer-bdd/concordion | o.a.i.viewer | isis-bdd-viewer-concordion |
|
o.a.i.viewer | bdd-concordion-tck | X | core/unreleased/viewer-bdd/concordion-tck | o.a.i.viewer | isis-bdd-viewer-concordion-tck |
|
o.a.i.viewer | dnd | A | viewer-dnd | o.a.i.viewer | isis-dnd-viewer |
|
o.a.i.viewer | html | D | retired/viewer-html | — | — | Suggest we retire this module |
o.a.i.viewer | junit | X | core/unreleased/viewer-junit | o.a.i.viewer | isis-junit-viewer |
|
o.a.i.viewer | junit-tck | X | core/unreleased/viewer-junit-tck | o.a.i.viewer | isis-junit-viewer-tck |
|
o.a.i.viewer | restfulobjects | A | viewer-restfulobjects | o.a.i.viewer | isis-restfulobjects-viewer |
|
o.a.i.viewer | restfulobjects-applib | A | viewer-restfulobjects/applib | o.a.i.viewer | isis-restfulobjects-viewer-applib |
|
o.a.i.viewer | restfulobjects-viewer | A | viewer-restfulobjects/viewer | o.a.i.viewer | isis-restfulobjects-viewer-viewer |
|
o.a.i.viewer | restfulobjects-tck | A | viewer-restfulobjects/tck | o.a.i.viewer | isis-restfulobjects-viewer-tck |
|
o.a.i.viewer | scimpi | A | viewer-scimpi | o.a.i.viewer | isis-scimpi-viewer |
|
o.a.i.viewer | scimpi-dispatcher | A | viewer-scimpi/dispatcher | o.a.i.viewer | isis-scimpi-viewer-dispatcher |
|
o.a.i.viewer | scimpi-servlet | A | viewer-scimpi/servlet | o.a.i.viewer | isis-scimpi-viewer-servlet |
|
o.a.i.viewer | scimpi-tck | A | viewer-scimpi/tck | o.a.i.viewer | isis-scimpi-viewer-tck |
|
o.a.i.viewer | wicket | A | viewer-wicket | o.a.i.viewer | isis-wicket-viewer |
|
o.a.i.viewer | wicket-model | A | viewer-wicket/model | o.a.i.viewer | isis-wicket-viewer-model |
|
o.a.i.viewer | wicket-ui | A | viewer-wicket/ui | o.a.i.viewer | isis-wicket-viewer-ui |
|
o.a.i.viewer | wicket-viewer | A | viewer-wicket/viewer | o.a.i.viewer | isis-wicket-viewer-viewer |
|
o.a.i.viewer | wicket-tck | A | viewer-wicket/tck | o.a.i.viewer | isis-wicket-viewer-tck |
|
o.a.i | security | — | — | — | — | "Delete module due to flattening " |
o.a.i.security | isis.security.dflt | C | core/security-noop | o.a.i.core | isis-noop-security | Renamed for understandability |
o.a.i.security | file | C | core/security-file | o.a.i.core | isis-file-security |
|
o.a.i.security | ldap | X | core/unreleased/security-ldap | o.a.i.security | isis-ldap-security |
|
o.a.i.security | sql | X | core/unreleased/security-sql | o.a.i.security | isis-sql-security |
|
o.a.i | isis.tck | C | core/tck | o.a.i.core | isis-tck |
|
o.a.i | isis.tck-dom | C | core/tck-dom | o.a.i.core | isis-tck-dom |
|
o.a.i | isis.tck-fixture | C | core/tck-fixture | o.a.i.core | isis-tck-fixture |
|
o.a.i.skins | classic-skins | C | core/site-skin | o.a.i.core | isis-site-skin | Renamed for understandability |
o.a.i | quickstart-archetype | T | archetypes/wicket-restful-jdo | o.a.i.archetypes | isis-archetype-wicket-restful-jdo | each archetype represents an 'edition' of Isis; separately releasable |
o.a.i | quickstart-archetype | T | archetypes/scimpi-nosql | o.a.i.archetypes | isis-archetype-scimpi-nosql |
|
o.a.i | quickstart-archetype | T | archetypes/dnd-xml | o.a.i.archetypes | isis-archetype-dnd-xml |
|
...