Skip to content

Multiple licences feature proposal #7440

@vicding-mi

Description

@vicding-mi

Multiple licences feature proposal

Summary

In the out-of-box Dataverse, when specifying the terms of use for a dataset you can only choose between applying the CC0 waiver or specifying custom terms. We propose to present the user with a list of standard licenses which replaces the Waiver radio button. CC0 and "custom license" will be in this list automatically. The other licences can be configured through a new API endpoint.

Motivation

There are many other licenses than CC0 that are commonly used by depositors, for example CC-BY in several variants, In Dataverse depositors can only apply those terms by copy-pasting them into the "custom" terms field. This is not user friendly.

Description of the changes

User interface

The following screenshots show the current interface and the proposed interface.

Current interface

View mode
  1. With 'Yes, apply CC0 - "Public Domain Dedication"'

image2

  1. With 'No, do not apply CC0 - "Public Domain Dedication"'

image1

Edit mode
  1. With 'Yes, apply CC0 - "Public Domain Dedication"'

image3

  1. With 'No, do not apply CC0 - "Public Domain Dedication"'
    image6

Proposed interface

View mode

image4

Edit mode
  1. With CC0 or other standard license selected
    image7

  2. With "Custom Terms" selected
    image5

API

Configuration

Installing the list of available licenses is achieved by calling a new API endpoint:

curl http://localhost:8080/api/admin/licenses/load -H "Content-type: text/tab-separated-values" -X POST --upload-file /tmp/licenses.tsv

This uploads a configuration file that specifies the licenses that should appear in the dropdown box. This TSV file has the following columns:

licenseUri a unique identifier for the license (dropdown list value)
licenseDisplayName the string to be displayed in the user interface (dropdown list text)
licenseDescription a short description of the license to be displayed below the dropdown list

There are two reserved items in the list, CC0 and "Custom Terms" which cannot be specified in the TSV file. They will always be present.

Metadata exports

(Native) JSON
Current output

When getting the JSON for a dataset the information about license currently looks like this:

For CC01:

{

  "id": 7,

….

  "license": "CC0",

  "termsOfUse": "CC0 Waiver",

…

  "termsOfAccess": "You need to request for access.",

}

For custom:

{

  "id": 7,

….

  "license": "NONE",

…

  "termsOfAccess": "You need to request for access.",

}

Proposed output

The current JSON will be extended with one field 'licenseURI'. The existing fields will be filled as follows:

license display name of the selected license
termsOfUser description of the selected license

For CC01:

{

  "id": 7,

….

  "license": "CC0", 

  "termsOfUse": "CC0 Waiver",

…

  "termsOfAccess": "You need to request for access.",

}

For other standard license (i.e CC-BY):

{

  "id": 7,

….

** "licenseURI": "https://creativecommons.org/licenses/by/4.0/legalcode"**,

  "license": "CC-BY",

...

  "termsOfAccess": "You need to request for access.",

}

For custom license:

{

  "id": 7,

….

** "licenseURI": "https://uro_to_custom_license.com/"**,

  "license": "NONE",

  “termsOfUse”: “User input terms of use”

...

  "termsOfAccess": "You need to request for access.",

}

Formats based on native JSON

The following formats seem to be based on the native JSON so the transformation will not have to be changed: Dublin Core, DataCite, DDI, DDI Codebook HTML.

OAI-ORE, JSON-LD, OpenAIRE

These formats currently contain a license URI for CC0. This URI will need to be filled in correctly for the other licenses as well.

Migration

To support this functionality one extra table is required to store the list of licenses. Probably this table can be created automatically on deployment of the new Dataverse version that contains this new feature. This would mean that no migration scripts are necessary to activate this feature.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions