Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Easily add new types of content categories like Podcasts, TV Shows, Stories, etc.

  • Decouple behaviour from type of content. For example, progress tracking should not be limited only for “Courses”, should be able to track consumption of other types like “Podcasts” also. Similarly, it should be possible to allow anonymous consumption of a particular course.

  • Configurable hierarchy structures - i.e. “Textbook” contains chapters, “Course” contains modules and a “TV Show” contains episodes.

  • Platform supports content to be created for different purposes but it is not possible to discover these content by other framework users. For example, if there is a Podcast about “what is artificial intelligence”, how can it be made discoverable to an audience that use a different framework.

Current Model

Following are the main content classification categories we have in the current content model:

  • ObjectType - Question, QuestionSet & Content. Though we have multiple object types, the only consumable object type currently is “Content”. Everything has to be converted into a content to make it consumable.

  • ContentType - Course, Textbook, Resource, Collection, ExplanationResource, eTextbook, PracticeSet, etc. There are multiple behaviours specific to content type:

    • It is assumed that all textbooks and courses will be collections only. E.g.: a PDF or an ePub cannot be published as a text book.

    • Specific creation & consumption experience implementations for each content type. I.e. course, textbook, collection and resource content types have different editors & players. Adding a new content type will require changes across the board.

    • Having generic types (like resource, collection) makes it difficult for search and discovery of content for specific purposes. E.g.: “Resource” is used for a lot of purposes like worksheets, games, explanation videos, etc.

  • ResourceType - Learn, Teach, Practice, Test, Play, Course, Book, Lesson Plan, etc. This attribute is used in some places for filtering the content.

    • Creators find it difficult to tag the resource type for most of the content, especially for generic content types like resource and collection. 

    • Some resource type values are verbs (like learn, teach) and some are content types (like course, book). There is specific implementation like automatically setting the resource type for courses, textbooks and lesson plans to Course, Book and Lesson Plan respectively.

  • MimeType - HTML, ECML, ePub, PDF, mp4, collection, etc. This is required for identifying the renderer to be used while playing a content.

New Model

Key Principles

  • Classify the objects on a minimal set of categories - Object Type & Mime Type

  • Rest of the behaviour should be driven only via attributes - like tracking, monitoring, anonymous access, etc.

...

Mime type is the technical mime type of the object. This is used by editors and players to use the appropriate plugin/renderer. List of mime types supported for each object type is configured as part of the object type schema. E.g.: Collections can be only of mime type “application/vnd.ekstep.content-collection”.

Categories

Object types are used for representing the objects within the platform. But different variations of these object types are required to serve different use cases. For example, different types of collections like TextBook, Course, PlayList are required for different learning purposes. Same is the case for question sets (exam, quiz, practice test, etc) and resources (explanation content, story, puzzle, etc). The list of these types keeps growing, and thus, there should be not be any specific implementation for any of these use cases. Hence, these will be defined as “categories” in the platform and will be loosely-coupled & configurable.

...