Spike: Feature Request/Idea: Deprecating metadata fields
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 1.1k
- Forks
- 564
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 29
Description
Overview of the Feature Request
Dataverse installation administrators can deprecate metadata fields that are removed during a redesign of the deposit metadata model, such as re-designs of metadata blocks that Dataverse installations are using.
What kind of user is the feature intended for?
(Example users roles: API User, Curator, Depositor, Guest, Superuser, Sysadmin)
Superuser, Sysadmin
What inspired the request?
- Discussion about changes to the Citation metadata block to improve how Dataverse repositories collect funding metadata (https://github.com/IQSS/dataverse/issues/4859)
- Discussions that may lead to redesigns of other metadata blocks that Dataverse repositories are using, such as the "Geospatial" metadata block (https://github.com/IQSS/dataverse/issues/10398)
- Wondering if this discussion, about how to handle the removal of fields during a redesign of metadata models, can progress outside of any particular effort to redesign metadata models
What existing behavior do you want changed?
In an issue about making changes to the Citation metadata block to improve how Dataverse repositories collect funding metadata, @scolapasta wrote:
We discussed this at tech hours and decided that the approach we would prefer (as it would generally be more flexible and it would maintain the concept of not changing old versions) would be to add an attribute to metadata fields so they can be marked as deprecated.
A deprecated dataset field would still allow old values to be viewed, but if you tried to edit you would be forced to no longer use that field (we would want some sort of instructions in the error message to advise you what you should use instead).
In this way, we won't have to write any scripts to change old values in the database. Rather we would break out this current issue into 3:
- one for the infrastructure component adding the new deprecated attribute and the logic for how to handle for create and edit
- a new API that would allow you to look up if a dataset's latest published version uses any deprecated fields (and possibly an API to get you a list of all such datasets)
- a script that could be used to change some of the old values we know to the new values we would like to use - these would be written in a way that they could be reusable for multiple datasets
Any open or closed issues related to this feature request?
https://github.com/IQSS/dataverse/issues/4859
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the discussion in issues #4859 and #10398, then compare it with the three proposed components in this issue: deprecated-field handling, an API for finding affected datasets, and reusable value-migration scripts. Done means an agreed scope and design for these components, including create/edit behavior and replacement guidance.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend-api-design
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100