wiki:CMDI 1.2/Lifecycle management/Summary

Version 4 (modified by Twan Goosen, 10 years ago) (diff)

further condensed summary

This page is a subpage of CMDI 1.2

Lifecycle Management in CMDI 1.2: Executive summary

This page provides an executive summary of the issue and proposed solution fully described in CMDI 1.2/Lifecycle management.

Issue description

There is a need for options for versioning and deprecation of CMDI component and profiles. Such features are believed to be helpful in reducing the perceived 'proliferation' in the Component Registry. Currently, published components cannot be deleted without potential affecting instances and no formal relations between successors and predecessors can be defined.

Description of proposed solution

The component specification needs to be extended with a number of header elements that contain the versioning information, as described in the following subsections. The CMDI Component Registry will have to manage the status of each component and discourage users (both metadata modellers and creators) from using components or profiles that carry a non-production (i.e. development or deprecated) state. Details of the required changes are given below.

Status header

/CMD_ComponentSpec/Header/Status

This mandatory element indicates the status of the component at time of retrieval. It has exactly one value out of the following:

  • development (may still be edited by owner(s); only listed if marked for review)
  • production (should be listed publicly, read-only to everyone)
  • deprecated (no longer in public listing, queryable and read-only to everyone)

Implications for the infrastructure: Only the following status changed should be allowed: developmentproduction and productiondeprecated.

Status comment header (optional)

/CMD_ComponentSpec/Header/StatusComment

Optional element allowing for information regarding the reason for deprecation or succession.

Successor header (optional)

/CMD_ComponentSpec/Header/Successor

Optional element pointing to the direct successor of the component, indicating a succession relation. It is only meaningful if the status is deprecated. The value should be the full URI of the successor component. Only a single successor can be specified.

Implications for the infrastructure: Succession is a transitive relation. The status of the final component in a successor chain should be production. Users should be warned when deprecating a component without specifying a successor component.

'Derived from' header (optional)

/CMD_ComponentSpec/Header/DerivedFrom

Optional element pointing to the component from which the specified component was derived. No structural relation or similarity is implied. It is intended to be used for the construction of 'derivation trees' to the benefit of metadata modelers. Only a single component can be specified here.

Note that the derived-from relation is not the inverse of the successor relation.


Infrastructure: Component Registry

Status filtering

The browsing mode of the Component Registry and its component listing in the REST service need to be filterable. The currently present switch between private and public components needs to be replaced with two new main views: one for components visible by the logged in user and one for components visible to the public; there may be an overlap. Then the following filter toggles are available for the latter view, both OFF by default:

  • development components marked for review
  • deprecated components
Usage warnings

Warnings can be given at different stages:

  • visually but non-obtrusive in the listing (e.g. warning icons in the table)
  • through a modal dialogue when a user actively decides to include such a component (recursively).
  • visually in single component view (e.g. warning icon beside any deprecated item)
Automatic 'derived from'

When a component is created by selecting an existing component and clicking 'edit as new', the DerivedFrom header value should automatically be populated with the ID of the original component. However it should be possible for the user to remove this or put another ID in place (but this should clearly be an advanced option!).

Owner/user notifications

It would be desirable to offer a means of active notification to the user in a number of cases:

  • to component owners when a component referenced (either directly or indirectly) in one of their components becomes deprecated
  • to component owners when a derivative of one of their components is created
  • to subscribers when any of the subscribed components become deprecated

RSS and e-mail can be used as means of notification/subscription.


Tools: metadata editing

Deprecated versions of profiles should not be advertised to the user (e.g. should not appear in the profiles list in Arbil) but there should be no restriction in using them (i.e. the can still be added by their schema URL) and existing metadata will be untouched. The metadata editor however could indicate the deprecated status of used profiles, including (non-obtrusive) notifications about the status of the profile the metadata being worked on is based on. For example, the icon shown for the metadata documents could reflect the state of the profile. Similarly, the list of active profiles in Arbil could mark those profiles in the list that are marked as deprecated. In case a successor is available, the editor should notify the user about that as well and ideally offer to load that profile instead (or in addition). Automatic upgrading to the new version should not happen, but assisting the user in attempting a migration could be considered (here the user should be warned about potential implications on the semantics of the existing values as a result!).


Tools: search & catalogue tools

Search tools that explicitly distinguish between profiles in the user interface could apply clustering with respect to different versions of the same profile (traversing the succession chain). In those cases where profile names are shown, it could make sense to show the status of the profile (e.g. under development, deprecated) if this is considered to be of interest to the user.