Content attribution to Organisations
- Shailesh Kochhar
Target release | 1.10 |
---|---|
Epic | SB-5678 - Getting issue details... STATUS |
Document status | Implementation |
Document owner | |
Designer | subu palamadai |
Developers | Vinaya Kumar B Manzarul Haque Harish Kumar Gangula |
QA |
Goals
- Create incentives for multiple organisations to collaborate on course creation in a Sunbird instance
- Create the means for an organisation which sponsors content creation to get visibility for their contributions
- Provide course creators easy ways to 'do the right thing' when it comes to attributing content which they are using
Background
Content which is created in Sunbird has three metadata properties which point to the entities involved in creating the content
createdBy
– the is the id of the user who created the contentcreator
– the name of the user who created the contentcreatedFor
– this is the id of the organisation which the user belongs to when creating the contentorganisation
– an array of organisation names (not IDs)channel
– this is the channel to which the creator belongs at the time when the creator last edited the content
When content and courses are displayed in Sunbird, the display text attributes the content to the creator
.
Assumptions
- Content creation can be
- sponsored – i.e. an organisation is paying for a person to create the content
- non-sponsored – i.e. an individual is creating content based on personal choices
- In either sponsored or non-sponsored case, an entity will shoulder the responsibility for reviewing the content to ensure standards are met
- Multiple attribution models need to be supported. Content can be
- non-sponsored and attributed to the individual creating it
- sponsored and attributed to the organisation sponsoring it
- sponsored and attributed to the individual creating it
- For a course or a textbook, visible credit at the aggregate level (course or textbook) carries more meaning than credit at an individual content level
Proposal
The proposal is to allow
- display text to attribute content to either the individual creator or to the creator's organisation
- and organisation to remove and individual's edit privileges when she/he leaves an organisation which sponsored content creation
- content which aggregates other content pieces to automatically attribute the entities who created those items
- content copy to attribute the source of the content where it was copied from
Design
Attribution to organisation
- In order to identify sponsoring organisations, introduce a new property in the content model called
ownershipType
– the property is an enumerated field whose options arecreatedBy
orcreatedF
or
- If the value of
ownershipType
is createdFor, the organisation's name will be displayed when the content is shown in Sunbird - If the value of
ownershipType
is createdBy, the individual's name will be displayed when the content is shown in Sunbird - When creating it's framework, an organisation can decide
- what is the default value of the
ownership
property - to disable either createdBy or createdFor as options for the
ownershipType
property - to enable both createdBy or createdFor as options for the
ownershipType
property
- what is the default value of the
- To ensure that the creator sets the
ownershipType
correctly, the organisation can- enforce the
ownershipType
during the review page, or - choose to give edit rights on the
ownershipType
property only to some content creators or content reviewers
- enforce the
User transfer between organisations
When a user leaves an organisation (or if her/his creation rights are removed), their creator role in that organisation is terminated. At this point,
- The user no longer has CONTENT_CREATOR role attached to the organisation
- The workspace application should apply a filter when displaying editable content to
- restrict editable content to those items where the
createdFor
property matches any of the organisations for which the user currently has CONTENT_CREATOR role
- restrict editable content to those items where the
Attribution of aggregate content
When a user creates aggregate content by selecting one or more resources for inclusion, the new content will store references to the entities indicated by the ownership property of the included resource. The references will be stored in the attributions
field.
For instance,
- Galactic Publishers creates a course on the Solar System which contains
- Moons of Jupiter created by Io Publishing, and
- Rings of Saturn created by Weekend Imprints
- When the course on the Solar System is displayed, the display text will
- attribute creation of the course to Galactic Publishers
- attribute credit for included content to Io Publishing and Weekend Imprints
- Eg text:
- created by: Galactic Publishers with contributions from: Io Publishing & Weekend Imprints
To accomplish this, as the course on the Solar System is created,
- content stores references to the organisation ids of Io Publishing and Weekend Imprints organisations in the
attributions
fieldattributions: [{ ownershipType: 'createdFor', id: '<io_publishing_org_id>', name: 'Io Publishing'}, { ownershipType: 'createdFor', id: '<weekend_imprints_org_id>', name: 'Weekend Imprints'}]
- The references are added to the content model while the course is being edited and not when it is saved, sent for review or published so that the author can see the attribution text as the course is being constructed.
Attributing individuals
The example above assumes that the resources included are sponsored and attributed to the sponsoring organisation. If the resources were non-sponsored, or sponsored but attributed to the individual then the reference would be made to the individual as a contributor
Resource Versioning
The reference to contributors will be based on the version of the resource when it was added to the aggregate content.
- Resource R is at version N where the
ownershipType
property is set to createdBy and - It is added to a course C, the course gives credit to the creator of R
- Resource R is then edited to change the
ownershipType
property to createdFor at version N+1 - Course C, continues to give credit to the creator of R because the course references version N of the resource
- When C is edited and the version of R added to C is updated to N+1 (or further), only then will the course C give credit to the organisation which sponsored creation
Performance concerns
- If the number of references grows large, there could be performance considerations when downloading the ECAR file
If #1 is indeed the case, i.e. there are performance implications in bundling attribution data with the contenta content contributor API is created which provides complete details of contributorsthe web application and the mobile application will augment the content view with a link to a contributor viewthe contributor view will use the content contributor API to fetch the data needed
- If #2 is not the case, i.e. if bundling the attribution data into the content ECAR does not significantly impact the ECAR size,
- the web application and mobile application will still augment the content view with a link to a contributor view
- however, the contributor view will use the data bundled in the ECAR to render the view
Copying content
- When an item of content is copied, the new item of content must carry attribution to the original content
- The attribution cannot be edited by the creator of the new content
- If the content item is an aggregate content (course, collection, book), then the individual items which are part of the source are included into the derived content and credit to the creators of those items is handled as described in the section on Attribution of aggregate content above
Requirements
Questions
Below is a list of questions to be addressed as a result of this requirements document:
Question | Outcome |
---|---|
Should an | Yes, ownershipType should be added. copyright cannot be used because it already contains many instances of string data which would require data migration and backfills. |
Which property should be used for storing the credits for an aggregate content item? | We should use the attributions property which stores a list of structured references to the entities which should be attributed. |
Does attribution/credit information get bundled in the ECAR or is it fetched from the server on demand? | Attribution is bundled into the content metadata and downloaded with the ECAR, however, the composed full text of the attribution is constructed at the time of rendering the attribution |
The | Review workflow can be moved by attaching a scope to the REVIEWER permission to route content to the appropriate reviewers. |
User interaction and design
Not Doing
- At this point, we are not considering the case of an individual creating content without belonging to any organisation. The case of user-rights outside an organisation which grants those rights is a cross-cutting concern across Sunbird and is not a valid scenario at present.