Design: Question and QuestionSet - Lifecycle

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.

  1. QuestionSet:

    1. It is always within a Content. It is not discoverable and available directly to the end users.

    2. The lifecycle of the QuestionSet goes with the Content in which it is embedded. It is not an independently consumable object.

    3. No public/high-level APIs to handle the hierarchy and lifecycle.

    4. Questions are always immediate children to it. There is no nested hierarchy.

  2. Question:

    1. No APIs to manage lifecycle.

    2. Once created it is Live.

Key Design Problems:

  1. Question - Define lifecycle with its status and enable APIs.

  2. QuestionSet - Define lifecycle with its status and enable APIs.

  3. Visibility for Question and QuestionSet.

  4. 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.

  • Question is compared with Content. But, Question is not a object to directly use.

  • QuestionSet is compared with Collection.

 

Content & Collection