Changes between Version 23 and Version 24 of CMDI 1.2/Lifecycle management


Ignore:
Timestamp:
02/13/14 13:49:09 (10 years ago)
Author:
herold
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CMDI 1.2/Lifecycle management

    v23 v24  
    33= Component lifecycle management in CMDI 1.2 =
    44
    5 [[PageOutline(1-5)]]
     5[[PageOutline(1-4)]]
    66
    77== The issue ==
     
    99The issue has been described and explored on the page [[ComponentVersioning]]. The issue description below is based on the one found on that page.
    1010
    11 Once published a component gets 'frozen' so that all instantiations can rely on it not changing and thus are guaranteed to retain their validity. Also, after a certain 'cooling down' period, published components cannot be removed from the public space (except by admsuinistrators). Robust though this practice may be, it leads to issues when changes in the domain, or simply new insights, need to be incorporated in the component. It is easy to create a new component based on an existing one, extend it and finally make it public. But then one would like to communicate to the users of the component that they should use the new component for new metadata (possibly even convert existing metadata) instead of the old one. However, there are a few problems:
    12 co
     11Once published a component gets 'frozen' so that all instantiations can rely on it not changing and thus are guaranteed to retain their validity. Also, after a certain 'cooling down' period, published components cannot be removed from the public space (except by administrators). Robust though this practice may be, it leads to issues when changes in the domain or new insights need to be incorporated in the component. It is easy to create a new component based on an existing one, extend it and finally make it public. But then one would like to communicate to the users of the component that they should use the new component for new metadata (possibly even convert existing metadata) instead of the old one. However, there are a few problems:
     12
    1313* There is no reliable way to find out who is instantiating specific components, so the users are unknown and cannot simply be informed
    1414* The old component cannot be deleted, so new users might accidentally start using the old one
     
    1717A formal way of deprecating components and specifying versioning information would solve these issues. In such a workflow, the owner of a component can simply:
    1818
    19 0. Create a new component (typically copying the existing component as a basis)
     190. Create a new component (e.g. by copying the existing component as a basis)
    20200. Edit until satisfied
    21210. Publish into public space
     
    4040}}}
    4141This mandatory element indicates the status of the component at time of retrieval. It has exactly ''one'' value out of the following:
    42  * '''development''' (may still be edited by owner(s). Only listed if marked for review)
    43  * '''production''' (should be listed publicly, read-only to everyone)
    44  * '''deprecated''' (no longer in public listing, queryable and read-only to everyone)
     42 * ''development'' (may still be edited by owner(s); only listed if marked for review)
     43 * ''production'' (should be listed publicly, read-only to everyone)
     44 * ''deprecated'' (no longer in public listing, queryable and read-only to everyone)
     45
     46'''Implications for the infrastructure:''' Only the following status changed should be allowed: ''development'' → ''production'' and ''production'' → ''deprecated''.
    4547
    4648==== Status comment header (optional) ====
     
    5860}}}
    5961
    60 This optional element points to the direct successor of the component. It indicates a succession relation and is only meaningful if the values of ''Status'' is ''Deprecated''.
    61 The value should be the full URI of the successor component. Only a single successor can be specified. Status of  the final component in a successor chain should be "production".
     62This optional element points to the direct successor of the component. It indicates a succession relation and is only meaningful if the values of ''/CMD_ComponentSpec/Header/Status'' is ''deprecated''.
     63The value should be the full URI of the successor component. Only a single successor can be specified. The successor relation thus is a 1:1 relation.
     64
     65'''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.
     66
    6267
    6368==== Derived from header (optional) ====
     
    6974This optional element points to the component from which the specified component was derived. This information gets stored at the moment a component is created (i.e. generally this will happen automatically in the Component Registry). No structural inheritance or even similarity is implied. This element is intended to be used for the construction of 'derivation trees' for metadata modelers to navigate, e.g. inside the Component Registry. Only a single component can be specified here.
    7075
     76Note that the derived-from relation is '''not''' the inverse of the successor relation.
     77
    7178==== Centre impact ====
    7279
     
    7784Status can be mapped to views, see [[ComponentVersioning#Viewsworkspacesandregistries|ComponentVersioning]]. Besides that, the Component Registry will have to provide inputs for the user to manage the status of their own components. Part of the information gathering can be automated (!DerivedFrom).
    7885
    79 Information about impact of status change should be readily available to owner, especially when deprecating. For example, number of components in which the component-to-be-deprecated is included.
     86Information about impact of status change should be readily available to the owner, especially when deprecating. For example, the number of components in which the component-to-be-deprecated is included.
    8087
    8188====== Status filtering ======
    82 The browsing mode of the Component Registry, as well as the REST service through which the list of components and profiles can be requested, needs te be filterable. Currently, there is a switch between private and public components. With the proposed set of status values, this needs to be revisited. A suitable paradigm seems to consist of two main views: components visible by the logged in user and 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:
     89
     90The browsing mode of the Component Registry, as well as the REST service through which the list of components and profiles can be requested, needs to be filterable. Currently, there is a switch between private and public components. With the proposed set of status values, this needs to be revisited. A suitable paradigm seems to consist of two main views: components visible by the logged in user and 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:
    8391
    8492* development components marked for review
     
    9098* visually but non-obtrusive in the listing (e.g. warning icons on rows that represents the deprecated or development components)
    9199* through a modal dialogue when a user actively decides to include such a component (through 'edit as new' or by dragging it into a component being edited). Should be checked recursively, i.e. also give warning whenever the the selected component '''contains''' deprecated components.
    92 * visually in single component view (e.g. warning icon (same as in listing)beside any deprecated subcomponents in the lower pane of CR)
     100* visually in single component view (e.g. warning icon (same as in listing) beside any deprecated sub-components in the lower pane of CR)
    93101
    94102====== Automatic 'derived from' ======
     
    103111* Notification of component subscribers when any of the subscribed components become deprecated
    104112
    105 RSS or e-mail could be used as a means of notification/subscription
     113RSS or e-mail could be used as a means of notification/subscription.
    106114
    107115===== Tools: metadata editing =====
    108116
    109 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!).
     117Deprecated 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!).
    110118
    111119===== Tools: search & catalogue tools =====