Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Moodle versions: Difference between revisions

From MoodleDocs
m (→‎Releases: typo fix)
No edit summary
Line 1: Line 1:
Understanding Moodle versioning scheme may help you to choose a correct place to fetch source code from for [[Upgrading|upgrade]]. Also, referring to a correct
== Upgrade warnings==
version is important when reporting a bug in the [[Tracker|tracker]].
 
If you reached this page from a warning during an upgrade from a stable version then it's probable that some of our branch changes have affected you.
 
From November 2010 until March 2011 we were using the "master" in git (HEAD in CVS) to work on the stable version of Moodle 2.0.x.  In March 2011 we split the stable development to a separate branch called MOODLE_20_STABLE (see diagram below). 
 
If you intend to stay with the most recent stable version of Moodle, then you need to switch your checkout over to use the MOODLE_20_STABLE branch.
 
CVS:    cvs -q update -dPr MOODLE_20_STABLE
Git:    git checkout -b MOODLE_20_STABLE origin/MOODLE_20_STABLE;  git pull
 
 
==Moodle versions and branches==
 
Understanding the Moodle versioning scheme will help you when using our repositories to get your code (eg for an [[Upgrading|upgrade]]). Knowing the correct versions is also very useful when reporting bugs in our [[Tracker|tracker]].


[[Image:versions.png|thumb|left|668px|Schema of Moodle source code branches, versions and maturity levels]]
[[Image:versions.png|thumb|left|668px|Schema of Moodle source code branches, versions and maturity levels]]
Line 7: Line 20:
== Major and minor versions ==
== Major and minor versions ==


Moodle version number consists of three numbers separated by dot, for example 1.9.11 or 2.0.2. The first two numbers, like 1.9 or 2.0, represent so called ''major version''. The third number distinguishes ''minor versions'' within the same major version. When a new major version is released, it starts with the minor version set to 0 (zero). So Moodle 2.0.1 was the first minor update of Moodle 2.0.0.
Moodle version numbers consist of three numbers separated by a dot, for example 1.9.11 or 2.0.2. The first two numbers, like 1.9 or 2.0, represent the ''major version''. The third number distinguishes ''minor versions'' within the same major version. When a new major version is released, it starts with the minor version set to 0 (zero). So Moodle 2.0.1 was the first minor update of Moodle 2.0.0.
 
Generally, the Moodle HQ team maintains the two most recent major versions of Moodle (a notable exception to the rule is for Moodle 1.9 which will be supported much longer, until June 2012)


Generally, Moodle HQ team maintains the two most recent major versions of Moodle with some exceptions - like there is a longer term support promised for Moodle 1.9.


== Versions and branches ==
== Versions and branches ==


Moodle developers use source code management (SCM) system Git to track changes in the code. As in many SCMs, the history of changes in Git is represented via so called branches. You can consider a branch as a labeled sequence of source code changes.
Moodle developers use the source code management (SCM) system ''''Git'''' to track changes in the code. As in many SCMs, the history of changes in Git is represented via so called branches. You can consider a branch as a labeled sequence of source code changes.


There is a branch created for every major version of Moodle. All Moodle 1.9 versions come from MOODLE_19_STABLE branch and all Moodle 2.0 versions come from MOODLE_20_STABLE branch. There is also a main development branch called master that holds the changes for the next future version. At the moment, the changes on the master branch will be included in Moodle 2.1 release.
There is a branch created for every major version of Moodle. All Moodle 1.9 versions come from MOODLE_19_STABLE branch and all Moodle 2.0 versions come from MOODLE_20_STABLE branch. There is also a main development branch called master that holds the changes for the next future version. At the moment, the changes on the master branch will be included in Moodle 2.1 release.
Line 19: Line 33:
== Releases ==
== Releases ==


Since the version 2.0, Moodle aims to release the new major version every six months or so. See [[Roadmap]] page for a schedule.
Since version 2.0, Moodle aims to release the new major version every six months or so. See [[Roadmap]] page for a schedule.


Minor versions are released irregularly, typically when there is a significant amount of fixes since the last version or if there is a security issue fixed (in either Moodle itself or in some external library it uses).
Minor versions are released irregularly, typically when there is a significant amount of fixes since the last version or if there is a security issue fixed (in either Moodle itself or in some external library it uses).

Revision as of 06:50, 1 April 2011

Upgrade warnings

If you reached this page from a warning during an upgrade from a stable version then it's probable that some of our branch changes have affected you.

From November 2010 until March 2011 we were using the "master" in git (HEAD in CVS) to work on the stable version of Moodle 2.0.x. In March 2011 we split the stable development to a separate branch called MOODLE_20_STABLE (see diagram below).

If you intend to stay with the most recent stable version of Moodle, then you need to switch your checkout over to use the MOODLE_20_STABLE branch.

CVS: cvs -q update -dPr MOODLE_20_STABLE Git: git checkout -b MOODLE_20_STABLE origin/MOODLE_20_STABLE; git pull


Moodle versions and branches

Understanding the Moodle versioning scheme will help you when using our repositories to get your code (eg for an upgrade). Knowing the correct versions is also very useful when reporting bugs in our tracker.

Schema of Moodle source code branches, versions and maturity levels


Major and minor versions

Moodle version numbers consist of three numbers separated by a dot, for example 1.9.11 or 2.0.2. The first two numbers, like 1.9 or 2.0, represent the major version. The third number distinguishes minor versions within the same major version. When a new major version is released, it starts with the minor version set to 0 (zero). So Moodle 2.0.1 was the first minor update of Moodle 2.0.0.

Generally, the Moodle HQ team maintains the two most recent major versions of Moodle (a notable exception to the rule is for Moodle 1.9 which will be supported much longer, until June 2012)


Versions and branches

Moodle developers use the source code management (SCM) system 'Git' to track changes in the code. As in many SCMs, the history of changes in Git is represented via so called branches. You can consider a branch as a labeled sequence of source code changes.

There is a branch created for every major version of Moodle. All Moodle 1.9 versions come from MOODLE_19_STABLE branch and all Moodle 2.0 versions come from MOODLE_20_STABLE branch. There is also a main development branch called master that holds the changes for the next future version. At the moment, the changes on the master branch will be included in Moodle 2.1 release.

Releases

Since version 2.0, Moodle aims to release the new major version every six months or so. See Roadmap page for a schedule.

Minor versions are released irregularly, typically when there is a significant amount of fixes since the last version or if there is a security issue fixed (in either Moodle itself or in some external library it uses).

In the meantime between two releases, Moodle HQ team publish updates for the most recent stable versions. These updates are published every week, usually on Wednesday. They are known as weekly builds and are identified by a number like 20110323. That is a timestamp in a form YYYYMMDD when the weekly build was released. These weekly builds are labelled with a version number suffixed with a plus sign. So 2.0.2+ denotes some weekly build extending the 2.0.2 minor release.

Source code maturity levels

During its life cycle, the Moodle code branch goes through several maturity levels.

  • At the beginning, the branch is considered as being in alpha state. During this period, new features are added to the branch. API and database structure may change as needed. These versions are intended mainly for developers as nothing is guaranteed (the version may or may not install and upgrade, for example).
  • When it is decided that no new feature will be added to the branch (so called feature freeze), beta maturity level is reached. Developers focus on testing, bugs fixing and stabilizing the branch.
  • When all known critical and blocker bugs are fixed and no new bugs are reported for some time of testing, a preview version of the branch can be released as so called release candidate. When the first release candidate version (RC1) has been published, release candidate maturity level is reached. During this period, several RC versions can be issued, for example 2.1RC1, 2.1RC2, 2.1RC3 etc.
  • Finally, the new major version is released and the branch reaches stable maturity level. From now on, the database structure and API do not change on this branch. A corresponding MOODLE_xx_STABLE is created and minor versions and weekly builds are created off it.

See also