It would be great if DSpace could mint, reserve and register DOIs.
With the item version support, @mire added support for external identifier systems. We developed a DOIIdentfierProvider. In this ticket we want to discuss design decisions, our code and perhaps some changes in DSpace, that could be helpful.
The code can be found on Github: https://github.com/tuub/DSpace/tree/DOI
A documentation can be found in the wiki: https://wiki.duraspace.org/display/~pbecker/DOI+support+using+DataCite
So some of the topics to discuss (in the comment, on dspace-devel, on github or where ever) are:
- If an IdentifierProvider throws an IdentifierException - as the current API allows it - DSpace (at least XMLUI) fails to publish an item. How could the ExceptionHandling be enhanced? What to do if an external API is temporarily unavailable or if registration of an Identifier fails?
- For some identifiers (like DOIs) metadata will be stored externally. How do we want to handle metadata update within DSpace? Is there a way in DSpace to keep track of metadata changes? Can we extend the IdentifierProvider API to update external metadata stores?
- We did not tested the current DOI implementation with versioning support. What are the differences between the HandleIdentifierProvider and the VersionedHandleIdentifierProvider? Do we need a VersionedDOIIdentifierProvider?
- Do we want to register DOIs for Items only or for communities, sub communitites and collections as well?
Currently our code does not care about the UIs. How to display DOIs could be discussed in a seperate ticket. We want to get the API part running first...