[DuraSpace JIRA] (DS-4586) Item versioning: enable permanent handle reference to the most recent version of each items

0 views
Skip to first unread message

Jozsef Marton (LYRASIS JIRA)

unread,
Jul 21, 2021, 5:52:02 AM7/21/21
to dspace-...@googlegroups.com
Jozsef Marton created an issue
 
DSpace / Improvement DS-4586
Item versioning: enable permanent handle reference to the most recent version of each items
Issue Type: Improvement Improvement
Affects Versions: 6.3, 7.0
Assignee: Unassigned
Attachments: image-2021-07-21-11-44-37-570.png
Components: API
Created: 21/Jul/21 4:51 AM
Labels: versioning
Priority: Medium Medium
Reporter: Jozsef Marton

We were thinking of improving item versioning. Our aim was to:

  1. provide a persistent Handle for each item version
  2. provide a persistent Handle that references always the most recent version

 

While the current DSpace Handle versioning scheme allows (1), it does not provide (2). Basically our idea is the scheme of how arXiv.org provides persistent item references.

 

Our recommendation is as follows:

  • each original item version's handle (first version) should also have a version number, e.g. 123456789/1.1 (this is a change in behavior as currently, the first version never gets a suffix of .1, but can be switched off to retain original behavior, see below at configuration)
  • for each additional item version, the Handle's version number should be incremented by one which means the recent version would have the biggest version number. (this is how the versioning is working currently)
  • if we reference an item with its handle that does not reference a version suffix, then check if that handle literally exists, and
    • if it exists, it should resolve to the particular DSpace object (this is to retain backward compatibility)
    • if it does not exist, it should resolve to the most recent version then the most recent version

Configuration

To 'turn on' this feature an option named initialVersionSuffix should be added to the dspace.cfg or local.cfg config. If this option is missing or if it has an empty value then the item versioning acts like before. However, if it has a string of ".1" then the Handle of the very first version of the item will get a version suffix.

We have already implemented the changes for this feature on our development server running DSpace 6.3 to check our concept, and we are working on providing a clean and concise pull request. We are excited about your comments regarding this improvement and if you are willing to accept it to DSpace 6.x and 7.0 versions.

 

Example:

The version list of an item in XMLUI having three versions (one initial and two more). Version 1, 2 and 3 can be directly referenced by Handle ending with .1 , .2 and .3, respectively, while the handle DEV-DO-NOT-USE-10890/16143 without version suffix resolve currently to Version 3, because that is the most recent version.

 

Add Comment Add Comment
 
This message was sent by Atlassian Jira (v8.13.2#813002-sha1:c495a97)
Atlassian logo

Tim Donohue (LYRASIS JIRA)

unread,
Jul 21, 2021, 10:27:01 AM7/21/21
to dspace-...@googlegroups.com
Tim Donohue commented on Improvement DS-4586
 
Re: Item versioning: enable permanent handle reference to the most recent version of each items

Jozsef Marton: Unless I'm misunderstanding, this feature already exists in DSpace 6.x. See the DS-2496 ticket. Also see the 6.x documentation on Item versioning: https://wiki.lyrasis.org/display/DSDOC6x/Item+Level+Versioning#ItemLevelVersioning-IdentifierServiceOverride

Simply put, the canonical handle (the handle without any "." at the end) always points to the latest version. See the screenshot example in the docs above.

(As a sidenote, be aware that we are (slowly) working toward retiring JIRA in favor of GitHub Issues for DSpace 7 and above. So, any work you intend to aim towards DSpace 7 or above should likely be recorded in GitHub issues, so that it isn't lost or forgotten.)

Tim Donohue (LYRASIS JIRA)

unread,
Jul 21, 2021, 10:29:01 AM7/21/21
to dspace-...@googlegroups.com
Tim Donohue edited a comment on Improvement DS-4586
[~jmarton]: Unless I'm misunderstanding, this feature already exists in DSpace 6.x.  See the DS- 2496 1348 ticket.  Also see the 6.x documentation on Item versioning: https://wiki.lyrasis.org/display/DSDOC6x/Item+Level+Versioning#ItemLevelVersioning-IdentifierServiceOverride


Simply put, the canonical handle (the handle without any "." at the end) always points to the latest version.   See the screenshot example in the docs above.

(As a sidenote, be aware that we are (slowly) working toward retiring JIRA in favor of GitHub Issues for DSpace 7 and above.  So, any work you intend to aim towards DSpace 7 or above should likely be recorded in GitHub issues, so that it isn't lost or forgotten.)

Jozsef Marton (LYRASIS JIRA)

unread,
Jul 22, 2021, 11:56:01 AM7/22/21
to dspace-...@googlegroups.com
Jozsef Marton commented on Improvement DS-4586

Tim Donohue there is an important difference between the feature you have pointed and our approach: in the DSpace 4 & 5 way (DS6: VersionedHandleIdentifierWithCanonicalHandles), the most recent version of the item does not have a persistent handle (and thus can't be persistently referenced) until it is superseded by a newer version. In our approach, the item version gets its persistent handle as soon as it enters the repository.

 

E.g. in our approach, as displayed on the attached screenshot, the most recent version already has its persistent handle with ".3" suffix, which can be recorded and used for referencing later on. And the handle with suffix ".3" will still point to the third version when the 4th version enters the repository.

Using the VersionedHandleIdentifierProvider provider, as displayed in the documentation you have linked, the third version has no permanent handle that will still be valid when the 4th item version is uploaded.

 

Actually, the original proposal in DS-1348 was in line with our current approach. However,  later when it was split, in DS-3109 a different approach was implemented as the DS6 VersionedHandleIdentifierProvider way. In our implementation, we have tried our best to retain compatibility with the VersionedHandleIdentifierProvider behavior thus we have added the initialVersionSuffix configuration option and to create as little code modification as we can.

 

(Thank you for the sidenote. Shall we migrate our old open issues from Jira to GitHub?)

 

Reply all
Reply to author
Forward
0 new messages