Stage 1: remove use of database and index from core consumers (move implementation into respective database and index modules) Done! Stage 2: separate model from JPOX annotated classes, centralising JPOX use in database Done! Stage 3: add a basic repository querying API for base artifact information and retrieval of metadata * RSS, browse * consider repository-api refactorings * replace archiva-model with separated repository APIs * at this point, should be able to have functional Archiva without a database * note that metadata need not be stored with the artifacts themselves, but will be by default Stage 4: incorporation of event API * used to centralise arrival, removal, etc of files/artifacts in the repository * errors should be events as well to avoid exceptions in the logs and instead meaningful handling/reporting * could also be used for configuration events * consider hooking the audit log to this as well Stage 5: isolate scanning code * Repository should operate without scanning code, it should push events if enabled * better assessment of its progress, performance * removal of database / repository scanning duality - all operations are driven by the event bus * move some database operations to a housekeeping scheduled task (same for index), make scheduled tasks a listable item based on available plugins