Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

 

...