Introduction:
The sunbird platform enabled the content creators to create questions and select multiple questions and create an assessment content using them. But, there is no lifecycle management and review workflow for question object to enable crowed sourcing and generate a curated question bank for creators to create assessments and question papers.
This wiki explains the current design of the Question and QuestionSet objects and the enhancements to enable more functionality and features in sunbird platform.
Background & Problem statement:
In sunbird platform, the Content object embed the QuestionSet and QuestionSet is a group of Questions.
QuestionSet:
It is always within a Content. It is not discoverable and available directly to the end users.
The lifecycle of the QuestionSet goes with the Content in which it is embedded. It is not an independently consumable object.
No public/high-level APIs to handle the hierarchy and lifecycle.
Questions are always immediate children to it. There is no nested hierarchy.
Question:
No APIs to manage lifecycle.
Once created it is Live.
...
Key Design Problems:
Question - Define lifecycle with its status and enable APIs.
QuestionSet - Define lifecycle with its status and enable APIs.
Visibility for Question and QuestionSet.
QuestionSet - As an independently consumable object.
Design:
The Content and Collection objects in sunbird platform already has the capabilities whatever we want to enable for Question and QuestionSet. The architecture and design also working at scale. So, it is the easy and better way to re-use the existing design for Question and QuestionSet too.
Based on Content and Collection,
Define the Lifecycle
Define the behaviour of visibility.
Content and Collection Vs Question and QuestionSet
We will define behaviour of the Question and QuestionSet as below.
...
Info |
---|
Below micro-services handles the Question and QuestionSet Objects.
|
...
QuestionSet - As an independently consumable object
In Sunbird Platform only Content and Collection objects are directly accessible and consumable by the end users. We will make the below changes for QuestionSet also to use it same as Content or Collection.
Enable APIs to manage the lifecycle of QuestionSet.
Create, Update, Update Hierarchy, Review and Publish.
Generate ECAR file on publishing QuestionSet for offline consumption.
QuestionSet - ECAR Structure:
Expand | ||
---|---|---|
| ||
|
...
Expand | |||||
---|---|---|---|---|---|
| |||||
|
QuestionSet - as children to Collection
We are enabling QuestionSet as individually consumable object in sunbird platform. So, allowing them to add as children to the Collection object will support features like, Assignment in between Course/TextBook, QuestionPaper end of the Course etc,.
...
With this design and implementation, we are enabling most of the capabilities and behaviour to Question and QuestionSet object which are already exists for Content and Collection.
Below capabilities we will enable together (for all object by generalising) once we achieve this.
Visibility: Parent for Content and Question.
Collection and QuestionSet with Visibility: Parent as reusable objects in the platform.
API Spec:
<TODO>
Conclusion:
<TODO>