Course versioning

Course authors can iterate on their courses, even while learners are completing the courses. Learners can take courses without the risk of issues caused by course updates in progress, and decide when they'd like to take the new version of a course.

When an author changes the master branch of a course, the changes fall into two categories:

  • a major change is anything that affects config.yml. After a major change, the learner will receive a notification that a new version is available. They can make the choice to stay on their current version or try the updates.
  • a minor change is any changes outside of config.yml, such as changes to a response file. Minor changes immediately update GitHub Learning Lab. The learner will receive the most updated response whenever the bot leaves a comment.

In addition to changes in the course repository, you may change the template repository. Any learners that start a course after your change will receive the new repository.

screenshot of a course with a new version notification

See Making changes for instructions on how to change the course and template repositories.

Versioning schema

The versioning schema observed in Learning Lab course versioning is loosely modeled after Semantic Versioning.

For a new course being published for the first time, its initial version will be 1.0.0.

For an existing course, its version number will be incremented with each new push of content. The part of the version number that is incremented depends on what was changed.

Major versions

A major version increment is when the first part of the version number increases by 1 and the less significant parts of the version number are reset to 0.

For example:

  • 1.0.02.0.0
  • 1.1.02.0.0
  • 1.10.22.0.0

A major version increment will result for any changes that may potentially break backward compatibility with the existing latest version of the course. Currently, that is signified by:

  • Any change to the config.yml file
    • Course title change
    • Step title changes
    • Adding or removing steps
    • etc.

A learner who is actively registered for a course at the time of the major version increment will be made aware of it when viewing the course page. They may choose to continue on with their course progress in the existing version of the course without any interruptions. Alternatively, they may choose to manually opt-in to renewing their course registration to receive the latest updates to their experience, ⚠️ which will lose all of their current progress! ⚠️

Minor versions

A minor version increment is when the second part of the version number increases by 1 and the less significant part(s) of the version number are reset to 0.

For example:

  • 1.0.01.1.0
  • 1.1.01.2.0
  • 1.10.21.11.0

A minor version increment will result for any changes that should NOT break backward compatibility with the existing latest version of the course. Currently, that is signified by:

  • Any change outside of the config.yml file
    • course-details.md
    • Copy changes in responses/ directory
      • Typo fixes, fixing broken links, etc.
    • Changes to the template repository
    • Changes to Learning Lab core functionality used by courses, e.g. actions
    • etc.

A learner who is actively registered for a course at the time of the minor version increment will automatically receive those updates to their experience.

Course releases

As a supplemental benefit to course authors, Learning Lab generates a new GitHub Release for each new major or minor version increment of a course:

Automatically generated Release