Changes between Version 1 and Version 2 of ComponentVersioning


Ignore:
Timestamp:
04/10/12 10:01:14 (12 years ago)
Author:
twagoo
Comment:

design,implementation,discussion (work in progress)

Legend:

Unmodified
Added
Removed
Modified
  • ComponentVersioning

    v1 v2  
    11The purpose of this page is to come to a design for an extension of the [[ComponentRegistryAndEditor|ComponentRegistry]] that will enable '''versioning''' and '''deprecation''' of components and profiles.
    22
    3 == Component versioning ==
     3= Component versioning =
    44
    5 Definitions
     5== Definitions ==
    66
    77* '''Component''' refers to both components and profiles as specified by the [source:metadata/trunk/toolkit/general-component-schema.xsd general component schema] that exist in the ComponentRegistry;
    88* '''Versioning''' refers to the precursor/successor relation that may exists between two components. It does not imply a structural or functional extension or inheritance, i.e. the structure of the precursor component does not put any constraints on the structure of the successor relation; no assumptions about the structure of the' one can be made on basis of the structure of the other. Versioning does not imply deprecation (see below) of the precursor.
    99* '''Deprecation''' refers to a state in which a component is no longer 'advertised' by the registry (it will not appear in the list of published components) and will be explicitly marked as such to the client. However it will still be accessible by its URI so that instances based on deprecated components will remain valid. Apart from this, the properties of published components apply. Deprecation can be combined with versioning.
     10
     11== Design ==
     12
     13For each component the following will be specified and communicated to the client:
     14
     15* A flag indicating whether the component is deprecated ('false' by default)
     16* A (possibly empty) set of ''direct'' successors
     17
     18The !ComponentRegistry web service (and as a result this will also apply to the Flex-based component browser) will not display deprecated components in any listing (e.g. [http://catalog.clarin.eu/ds/ComponentRegistry/rest/registry/profiles /registry/profiles]). However, they will still be available by their ID (like [http://catalog.clarin.eu/ds/ComponentRegistry/rest/registry/profiles/clarin.eu:cr1:p_1297242111880 /registry/profiles/clarin.eu:cr1:p_1297242111880]).
     19
     20There will be a call to list all direct (and possibly also recursive) successors
     21
     22== Implementation ==
     23
     24The !ComponentRegistry web service has a PostgreSQL back-end in which it stores both the component specifications in their verbatim XML formatting and 'component metadata' (referred to as 'descriptions' to avoid ambiguity) containing fields such as 'creator' and 'group'. The 'deprecated' property can be added to this. To accommodate the successor relations, an additional table has to be added simply linking precursors and successors, and optionally storing a comment on each relation.
    1025
    1126{{{#!comment
     
    1530
    1631Relations:
    17 1:0..* 0=deprecated, 1+=successor(s)
    18 OR
    1932Deprecated yes/no & 0..* successors
    2033
     
    2437Get current successor=>follow successors
    2538}}}
     39
     40== Discussion ==
     41
     42* Should we limit deprecation and versioning to published components?