-
Notifications
You must be signed in to change notification settings - Fork 535
Description
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
- With 'Yes, apply CC0 - "Public Domain Dedication"'
- With 'No, do not apply CC0 - "Public Domain Dedication"'
Edit mode
- With 'Yes, apply CC0 - "Public Domain Dedication"'
Proposed interface
View mode
Edit mode
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.






