This is an important topic. The current approach of bundling the cartridges with the Sculptor distribution doesn't scale (different release cycle).
We need to decouple the cartridges from Sculptors build and release cycle. E.g. right now I have a few improvements for the Spring Data JPA cartridge but I must wait for the next Sculptor release to publish a new version of this cartridge.
So regarding point 1 I suggest using a separate repository for each cartridge. This gives every cartridge it's own collaborators/team, branches, tickets, watch, stars, forks, pull requests...
The creation of a repository for a new cartridge could be triggered by creating a ticket in the Sculptor repository. This ticket provides a (unique) id, a (descriptive) name and a short description of the cartridge.
A few thoughts regarding point 2:
- every cartridge needs a unique id (lowercase alpha) which is used in various places, e.g. repo name, Maven artefact ID, Java package, property "cartridges="
- every cartridge should uses the same release / deployment process for publishing to Maven Central, e.g. by inheriting from a shared / common POM
Maybe we can come up with a Maven archetypes for creating a skeleton of a new Sculptor cartridge.
Any thoughts?
/Torsten