OppiaMobile Community

Alternative approach for course authoring

Hi all,

This is following up on another thread (REST API to get course structure and content), but seemed more appropriate to have in the Content Development category and it’s own topic.

Here’s some more info to hopefully explain about the approach I mentioned in the previous message for alternative approach for how Oppia courses could be authored (especially to remove the HTML dependency), and is based on how the OU UK manages their learning content.

We’d need to start by having an XML spec/standard (DTD) to use , to define the XML nodes that make up the course structure. A very rough basic example could be something like:

<course title="ANC">
    <section title="Intro">
        <activity title="Intro to course">
            <heading>Getting started</heading>
            <paragraph>A paragraph introducing the learner to this course</paragraph>
            <paragraph>Another paragraph</paragraph>
        <activity title="second page">
            <heading>Another page</heading>
            <paragraph>Another paragraph</paragraph>
       <activity title="first quiz">

The basic idea is that the HTML content is stripped out, so then the course content is stored in a more granular way, and also in a way in which it makes it easier to display is different formats/structures (ie not just through webviews).

So then for each activity in the course, an XML XSD could transform the content in plain HTML, or the different parts of the activity could be displayed using native Android interface elements.


  • The course structure is no longer dependent on using webviews when being displayed.
  • Content could still be transformed into Moodle structured courses if needed


  • Content could no longer be written directly in Moodle, we would need to use a different authoring tool for writing XML documents (so might be harder for ‘novice’ course authors)
  • There would need to be a lot of re-writing of the Oppia code base (both server and app) - it’s certainly not a quick and easy approach to move to.

Personally, I think if I was re-starting developing Oppia from scratch I would use this approach as it’s a much better longer-term and flexible approach, but unfortunately now it’s going to be difficult to backwards implement. Hindsight is wonderful!

Hope it all makes sense, and we’ll need to think carefully about whether/if we wanted to move to this approach.