IQSS / IQSS/dataverse

Spike: Feature Request/Idea: Deprecating metadata fields

Open
#10,431 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

GREI 2 GREI Year 3 GREI Year 4 Size: 80 Type: Feature
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.