<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Martinlanghoff</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Martinlanghoff"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/Special:Contributions/Martinlanghoff"/>
	<updated>2026-04-12T08:02:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Working_with_the_Community&amp;diff=5595</id>
		<title>Working with the Community</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Working_with_the_Community&amp;diff=5595"/>
		<updated>2008-10-14T06:13:37Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The goal of the Moodle community is to provide the best possible LMS there is.  When you submit a patch (or new module, plugin or filter) for acceptance, it will be reviewed on its technical and educational merits and those alone.  So, what should you be expecting?&lt;br /&gt;
&lt;br /&gt;
* criticism&lt;br /&gt;
* comments&lt;br /&gt;
* requests for change&lt;br /&gt;
* requests for justification&lt;br /&gt;
* silence&lt;br /&gt;
* pointers to another subproject with the same goals&lt;br /&gt;
&lt;br /&gt;
Remember, this is part of getting your patch into Moodle.  You have&lt;br /&gt;
to be able to take criticism and comments about your patches, evaluate&lt;br /&gt;
them at a technical level and either rework your patches or provide&lt;br /&gt;
clear and concise reasoning as to why those changes should not be made.&lt;br /&gt;
If there are no responses to your posting, wait a few days and try&lt;br /&gt;
again, sometimes things get lost in the huge volume.&lt;br /&gt;
&lt;br /&gt;
What should you not do?&lt;br /&gt;
* expect your patch to be accepted without question&lt;br /&gt;
* become defensive&lt;br /&gt;
* ignore comments&lt;br /&gt;
* resubmit the patch without making any of the requested changes&lt;br /&gt;
&lt;br /&gt;
In a community that is looking for the best technical solution possible,&lt;br /&gt;
there will always be differing opinions on how beneficial a patch is.&lt;br /&gt;
You have to be cooperative, and willing to adapt your idea to fit within&lt;br /&gt;
Moodle.  Or at least be willing to prove your idea is worth it.&lt;br /&gt;
Remember, being wrong is acceptable as long as you are willing to work&lt;br /&gt;
toward a solution that is right.&lt;br /&gt;
&lt;br /&gt;
==Differences between the Moodle community and corporate structures==&lt;br /&gt;
&lt;br /&gt;
The Moodle community works differently than most traditional corporate development environments.  Here is a list of things that you can try to do to try to avoid problems:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Good&#039;&#039;&#039; things to say regarding your proposed changes:&lt;br /&gt;
* &amp;quot;This works great with 9-year olds for learning X.&amp;quot;&lt;br /&gt;
* &amp;quot;This solves multiple problems.&amp;quot;&lt;br /&gt;
* &amp;quot;This deletes 2000 lines of code.&amp;quot;&lt;br /&gt;
* &amp;quot;Here is a patch that explains what I am trying to describe.&amp;quot;&lt;br /&gt;
* &amp;quot;I tested it on 5 different databases...&amp;quot;&lt;br /&gt;
* &amp;quot;Here is a series of small patches that...&amp;quot;&lt;br /&gt;
* &amp;quot;This increases performance on typical machines...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bad&#039;&#039;&#039; things you should avoid saying:&lt;br /&gt;
* &amp;quot;This educational theory supports my use model, even if I didn&#039;t test it with students&amp;quot;&lt;br /&gt;
* &amp;quot;We did it this way in WebCT/Blackboard, so therefore it must begood...&amp;quot;&lt;br /&gt;
* &amp;quot;I&#039;ve being doing this for 20 years, so...&amp;quot;&lt;br /&gt;
* &amp;quot;It makes this proprietary benchmark go faster&amp;quot;&lt;br /&gt;
* &amp;quot;This is required for my company to make money&amp;quot;&lt;br /&gt;
* &amp;quot;This is for our Enterprise product line.&amp;quot;&lt;br /&gt;
* &amp;quot;Here is my 1000 page design document that describes my idea&amp;quot;&lt;br /&gt;
* &amp;quot;I&#039;ve been working on this for 6 months...&amp;quot;&lt;br /&gt;
* &amp;quot;Here&#039;s a 5000 line patch that...&amp;quot;&lt;br /&gt;
* &amp;quot;I rewrote all of the current mess, and here it is...&amp;quot;&lt;br /&gt;
* &amp;quot;I have a deadline, and this patch needs to be applied now.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Another way the Moodle community is different than most traditional&lt;br /&gt;
software engineering work environments is the faceless nature of&lt;br /&gt;
interaction.  One benefit of using email and forums as the primary forms of&lt;br /&gt;
communication is the lack of discrimination based on gender or race.&lt;br /&gt;
The Moodle work environment is accepting of women and minorities&lt;br /&gt;
because all you are is an email address.  The international aspect also&lt;br /&gt;
helps to level the playing field because you can&#039;t guess gender based on&lt;br /&gt;
a person&#039;s name. A man may be named Andrea and a woman may be named Pat.&lt;br /&gt;
&lt;br /&gt;
The language barrier can cause problems for some people who are not&lt;br /&gt;
comfortable with English.  A good grasp of the language can be needed in&lt;br /&gt;
order to get ideas across properly on forums, so it is&lt;br /&gt;
recommended that you check your emails to make sure they make sense in&lt;br /&gt;
English before sending them.&lt;br /&gt;
&lt;br /&gt;
==Consider asking or discussing your proposal first==&lt;br /&gt;
&lt;br /&gt;
It is surprising how often a forum posting along the lines of &amp;quot;I wish to propose xxxx&amp;quot; &lt;br /&gt;
can produce interesting results. You may find that somebody has 95% completed the thing&lt;br /&gt;
you want to do. You may find somebody has done something similar that you can adapt. You &lt;br /&gt;
may even have issues raised that you never thought of that may result in a change of direction&lt;br /&gt;
or abandoning it altogether (a &#039;&#039;good thing&#039;&#039; as it can save hours of work). &lt;br /&gt;
&lt;br /&gt;
==Break your changes up==&lt;br /&gt;
&lt;br /&gt;
The Moodle community does not gladly accept large chunks of code&lt;br /&gt;
dropped on it all at once.  The changes need to be properly introduced,&lt;br /&gt;
discussed, and broken up into tiny, individual portions.  This is almost&lt;br /&gt;
the exact opposite of what companies are used to doing.  Your proposal&lt;br /&gt;
should also be introduced very early in the development process, so that&lt;br /&gt;
you can receive feedback on what you are doing.  It also lets the&lt;br /&gt;
community feel that you are working with them, and not simply using them&lt;br /&gt;
as a dumping ground for your feature.  However, don&#039;t post 50 times at&lt;br /&gt;
once in the forums! &lt;br /&gt;
&lt;br /&gt;
The reasons for breaking things up are the following:&lt;br /&gt;
&lt;br /&gt;
# Small patches increase the likelihood that your patches will be applied, since they don&#039;t take much time or effort to verify for correctness.  A 5 line patch can be applied by a maintainer with barely a second glance. However, a 500 line patch may take hours to review for correctness (the time it takes is exponentially proportional to the size of the patch, or something). Small patches also make it very easy to debug when something goes wrong.  It&#039;s much easier to back out patches one by one than it is to dissect a very large patch after it&#039;s been applied (and broken something).&lt;br /&gt;
# It&#039;s important not only to send small patches, but also to rewrite and simplify (or simply re-order) patches before submitting them.&lt;br /&gt;
&lt;br /&gt;
It may be challenging to keep the balance between presenting an elegant&lt;br /&gt;
solution and working together with the community and discuss your&lt;br /&gt;
unfinished work. Therefore it is good to get early in the process to&lt;br /&gt;
get feedback to improve your work, but also keep your changes in small&lt;br /&gt;
chunks that they may get already accepted, even when your whole task is&lt;br /&gt;
not ready for inclusion now.&lt;br /&gt;
&lt;br /&gt;
Also realize that it is not acceptable to send patches for inclusion&lt;br /&gt;
that are unfinished and will be &amp;quot;fixed up later.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Justify your change==&lt;br /&gt;
&lt;br /&gt;
Along with breaking up your patches, it is very important for you to let&lt;br /&gt;
the Moodle community know why they should add this change.  New features&lt;br /&gt;
must be justified as being needed and useful.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[How to create a patch]].&lt;br /&gt;
* [http://www.linux-mips.org/wiki/The_perfect_patch The perfect patch] as seen by the Linux kernel developers&lt;br /&gt;
[[Category:Working with the Community]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19901</id>
		<title>User:Martin Langhoff</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19901"/>
		<updated>2008-09-16T07:28:58Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:martin_langhoff.jpg|thumb|right|250px|Martin Langhoff @ Milford Sound]] &lt;br /&gt;
[[Image:Martin_Langhoff-San_Francisco_Moot_olpc.jpg|thumb|right|250px|Martin Langhoff @ San Francisco Moot]] &lt;br /&gt;
&#039;&#039;&#039;Core Moodle developer since 2004&#039;&#039;&#039;, often blamed of tuning things for scalability and performance (mainly the v1.9, v1.4 and v1.5 releases) and servers, auth/enrolment plugins, MNET, PostgreSQL support and other trivia.&lt;br /&gt;
&lt;br /&gt;
= One Laptop per Child... and One Moodle per School! =&lt;br /&gt;
&lt;br /&gt;
Since March 2008 I am working on &#039;&#039;&#039;getting the School Server for OLPC ready for prime time&#039;&#039;&#039;. My title @ OLPC is &#039;&#039;architect&#039;&#039;, but the job description is actually &#039;&#039;get it done&#039;&#039;. Whether it is drawing pretty high level architecture plans, working with on-the-ground local teams on configuration, &#039;&#039;&#039;&#039;&#039;hacking on Moodle&#039;&#039;&#039;&#039;&#039; or getting dirty with OS-level programming, I am there. &lt;br /&gt;
&lt;br /&gt;
:Here is our [http://wiki.laptop.org/go/School_server#Roadmap XS roadmap].&lt;br /&gt;
&lt;br /&gt;
= Catalyst roots =&lt;br /&gt;
&lt;br /&gt;
Before joining OLPC, I started the e-learning team @ [http://catalyst.net.nz/moodle/ Catalyst IT], a [http://moodle.com/partners/ Moodle Partner], developing and customizing Moodle for institutions in New Zealand and around the world. A good part of the e-learning work was done under the [http://eduforge.org/projects/nzvle/ NZVLE] project, part of [http://eduforge.org/ Eduforge.org] (which is also one of my projects). &lt;br /&gt;
&lt;br /&gt;
Catalyst IT also has a lot of experience in the enterprise sector and high-scalability installations, with hundreds of thousands of users and courses. The team has some great people. You will see them posting in the Moodle forums often ;-)&lt;br /&gt;
&lt;br /&gt;
= Other projects =&lt;br /&gt;
&lt;br /&gt;
I also hack on other interesting projects:&lt;br /&gt;
&lt;br /&gt;
* Linus Torvalds&#039; [http://git.or.cz GIT project] -- [http://kernel.org/git/?p=git%2Fgit.git&amp;amp;a=search&amp;amp;h=HEAD&amp;amp;s=langhoff including the weird git-cvsserver]&lt;br /&gt;
* [http://elgg.net/ Elgg] (not any more, try Mahara instead :-) )&lt;br /&gt;
* [http://gforge.org GForge] (not any more)&lt;br /&gt;
* [http://eprints.org EPrints] (not any more)&lt;br /&gt;
&lt;br /&gt;
My personal focus is on leading Linux-based development projects, using PHP, Perl, Apache, OpenLDAP, PostgreSQL, MySQL and a few other trinkets. At home, add books on media, psychology and postmodernism.&lt;br /&gt;
&lt;br /&gt;
In my spare time (?) I do some volunteer work for the Open Source community. When possible, I help [http://qa.debian.org/developer.php?login=martin%40nzl.com.ar Debian] and Ubuntu efforts. Unfortunately, I&#039;ve missed the last few Debconfs.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19900</id>
		<title>User:Martin Langhoff</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19900"/>
		<updated>2008-09-16T07:26:46Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:martin_langhoff.jpg|thumb|right|250px|Martin Langhoff @ Milford Sound]] &lt;br /&gt;
[[Image:Martin_Langhoff-San_Francisco_Moot_olpc.jpg|thumb|right|250px|Martin Langhoff @ San Francisco Moot]] &lt;br /&gt;
&#039;&#039;&#039;Core Moodle developer since 2004&#039;&#039;&#039;, often blamed for performance tuning of code (v1.9, v1.4, v1.5) and servers, auth/enrolment plugins, MNET, PostgreSQL support and other trivia.&lt;br /&gt;
&lt;br /&gt;
= One Laptop per Child... and One Moodle per School! =&lt;br /&gt;
&lt;br /&gt;
Since March 2008 I am working on &#039;&#039;&#039;getting the School Server for OLPC ready for prime time&#039;&#039;&#039;. My title @ OLPC is &#039;&#039;architect&#039;&#039;, but the job description is actually &#039;&#039;get it done&#039;&#039;. Whether it is drawing pretty high level architecture plans, working with on-the-ground local teams on configuration, &#039;&#039;&#039;&#039;&#039;hacking on Moodle&#039;&#039;&#039;&#039;&#039; or getting dirty with OS-level programming, I am there. &lt;br /&gt;
&lt;br /&gt;
:Here is our [http://wiki.laptop.org/go/School_server#Roadmap XS roadmap].&lt;br /&gt;
&lt;br /&gt;
= Catalyst roots =&lt;br /&gt;
&lt;br /&gt;
Before joining OLPC, I started the e-learning team @ [http://catalyst.net.nz/moodle/ Catalyst IT], a [http://moodle.com/partners/ Moodle Partner], developing and customizing Moodle for institutions in New Zealand and around the world. A good part of the e-learning work was done under the [http://eduforge.org/projects/nzvle/ NZVLE] project, part of [http://eduforge.org/ Eduforge.org] (which is also one of my projects). &lt;br /&gt;
&lt;br /&gt;
Catalyst IT also has a lot of experience in the enterprise sector and high-scalability installations, with hundreds of thousands of users and courses. The team has some great people. You will see them posting in the Moodle forums often ;-)&lt;br /&gt;
&lt;br /&gt;
= Other projects =&lt;br /&gt;
&lt;br /&gt;
I also hack on other interesting projects:&lt;br /&gt;
&lt;br /&gt;
* Linus Torvalds&#039; [http://git.or.cz GIT project] -- [http://kernel.org/git/?p=git%2Fgit.git&amp;amp;a=search&amp;amp;h=HEAD&amp;amp;s=langhoff including the weird git-cvsserver]&lt;br /&gt;
* [http://elgg.net/ Elgg] (not any more, try Mahara instead :-) )&lt;br /&gt;
* [http://gforge.org GForge] (not any more)&lt;br /&gt;
* [http://eprints.org EPrints] (not any more)&lt;br /&gt;
&lt;br /&gt;
My personal focus is on leading Linux-based development projects, using PHP, Perl, Apache, OpenLDAP, PostgreSQL, MySQL and a few other trinkets. At home, add books on media, psychology and postmodernism.&lt;br /&gt;
&lt;br /&gt;
In my spare time (?) I do some volunteer work for the Open Source community. When possible, I help [http://qa.debian.org/developer.php?login=martin%40nzl.com.ar Debian] and Ubuntu efforts. Unfortunately, I&#039;ve missed the last few Debconfs.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19899</id>
		<title>User:Martin Langhoff</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19899"/>
		<updated>2008-07-15T00:40:05Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:martin_langhoff.jpg|thumb|right|250px|Martin Langhoff @ Milford Sound]] &lt;br /&gt;
[[Image:Martin_Langhoff-San_Francisco_Moot_olpc.jpg|thumb|right|250px|Martin Langhoff @ San Francisco Moot]] &lt;br /&gt;
Core Moodle developer since 2004, often blamed for performance tuning of code (v1.9, v1.4, v1.5) and servers, auth/enrolment plugins, MNET, PostgreSQL support and other trivia.&lt;br /&gt;
&lt;br /&gt;
Since March 2008 I am working on &#039;&#039;&#039;getting the School Server for OLPC ready for prime time&#039;&#039;&#039;. My title @ OLPC is &#039;&#039;architect&#039;&#039;, but the job description is actually &#039;&#039;get it done&#039;&#039;. Whether it is drawing pretty high level architecture plans, working with on-the-ground teams on configuration or getting dirty with OS-level programming, I am there. Here is our [http://wiki.laptop.org/go/School_server#Roadmap XS roadmap].&lt;br /&gt;
&lt;br /&gt;
Before this, I started the e-learning team @ [http://catalyst.net.nz/moodle/ Catalyst IT], a [http://moodle.com/partners/ Moodle Partner], developing and customizing Moodle for tertiaries in New Zealand and around the world. A good part of the e-learning work was done under the [http://eduforge.org/projects/nzvle/ NZVLE] project, part of [http://eduforge.org/ Eduforge.org] (which is also one of my projects). &lt;br /&gt;
&lt;br /&gt;
Catalyst IT also has a lot of experience in the enterprise sector and high-scalability installations, with hundreds of thousands of users and courses. The team has some great people. You will see them posting in the Moodle forums often ;-)&lt;br /&gt;
&lt;br /&gt;
I also hack on other interesting projects:&lt;br /&gt;
&lt;br /&gt;
* Linus Torvalds&#039; [http://git.or.cz GIT project] -- [http://kernel.org/git/?p=git%2Fgit.git&amp;amp;a=search&amp;amp;h=HEAD&amp;amp;s=langhoff including the weird git-cvsserver]&lt;br /&gt;
* [http://elgg.net/ Elgg]&lt;br /&gt;
* [http://gforge.org GForge]&lt;br /&gt;
* [http://eprints.org EPrints]&lt;br /&gt;
&lt;br /&gt;
My personal focus is on leading Linux-based development projects, using PHP, Perl, Apache, OpenLDAP, PostgreSQL, MySQL and a few other trinkets. At home, add books on media, psychology and postmodernism.&lt;br /&gt;
&lt;br /&gt;
In my spare time (?) I do some volunteer work for the Open Source community, particularly [http://qa.debian.org/developer.php?login=martin%40nzl.com.ar Debian].&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19898</id>
		<title>User:Martin Langhoff</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19898"/>
		<updated>2008-05-27T20:48:08Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:martin_langhoff.jpg|thumb|right|250px|Martin Langhoff @ Milford Sound]] &lt;br /&gt;
&lt;br /&gt;
Core Moodle developer since 2004, often blamed for performance tuning of code (v1.9, v1.4, v1.5) and servers, auth/enrolment plugins, MNET, PostgreSQL support and other trivia.&lt;br /&gt;
&lt;br /&gt;
Since March 2008 I am working on &#039;&#039;&#039;getting the School Server for OLPC ready for prime time&#039;&#039;&#039;. My title @ OLPC is &#039;&#039;architect&#039;&#039;, but the job description is actually &#039;&#039;get it done&#039;&#039;. Whether it is drawing pretty high level architecture plans, working with on-the-ground teams on configuration or getting dirty with OS-level programming, I am there. Here is our [http://wiki.laptop.org/go/School_server#Roadmap XS roadmap].&lt;br /&gt;
&lt;br /&gt;
Before this, I started the e-learning team @ [http://catalyst.net.nz/moodle/ Catalyst IT], a [http://moodle.com/partners/ Moodle Partner], developing and customizing Moodle for tertiaries in New Zealand and around the world. A good part of the e-learning work was done under the [http://eduforge.org/projects/nzvle/ NZVLE] project, part of [http://eduforge.org/ Eduforge.org] (which is also one of my projects). &lt;br /&gt;
&lt;br /&gt;
Catalyst IT also has a lot of experience in the enterprise sector and high-scalability installations, with hundreds of thousands of users and courses. The team has some great people. You will see them posting in the Moodle forums often ;-)&lt;br /&gt;
&lt;br /&gt;
I also hack on other interesting projects:&lt;br /&gt;
&lt;br /&gt;
* Linus Torvalds&#039; [http://git.or.cz GIT project] -- [http://kernel.org/git/?p=git%2Fgit.git&amp;amp;a=search&amp;amp;h=HEAD&amp;amp;s=langhoff including the weird git-cvsserver]&lt;br /&gt;
* [http://elgg.net/ Elgg]&lt;br /&gt;
* [http://gforge.org GForge]&lt;br /&gt;
* [http://eprints.org EPrints]&lt;br /&gt;
&lt;br /&gt;
My personal focus is on leading Linux-based development projects, using PHP, Perl, Apache, OpenLDAP, PostgreSQL, MySQL and a few other trinkets. At home, add books on media, psychology and postmodernism.&lt;br /&gt;
&lt;br /&gt;
In my spare time (?) I do some volunteer work for the Open Source community, particularly [http://qa.debian.org/developer.php?login=martin%40nzl.com.ar Debian].&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19897</id>
		<title>User:Martin Langhoff</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19897"/>
		<updated>2008-05-27T20:44:49Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:martin_langhoff.jpg|thumb|right|250px|Martin Langhoff @ Milford Sound]] &lt;br /&gt;
&lt;br /&gt;
Core Moodle developer since 2004, often blamed for performance tuning of code and servers, auth/enrolment plugins, MNET and other trivia. &lt;br /&gt;
&lt;br /&gt;
Since March 2008 I am working on &#039;&#039;&#039;getting the School Server for OLPC ready for prime time&#039;&#039;&#039;. My title @ OLPC is &#039;&#039;architect&#039;&#039;, but the job description is actually &#039;&#039;get it done&#039;&#039;. Whether it is drawing pretty high level architecture plans, working with on-the-ground teams on configuration or getting dirty with OS-level programming, I am there. Here is our [http://wiki.laptop.org/go/School_server#Roadmap XS roadmap].&lt;br /&gt;
&lt;br /&gt;
Before this, I started the e-learning team @ [http://catalyst.net.nz/moodle/ Catalyst IT], a [http://moodle.com/partners/ Moodle Partner], developing and customizing Moodle for tertiaries in New Zealand and around the world. A good part of the e-learning work was done under the [http://eduforge.org/projects/nzvle/ NZVLE] project, part of [http://eduforge.org/ Eduforge.org] (which is also one of my projects). &lt;br /&gt;
&lt;br /&gt;
Catalyst IT also has a lot of experience in the enterprise sector and high-scalability installations, with hundreds of thousands of users and courses. The team has some great people. You will see them posting in the Moodle forums often ;-)&lt;br /&gt;
&lt;br /&gt;
I also hack on other interesting projects:&lt;br /&gt;
&lt;br /&gt;
* Linus Torvalds&#039; [http://git.or.cz GIT project] -- [http://kernel.org/git/?p=git%2Fgit.git&amp;amp;a=search&amp;amp;h=HEAD&amp;amp;s=langhoff including the weird git-cvsserver]&lt;br /&gt;
* [http://elgg.net/ Elgg]&lt;br /&gt;
* [http://gforge.org GForge]&lt;br /&gt;
* [http://eprints.org EPrints]&lt;br /&gt;
&lt;br /&gt;
My personal focus is on leading Linux-based development projects, using PHP, Perl, Apache, OpenLDAP, PostgreSQL, MySQL and a few other trinkets. At home, add books on media, psychology and postmodernism.&lt;br /&gt;
&lt;br /&gt;
In my spare time (?) I do some volunteer work for the Open Source community, particularly [http://qa.debian.org/developer.php?login=martin%40nzl.com.ar Debian].&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19896</id>
		<title>User:Martin Langhoff</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19896"/>
		<updated>2008-03-22T02:04:45Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:martin_langhoff.jpg|thumb|right|250px|Martin Langhoff @ Milford Sound]] &lt;br /&gt;
&lt;br /&gt;
::&#039;&#039;&#039;Note&#039;&#039;&#039; at this time (mid-March 2008) I am transitioning from leading the elearning team @ Catalyst to a new project: &#039;&#039;&#039;getting the School Server for OLPC ready for prime time&#039;&#039;&#039;. My new title is &#039;&#039;architect&#039;&#039;, but the job description is actually &#039;&#039;get it done&#039;&#039;, whether it is drawing pretty high level architecture plans or getting dirty with OS-level programming. I will be taking over from John Watlington as he shifts his focus towards the hardware side of the XS and XO) -- here is the [http://wiki.laptop.org/go/School_server#Roadmap XS roadmap] we have today.&lt;br /&gt;
::So the notes below are a bit outdated :-)&lt;br /&gt;
&lt;br /&gt;
I work @ [http://catalyst.net.nz/moodle/ Catalyst IT], a [http://moodle.com/partners/ Moodle Partner], developing and customizing Moodle for tertiaries in New Zealand. Most of our e-learning work was done under the [http://eduforge.org/projects/nzvle/ NZVLE] project, part of [http://eduforge.org/ Eduforge.org]. [http://eduforge.org/projects/nzvle/ NZVLE] is spearheading a lot of interesting e-learning projects - do get in touch!&lt;br /&gt;
&lt;br /&gt;
Catalyst IT also has a lot of experience in the enterprise sector and high-scalability installations, with hundreds of thousands of users and courses. The team has some great people. You will see us posting in the Moodle forums often ;-)&lt;br /&gt;
&lt;br /&gt;
I also hack on other interesting projects:&lt;br /&gt;
&lt;br /&gt;
* Linus Torvalds&#039; [http://git.or.cz GIT project] -- [http://kernel.org/git/?p=git%2Fgit.git&amp;amp;a=search&amp;amp;h=HEAD&amp;amp;s=langhoff including the weird git-cvsserver]&lt;br /&gt;
* [http://elgg.net/ Elgg]&lt;br /&gt;
* [http://gforge.org GForge]&lt;br /&gt;
* [http://eprints.org EPrints]&lt;br /&gt;
&lt;br /&gt;
My personal focus is on leading Linux-based development projects, using PHP, Perl, Apache, OpenLDAP, PostgreSQL, MySQL and a few other trinkets. At home, add books on media, psychology and postmodernism.&lt;br /&gt;
&lt;br /&gt;
In my spare time (?) I do some volunteer work for the Open Source community, particularly [http://qa.debian.org/developer.php?login=martin%40nzl.com.ar Debian].&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Working_with_the_Community&amp;diff=5594</id>
		<title>Working with the Community</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Working_with_the_Community&amp;diff=5594"/>
		<updated>2008-03-21T16:34:33Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Differences between the Moodle community and corporate structures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The goal of the Moodle community is to provide the best possible LMS there is.  When you submit a patch (or new module, plugin or filter) for acceptance, it will be reviewed on its technical and educational merits and those alone.  So, what should you be expecting?&lt;br /&gt;
&lt;br /&gt;
* criticism&lt;br /&gt;
* comments&lt;br /&gt;
* requests for change&lt;br /&gt;
* requests for justification&lt;br /&gt;
* silence&lt;br /&gt;
* pointers to another subproject with the same goals&lt;br /&gt;
&lt;br /&gt;
Remember, this is part of getting your patch into Moodle.  You have&lt;br /&gt;
to be able to take criticism and comments about your patches, evaluate&lt;br /&gt;
them at a technical level and either rework your patches or provide&lt;br /&gt;
clear and concise reasoning as to why those changes should not be made.&lt;br /&gt;
If there are no responses to your posting, wait a few days and try&lt;br /&gt;
again, sometimes things get lost in the huge volume.&lt;br /&gt;
&lt;br /&gt;
What should you not do?&lt;br /&gt;
* expect your patch to be accepted without question&lt;br /&gt;
* become defensive&lt;br /&gt;
* ignore comments&lt;br /&gt;
* resubmit the patch without making any of the requested changes&lt;br /&gt;
&lt;br /&gt;
In a community that is looking for the best technical solution possible,&lt;br /&gt;
there will always be differing opinions on how beneficial a patch is.&lt;br /&gt;
You have to be cooperative, and willing to adapt your idea to fit within&lt;br /&gt;
Moodle.  Or at least be willing to prove your idea is worth it.&lt;br /&gt;
Remember, being wrong is acceptable as long as you are willing to work&lt;br /&gt;
toward a solution that is right.&lt;br /&gt;
&lt;br /&gt;
==Differences between the Moodle community and corporate structures==&lt;br /&gt;
&lt;br /&gt;
The Moodle community works differently than most traditional corporate development environments.  Here is a list of things that you can try to do to try to avoid problems:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Good&#039;&#039;&#039; things to say regarding your proposed changes:&lt;br /&gt;
* &amp;quot;This works great with 9-year olds for learning X.&amp;quot;&lt;br /&gt;
* &amp;quot;This solves multiple problems.&amp;quot;&lt;br /&gt;
* &amp;quot;This deletes 2000 lines of code.&amp;quot;&lt;br /&gt;
* &amp;quot;Here is a patch that explains what I am trying to describe.&amp;quot;&lt;br /&gt;
* &amp;quot;I tested it on 5 different databases...&amp;quot;&lt;br /&gt;
* &amp;quot;Here is a series of small patches that...&amp;quot;&lt;br /&gt;
* &amp;quot;This increases performance on typical machines...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bad&#039;&#039;&#039; things you should avoid saying:&lt;br /&gt;
* &amp;quot;This educational theory supports my use model, even if I didn&#039;t test it with students&amp;quot;&lt;br /&gt;
* &amp;quot;We did it this way in WebCT/Blackboard, so therefore it must begood...&amp;quot;&lt;br /&gt;
* &amp;quot;I&#039;ve being doing this for 20 years, so...&amp;quot;&lt;br /&gt;
* &amp;quot;It makes this proprietary benchmark go faster&amp;quot;&lt;br /&gt;
* &amp;quot;This is required for my company to make money&amp;quot;&lt;br /&gt;
* &amp;quot;This is for our Enterprise product line.&amp;quot;&lt;br /&gt;
* &amp;quot;Here is my 1000 page design document that describes my idea&amp;quot;&lt;br /&gt;
* &amp;quot;I&#039;ve been working on this for 6 months...&amp;quot;&lt;br /&gt;
* &amp;quot;Here&#039;s a 5000 line patch that...&amp;quot;&lt;br /&gt;
* &amp;quot;I rewrote all of the current mess, and here it is...&amp;quot;&lt;br /&gt;
* &amp;quot;I have a deadline, and this patch needs to be applied now.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Another way the Moodle community is different than most traditional&lt;br /&gt;
software engineering work environments is the faceless nature of&lt;br /&gt;
interaction.  One benefit of using email and forums as the primary forms of&lt;br /&gt;
communication is the lack of discrimination based on gender or race.&lt;br /&gt;
The Moodle work environment is accepting of women and minorities&lt;br /&gt;
because all you are is an email address.  The international aspect also&lt;br /&gt;
helps to level the playing field because you can&#039;t guess gender based on&lt;br /&gt;
a person&#039;s name. A man may be named Andrea and a woman may be named Pat.&lt;br /&gt;
&lt;br /&gt;
The language barrier can cause problems for some people who are not&lt;br /&gt;
comfortable with English.  A good grasp of the language can be needed in&lt;br /&gt;
order to get ideas across properly on forums, so it is&lt;br /&gt;
recommended that you check your emails to make sure they make sense in&lt;br /&gt;
English before sending them.&lt;br /&gt;
&lt;br /&gt;
==Consider asking or discussing your proposal first==&lt;br /&gt;
&lt;br /&gt;
It is surprising how often a forum posting along the lines of &amp;quot;I wish to propose xxxx&amp;quot; &lt;br /&gt;
can produce interesting results. You may find that somebody has 95% completed the thing&lt;br /&gt;
you want to do. You may find somebody has done something similar that you can adapt. You &lt;br /&gt;
may even have issues raised that you never thought of that may result in a change of direction&lt;br /&gt;
or abandoning it altogether (a &#039;&#039;good thing&#039;&#039; as it can save hours of work). &lt;br /&gt;
&lt;br /&gt;
==Break your changes up==&lt;br /&gt;
&lt;br /&gt;
The Moodle community does not gladly accept large chunks of code&lt;br /&gt;
dropped on it all at once.  The changes need to be properly introduced,&lt;br /&gt;
discussed, and broken up into tiny, individual portions.  This is almost&lt;br /&gt;
the exact opposite of what companies are used to doing.  Your proposal&lt;br /&gt;
should also be introduced very early in the development process, so that&lt;br /&gt;
you can receive feedback on what you are doing.  It also lets the&lt;br /&gt;
community feel that you are working with them, and not simply using them&lt;br /&gt;
as a dumping ground for your feature.  However, don&#039;t post 50 times at&lt;br /&gt;
once in the forums! &lt;br /&gt;
&lt;br /&gt;
The reasons for breaking things up are the following:&lt;br /&gt;
&lt;br /&gt;
# Small patches increase the likelihood that your patches will be applied, since they don&#039;t take much time or effort to verify for correctness.  A 5 line patch can be applied by a maintainer with barely a second glance. However, a 500 line patch may take hours to review for correctness (the time it takes is exponentially proportional to the size of the patch, or something). Small patches also make it very easy to debug when something goes wrong.  It&#039;s much easier to back out patches one by one than it is to dissect a very large patch after it&#039;s been applied (and broken something).&lt;br /&gt;
# It&#039;s important not only to send small patches, but also to rewrite and simplify (or simply re-order) patches before submitting them.&lt;br /&gt;
&lt;br /&gt;
It may be challenging to keep the balance between presenting an elegant&lt;br /&gt;
solution and working together with the community and discuss your&lt;br /&gt;
unfinished work. Therefore it is good to get early in the process to&lt;br /&gt;
get feedback to improve your work, but also keep your changes in small&lt;br /&gt;
chunks that they may get already accepted, even when your whole task is&lt;br /&gt;
not ready for inclusion now.&lt;br /&gt;
&lt;br /&gt;
Also realize that it is not acceptable to send patches for inclusion&lt;br /&gt;
that are unfinished and will be &amp;quot;fixed up later.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Justify your change==&lt;br /&gt;
&lt;br /&gt;
Along with breaking up your patches, it is very important for you to let&lt;br /&gt;
the Moodle community know why they should add this change.  New features&lt;br /&gt;
must be justified as being needed and useful.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[How to create a patch]].&lt;br /&gt;
* [http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt The perfect patch]&lt;br /&gt;
[[Category:Working with the Community]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Working_with_the_Community&amp;diff=5593</id>
		<title>Working with the Community</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Working_with_the_Community&amp;diff=5593"/>
		<updated>2008-03-21T16:32:31Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The goal of the Moodle community is to provide the best possible LMS there is.  When you submit a patch (or new module, plugin or filter) for acceptance, it will be reviewed on its technical and educational merits and those alone.  So, what should you be expecting?&lt;br /&gt;
&lt;br /&gt;
* criticism&lt;br /&gt;
* comments&lt;br /&gt;
* requests for change&lt;br /&gt;
* requests for justification&lt;br /&gt;
* silence&lt;br /&gt;
* pointers to another subproject with the same goals&lt;br /&gt;
&lt;br /&gt;
Remember, this is part of getting your patch into Moodle.  You have&lt;br /&gt;
to be able to take criticism and comments about your patches, evaluate&lt;br /&gt;
them at a technical level and either rework your patches or provide&lt;br /&gt;
clear and concise reasoning as to why those changes should not be made.&lt;br /&gt;
If there are no responses to your posting, wait a few days and try&lt;br /&gt;
again, sometimes things get lost in the huge volume.&lt;br /&gt;
&lt;br /&gt;
What should you not do?&lt;br /&gt;
* expect your patch to be accepted without question&lt;br /&gt;
* become defensive&lt;br /&gt;
* ignore comments&lt;br /&gt;
* resubmit the patch without making any of the requested changes&lt;br /&gt;
&lt;br /&gt;
In a community that is looking for the best technical solution possible,&lt;br /&gt;
there will always be differing opinions on how beneficial a patch is.&lt;br /&gt;
You have to be cooperative, and willing to adapt your idea to fit within&lt;br /&gt;
Moodle.  Or at least be willing to prove your idea is worth it.&lt;br /&gt;
Remember, being wrong is acceptable as long as you are willing to work&lt;br /&gt;
toward a solution that is right.&lt;br /&gt;
&lt;br /&gt;
==Differences between the Moodle community and corporate structures==&lt;br /&gt;
&lt;br /&gt;
The Moodle community works differently than most traditional corporate development environments.  Here is a list of things that you can try to do to try to avoid problems:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Good&#039;&#039;&#039; things to say regarding your proposed changes:&lt;br /&gt;
* &amp;quot;This solves multiple problems.&amp;quot;&lt;br /&gt;
* &amp;quot;This deletes 2000 lines of code.&amp;quot;&lt;br /&gt;
* &amp;quot;Here is a patch that explains what I am trying to describe.&amp;quot;&lt;br /&gt;
* &amp;quot;I tested it on 5 different databases...&amp;quot;&lt;br /&gt;
* &amp;quot;Here is a series of small patches that...&amp;quot;&lt;br /&gt;
* &amp;quot;This increases performance on typical machines...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bad&#039;&#039;&#039; things you should avoid saying:&lt;br /&gt;
* &amp;quot;We did it this way in WebCT/Blackboard, so therefore it must begood...&amp;quot;&lt;br /&gt;
* &amp;quot;I&#039;ve being doing this for 20 years, so...&amp;quot;&lt;br /&gt;
* &amp;quot;It makes this proprietary benchmark go faster&amp;quot;&lt;br /&gt;
* &amp;quot;This is required for my company to make money&amp;quot;&lt;br /&gt;
* &amp;quot;This is for our Enterprise product line.&amp;quot;&lt;br /&gt;
* &amp;quot;Here is my 1000 page design document that describes my idea&amp;quot;&lt;br /&gt;
* &amp;quot;I&#039;ve been working on this for 6 months...&amp;quot;&lt;br /&gt;
* &amp;quot;Here&#039;s a 5000 line patch that...&amp;quot;&lt;br /&gt;
* &amp;quot;I rewrote all of the current mess, and here it is...&amp;quot;&lt;br /&gt;
* &amp;quot;I have a deadline, and this patch needs to be applied now.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Another way the Moodle community is different than most traditional&lt;br /&gt;
software engineering work environments is the faceless nature of&lt;br /&gt;
interaction.  One benefit of using email and forums as the primary forms of&lt;br /&gt;
communication is the lack of discrimination based on gender or race.&lt;br /&gt;
The Moodle work environment is accepting of women and minorities&lt;br /&gt;
because all you are is an email address.  The international aspect also&lt;br /&gt;
helps to level the playing field because you can&#039;t guess gender based on&lt;br /&gt;
a person&#039;s name. A man may be named Andrea and a woman may be named Pat.&lt;br /&gt;
&lt;br /&gt;
The language barrier can cause problems for some people who are not&lt;br /&gt;
comfortable with English.  A good grasp of the language can be needed in&lt;br /&gt;
order to get ideas across properly on forums, so it is&lt;br /&gt;
recommended that you check your emails to make sure they make sense in&lt;br /&gt;
English before sending them.&lt;br /&gt;
&lt;br /&gt;
==Consider asking or discussing your proposal first==&lt;br /&gt;
&lt;br /&gt;
It is surprising how often a forum posting along the lines of &amp;quot;I wish to propose xxxx&amp;quot; &lt;br /&gt;
can produce interesting results. You may find that somebody has 95% completed the thing&lt;br /&gt;
you want to do. You may find somebody has done something similar that you can adapt. You &lt;br /&gt;
may even have issues raised that you never thought of that may result in a change of direction&lt;br /&gt;
or abandoning it altogether (a &#039;&#039;good thing&#039;&#039; as it can save hours of work). &lt;br /&gt;
&lt;br /&gt;
==Break your changes up==&lt;br /&gt;
&lt;br /&gt;
The Moodle community does not gladly accept large chunks of code&lt;br /&gt;
dropped on it all at once.  The changes need to be properly introduced,&lt;br /&gt;
discussed, and broken up into tiny, individual portions.  This is almost&lt;br /&gt;
the exact opposite of what companies are used to doing.  Your proposal&lt;br /&gt;
should also be introduced very early in the development process, so that&lt;br /&gt;
you can receive feedback on what you are doing.  It also lets the&lt;br /&gt;
community feel that you are working with them, and not simply using them&lt;br /&gt;
as a dumping ground for your feature.  However, don&#039;t post 50 times at&lt;br /&gt;
once in the forums! &lt;br /&gt;
&lt;br /&gt;
The reasons for breaking things up are the following:&lt;br /&gt;
&lt;br /&gt;
# Small patches increase the likelihood that your patches will be applied, since they don&#039;t take much time or effort to verify for correctness.  A 5 line patch can be applied by a maintainer with barely a second glance. However, a 500 line patch may take hours to review for correctness (the time it takes is exponentially proportional to the size of the patch, or something). Small patches also make it very easy to debug when something goes wrong.  It&#039;s much easier to back out patches one by one than it is to dissect a very large patch after it&#039;s been applied (and broken something).&lt;br /&gt;
# It&#039;s important not only to send small patches, but also to rewrite and simplify (or simply re-order) patches before submitting them.&lt;br /&gt;
&lt;br /&gt;
It may be challenging to keep the balance between presenting an elegant&lt;br /&gt;
solution and working together with the community and discuss your&lt;br /&gt;
unfinished work. Therefore it is good to get early in the process to&lt;br /&gt;
get feedback to improve your work, but also keep your changes in small&lt;br /&gt;
chunks that they may get already accepted, even when your whole task is&lt;br /&gt;
not ready for inclusion now.&lt;br /&gt;
&lt;br /&gt;
Also realize that it is not acceptable to send patches for inclusion&lt;br /&gt;
that are unfinished and will be &amp;quot;fixed up later.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Justify your change==&lt;br /&gt;
&lt;br /&gt;
Along with breaking up your patches, it is very important for you to let&lt;br /&gt;
the Moodle community know why they should add this change.  New features&lt;br /&gt;
must be justified as being needed and useful.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[How to create a patch]].&lt;br /&gt;
* [http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt The perfect patch]&lt;br /&gt;
[[Category:Working with the Community]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19895</id>
		<title>User:Martin Langhoff</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19895"/>
		<updated>2008-03-10T05:20:09Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:martin_langhoff.jpg|thumb|right|250px|Martin Langhoff @ Milford Sound]] Hi, I am a programmer. &lt;br /&gt;
&lt;br /&gt;
::&#039;&#039;&#039;Note&#039;&#039;&#039; these weeks I am transitioning from leading the elearning team @ Catalyst to a new &amp;quot;little&amp;quot; project: &#039;&#039;&#039;getting the School Server for OLPC ready for prime time&#039;&#039;&#039;. My new title is &#039;&#039;architect&#039;&#039;, but the job description is actually &#039;&#039;get it done&#039;&#039;, whether it is drawing pretty high level architecture plans or getting dirty with OS-level programming. I will be taking over from John Watlington as he shifts his focus towards the hardware side of the XS and XO) -- here is the [http://wiki.laptop.org/go/School_server XS roadmap] we have today.&lt;br /&gt;
::So the notes below are a bit outdated :-)&lt;br /&gt;
&lt;br /&gt;
I work @ [http://catalyst.net.nz/moodle/ Catalyst IT], a [http://moodle.com/partners/ Moodle Partner], developing and customizing Moodle for tertiaries in New Zealand. Most of our e-learning work was done under the [http://eduforge.org/projects/nzvle/ NZVLE] project, part of [http://eduforge.org/ Eduforge.org]. [http://eduforge.org/projects/nzvle/ NZVLE] is spearheading a lot of interesting e-learning projects - do get in touch!&lt;br /&gt;
&lt;br /&gt;
Catalyst IT also has a lot of experience in the enterprise sector and high-scalability installations, with hundreds of thousands of users and courses. The team has some great people. You will see us posting in the Moodle forums often ;-)&lt;br /&gt;
&lt;br /&gt;
I also hack on other interesting projects:&lt;br /&gt;
&lt;br /&gt;
* Linus Torvalds&#039; [http://git.or.cz GIT project] -- [http://kernel.org/git/?p=git%2Fgit.git&amp;amp;a=search&amp;amp;h=HEAD&amp;amp;s=langhoff including the weird git-cvsserver]&lt;br /&gt;
* [http://elgg.net/ Elgg]&lt;br /&gt;
* [http://gforge.org GForge]&lt;br /&gt;
* [http://eprints.org EPrints]&lt;br /&gt;
&lt;br /&gt;
My personal focus is on leading Linux-based development projects, using PHP, Perl, Apache, OpenLDAP, PostgreSQL, MySQL and a few other trinkets. At home, add books on media, psychology and postmodernism.&lt;br /&gt;
&lt;br /&gt;
In my spare time (?) I do some volunteer work for the Open Source community, particularly [http://qa.debian.org/developer.php?login=martin%40nzl.com.ar Debian].&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19894</id>
		<title>User:Martin Langhoff</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19894"/>
		<updated>2008-03-10T05:19:58Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:martin_langhoff.jpg|thumb|right|250px|Martin Langhoff @ Milford Sound]] Hi, I am a programmer. &lt;br /&gt;
&lt;br /&gt;
::&#039;&#039;&#039;Note&#039;&#039;&#039; these weeks I am transitioning from leading the elearning team @ Catalyst to a new &amp;quot;little&amp;quot; project: &#039;&#039;&#039;getting the School Server for OLPC ready for prime time&#039;&#039;&#039;. My new title is &#039;&#039;architect&#039;&#039;, but the job description is actually &#039;&#039;get it done&#039;&#039;, whether it is drawing pretty high level architecture plans or getting dirty with OS-level programming. I will be taking over from John Watlington as he shifts his focus towards the hardware side of the XS and XO) -- here is the [http://wiki.laptop.org/go/School_server XS roadmap] we have today.&lt;br /&gt;
::So the notes below are a bit outdated :-)&lt;br /&gt;
&lt;br /&gt;
I work @ [http://catalyst.net.nz/moodle/ Catalyst IT], a [http://moodle.com/partners/ Moodle Partner], developing and customizing Moodle for tertiaries in New Zealand. Most of our e-learning work was done under the [http://eduforge.org/projects/nzvle/ NZVLE] project, part of [http://eduforge.org/ Eduforge.org]. [http://eduforge.org/projects/nzvle/ NZVLE] is spearheading a lot of interesting e-learning projects - do get in touch ;-)&lt;br /&gt;
&lt;br /&gt;
Catalyst IT also has a lot of experience in the enterprise sector and high-scalability installations, with hundreds of thousands of users and courses. The team has some great people. You will see us posting in the Moodle forums often ;-)&lt;br /&gt;
&lt;br /&gt;
I also hack on other interesting projects:&lt;br /&gt;
&lt;br /&gt;
* Linus Torvalds&#039; [http://git.or.cz GIT project] -- [http://kernel.org/git/?p=git%2Fgit.git&amp;amp;a=search&amp;amp;h=HEAD&amp;amp;s=langhoff including the weird git-cvsserver]&lt;br /&gt;
* [http://elgg.net/ Elgg]&lt;br /&gt;
* [http://gforge.org GForge]&lt;br /&gt;
* [http://eprints.org EPrints]&lt;br /&gt;
&lt;br /&gt;
My personal focus is on leading Linux-based development projects, using PHP, Perl, Apache, OpenLDAP, PostgreSQL, MySQL and a few other trinkets. At home, add books on media, psychology and postmodernism.&lt;br /&gt;
&lt;br /&gt;
In my spare time (?) I do some volunteer work for the Open Source community, particularly [http://qa.debian.org/developer.php?login=martin%40nzl.com.ar Debian].&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19893</id>
		<title>User:Martin Langhoff</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19893"/>
		<updated>2008-03-10T05:17:05Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:martin_langhoff.jpg|thumb|right|250px|Martin Langhoff @ Milford Sound]] Hi, I am a programmer. &lt;br /&gt;
&lt;br /&gt;
::&#039;&#039;&#039;Note&#039;&#039;&#039; these weeks I am transitioning from leading the elearning team @ Catalyst to a new &amp;quot;little&amp;quot; project: &#039;&#039;&#039;getting the School Server for OLPC ready for prime time&#039;&#039;&#039;. My new title is &#039;&#039;architect&#039;&#039;, but the job description is actually &#039;&#039;get it done&#039;&#039;, whether it is drawing pretty high level architecture plans or getting dirty with OS-level programming. I will be taking over from John Watlington as he shifts his focus towards the hardware side of the XS and XO) -- here is the [http://wiki.laptop.org/go/School_server XS roadmap] we have today.&lt;br /&gt;
::So the notes below are a bit outdated :-)&lt;br /&gt;
&lt;br /&gt;
I work @ [http://catalyst.net.nz/moodle/ Catalyst IT], a [http://moodle.com/partners/ Moodle Partner], developing and customizing Moodle for tertiaries in New Zealand. Most of our e-learning work was done under the [http://eduforge.org/projects/nzvle/ NZVLE] project, part of [http://eduforge.org/ Eduforge.org]. [http://eduforge.org/projects/nzvle/ NZVLE] is spearheading a lot of interesting e-learning projects. &lt;br /&gt;
&lt;br /&gt;
Catalyst IT also has a lot of experience in the enterprise sector and high-scalability installations, with hundreds of thousands of users and courses. The team has some great people. You will see us posting in the Moodle forums often ;-)&lt;br /&gt;
&lt;br /&gt;
I also hack on other interesting projects:&lt;br /&gt;
&lt;br /&gt;
* Linus Torvalds&#039; [http://git.or.cz GIT project] -- [http://kernel.org/git/?p=git%2Fgit.git&amp;amp;a=search&amp;amp;h=HEAD&amp;amp;s=langhoff including the weird git-cvsserver]&lt;br /&gt;
* [http://elgg.net/ Elgg]&lt;br /&gt;
* [http://gforge.org GForge]&lt;br /&gt;
* [http://eprints.org EPrints]&lt;br /&gt;
&lt;br /&gt;
My personal focus is on leading Linux-based development projects, using PHP, Perl, Apache, OpenLDAP, PostgreSQL, MySQL and a few other trinkets. At home, add books on media, psychology and postmodernism.&lt;br /&gt;
&lt;br /&gt;
In my spare time (?) I do some volunteer work for the Open Source community, particularly [http://qa.debian.org/developer.php?login=martin%40nzl.com.ar Debian].&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19892</id>
		<title>User:Martin Langhoff</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19892"/>
		<updated>2008-03-10T04:58:14Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:martin_langhoff.jpg|thumb|left|250px|Martin Langhoff @ Milford Sound]] Hi, I am a programmer. &lt;br /&gt;
&lt;br /&gt;
I work @ [http://catalyst.net.nz/moodle/ Catalyst IT], a [http://moodle.com/partners/ Moodle Partner], developing and customizing Moodle for tertiaries in New Zealand. Most of our e-learning work is done under the [http://eduforge.org/projects/nzvle/ NZVLE] project, part of [http://eduforge.org/ Eduforge.org]. [http://eduforge.org/projects/nzvle/ NZVLE] is spearheading a lot of interesting e-learning projects, get in touch!&lt;br /&gt;
&lt;br /&gt;
Catalyst IT also has a lot of experience in the enterprise sector and high-scalability installations, with hundreds of thousands of users and courses. The team has some great people, with Penny Leach, Jun Yamog, Greg Sutton, Peter Bulmer and a host of others here at Catalyst. You will see us posting in the Moodle forums often.&lt;br /&gt;
&lt;br /&gt;
I also hack on other interesting projects:&lt;br /&gt;
&lt;br /&gt;
* Linus Torvalds&#039; [http://git.or.cz GIT project] -- [http://kernel.org/git/?p=git%2Fgit.git&amp;amp;a=search&amp;amp;h=HEAD&amp;amp;s=langhoff including the weird git-cvsserver]&lt;br /&gt;
* [http://elgg.net/ Elgg]&lt;br /&gt;
* [http://gforge.org GForge]&lt;br /&gt;
* [http://eprints.org EPrints]&lt;br /&gt;
&lt;br /&gt;
My personal focus is on leading Linux-based development projects, using PHP, Perl, Apache, OpenLDAP, PostgreSQL, MySQL and a few other trinkets. At home, add books on media, psychology and postmodernism.&lt;br /&gt;
&lt;br /&gt;
In my spare time (?) I do some volunteer work for the Open Source community, particularly [http://qa.debian.org/developer.php?login=martin%40nzl.com.ar Debian].&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19891</id>
		<title>User:Martin Langhoff</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=User:Martin_Langhoff&amp;diff=19891"/>
		<updated>2008-03-10T04:53:47Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:martin_langhoff.jpg|thumb|left|250px|Martin Langhoff @ Milford Sound]] Hi, I am a programmer. &lt;br /&gt;
&lt;br /&gt;
I work @ [http://catalyst.net.nz/var/cm/cm-moodle.php Catalyst IT], a [http://moodle.com/partners/ Moodle Partner], developing and customizing Moodle for tertiaries in New Zealand. Most of our e-learning work is done under the [http://eduforge.org/projects/nzvle/ NZVLE] project, part of [http://eduforge.org/ Eduforge.org]. [http://eduforge.org/projects/nzvle/ NZVLE] is spearheading a lot of interesting e-learning projects, get in touch!&lt;br /&gt;
&lt;br /&gt;
Catalyst IT also has a lot of experience in the enterprise sector and high-scalability installations, with hundreds of thousands of users and courses. The team has some great people, with Penny Leach, Jun Yamog, Greg Sutton, Peter Bulmer and a host of others here at Catalyst. You will see us posting in the Moodle forums often.&lt;br /&gt;
&lt;br /&gt;
I also hack on other interesting projects:&lt;br /&gt;
&lt;br /&gt;
* Linus Torvalds&#039; [http://git.or.cz GIT project] -- [http://kernel.org/git/?p=git%2Fgit.git&amp;amp;a=search&amp;amp;h=HEAD&amp;amp;s=langhoff including the weird git-cvsserver]&lt;br /&gt;
* [http://elgg.net/ Elgg]&lt;br /&gt;
* [http://gforge.org GForge]&lt;br /&gt;
* [http://eprints.org EPrints]&lt;br /&gt;
&lt;br /&gt;
My personal focus is on leading Linux-based development projects, using PHP, Perl, Apache, OpenLDAP, PostgreSQL, MySQL and a few other trinkets. At home, add books on media, psychology and postmodernism.&lt;br /&gt;
&lt;br /&gt;
In my spare time (?) I do some volunteer work for the Open Source community, particularly [http://qa.debian.org/developer.php?login=martin%40nzl.com.ar Debian].&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Overview&amp;diff=7015</id>
		<title>Overview</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Overview&amp;diff=7015"/>
		<updated>2008-01-22T02:33:35Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* How can you become a Moodle developer? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A lot of people ask how the development of Moodle operates.  This page should give you a working overview that should help in understanding a lot of other developer documentation.&lt;br /&gt;
&lt;br /&gt;
(This page is under early construction, your help in linking to other pages from here would be welcome!)&lt;br /&gt;
&lt;br /&gt;
==The key players==&lt;br /&gt;
&lt;br /&gt;
;Martin Dougiamas: Martin is the lead developer of Moodle. Generally he tries to facilitate democracy and meritocracy but occasionally has to make executive decisions on things.&lt;br /&gt;
&lt;br /&gt;
;Moodle HQ: The mostly-Australian team of developers who are directly funded by the Moodle project to work full-time on core developments.  Developers include Martin Dougiamas (moodler), Yu Zhang (lazyfish), Petr Skoda (skodak), Nicolas Connault, Helen Foster (wildgirl) and occasionally Eloy Lafuente (stronk7), Jamie Pratt (jamiesensei).&lt;br /&gt;
&lt;br /&gt;
;Catalyst: The team of developers working for Moodle clients via Catalyst Ltd in New Zealand, resulting in a lot of core development.  Developers include Martin Langhoff, Penny Leach (mjollnir), Matt Clarkson, and Donal McMullan.&lt;br /&gt;
&lt;br /&gt;
;Open University: The team of developers working on Moodle implementations at Open University in the UK.  Developers include Tim Hunt, Sam Marshall, Nick Freear, Thanh Le and Jenny Gray.&lt;br /&gt;
&lt;br /&gt;
There are many other people contributing to Moodle in many ways, these are just the main groups currently working on core development.&lt;br /&gt;
&lt;br /&gt;
==Moodle versions==&lt;br /&gt;
&lt;br /&gt;
Moodle major releases occur roughly 6 months or more apart, on no fixed schedule.  Each major release increments the version number by 0.1.  Minor releases (no new features, just fixes) on each stable branch can occur at any time, whenever enough bug fixes have been made to justify them.  The full details can be seen in the [[Release notes]].&lt;br /&gt;
&lt;br /&gt;
The current development version is always on the trunk of CVS (i.e. HEAD), while stable branches are split off for every major version (e.g. MOODLE_18_STABLE).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Release cycles==&lt;br /&gt;
&lt;br /&gt;
Generally a cycle works like this:&lt;br /&gt;
;Rapid Development:Long period of several months adding code to the HEAD version of Moodle.  At the same time, all fixes that don&#039;t involve database changes or radical core changes are backported to the last two or three stable branches.&lt;br /&gt;
;Head Freeze:At some point Martin Dougiamas declares a freeze on new work for a while to stabilise the core.  All database changes and all major core changes need to have explicit permission from Martin.  All developers should be wrapping up work on new features and fixing bugs in new code.  This period may be 1 or 2 weeks.&lt;br /&gt;
;Beta period:Once the HEAD version becomes fairly stable, Martin declares a BETA version and this point is marked on HEAD as MOODLE_XX_BETA (e.g. MOODLE_19_BETA).  Install packages are generated daily from the latest version for wider testing and feedback via the tracker.  The freeze continues, testing and bug fixing continues.  This testing period may be anywhere from 2 to 6 weeks.&lt;br /&gt;
;Major release:When the core code passes all the testing we can throw at it, the MOODLE_XX_BETA flag is moved up to mark the current point as a branch point, and a new stable branch named MOODLE_XX_STABLE is created.  Packages are created, and the release is announced.&lt;br /&gt;
&lt;br /&gt;
Then it all starts again!&lt;br /&gt;
&lt;br /&gt;
==Quality control==&lt;br /&gt;
&lt;br /&gt;
Issue tracking is an important part of a continuous quality control process. It involves reporting of problems (bugs), ideas for improvement and new features. Unlike most proprietary software programs, Moodle issue reporting and tracking information is open to everyone. Moodle&#039;s issue tracking system is called the [[Tracker]].&lt;br /&gt;
&lt;br /&gt;
All Moodle users are encouraged to be active participants when it comes to testing. Anyone with a Tracker user account can create, view, comment on, vote, and watch bugs.&lt;br /&gt;
&lt;br /&gt;
===Testers===&lt;br /&gt;
&lt;br /&gt;
Testers are responsible for verifying the accuracy of changes made by developers. Testers choose which bugs they want to test, according to their area of expertise, and use the QA Assignee field to identify themselves as the tester.&lt;br /&gt;
&lt;br /&gt;
If the bug passes testing, then the tester changes the status of the bug from &#039;resolved&#039; to &#039;closed&#039;. If the bug fails testing, or if the fix is incomplete, then the tester reopens the bug.&lt;br /&gt;
&lt;br /&gt;
A Moodle release will be deemed ready when all &amp;quot;blocker&amp;quot; bugs fixed for a particular version have been closed.&lt;br /&gt;
&lt;br /&gt;
==Coding Standards==&lt;br /&gt;
&lt;br /&gt;
The full [[Coding|Coding Guide]] gives all the details, but here are some of the major things  your code needs to hit:&lt;br /&gt;
&lt;br /&gt;
===XMLDB===&lt;br /&gt;
&lt;br /&gt;
All our database schema are created using the XML &#039;&#039;install.php&#039;&#039; files, and upgraded using database-agnostic commands in &#039;&#039;upgrade.php&#039;&#039; files.  Any version of any part of Moodle can be smoothly upgraded to any later version in this fashion (on a wide variety of supported databases).&lt;br /&gt;
&lt;br /&gt;
===XHTML===&lt;br /&gt;
&lt;br /&gt;
All output from Moodle must be compliant with XHTML Strict 1.0, and also compliant with all common accessibility guidelines (such as W3C WAG).  &lt;br /&gt;
&lt;br /&gt;
===Forms===&lt;br /&gt;
&lt;br /&gt;
All forms should use the Moodleforms library if possible.  This results in a standardised accessible output that designers can style consistently and well.&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
All parameters should be checked using require_param() and optional_param() which will safely clean all incoming data for use and provide defaults to your code.  Moodleforms will do this automatically for you.&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
All textual output should be output using the format_text or format_string functions.  This will ensure that text is cleaned and filtered appropriately.&lt;br /&gt;
&lt;br /&gt;
===Access===&lt;br /&gt;
&lt;br /&gt;
All permissions-checking should use the &amp;quot;Access library&amp;quot; to check against current capabilities.  The most common function you&#039;ll use is has_capability() which checks the permissions of the current user in an efficient way to see if they are allowed to do this specific operation.   Do not check for specific roles in your code (e.g. teacher/student) as that will make your code useless.&lt;br /&gt;
&lt;br /&gt;
===Other core libraries===&lt;br /&gt;
&lt;br /&gt;
The other major libraries you should get familiar with are:&lt;br /&gt;
# &#039;&#039;moodlelib.php&#039;&#039; - a useful bin of all kinds of useful functions and constants&lt;br /&gt;
# &#039;&#039;datalib.php&#039;&#039; - all the functions you need to interface with the database &lt;br /&gt;
# &#039;&#039;weblib.php&#039;&#039; - all the functions you&#039;ll need to create and output XHTML &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Plugins===&lt;br /&gt;
&lt;br /&gt;
Moodle has about 22 different types of plugins last time I counted.  Plugins can generally be self-contained in a single directory containing scripts, images, stylesheets and language files all in one package that can be dropped into the Moodle script directory in the right place.  After that the admin just needs to visit the admin page to install them.&lt;br /&gt;
&lt;br /&gt;
Most plugins work in one of two ways, they either provide a &#039;&#039;lib.php&#039;&#039; filled with common functions and some scripts with standard names, or they subclass a proto-plugin and override a few method functions to achieve their goals.  &lt;br /&gt;
&lt;br /&gt;
The best way to learn is to pick an example from the core code that is similar to what you want to do and start playing with it.   There are also some template plugins to help get you started.&lt;br /&gt;
&lt;br /&gt;
==Development processes==&lt;br /&gt;
Not all Moodle development happens exactly like this, but it really should. :-)&lt;br /&gt;
&lt;br /&gt;
===Major Development===&lt;br /&gt;
A major development is a significant piece of new code, adding new functionality to Moodle.&lt;br /&gt;
&lt;br /&gt;
====Make sure it&#039;s a good idea====&lt;br /&gt;
Firstly, you should look at the roadmap and talk the idea over with some Moodle developers to see if someone else is working on it already and whether others think the general idea has merit.  Use the forums if you wish, or whatever means you have.  If you have a client, you may need to work with them to work out what they REALLY want (perhaps it isn&#039;t actually a new development for Moodle).&lt;br /&gt;
&lt;br /&gt;
====Create a specification in Moodle Docs====&lt;br /&gt;
Start a new page in the Moodle Docs wiki, similar to [[Grades]].  Your page should outline the database table design, the GUI, the hows and whys etc.  Include as much detail as you need (even mock screenshots) but try to keep it clear and logically organised.&lt;br /&gt;
&lt;br /&gt;
====Seek and absorb community feedback====&lt;br /&gt;
Post about the new page in the appropriate forums on [http://moodle.org/course/view.php?id=5 Using Moodle] to help draw attention to it and to stimulate some discussion around your development.  The more feedback you have the better, especially if it includes a wide variety of users (developers, teachers, students etc).&lt;br /&gt;
&lt;br /&gt;
Edit your page in response to the feedback, or invite people to do so themselves.  try to evolve the specification into something that all users are happy with.   Sometimes it&#039;s worth working harder to find the &amp;quot;best&amp;quot; way to do something without adding Yet Another Option.&lt;br /&gt;
&lt;br /&gt;
====Set up tasks in the Moodle Tracker====&lt;br /&gt;
Once the specification has settled down, it&#039;s time to start work.  Create a new task for yourself in the Moodle Tracker, and add sub-tasks in roughly chronological order for all the different parts of the job.   This not only helps you keep track of where you are, but allows the community to &amp;quot;watch you&amp;quot; develop and to help you where they can.  If there are different people working on different parts, you can assign subtasks to different people.  It&#039;s really very convenient to use once you get the hang of it.&lt;br /&gt;
&lt;br /&gt;
====Use CVS and link commits to Tracker====&lt;br /&gt;
If possible, develop the code in an open code repository (and preferably Moodle CVS!).  If you need CVS write access to the core code or the contrib repository, contact support@moodle.com with details.   Gaining access to the main core code is quite difficult, but we are generally very free with access to the contrib area.&lt;br /&gt;
&lt;br /&gt;
Every time you make a commit, include a detailed message about the new code and always include a Moodle Tracker bug number (e.g. MDL-7777).  This will ensure that the Moodle Tracker is able to detect your commit and attach it to the relevant bug report.&lt;br /&gt;
&lt;br /&gt;
====Comment on milestones in forums and tracker====&lt;br /&gt;
If you hit a major milestone, or want testers to try something, feel free to post about it in the relevant forum on Using Moodle.  The more people you can attract to look and try out your code the better it will be, trust me.&lt;br /&gt;
&lt;br /&gt;
====Respond to bug reports====&lt;br /&gt;
Of course you need to listen to your users (well, most of them :-)).  Encourage people to file bugs, and fix them.  If you need help setting up a project category in the Tracker contact support@moodle.com.  This will ensure that all your bugs are easy to find and to track.&lt;br /&gt;
&lt;br /&gt;
===Minor Development=== &lt;br /&gt;
&lt;br /&gt;
For smaller modules, fixes, improvements and other issues.&lt;br /&gt;
&lt;br /&gt;
====Create a new issue in the tracker====&lt;br /&gt;
&lt;br /&gt;
You should definitely create an issue in the tracker to describe your development and to act as a focus point for all discussion.  You can reference the bug number from forum discussions and in commit messages etc.  This way everyone can easily find out exactly what they are talking about.&lt;br /&gt;
&lt;br /&gt;
====Attach a patch====&lt;br /&gt;
&lt;br /&gt;
If you have some code, please attach it to the tracker issue, or if it&#039;s on your own site then link to it from the tracker issue.  Don&#039;t attach code in the Moodle forums ... it will &amp;quot;rot&amp;quot; quickly there and just clogs up moodle.org with useless old code.&lt;br /&gt;
&lt;br /&gt;
====Promote the patch====&lt;br /&gt;
&lt;br /&gt;
By all means draw attention to your work in the Moodle forums (mentioning the bug number) or email developers directly to help make them aware of it.  You can also add developers as &amp;quot;watchers&amp;quot; to the tracker issue if you want, this means they will get email for every change on the issue.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Finding your way into the Moodle code]]&lt;br /&gt;
* [[Working with the Community]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Overview]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Fast_portable_SQL&amp;diff=7781</id>
		<title>Fast portable SQL</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Fast_portable_SQL&amp;diff=7781"/>
		<updated>2008-01-14T20:44:52Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Portable examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a work in progress! We keep notes here of bits of SQL that we know that&lt;br /&gt;
&lt;br /&gt;
* Work on all supported DBs (this is tricky!)&lt;br /&gt;
* Are scalable and fast&lt;br /&gt;
&lt;br /&gt;
A key strategy for scalability is to ensure we do as much work as possible in the DB with minimal back-and-forth with PHP. Modern DB engines have very smart optimizers and if we play to their strenghts, can process millions of records in milliseconds. To hit those strenghts we want to reduce chattiness with the DB -- one &amp;quot;smart&amp;quot; SQL query (even if complex) is thousand of times better than a foreach loop in PHP that issues a thousand SQL queries. At least it will be more than a thousand times faster ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=UPDATE with JOINs=&lt;br /&gt;
&lt;br /&gt;
A good scalable way to update a lot of data is to combine the UPDATE with a SUBSELECT, to UPDATE the data directly from the DB itself. The rows never need to go back and forth to PHP, so this is extremely fast. The problem is that it is very hard to get it portable across DBs.&lt;br /&gt;
&lt;br /&gt;
Problems&lt;br /&gt;
&lt;br /&gt;
* Pg and MySQL disagree on the extended syntax of UPDATE with JOIN&lt;br /&gt;
* MySQL does not support to have the table being updated in a subselect (but it supports it as JOINed table with a different alias - Pg does not support this)&lt;br /&gt;
&lt;br /&gt;
==Portable examples==&lt;br /&gt;
&lt;br /&gt;
Fix a broken relation - this is roughly equivalent to a subselect with a LEFT OUTER JOIN:&lt;br /&gt;
&lt;br /&gt;
    UPDATE {$CFG-&amp;gt;prefix}course &lt;br /&gt;
    SET    category =  $defaultcategory&lt;br /&gt;
    WHERE&lt;br /&gt;
    NOT EXISTS (SELECT id FROM {$CFG-&amp;gt;prefix}course_categories WHERE id={$CFG-&amp;gt;prefix}course.category)&lt;br /&gt;
    AND {$CFG-&amp;gt;prefix}course.id != $SITEID&lt;br /&gt;
&lt;br /&gt;
Delete chat_messages older than the (optional) keepdays setting in the related table chat. chat.keepdays the setting can be NULL or 0, both of which mean &#039;keep forever&#039;, so we have to be careful. This is somewhat clunky, but replaces hundreds of queries with 1. Notes...&lt;br /&gt;
&lt;br /&gt;
* If the subselect returns NULL or 0 it won&#039;t satisfy &#039;&amp;gt;0&#039; - so we handle both cases in one check&lt;br /&gt;
* We substract $keepdays - 24 * 3600 ... if we add it we can sometimes exceed the boundaries of an int in PostgreSQL&lt;br /&gt;
* Could be improved to run the subselect only once&lt;br /&gt;
** Is there any DB that won&#039;t optimize this?&lt;br /&gt;
** How can we do this portably?&lt;br /&gt;
* The subselect works on MySQL because it does not refer to the table we are deleting from&lt;br /&gt;
&lt;br /&gt;
    $subselect = &amp;quot;SELECT c.keepdays&lt;br /&gt;
                  FROM {$CFG-&amp;gt;prefix}chat c&lt;br /&gt;
                  WHERE c.id = {$CFG-&amp;gt;prefix}chat_messages.chatid&amp;quot;;&lt;br /&gt;
    $sql = &amp;quot;DELETE&lt;br /&gt;
            FROM {$CFG-&amp;gt;prefix}chat_messages&lt;br /&gt;
            WHERE ($subselect) &amp;gt; 0 AND timestamp &amp;lt; ( &amp;quot;.time().&amp;quot; -($subselect) * 24 * 3600)&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Fast_portable_SQL&amp;diff=7779</id>
		<title>Fast portable SQL</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Fast_portable_SQL&amp;diff=7779"/>
		<updated>2008-01-14T05:41:02Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* UPDATE with JOINs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a work in progress! We keep notes here of bits of SQL that we know that&lt;br /&gt;
&lt;br /&gt;
* Work on all supported DBs (this is tricky!)&lt;br /&gt;
* Are scalable and fast&lt;br /&gt;
&lt;br /&gt;
A key strategy for scalability is to ensure we do as much work as possible in the DB with minimal back-and-forth with PHP. Modern DB engines have very smart optimizers and if we play to their strenghts, can process millions of records in milliseconds. To hit those strenghts we want to reduce chattiness with the DB -- one &amp;quot;smart&amp;quot; SQL query (even if complex) is thousand of times better than a foreach loop in PHP that issues a thousand SQL queries. At least it will be more than a thousand times faster ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=UPDATE with JOINs=&lt;br /&gt;
&lt;br /&gt;
A good scalable way to update a lot of data is to combine the UPDATE with a SUBSELECT, to UPDATE the data directly from the DB itself. The rows never need to go back and forth to PHP, so this is extremely fast. The problem is that it is very hard to get it portable across DBs.&lt;br /&gt;
&lt;br /&gt;
Problems&lt;br /&gt;
&lt;br /&gt;
* Pg and MySQL disagree on the extended syntax of UPDATE with JOIN&lt;br /&gt;
* MySQL does not support to have the table being updated in a subselect (but it supports it as JOINed table with a different alias - Pg does not support this)&lt;br /&gt;
&lt;br /&gt;
==Portable examples==&lt;br /&gt;
&lt;br /&gt;
Fix a broken relation - this is roughly equivalent to a subselect with a LEFT OUTER JOIN:&lt;br /&gt;
&lt;br /&gt;
    UPDATE {$CFG-&amp;gt;prefix}course &lt;br /&gt;
    SET    category =  $defaultcategory&lt;br /&gt;
    WHERE&lt;br /&gt;
    NOT EXISTS (SELECT id FROM {$CFG-&amp;gt;prefix}course_categories WHERE id={$CFG-&amp;gt;prefix}course.category)&lt;br /&gt;
    AND mdl_course.id != $SITEID&lt;br /&gt;
&lt;br /&gt;
Delete chat_messages older than the (optional) keepdays setting in the related table chat. chat.keepdays the setting can be NULL or 0, both of which mean &#039;keep forever&#039;, so we have to be careful. This is somewhat clunky, but replaces hundreds of queries with 1. Notes...&lt;br /&gt;
&lt;br /&gt;
* If the subselect returns NULL or 0 it won&#039;t satisfy &#039;&amp;gt;0&#039; - so we handle both cases in one check&lt;br /&gt;
* We substract $keepdays - 24 * 3600 ... if we add it we can sometimes exceed the boundaries of an int in PostgreSQL&lt;br /&gt;
* Could be improved to run the subselect only once&lt;br /&gt;
** Is there any DB that won&#039;t optimize this?&lt;br /&gt;
** How can we do this portably?&lt;br /&gt;
* The subselect works on MySQL because it does not refer to the table we are deleting from&lt;br /&gt;
&lt;br /&gt;
    $keepdays = &amp;quot;SELECT c.keepdays&lt;br /&gt;
                 FROM {$CFG-&amp;gt;prefix}chat c&lt;br /&gt;
                 WHERE c.id = {$CFG-&amp;gt;prefix}chat_messages.chatid&amp;quot;;&lt;br /&gt;
    $sql = &amp;quot;DELETE&lt;br /&gt;
            FROM {$CFG-&amp;gt;prefix}chat_messages&lt;br /&gt;
            WHERE ($subselect) &amp;gt; 0 AND timestamp &amp;lt; ( &amp;quot;.time().&amp;quot; -($subselect) * 24 * 3600)&amp;quot;;&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Fast_portable_SQL&amp;diff=7778</id>
		<title>Fast portable SQL</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Fast_portable_SQL&amp;diff=7778"/>
		<updated>2008-01-14T05:10:13Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a work in progress! We keep notes here of bits of SQL that we know that&lt;br /&gt;
&lt;br /&gt;
* Work on all supported DBs (this is tricky!)&lt;br /&gt;
* Are scalable and fast&lt;br /&gt;
&lt;br /&gt;
A key strategy for scalability is to ensure we do as much work as possible in the DB with minimal back-and-forth with PHP. Modern DB engines have very smart optimizers and if we play to their strenghts, can process millions of records in milliseconds. To hit those strenghts we want to reduce chattiness with the DB -- one &amp;quot;smart&amp;quot; SQL query (even if complex) is thousand of times better than a foreach loop in PHP that issues a thousand SQL queries. At least it will be more than a thousand times faster ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=UPDATE with JOINs=&lt;br /&gt;
&lt;br /&gt;
A good scalable way to update a lot of data is to combine the UPDATE with a SUBSELECT, to UPDATE the data directly from the DB itself. The rows never need to go back and forth to PHP, so this is extremely fast. The problem is that it is very hard to get it portable across DBs.&lt;br /&gt;
&lt;br /&gt;
Problems&lt;br /&gt;
&lt;br /&gt;
* Pg and MySQL disagree on the extended syntax of UPDATE with JOIN&lt;br /&gt;
* MySQL does not support to have the table being updated in a subselect (but it supports it as JOINed table with a different alias - Pg does not support this)&lt;br /&gt;
&lt;br /&gt;
==Portable examples==&lt;br /&gt;
&lt;br /&gt;
Fix a broken relation - this is roughly equivalent to a subselect with a LEFT OUTER JOIN:&lt;br /&gt;
&lt;br /&gt;
    UPDATE {$CFG-&amp;gt;prefix}course &lt;br /&gt;
    SET    category =  $defaultcategory&lt;br /&gt;
    WHERE&lt;br /&gt;
    NOT EXISTS (SELECT id FROM {$CFG-&amp;gt;prefix}course_categories WHERE id={$CFG-&amp;gt;prefix}course.category)&lt;br /&gt;
    AND mdl_course.id != $SITEID&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Developer_documentation&amp;diff=567</id>
		<title>Developer documentation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Developer_documentation&amp;diff=567"/>
		<updated>2008-01-14T04:53:28Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Guidelines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; New developer documentation pages should be added to the &#039;&#039;Development namespace&#039;&#039; by typing &amp;lt;code&amp;gt;Development:&amp;lt;/code&amp;gt; before the new page name i.e. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[New page name]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;If you are a developer, you probably want to change your [[Special:Preferences|preferences]] to include the Development namespace in searches.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;A page may be added to the Developer category by typing &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:New page name]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; at the bottom of the page.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How Moodle development works==&lt;br /&gt;
&lt;br /&gt;
This [[Overview|overview of the Moodle development process]] may be handy in understanding how the development of Moodle occurs and how people become Moodle developers.&lt;br /&gt;
&lt;br /&gt;
==Guidelines==&lt;br /&gt;
&lt;br /&gt;
The following guidelines are crucial reading for anyone wanting to contribute to the Moodle code base:&lt;br /&gt;
*[[Coding|Coding guidelines]] have to be followed by all Moodle developers&lt;br /&gt;
*[[Moodle design goals]] spells out the basic design goals behind Moodle&lt;br /&gt;
*[[Interface guidelines]] aim to provide a common feel to the Moodle user interface&lt;br /&gt;
*[[CVS (developer)|Moodle CVS for developers]] explains how to work with the Moodle code in CVS&lt;br /&gt;
*[[Tracker]] explains the Moodle Tracker for keeping track of bugs, issues, feature requests etc&lt;br /&gt;
*[[Working with the Community|Working with the Community]] explains how to engage with the dev community and discuss changes&lt;br /&gt;
*[[Unit tests|Unit tests]] explains how to run the unit tests, and how to write new test cases.&lt;br /&gt;
*[[Fast portable SQL]] shows SQL techniques that are fast, efficient, and known to work on all supported DBs.&lt;br /&gt;
&lt;br /&gt;
==Documentation for core components==&lt;br /&gt;
&lt;br /&gt;
This section is for documentation of specific components of the existing core Moodle code. Discussion of components that are under discussion or in development can be found in the [[Developer notes]] or on the [[Roadmap]].&lt;br /&gt;
&lt;br /&gt;
The documents below give a general overview. For detailed function-by-function documentation, see the [http://phpdocs.moodle.org/ phpDocumentor] documentation that is automatically generated from the comments in the code. And don&#039;t forget that the most up-to-date and detailed description of how the code works is the code itself, and you can [http://xref.moodle.org/nav.html?index.html browse the code online using phpXRef]. Moodle code should be easy to read and understand. Use the source, Luke!&lt;br /&gt;
&lt;br /&gt;
===Core components that affect everything===&lt;br /&gt;
&lt;br /&gt;
*[[Database schema introduction|The database schema]]&lt;br /&gt;
*lib/moodlelib.php &lt;br /&gt;
*[[lib/weblib.php|lib/weblib.php]] for outputting stuff.&lt;br /&gt;
*[[XMLDB_Documentation|Database abstraction layer]] @ v[[1.7]]&lt;br /&gt;
*[[Roles|Roles and Capabilities system]] @ v[[1.7]] for controlling who can do what.&lt;br /&gt;
*[[lib/formslib.php|Forms library]] @ v[[1.8]] for creating accessible and secure HTML forms that let users edit things.&lt;br /&gt;
&lt;br /&gt;
===Core libraries with a more specific uses===&lt;br /&gt;
&lt;br /&gt;
*[[Authentication API]]&lt;br /&gt;
*[[Cookieless Sessions]]&lt;br /&gt;
*[[Email processing]]&lt;br /&gt;
*[[Environment checking|Environment checking]] before install, check the user&#039;s server to ensure Moodle will work there.&lt;br /&gt;
*[[Groups|Groups system]]&lt;br /&gt;
*[[Grades|Gradebook]]&lt;br /&gt;
*[[Moodle Network|Moodle Network]]&lt;br /&gt;
*[[Question engine]]&lt;br /&gt;
*[[Stats package]]&lt;br /&gt;
*[[UTF-8 migration|Migration to UTF-8]] @ v[[:Category:Moodle 1.6|1.6]]&lt;br /&gt;
*[http://developer.yahoo.com/yui YUI JavaScript library] - YUI was selected as the official AJAX library for Moodle.&lt;br /&gt;
*[[lib/graphlib|lib/graphlib]]&lt;br /&gt;
&lt;br /&gt;
===Modules included in the standard distribution===&lt;br /&gt;
&lt;br /&gt;
*[[Quiz developer docs|Quiz module]]&lt;br /&gt;
*[[SCORM schema|SCORM module 1.5 schema]]&lt;br /&gt;
&lt;br /&gt;
==How you can contribute==&lt;br /&gt;
&lt;br /&gt;
===Make a new plugin===&lt;br /&gt;
&lt;br /&gt;
The M in Moodle stands for modular, and the easiest, most maintainable way to add new functionality to Moodle is by using one of the many plugin APIs. There are many types of plugin you can write:&lt;br /&gt;
*[[Modules|Activity modules]]&lt;br /&gt;
*[[Admin reports|Admin reports]]&lt;br /&gt;
*[[Assignment types|Assignment types]]&lt;br /&gt;
*[[Authentication plugins|Authentication plugins]]&lt;br /&gt;
*[[Blocks|Blocks]]&lt;br /&gt;
*[[Course formats]]&lt;br /&gt;
*[[Course Report Plugins|Course reports]]&lt;br /&gt;
*[[Database fields|Database fields]]&lt;br /&gt;
*[[Database presets|Database presets]]&lt;br /&gt;
*[[Enrolment plugins|Enrolment plugins]]&lt;br /&gt;
*[[Filters|Filters]]&lt;br /&gt;
*[[Gradebook plugins|Gradebook plugins]]&lt;br /&gt;
**[[Gradebook report|Gradebook report]]&lt;br /&gt;
**[[Gradebook export|Gradebook export]]&lt;br /&gt;
**[[Gradebook import|Gradebook import]]&lt;br /&gt;
*[[Question engine|Question engine]]&lt;br /&gt;
*[[Question import/export formats|Question import/export formats]]&lt;br /&gt;
*[[How to write a quiz report plugin|Quiz reports]]&lt;br /&gt;
*[[Resource types|Resource types]]&lt;br /&gt;
*[[SSO plugins|SSO plugins]]&lt;br /&gt;
*[[Search engine adapters|Search engine adapters]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 Moodle modules and plugins database].&lt;br /&gt;
&lt;br /&gt;
===Change core code===&lt;br /&gt;
&lt;br /&gt;
Some types of change can only be made by editing the core Moodle code. Such changes are much harder to maintain than plugins. If you want your core change to be considered for inclusion in the official Moodle release, you need to create an issue in the [[Tracker|tracker]], and attach your change as a [[How_to_create_a_patch|patch]]. It is also a good idea to discuss your ideas in the forums first.&lt;br /&gt;
&lt;br /&gt;
===Ways to contribute that do not involve PHP programming===&lt;br /&gt;
&lt;br /&gt;
*[[Themes|Create Moodle themes]]&lt;br /&gt;
*[[Translation|Translate Moodle into other languages]]&lt;br /&gt;
*[[MoodleDocs:Guidelines for contributors|Help document Moodle]]&lt;br /&gt;
*[[Database schemas|Database schemas]]&lt;br /&gt;
*[[Tests|Join the testing effort]], which involves [[Tracker|participating in the bug tracker]]&lt;br /&gt;
&lt;br /&gt;
==Plans for the future==&lt;br /&gt;
&lt;br /&gt;
Ideas for and details of planned future features of Moodle are initially discussed on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course at moodle.org. That developer discussions are intermixed with user discussions in the same forums may seem strange at first but is one of the reasons for the success of Moodle. It is important that both end-users and developers discuss the future features together.&lt;br /&gt;
&lt;br /&gt;
Once ideas begin to crystallize on the forums they can be summarized in this wiki, either as part of the [[Roadmap]] or in the form of [[Developer notes]]. These pages then form the basis for further discussion in the forums.&lt;br /&gt;
&lt;br /&gt;
*[[Roadmap]]&lt;br /&gt;
*[[Developer notes|Developer notes]]&lt;br /&gt;
*[[Student projects]]&lt;br /&gt;
*[[Developer conferences]]&lt;br /&gt;
&lt;br /&gt;
== Resources and tools ==&lt;br /&gt;
&lt;br /&gt;
*[[Developer FAQ]] - frequently asked questions, especially useful for newcomers to Moodle&lt;br /&gt;
*[[Finding_your_way_into_the_Moodle_code|Finding your way into the Moodle code]] - also aimed at newcomers&lt;br /&gt;
*[http://tracker.moodle.org/ Moodle tracker] - bug reports, feature requests and other tracked issues&lt;br /&gt;
**[[Firefox tracker search]] - How to setup a firefox quicksearch to easily navigate to moodle bugs&lt;br /&gt;
*[[Unmerged files]] - changes on the stable branch in CVS that have not been merged to HEAD&lt;br /&gt;
*Browse the code online:&lt;br /&gt;
**[http://cvs.moodle.org/moodle/ the code with a complete change history from CVS]&lt;br /&gt;
**[http://xref.moodle.org/index.html the code, with links generated by PHPXref]&lt;br /&gt;
*[http://phpdocs.moodle.org/ Moodle PHP doc reference] - compiled from the comment attached to each class and function in the code&lt;br /&gt;
*[[Database Schema|Database Schema]] - for recent releases&lt;br /&gt;
*[http://moodle.org/course/view.php?id=5#4 Development news and discussion] section of Using Moodle course&lt;br /&gt;
**especially the [http://moodle.org/mod/forum/view.php?id=55 General developer forum]&lt;br /&gt;
**[[Filters used on the Moodle.org forums|cool tricks you can use in the moodle.org forums]]&lt;br /&gt;
*Some tools people use when working on Moodle code:&lt;br /&gt;
**[[Setting_up_Eclipse|Setting up Eclipse for Moodle development]] - Eclipse is a great editor to use for php development, if you can work out how to set it up.&lt;br /&gt;
**[[vim|Setting up Vim for Moodle development]]&lt;br /&gt;
**[[ctags|Ctags]] - Using a tags file to navigate code&lt;br /&gt;
**[[W3C_validation|W3C HTML validator]] - Moodle has built in support to make using it easier.&lt;br /&gt;
**Firebug plugin for Firefox.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[http://security.moodle.org/ Moodle Security Centre]&lt;br /&gt;
*[http://moodle.com/partners/ Moodle Partners] - providers of custom Moodle development services&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[es:Documentación para Desarrolladores]]&lt;br /&gt;
[[fr:Documentation développeur]]&lt;br /&gt;
[[pt:Desenvolvimento:Documentação para programadores]]&lt;br /&gt;
[[zh:开发者文档]]&lt;br /&gt;
[[ja:開発者ドキュメント]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Latest_release_notes&amp;diff=25255</id>
		<title>Latest release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Latest_release_notes&amp;diff=25255"/>
		<updated>2007-12-27T22:34:36Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Headline features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{About Moodle}}&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.9 Beta==&lt;br /&gt;
&lt;br /&gt;
Released: 14th August 2007&lt;br /&gt;
&lt;br /&gt;
This is a DEVELOPMENT RELEASE made available for wider testing by the community in preparation for a polished release of 1.9 in the coming weeks. It should not be used for production sites unless you are prepared to report the bugs you find in the [http://tracker.moodle.org Moodle Tracker], hopefully with your patches attached. :-)&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10190 the full list of fixed issues in 1.9 so far].&lt;br /&gt;
&lt;br /&gt;
===Headline features===&lt;br /&gt;
&lt;br /&gt;
* [[Development:Grades|Gradebook]] - Moodle.com  (funded by Open University)&lt;br /&gt;
:: Completely rewritten from scratch for speed and flexibility. The new gradebook consists of plugins for reports, imports and exports. There are a number of standard reports which are useful for graders, students etc. The grader report allows you to treat the gradebook much more like a spreadsheet with manual editing, calculations, aggregations, weighting, locking, hiding, textual notes and so on.&lt;br /&gt;
* [[Development:Outcomes|Outcomes]] - Moodle.com&lt;br /&gt;
:: You can also now develop a list of expected outcomes (competencies) and connect these to courses and activities. You can even grade against multiple outcomes at once (ie Rubrics).&lt;br /&gt;
* [[Development:Events|Events API]] - Moodle.com&lt;br /&gt;
::The new Events API provides a way for any code to &amp;quot;hook&amp;quot; into events in a clean, loosely coupled way.  It&#039;s the foundation of the new gradebook. A lot of events in Moodle (such as adding a user or a course) now trigger events that developers can hook into.&lt;br /&gt;
* [[Development:Scalability|Scalability and performance improvements]] improvements - Catalyst IT Ltd&lt;br /&gt;
::A complete overhaul of the [[Roles]] implementation for correctness and scalability. Large sites with thousands of courses and users now load quickly and behave well under heavy traffic, thanks to reworked code for Roles. Additional boost for sites using PHP precompilers and significant improvements in the DB access code in all databases.&lt;br /&gt;
* [[MNet Mahara|Moodle Network - Mahara Interoperability]] - Catalyst IT Ltd&lt;br /&gt;
::Moodle v1.9 and [http://www.mahara.org/ Mahara E-porfolio v0.9] now do transparent Single Sign On - one to one, one to many, many to many. Students can maintain their personal [[E-portfolio|E-portfolios]] in Mahara.&lt;br /&gt;
* [[Tags]] - Luiz Cruz ([[Student_projects/Social_Networking_features|GSOC Social Networking project]])&lt;br /&gt;
:: Allows users to describe their own interests in terms of tags, which creates interest pages around those tags, bringing information together from a variety of sources.&lt;br /&gt;
* [[Question_Engine_Changes_in_Moodle_1.9|Improved question bank]] - Jamie Pratt funded by [http://www.fun.ac.jp/en/ Future University Hakodate].&lt;br /&gt;
::Allows questions to be shared by the whole site, a course category, a single course, or be kept private to a single module. More control over who can do what to each question. Improved file management for files linked to by questions.&lt;br /&gt;
* [[Notes]] - Andrei Bautu ([[Student projects/User Management Improvements|GSOC User Management Improvements project]])&lt;br /&gt;
:: Detailed notes can be kept about individual users (for example teachers might want to keep and share notes about students in their class).&lt;br /&gt;
* [[Bulk user actions]] - Andrei Bautu ([[Student projects/User Management Improvements|GSOC User Management Improvements project]])&lt;br /&gt;
::Administrators can perform bulk user actions, such as the mass deletion of user accounts. Extended features in the bulk user upload script to allow generation of user fields based on templates. &lt;br /&gt;
* New Custom Corners theme - Urs Hunkler&lt;br /&gt;
:: Beautiful and curvy (in all browsers).&lt;br /&gt;
&lt;br /&gt;
===Other major improvements===&lt;br /&gt;
&lt;br /&gt;
* [[Groups]] and [[Groupings]] - UPLGC, Catalyst Ltd, Moodle.com&lt;br /&gt;
:: New support for groupings (groups of groups) which was added briefly and then removed from 1.8.x. Activities and resources may be assigned to particular groupings.&lt;br /&gt;
* [[NTLM authentication|Active Directory NTLM Single Sign On]] - Catalyst Ltd&lt;br /&gt;
:: Integrated a reworked version of the NTLM Single Sign On, originally by Dan Marsden.&lt;br /&gt;
* New theme settings&lt;br /&gt;
** Category themes - can now set the theme for a category which will apply to all sub-categories and courses&lt;br /&gt;
** Theme order - new setting &#039;&#039;$CFG-&amp;gt;themeorder&#039;&#039; which sets the priority of the themes from highest to lowest.&lt;br /&gt;
* Ability to control block visibility with roles&lt;br /&gt;
** A new [[Capabilities/moodle/block:view|moodle/block:view]] capability has been added which allows control of who can view blocks from the roles system. This allows certain blocks to be hidden from the guest user, for example. See [[Block_permissions|Hiding blocks from certain users]].&lt;br /&gt;
* Oracle Support - Catalyst Ltd, USQ&lt;br /&gt;
:: Significant enhancements in Oracle support, scalability and performance&lt;br /&gt;
&lt;br /&gt;
===Module improvements===&lt;br /&gt;
&lt;br /&gt;
* Quiz/Question improvements:&lt;br /&gt;
** Improved question bank, as above.&lt;br /&gt;
** Quizzes now listed on the MyMoodle page. (Implemented by Stephen Bourget and Tim Hunt.)&lt;br /&gt;
** A quiz can now [[Quiz submission email notification|send emails when an attempt is finished]] - a confirmation to the student, a notification to all teachers, or both. (Implemented by Graham Miller of [http://www.webenhanced.com.au/ Web Enhanced Solutions] and Tim Hunt.)&lt;br /&gt;
** Third party question types can now implement Moodle XML and other import and export format. (Implemented by Howard Miller.)&lt;br /&gt;
** Gift Import/Export format can now handle Essay and Description question types.&lt;br /&gt;
** Some slight improvements to quiz layout. See [http://tracker.moodle.org/browse/MDL-10374 MDL-10374] for details. Theme designers please note.&lt;br /&gt;
** Multiple choice questions now show the feedback for all the options to students on the review page after the attempt is over.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Developers please add news here!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Notes===&lt;br /&gt;
&lt;br /&gt;
* In the new accesslib there is a subtle difference in how we resolve conflicts between &#039;allow&#039; and &#039;prevent&#039; capabilities. See [[Development:Roles#Capability-locality_changes_in_v1.9|Capability-locality changes in 1.9]].&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.3==&lt;br /&gt;
&lt;br /&gt;
Released: 11th October 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10230&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.3].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* Some crucial performance fixes&lt;br /&gt;
* Many little annoying bugs squashed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.2==&lt;br /&gt;
&lt;br /&gt;
Released: 8th July 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10220&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.2].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* Two XSS security vulnerabilities (one reported in the wild) were fixed.&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.1==&lt;br /&gt;
&lt;br /&gt;
Released: 14th June 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10213&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.1].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* The groups implementation has been cleaned up somewhat from the 1.8 release.  The &#039;&#039;&#039;groupings&#039;&#039;&#039; GUI that appeared in 1.8 has been removed, because groupings are not complete and should not be used yet.  Moodle 1.8 sites that have created groupings should upgrade to 1.8.1 to have groupings reset ... otherwise there could be problem when upgrading to the real groupings in 1.9 or later.&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8==&lt;br /&gt;
&lt;br /&gt;
Released: 31st March 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10130 the full list of fixed issues in 1.8].&lt;br /&gt;
&lt;br /&gt;
===Headline features===&lt;br /&gt;
&lt;br /&gt;
* [[Accessibility]] - Moodle.com &lt;br /&gt;
:: The Moodle interface is now compliant with XHTML Strict 1.0 and major accessibility standards.&lt;br /&gt;
* [[Moodle Network]] - Catalyst, Richard Wyles&lt;br /&gt;
:: We can now set up peer Moodle installations allowing users to roam from one site to another, using comprehensive SSO and transparent remote enrolments.  Administrators at the originating Moodle install can see logs of remote activity. You can also run your Moodle in &amp;quot;Hub&amp;quot; mode where any Moodle install can connect and users roam across.&lt;br /&gt;
* [[Web Services API]] - Catalyst, Richard Wyles&lt;br /&gt;
:: The Moodle Network code includes an XML-RPC call dispatcher that can expose the WHOLE Moodle API to trusted hosts.  We will building on this in further versions but you can start using it now if you need to.&lt;br /&gt;
* [[Development:lib/formslib.php|Moodle forms library]] - Moodle.com &lt;br /&gt;
:: Majority of forms now use a single API for defining forms consistently and collecting data safely without using any HTML at all.&lt;br /&gt;
* [[Multi Authentication]] - Iñaki Arenaza / Catalyst / Moodle.com&lt;br /&gt;
:: It is now easier to configure multiple sources of authentication at once.  WARNING: the format for authentication plugins has changed, so custom plugins may be broken, however it&#039;s very easy to convert old code to the new format. More details can be found in /auth/README.txt.&lt;br /&gt;
* [[Development:Customisable user profiles|Customisable User Profiles]] - Pukunui Technology&lt;br /&gt;
::Allow new arbitrary fields to be added to the user profile, with more control over what fields appear on what signup and profile editing screens.&lt;br /&gt;
* Groups refactor - OU / Moodle.com&lt;br /&gt;
::Groups code has been reorganised to make it more flexible for the future (see 1.9).  &lt;br /&gt;
* [http://tracker.moodle.org/secure/IssueNavigator.jspa?mode=hide&amp;amp;requestId=10221 Roles improvements] - Moodle.com&lt;br /&gt;
:: In addition to many Roles fixes and refinements, Moodle 1.8 has separated the SYSTEM context from the SITE context (which makes it more like 1.6 used to work).  The SITE context is the &amp;quot;front page course&amp;quot; and its activities.  This should make it easier for admins to set up permissions. Login as and switching of roles was rewritten. Administrators can view recommended permission settings of legacy roles and may reset legacy roles to defaults.&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-7993 Support for ODS export] - Moodle.com&lt;br /&gt;
::Open Document Format should solve majority of current problems with exports into proprietary Excel format. You may need to install special import plugin if you are using MS Office.&lt;br /&gt;
&lt;br /&gt;
===Known problems===&lt;br /&gt;
* CAS auth not working&lt;br /&gt;
&lt;br /&gt;
===Module improvements===&lt;br /&gt;
* [[Authorize.net Payment Gateway]] enrolment plugin &lt;br /&gt;
:: Payment managers can obtain an authorization code over phone from customer&#039;s bank if the credit card of the user cannot be captured on the internet directly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Developers please add news here!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
*[[Upgrading to Moodle 1.8]]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.3==&lt;br /&gt;
&lt;br /&gt;
11th October, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10212&amp;amp;styleName=Html&amp;amp;projectId=10011 This page shows issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.2==&lt;br /&gt;
&lt;br /&gt;
30th March, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10174 This page shows issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
&lt;br /&gt;
* Unintended logouts are now prevented - sesskey added to logout.php script&lt;br /&gt;
* Fixed problem with visible posts in user profile when &amp;quot;forceloginforprofiles&amp;quot; disabled&lt;br /&gt;
* Fixed visibility of site blog entries&lt;br /&gt;
* Corrected wrong includes in lams&lt;br /&gt;
* XSS injection in SCORM 1.2 reports&lt;br /&gt;
* Fixed old problem with approvals in Data module, edited entries were approved automatically&lt;br /&gt;
* Fixed escaping in shell commands (Win32 platform only)&lt;br /&gt;
* Fixed visibility of blog drafts&lt;br /&gt;
* Rewritten parameter handling in repository plugin&lt;br /&gt;
* Fixed XSS in login block&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.1==&lt;br /&gt;
&lt;br /&gt;
17th January, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10151 This page shows details about issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7==&lt;br /&gt;
&lt;br /&gt;
7th November, 2006&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10120&amp;amp;styleName=Html&amp;amp;projectId=10011&amp;amp;Create=Create This page shows details about issues resolved in this version]	 &lt;br /&gt;
 &lt;br /&gt;
===Headline features===	 &lt;br /&gt;
 &lt;br /&gt;
* [[Roles]]	 &lt;br /&gt;
:: Permissions based on fine-grained capabilities allow all kinds of roles to be created and assigned in all contexts around Moodle. This creates a great deal more flexibility in the permissions that you can grant to people.	 &lt;br /&gt;
* [[Development:XMLDB Documentation|XML Database Schema]]	 &lt;br /&gt;
:: added support for MS-SQL and Oracle with more databases to come. Developers now have just one XML file to edit when changing the database structure, and there is even a very funky editor for this file built-in to Moodle	 &lt;br /&gt;
* New Admin interface	 &lt;br /&gt;
:: Completely new admin interface, with accessible design and cool features to make access to settings fast and easy.	 &lt;br /&gt;
* [[Unit tests|Unit testing framework]]	 &lt;br /&gt;
:: Making it easier for developers to write test code, which should ultimately lead to a more reliable Moodle.	 &lt;br /&gt;
* [[AJAX]] Course editing (STILL UNSTABLE IN 1.7 RELEASE AND OFF BY DEFAULT, USE WITH CAUTION!)	 &lt;br /&gt;
:: The Topics and Weekly course formats now feature AJAX editing which means you can drag drop blocks, activities and sections (weeks/topics) and it all happens instantly. No more page reloading!&lt;br /&gt;
&lt;br /&gt;
===Module improvements===	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Assignment module]]	 &lt;br /&gt;
**New type Advanced uploading of files	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Database module]]	 &lt;br /&gt;
**Template/Field settings can now be saved as Presets and shared across a site.	 &lt;br /&gt;
**Presets are just zip files, and can also be shared between sites.	 &lt;br /&gt;
**Moodle 1.7 comes with one sample preset (an Image Gallery) with more to come.	 &lt;br /&gt;
**New latitude/longitude data type	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Lesson module]]	 &lt;br /&gt;
**Now has a more unified view of lesson screens.	 &lt;br /&gt;
**Teacher editing:	 &lt;br /&gt;
***Collapsed view has a nicer format, displays more information regarding each page and allows the creation of new pages.	 &lt;br /&gt;
***Editing is now speedier by replacing 3 second redirect delays with a notification system.	 &lt;br /&gt;
**New feature: display default feedback.	 &lt;br /&gt;
***Default is &#039;&#039;&#039;On&#039;&#039;&#039; so previous lessons behave as before.	 &lt;br /&gt;
***Description: if no &#039;&#039;response&#039;&#039; is entered for a question answer and this setting is turned &#039;&#039;&#039;Off&#039;&#039;&#039;, then the user skips the feedback page.	 &lt;br /&gt;
**Graceful degrade of JavaScript.	 &lt;br /&gt;
**Several bug fixes.	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Quiz module]]	 &lt;br /&gt;
:* The teacher can configure comments that are displayed to the student at the end of their attempt, with the comment displayed depending on the student&#039;s score.	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to some core question types	 &lt;br /&gt;
:* All question types can now have some general feedback. This is displayed to all students after they have finished the question (depending on the quiz settings) and does not depend on what response the student gave. Use this to tell the student what the question was about, or link them to more information about the topic it covers.	 &lt;br /&gt;
:* [[Matching question type|Matching]] questions can have extra wrong answers, and work when two questions have the same answer.	 &lt;br /&gt;
:* [[Multiple Choice question type|Multiple Choice]] questions can have feedback for the whole question, as well as specific answers. This is particularly useful for multiple-response questions.	 &lt;br /&gt;
:* [[Numerical question type|Numerical]] questions can have different answers with different precisions and scores. (Previously this was only supported via GIFT import. Now you can edit questions like this.)	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Wiki module]]	 &lt;br /&gt;
:* While editing a wiki page it is now locked so that others cannot try to change it at the same time. Teachers can override the lock.	 &lt;br /&gt;
:* Minor bugfixes (mostly to fix problems that occured when using Postgres database).	 &lt;br /&gt;
 &lt;br /&gt;
===Enrolment plugin improvements===	 &lt;br /&gt;
 &lt;br /&gt;
* [[Authorize.net Payment Gateway]] enrolment plugin 	 &lt;br /&gt;
:*Accepts &#039;Electronic Checks (ACH)&#039;. After a user approving echeck, an admin who has upload csv capacity must import a CSV file to get the user enrolled in the Payment Management page.	 &lt;br /&gt;
:*Autoconfigures credit card and echeck types if the merchant does not accept some types of them.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Old releases|Old release notes]]&lt;br /&gt;
&lt;br /&gt;
[[es:Notas de versiones]]&lt;br /&gt;
[[fr:Notes de mise à jour]]&lt;br /&gt;
[[pt:Versões do Moodle]]&lt;br /&gt;
[[ru:Примечания к версиям]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Latest_release_notes&amp;diff=25254</id>
		<title>Latest release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Latest_release_notes&amp;diff=25254"/>
		<updated>2007-12-27T21:43:50Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Other major improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{About Moodle}}&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.9 Beta==&lt;br /&gt;
&lt;br /&gt;
Released: 14th August 2007&lt;br /&gt;
&lt;br /&gt;
This is a DEVELOPMENT RELEASE made available for wider testing by the community in preparation for a polished release of 1.9 in the coming weeks. It should not be used for production sites unless you are prepared to report the bugs you find in the [http://tracker.moodle.org Moodle Tracker], hopefully with your patches attached. :-)&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10190 the full list of fixed issues in 1.9 so far].&lt;br /&gt;
&lt;br /&gt;
===Headline features===&lt;br /&gt;
&lt;br /&gt;
* [[Development:Grades|Gradebook]] - Moodle.com  (funded by Open University)&lt;br /&gt;
:: Completely rewritten from scratch for speed and flexibility. The new gradebook consists of plugins for reports, imports and exports. There are a number of standard reports which are useful for graders, students etc. The grader report allows you to treat the gradebook much more like a spreadsheet with manual editing, calculations, aggregations, weighting, locking, hiding, textual notes and so on.&lt;br /&gt;
* [[Development:Outcomes|Outcomes]] - Moodle.com&lt;br /&gt;
:: You can also now develop a list of expected outcomes (competencies) and connect these to courses and activities. You can even grade against multiple outcomes at once (ie Rubrics).&lt;br /&gt;
* [[Development:Events|Events API]] - Moodle.com&lt;br /&gt;
::The new Events API provides a way for any code to &amp;quot;hook&amp;quot; into events in a clean, loosely coupled way.  It&#039;s the foundation of the new gradebook. A lot of events in Moodle (such as adding a user or a course) now trigger events that developers can hook into.&lt;br /&gt;
* [[Development:Scalability|Scalability and performance improvements]] improvements - Catalyst Ltd&lt;br /&gt;
::A complete overhaul of the [[Roles]] implementation for correctness and scalability. Large sites with thousands of courses and users now load quickly and behave well under heavy traffic, thanks to reworked code for Roles. Additional boost for sites using PHP precompilers and significant improvements in the DB access code in all databases.&lt;br /&gt;
* [[Tags]] - Luiz Cruz ([[Student_projects/Social_Networking_features|GSOC Social Networking project]])&lt;br /&gt;
:: Allows users to describe their own interests in terms of tags, which creates interest pages around those tags, bringing information together from a variety of sources.&lt;br /&gt;
* [[Question_Engine_Changes_in_Moodle_1.9|Improved question bank]] - Jamie Pratt funded by [http://www.fun.ac.jp/en/ Future University Hakodate].&lt;br /&gt;
::Allows questions to be shared by the whole site, a course category, a single course, or be kept private to a single module. More control over who can do what to each question. Improved file management for files linked to by questions.&lt;br /&gt;
* [[Notes]] - Andrei Bautu ([[Student projects/User Management Improvements|GSOC User Management Improvements project]])&lt;br /&gt;
:: Detailed notes can be kept about individual users (for example teachers might want to keep and share notes about students in their class).&lt;br /&gt;
* [[Bulk user actions]] - Andrei Bautu ([[Student projects/User Management Improvements|GSOC User Management Improvements project]])&lt;br /&gt;
::Administrators can perform bulk user actions, such as the mass deletion of user accounts. Extended features in the bulk user upload script to allow generation of user fields based on templates. &lt;br /&gt;
* New Custom Corners theme - Urs Hunkler&lt;br /&gt;
:: Beautiful and curvy (in all browsers).&lt;br /&gt;
&lt;br /&gt;
===Other major improvements===&lt;br /&gt;
&lt;br /&gt;
* [[Groups]] and [[Groupings]] - UPLGC, Catalyst Ltd, Moodle.com&lt;br /&gt;
:: New support for groupings (groups of groups) which was added briefly and then removed from 1.8.x. Activities and resources may be assigned to particular groupings.&lt;br /&gt;
* [[NTLM authentication|Active Directory NTLM Single Sign On]] - Catalyst Ltd&lt;br /&gt;
:: Integrated a reworked version of the NTLM Single Sign On, originally by Dan Marsden.&lt;br /&gt;
* New theme settings&lt;br /&gt;
** Category themes - can now set the theme for a category which will apply to all sub-categories and courses&lt;br /&gt;
** Theme order - new setting &#039;&#039;$CFG-&amp;gt;themeorder&#039;&#039; which sets the priority of the themes from highest to lowest.&lt;br /&gt;
* Ability to control block visibility with roles&lt;br /&gt;
** A new [[Capabilities/moodle/block:view|moodle/block:view]] capability has been added which allows control of who can view blocks from the roles system. This allows certain blocks to be hidden from the guest user, for example. See [[Block_permissions|Hiding blocks from certain users]].&lt;br /&gt;
* Oracle Support - Catalyst Ltd, USQ&lt;br /&gt;
:: Significant enhancements in Oracle support, scalability and performance&lt;br /&gt;
&lt;br /&gt;
===Module improvements===&lt;br /&gt;
&lt;br /&gt;
* Quiz/Question improvements:&lt;br /&gt;
** Improved question bank, as above.&lt;br /&gt;
** Quizzes now listed on the MyMoodle page. (Implemented by Stephen Bourget and Tim Hunt.)&lt;br /&gt;
** A quiz can now [[Quiz submission email notification|send emails when an attempt is finished]] - a confirmation to the student, a notification to all teachers, or both. (Implemented by Graham Miller of [http://www.webenhanced.com.au/ Web Enhanced Solutions] and Tim Hunt.)&lt;br /&gt;
** Third party question types can now implement Moodle XML and other import and export format. (Implemented by Howard Miller.)&lt;br /&gt;
** Gift Import/Export format can now handle Essay and Description question types.&lt;br /&gt;
** Some slight improvements to quiz layout. See [http://tracker.moodle.org/browse/MDL-10374 MDL-10374] for details. Theme designers please note.&lt;br /&gt;
** Multiple choice questions now show the feedback for all the options to students on the review page after the attempt is over.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Developers please add news here!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Notes===&lt;br /&gt;
&lt;br /&gt;
* In the new accesslib there is a subtle difference in how we resolve conflicts between &#039;allow&#039; and &#039;prevent&#039; capabilities. See [[Development:Roles#Capability-locality_changes_in_v1.9|Capability-locality changes in 1.9]].&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.3==&lt;br /&gt;
&lt;br /&gt;
Released: 11th October 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10230&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.3].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* Some crucial performance fixes&lt;br /&gt;
* Many little annoying bugs squashed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.2==&lt;br /&gt;
&lt;br /&gt;
Released: 8th July 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10220&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.2].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* Two XSS security vulnerabilities (one reported in the wild) were fixed.&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.1==&lt;br /&gt;
&lt;br /&gt;
Released: 14th June 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10213&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.1].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* The groups implementation has been cleaned up somewhat from the 1.8 release.  The &#039;&#039;&#039;groupings&#039;&#039;&#039; GUI that appeared in 1.8 has been removed, because groupings are not complete and should not be used yet.  Moodle 1.8 sites that have created groupings should upgrade to 1.8.1 to have groupings reset ... otherwise there could be problem when upgrading to the real groupings in 1.9 or later.&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8==&lt;br /&gt;
&lt;br /&gt;
Released: 31st March 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10130 the full list of fixed issues in 1.8].&lt;br /&gt;
&lt;br /&gt;
===Headline features===&lt;br /&gt;
&lt;br /&gt;
* [[Accessibility]] - Moodle.com &lt;br /&gt;
:: The Moodle interface is now compliant with XHTML Strict 1.0 and major accessibility standards.&lt;br /&gt;
* [[Moodle Network]] - Catalyst, Richard Wyles&lt;br /&gt;
:: We can now set up peer Moodle installations allowing users to roam from one site to another, using comprehensive SSO and transparent remote enrolments.  Administrators at the originating Moodle install can see logs of remote activity. You can also run your Moodle in &amp;quot;Hub&amp;quot; mode where any Moodle install can connect and users roam across.&lt;br /&gt;
* [[Web Services API]] - Catalyst, Richard Wyles&lt;br /&gt;
:: The Moodle Network code includes an XML-RPC call dispatcher that can expose the WHOLE Moodle API to trusted hosts.  We will building on this in further versions but you can start using it now if you need to.&lt;br /&gt;
* [[Development:lib/formslib.php|Moodle forms library]] - Moodle.com &lt;br /&gt;
:: Majority of forms now use a single API for defining forms consistently and collecting data safely without using any HTML at all.&lt;br /&gt;
* [[Multi Authentication]] - Iñaki Arenaza / Catalyst / Moodle.com&lt;br /&gt;
:: It is now easier to configure multiple sources of authentication at once.  WARNING: the format for authentication plugins has changed, so custom plugins may be broken, however it&#039;s very easy to convert old code to the new format. More details can be found in /auth/README.txt.&lt;br /&gt;
* [[Development:Customisable user profiles|Customisable User Profiles]] - Pukunui Technology&lt;br /&gt;
::Allow new arbitrary fields to be added to the user profile, with more control over what fields appear on what signup and profile editing screens.&lt;br /&gt;
* Groups refactor - OU / Moodle.com&lt;br /&gt;
::Groups code has been reorganised to make it more flexible for the future (see 1.9).  &lt;br /&gt;
* [http://tracker.moodle.org/secure/IssueNavigator.jspa?mode=hide&amp;amp;requestId=10221 Roles improvements] - Moodle.com&lt;br /&gt;
:: In addition to many Roles fixes and refinements, Moodle 1.8 has separated the SYSTEM context from the SITE context (which makes it more like 1.6 used to work).  The SITE context is the &amp;quot;front page course&amp;quot; and its activities.  This should make it easier for admins to set up permissions. Login as and switching of roles was rewritten. Administrators can view recommended permission settings of legacy roles and may reset legacy roles to defaults.&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-7993 Support for ODS export] - Moodle.com&lt;br /&gt;
::Open Document Format should solve majority of current problems with exports into proprietary Excel format. You may need to install special import plugin if you are using MS Office.&lt;br /&gt;
&lt;br /&gt;
===Known problems===&lt;br /&gt;
* CAS auth not working&lt;br /&gt;
&lt;br /&gt;
===Module improvements===&lt;br /&gt;
* [[Authorize.net Payment Gateway]] enrolment plugin &lt;br /&gt;
:: Payment managers can obtain an authorization code over phone from customer&#039;s bank if the credit card of the user cannot be captured on the internet directly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Developers please add news here!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
*[[Upgrading to Moodle 1.8]]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.3==&lt;br /&gt;
&lt;br /&gt;
11th October, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10212&amp;amp;styleName=Html&amp;amp;projectId=10011 This page shows issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.2==&lt;br /&gt;
&lt;br /&gt;
30th March, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10174 This page shows issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
&lt;br /&gt;
* Unintended logouts are now prevented - sesskey added to logout.php script&lt;br /&gt;
* Fixed problem with visible posts in user profile when &amp;quot;forceloginforprofiles&amp;quot; disabled&lt;br /&gt;
* Fixed visibility of site blog entries&lt;br /&gt;
* Corrected wrong includes in lams&lt;br /&gt;
* XSS injection in SCORM 1.2 reports&lt;br /&gt;
* Fixed old problem with approvals in Data module, edited entries were approved automatically&lt;br /&gt;
* Fixed escaping in shell commands (Win32 platform only)&lt;br /&gt;
* Fixed visibility of blog drafts&lt;br /&gt;
* Rewritten parameter handling in repository plugin&lt;br /&gt;
* Fixed XSS in login block&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.1==&lt;br /&gt;
&lt;br /&gt;
17th January, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10151 This page shows details about issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7==&lt;br /&gt;
&lt;br /&gt;
7th November, 2006&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10120&amp;amp;styleName=Html&amp;amp;projectId=10011&amp;amp;Create=Create This page shows details about issues resolved in this version]	 &lt;br /&gt;
 &lt;br /&gt;
===Headline features===	 &lt;br /&gt;
 &lt;br /&gt;
* [[Roles]]	 &lt;br /&gt;
:: Permissions based on fine-grained capabilities allow all kinds of roles to be created and assigned in all contexts around Moodle. This creates a great deal more flexibility in the permissions that you can grant to people.	 &lt;br /&gt;
* [[Development:XMLDB Documentation|XML Database Schema]]	 &lt;br /&gt;
:: added support for MS-SQL and Oracle with more databases to come. Developers now have just one XML file to edit when changing the database structure, and there is even a very funky editor for this file built-in to Moodle	 &lt;br /&gt;
* New Admin interface	 &lt;br /&gt;
:: Completely new admin interface, with accessible design and cool features to make access to settings fast and easy.	 &lt;br /&gt;
* [[Unit tests|Unit testing framework]]	 &lt;br /&gt;
:: Making it easier for developers to write test code, which should ultimately lead to a more reliable Moodle.	 &lt;br /&gt;
* [[AJAX]] Course editing (STILL UNSTABLE IN 1.7 RELEASE AND OFF BY DEFAULT, USE WITH CAUTION!)	 &lt;br /&gt;
:: The Topics and Weekly course formats now feature AJAX editing which means you can drag drop blocks, activities and sections (weeks/topics) and it all happens instantly. No more page reloading!&lt;br /&gt;
&lt;br /&gt;
===Module improvements===	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Assignment module]]	 &lt;br /&gt;
**New type Advanced uploading of files	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Database module]]	 &lt;br /&gt;
**Template/Field settings can now be saved as Presets and shared across a site.	 &lt;br /&gt;
**Presets are just zip files, and can also be shared between sites.	 &lt;br /&gt;
**Moodle 1.7 comes with one sample preset (an Image Gallery) with more to come.	 &lt;br /&gt;
**New latitude/longitude data type	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Lesson module]]	 &lt;br /&gt;
**Now has a more unified view of lesson screens.	 &lt;br /&gt;
**Teacher editing:	 &lt;br /&gt;
***Collapsed view has a nicer format, displays more information regarding each page and allows the creation of new pages.	 &lt;br /&gt;
***Editing is now speedier by replacing 3 second redirect delays with a notification system.	 &lt;br /&gt;
**New feature: display default feedback.	 &lt;br /&gt;
***Default is &#039;&#039;&#039;On&#039;&#039;&#039; so previous lessons behave as before.	 &lt;br /&gt;
***Description: if no &#039;&#039;response&#039;&#039; is entered for a question answer and this setting is turned &#039;&#039;&#039;Off&#039;&#039;&#039;, then the user skips the feedback page.	 &lt;br /&gt;
**Graceful degrade of JavaScript.	 &lt;br /&gt;
**Several bug fixes.	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Quiz module]]	 &lt;br /&gt;
:* The teacher can configure comments that are displayed to the student at the end of their attempt, with the comment displayed depending on the student&#039;s score.	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to some core question types	 &lt;br /&gt;
:* All question types can now have some general feedback. This is displayed to all students after they have finished the question (depending on the quiz settings) and does not depend on what response the student gave. Use this to tell the student what the question was about, or link them to more information about the topic it covers.	 &lt;br /&gt;
:* [[Matching question type|Matching]] questions can have extra wrong answers, and work when two questions have the same answer.	 &lt;br /&gt;
:* [[Multiple Choice question type|Multiple Choice]] questions can have feedback for the whole question, as well as specific answers. This is particularly useful for multiple-response questions.	 &lt;br /&gt;
:* [[Numerical question type|Numerical]] questions can have different answers with different precisions and scores. (Previously this was only supported via GIFT import. Now you can edit questions like this.)	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Wiki module]]	 &lt;br /&gt;
:* While editing a wiki page it is now locked so that others cannot try to change it at the same time. Teachers can override the lock.	 &lt;br /&gt;
:* Minor bugfixes (mostly to fix problems that occured when using Postgres database).	 &lt;br /&gt;
 &lt;br /&gt;
===Enrolment plugin improvements===	 &lt;br /&gt;
 &lt;br /&gt;
* [[Authorize.net Payment Gateway]] enrolment plugin 	 &lt;br /&gt;
:*Accepts &#039;Electronic Checks (ACH)&#039;. After a user approving echeck, an admin who has upload csv capacity must import a CSV file to get the user enrolled in the Payment Management page.	 &lt;br /&gt;
:*Autoconfigures credit card and echeck types if the merchant does not accept some types of them.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Old releases|Old release notes]]&lt;br /&gt;
&lt;br /&gt;
[[es:Notas de versiones]]&lt;br /&gt;
[[fr:Notes de mise à jour]]&lt;br /&gt;
[[pt:Versões do Moodle]]&lt;br /&gt;
[[ru:Примечания к версиям]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Latest_release_notes&amp;diff=25253</id>
		<title>Latest release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Latest_release_notes&amp;diff=25253"/>
		<updated>2007-12-27T21:42:35Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Other major improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{About Moodle}}&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.9 Beta==&lt;br /&gt;
&lt;br /&gt;
Released: 14th August 2007&lt;br /&gt;
&lt;br /&gt;
This is a DEVELOPMENT RELEASE made available for wider testing by the community in preparation for a polished release of 1.9 in the coming weeks. It should not be used for production sites unless you are prepared to report the bugs you find in the [http://tracker.moodle.org Moodle Tracker], hopefully with your patches attached. :-)&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10190 the full list of fixed issues in 1.9 so far].&lt;br /&gt;
&lt;br /&gt;
===Headline features===&lt;br /&gt;
&lt;br /&gt;
* [[Development:Grades|Gradebook]] - Moodle.com  (funded by Open University)&lt;br /&gt;
:: Completely rewritten from scratch for speed and flexibility. The new gradebook consists of plugins for reports, imports and exports. There are a number of standard reports which are useful for graders, students etc. The grader report allows you to treat the gradebook much more like a spreadsheet with manual editing, calculations, aggregations, weighting, locking, hiding, textual notes and so on.&lt;br /&gt;
* [[Development:Outcomes|Outcomes]] - Moodle.com&lt;br /&gt;
:: You can also now develop a list of expected outcomes (competencies) and connect these to courses and activities. You can even grade against multiple outcomes at once (ie Rubrics).&lt;br /&gt;
* [[Development:Events|Events API]] - Moodle.com&lt;br /&gt;
::The new Events API provides a way for any code to &amp;quot;hook&amp;quot; into events in a clean, loosely coupled way.  It&#039;s the foundation of the new gradebook. A lot of events in Moodle (such as adding a user or a course) now trigger events that developers can hook into.&lt;br /&gt;
* [[Development:Scalability|Scalability and performance improvements]] improvements - Catalyst Ltd&lt;br /&gt;
::A complete overhaul of the [[Roles]] implementation for correctness and scalability. Large sites with thousands of courses and users now load quickly and behave well under heavy traffic, thanks to reworked code for Roles. Additional boost for sites using PHP precompilers and significant improvements in the DB access code in all databases.&lt;br /&gt;
* [[Tags]] - Luiz Cruz ([[Student_projects/Social_Networking_features|GSOC Social Networking project]])&lt;br /&gt;
:: Allows users to describe their own interests in terms of tags, which creates interest pages around those tags, bringing information together from a variety of sources.&lt;br /&gt;
* [[Question_Engine_Changes_in_Moodle_1.9|Improved question bank]] - Jamie Pratt funded by [http://www.fun.ac.jp/en/ Future University Hakodate].&lt;br /&gt;
::Allows questions to be shared by the whole site, a course category, a single course, or be kept private to a single module. More control over who can do what to each question. Improved file management for files linked to by questions.&lt;br /&gt;
* [[Notes]] - Andrei Bautu ([[Student projects/User Management Improvements|GSOC User Management Improvements project]])&lt;br /&gt;
:: Detailed notes can be kept about individual users (for example teachers might want to keep and share notes about students in their class).&lt;br /&gt;
* [[Bulk user actions]] - Andrei Bautu ([[Student projects/User Management Improvements|GSOC User Management Improvements project]])&lt;br /&gt;
::Administrators can perform bulk user actions, such as the mass deletion of user accounts. Extended features in the bulk user upload script to allow generation of user fields based on templates. &lt;br /&gt;
* New Custom Corners theme - Urs Hunkler&lt;br /&gt;
:: Beautiful and curvy (in all browsers).&lt;br /&gt;
&lt;br /&gt;
===Other major improvements===&lt;br /&gt;
&lt;br /&gt;
* [[Groups]] and [[Groupings]] - UPLGC, Catalyst Ltd, Moodle.com&lt;br /&gt;
:: New support for groupings (groups of groups) which was added briefly and then removed from 1.8.x. Activities and resources may be assigned to particular groupings.&lt;br /&gt;
* [[NTLM authentication|NTLM Single Sign On]] - Catalyst Ltd&lt;br /&gt;
:: Integrated a reworked version of the NTLM Single Sign On, originally by Dan Marsden&lt;br /&gt;
* New theme settings&lt;br /&gt;
** Category themes - can now set the theme for a category which will apply to all sub-categories and courses&lt;br /&gt;
** Theme order - new setting &#039;&#039;$CFG-&amp;gt;themeorder&#039;&#039; which sets the priority of the themes from highest to lowest.&lt;br /&gt;
* Ability to control block visibility with roles&lt;br /&gt;
** A new [[Capabilities/moodle/block:view|moodle/block:view]] capability has been added which allows control of who can view blocks from the roles system. This allows certain blocks to be hidden from the guest user, for example. See [[Block_permissions|Hiding blocks from certain users]].&lt;br /&gt;
* Oracle Support - Catalyst Ltd, USQ&lt;br /&gt;
:: Significant enhancements in Oracle support, scalability and performance&lt;br /&gt;
&lt;br /&gt;
===Module improvements===&lt;br /&gt;
&lt;br /&gt;
* Quiz/Question improvements:&lt;br /&gt;
** Improved question bank, as above.&lt;br /&gt;
** Quizzes now listed on the MyMoodle page. (Implemented by Stephen Bourget and Tim Hunt.)&lt;br /&gt;
** A quiz can now [[Quiz submission email notification|send emails when an attempt is finished]] - a confirmation to the student, a notification to all teachers, or both. (Implemented by Graham Miller of [http://www.webenhanced.com.au/ Web Enhanced Solutions] and Tim Hunt.)&lt;br /&gt;
** Third party question types can now implement Moodle XML and other import and export format. (Implemented by Howard Miller.)&lt;br /&gt;
** Gift Import/Export format can now handle Essay and Description question types.&lt;br /&gt;
** Some slight improvements to quiz layout. See [http://tracker.moodle.org/browse/MDL-10374 MDL-10374] for details. Theme designers please note.&lt;br /&gt;
** Multiple choice questions now show the feedback for all the options to students on the review page after the attempt is over.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Developers please add news here!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Notes===&lt;br /&gt;
&lt;br /&gt;
* In the new accesslib there is a subtle difference in how we resolve conflicts between &#039;allow&#039; and &#039;prevent&#039; capabilities. See [[Development:Roles#Capability-locality_changes_in_v1.9|Capability-locality changes in 1.9]].&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.3==&lt;br /&gt;
&lt;br /&gt;
Released: 11th October 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10230&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.3].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* Some crucial performance fixes&lt;br /&gt;
* Many little annoying bugs squashed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.2==&lt;br /&gt;
&lt;br /&gt;
Released: 8th July 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10220&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.2].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* Two XSS security vulnerabilities (one reported in the wild) were fixed.&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.1==&lt;br /&gt;
&lt;br /&gt;
Released: 14th June 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10213&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.1].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* The groups implementation has been cleaned up somewhat from the 1.8 release.  The &#039;&#039;&#039;groupings&#039;&#039;&#039; GUI that appeared in 1.8 has been removed, because groupings are not complete and should not be used yet.  Moodle 1.8 sites that have created groupings should upgrade to 1.8.1 to have groupings reset ... otherwise there could be problem when upgrading to the real groupings in 1.9 or later.&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8==&lt;br /&gt;
&lt;br /&gt;
Released: 31st March 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10130 the full list of fixed issues in 1.8].&lt;br /&gt;
&lt;br /&gt;
===Headline features===&lt;br /&gt;
&lt;br /&gt;
* [[Accessibility]] - Moodle.com &lt;br /&gt;
:: The Moodle interface is now compliant with XHTML Strict 1.0 and major accessibility standards.&lt;br /&gt;
* [[Moodle Network]] - Catalyst, Richard Wyles&lt;br /&gt;
:: We can now set up peer Moodle installations allowing users to roam from one site to another, using comprehensive SSO and transparent remote enrolments.  Administrators at the originating Moodle install can see logs of remote activity. You can also run your Moodle in &amp;quot;Hub&amp;quot; mode where any Moodle install can connect and users roam across.&lt;br /&gt;
* [[Web Services API]] - Catalyst, Richard Wyles&lt;br /&gt;
:: The Moodle Network code includes an XML-RPC call dispatcher that can expose the WHOLE Moodle API to trusted hosts.  We will building on this in further versions but you can start using it now if you need to.&lt;br /&gt;
* [[Development:lib/formslib.php|Moodle forms library]] - Moodle.com &lt;br /&gt;
:: Majority of forms now use a single API for defining forms consistently and collecting data safely without using any HTML at all.&lt;br /&gt;
* [[Multi Authentication]] - Iñaki Arenaza / Catalyst / Moodle.com&lt;br /&gt;
:: It is now easier to configure multiple sources of authentication at once.  WARNING: the format for authentication plugins has changed, so custom plugins may be broken, however it&#039;s very easy to convert old code to the new format. More details can be found in /auth/README.txt.&lt;br /&gt;
* [[Development:Customisable user profiles|Customisable User Profiles]] - Pukunui Technology&lt;br /&gt;
::Allow new arbitrary fields to be added to the user profile, with more control over what fields appear on what signup and profile editing screens.&lt;br /&gt;
* Groups refactor - OU / Moodle.com&lt;br /&gt;
::Groups code has been reorganised to make it more flexible for the future (see 1.9).  &lt;br /&gt;
* [http://tracker.moodle.org/secure/IssueNavigator.jspa?mode=hide&amp;amp;requestId=10221 Roles improvements] - Moodle.com&lt;br /&gt;
:: In addition to many Roles fixes and refinements, Moodle 1.8 has separated the SYSTEM context from the SITE context (which makes it more like 1.6 used to work).  The SITE context is the &amp;quot;front page course&amp;quot; and its activities.  This should make it easier for admins to set up permissions. Login as and switching of roles was rewritten. Administrators can view recommended permission settings of legacy roles and may reset legacy roles to defaults.&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-7993 Support for ODS export] - Moodle.com&lt;br /&gt;
::Open Document Format should solve majority of current problems with exports into proprietary Excel format. You may need to install special import plugin if you are using MS Office.&lt;br /&gt;
&lt;br /&gt;
===Known problems===&lt;br /&gt;
* CAS auth not working&lt;br /&gt;
&lt;br /&gt;
===Module improvements===&lt;br /&gt;
* [[Authorize.net Payment Gateway]] enrolment plugin &lt;br /&gt;
:: Payment managers can obtain an authorization code over phone from customer&#039;s bank if the credit card of the user cannot be captured on the internet directly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Developers please add news here!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
*[[Upgrading to Moodle 1.8]]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.3==&lt;br /&gt;
&lt;br /&gt;
11th October, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10212&amp;amp;styleName=Html&amp;amp;projectId=10011 This page shows issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.2==&lt;br /&gt;
&lt;br /&gt;
30th March, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10174 This page shows issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
&lt;br /&gt;
* Unintended logouts are now prevented - sesskey added to logout.php script&lt;br /&gt;
* Fixed problem with visible posts in user profile when &amp;quot;forceloginforprofiles&amp;quot; disabled&lt;br /&gt;
* Fixed visibility of site blog entries&lt;br /&gt;
* Corrected wrong includes in lams&lt;br /&gt;
* XSS injection in SCORM 1.2 reports&lt;br /&gt;
* Fixed old problem with approvals in Data module, edited entries were approved automatically&lt;br /&gt;
* Fixed escaping in shell commands (Win32 platform only)&lt;br /&gt;
* Fixed visibility of blog drafts&lt;br /&gt;
* Rewritten parameter handling in repository plugin&lt;br /&gt;
* Fixed XSS in login block&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.1==&lt;br /&gt;
&lt;br /&gt;
17th January, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10151 This page shows details about issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7==&lt;br /&gt;
&lt;br /&gt;
7th November, 2006&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10120&amp;amp;styleName=Html&amp;amp;projectId=10011&amp;amp;Create=Create This page shows details about issues resolved in this version]	 &lt;br /&gt;
 &lt;br /&gt;
===Headline features===	 &lt;br /&gt;
 &lt;br /&gt;
* [[Roles]]	 &lt;br /&gt;
:: Permissions based on fine-grained capabilities allow all kinds of roles to be created and assigned in all contexts around Moodle. This creates a great deal more flexibility in the permissions that you can grant to people.	 &lt;br /&gt;
* [[Development:XMLDB Documentation|XML Database Schema]]	 &lt;br /&gt;
:: added support for MS-SQL and Oracle with more databases to come. Developers now have just one XML file to edit when changing the database structure, and there is even a very funky editor for this file built-in to Moodle	 &lt;br /&gt;
* New Admin interface	 &lt;br /&gt;
:: Completely new admin interface, with accessible design and cool features to make access to settings fast and easy.	 &lt;br /&gt;
* [[Unit tests|Unit testing framework]]	 &lt;br /&gt;
:: Making it easier for developers to write test code, which should ultimately lead to a more reliable Moodle.	 &lt;br /&gt;
* [[AJAX]] Course editing (STILL UNSTABLE IN 1.7 RELEASE AND OFF BY DEFAULT, USE WITH CAUTION!)	 &lt;br /&gt;
:: The Topics and Weekly course formats now feature AJAX editing which means you can drag drop blocks, activities and sections (weeks/topics) and it all happens instantly. No more page reloading!&lt;br /&gt;
&lt;br /&gt;
===Module improvements===	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Assignment module]]	 &lt;br /&gt;
**New type Advanced uploading of files	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Database module]]	 &lt;br /&gt;
**Template/Field settings can now be saved as Presets and shared across a site.	 &lt;br /&gt;
**Presets are just zip files, and can also be shared between sites.	 &lt;br /&gt;
**Moodle 1.7 comes with one sample preset (an Image Gallery) with more to come.	 &lt;br /&gt;
**New latitude/longitude data type	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Lesson module]]	 &lt;br /&gt;
**Now has a more unified view of lesson screens.	 &lt;br /&gt;
**Teacher editing:	 &lt;br /&gt;
***Collapsed view has a nicer format, displays more information regarding each page and allows the creation of new pages.	 &lt;br /&gt;
***Editing is now speedier by replacing 3 second redirect delays with a notification system.	 &lt;br /&gt;
**New feature: display default feedback.	 &lt;br /&gt;
***Default is &#039;&#039;&#039;On&#039;&#039;&#039; so previous lessons behave as before.	 &lt;br /&gt;
***Description: if no &#039;&#039;response&#039;&#039; is entered for a question answer and this setting is turned &#039;&#039;&#039;Off&#039;&#039;&#039;, then the user skips the feedback page.	 &lt;br /&gt;
**Graceful degrade of JavaScript.	 &lt;br /&gt;
**Several bug fixes.	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Quiz module]]	 &lt;br /&gt;
:* The teacher can configure comments that are displayed to the student at the end of their attempt, with the comment displayed depending on the student&#039;s score.	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to some core question types	 &lt;br /&gt;
:* All question types can now have some general feedback. This is displayed to all students after they have finished the question (depending on the quiz settings) and does not depend on what response the student gave. Use this to tell the student what the question was about, or link them to more information about the topic it covers.	 &lt;br /&gt;
:* [[Matching question type|Matching]] questions can have extra wrong answers, and work when two questions have the same answer.	 &lt;br /&gt;
:* [[Multiple Choice question type|Multiple Choice]] questions can have feedback for the whole question, as well as specific answers. This is particularly useful for multiple-response questions.	 &lt;br /&gt;
:* [[Numerical question type|Numerical]] questions can have different answers with different precisions and scores. (Previously this was only supported via GIFT import. Now you can edit questions like this.)	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Wiki module]]	 &lt;br /&gt;
:* While editing a wiki page it is now locked so that others cannot try to change it at the same time. Teachers can override the lock.	 &lt;br /&gt;
:* Minor bugfixes (mostly to fix problems that occured when using Postgres database).	 &lt;br /&gt;
 &lt;br /&gt;
===Enrolment plugin improvements===	 &lt;br /&gt;
 &lt;br /&gt;
* [[Authorize.net Payment Gateway]] enrolment plugin 	 &lt;br /&gt;
:*Accepts &#039;Electronic Checks (ACH)&#039;. After a user approving echeck, an admin who has upload csv capacity must import a CSV file to get the user enrolled in the Payment Management page.	 &lt;br /&gt;
:*Autoconfigures credit card and echeck types if the merchant does not accept some types of them.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Old releases|Old release notes]]&lt;br /&gt;
&lt;br /&gt;
[[es:Notas de versiones]]&lt;br /&gt;
[[fr:Notes de mise à jour]]&lt;br /&gt;
[[pt:Versões do Moodle]]&lt;br /&gt;
[[ru:Примечания к версиям]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Latest_release_notes&amp;diff=25252</id>
		<title>Latest release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Latest_release_notes&amp;diff=25252"/>
		<updated>2007-12-27T21:32:10Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Headline features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{About Moodle}}&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.9 Beta==&lt;br /&gt;
&lt;br /&gt;
Released: 14th August 2007&lt;br /&gt;
&lt;br /&gt;
This is a DEVELOPMENT RELEASE made available for wider testing by the community in preparation for a polished release of 1.9 in the coming weeks. It should not be used for production sites unless you are prepared to report the bugs you find in the [http://tracker.moodle.org Moodle Tracker], hopefully with your patches attached. :-)&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10190 the full list of fixed issues in 1.9 so far].&lt;br /&gt;
&lt;br /&gt;
===Headline features===&lt;br /&gt;
&lt;br /&gt;
* [[Development:Grades|Gradebook]] - Moodle.com  (funded by Open University)&lt;br /&gt;
:: Completely rewritten from scratch for speed and flexibility. The new gradebook consists of plugins for reports, imports and exports. There are a number of standard reports which are useful for graders, students etc. The grader report allows you to treat the gradebook much more like a spreadsheet with manual editing, calculations, aggregations, weighting, locking, hiding, textual notes and so on.&lt;br /&gt;
* [[Development:Outcomes|Outcomes]] - Moodle.com&lt;br /&gt;
:: You can also now develop a list of expected outcomes (competencies) and connect these to courses and activities. You can even grade against multiple outcomes at once (ie Rubrics).&lt;br /&gt;
* [[Development:Events|Events API]] - Moodle.com&lt;br /&gt;
::The new Events API provides a way for any code to &amp;quot;hook&amp;quot; into events in a clean, loosely coupled way.  It&#039;s the foundation of the new gradebook. A lot of events in Moodle (such as adding a user or a course) now trigger events that developers can hook into.&lt;br /&gt;
* [[Development:Scalability|Scalability and performance improvements]] improvements - Catalyst Ltd&lt;br /&gt;
::A complete overhaul of the [[Roles]] implementation for correctness and scalability. Large sites with thousands of courses and users now load quickly and behave well under heavy traffic, thanks to reworked code for Roles. Additional boost for sites using PHP precompilers and significant improvements in the DB access code in all databases.&lt;br /&gt;
* [[Tags]] - Luiz Cruz ([[Student_projects/Social_Networking_features|GSOC Social Networking project]])&lt;br /&gt;
:: Allows users to describe their own interests in terms of tags, which creates interest pages around those tags, bringing information together from a variety of sources.&lt;br /&gt;
* [[Question_Engine_Changes_in_Moodle_1.9|Improved question bank]] - Jamie Pratt funded by [http://www.fun.ac.jp/en/ Future University Hakodate].&lt;br /&gt;
::Allows questions to be shared by the whole site, a course category, a single course, or be kept private to a single module. More control over who can do what to each question. Improved file management for files linked to by questions.&lt;br /&gt;
* [[Notes]] - Andrei Bautu ([[Student projects/User Management Improvements|GSOC User Management Improvements project]])&lt;br /&gt;
:: Detailed notes can be kept about individual users (for example teachers might want to keep and share notes about students in their class).&lt;br /&gt;
* [[Bulk user actions]] - Andrei Bautu ([[Student projects/User Management Improvements|GSOC User Management Improvements project]])&lt;br /&gt;
::Administrators can perform bulk user actions, such as the mass deletion of user accounts. Extended features in the bulk user upload script to allow generation of user fields based on templates. &lt;br /&gt;
* New Custom Corners theme - Urs Hunkler&lt;br /&gt;
:: Beautiful and curvy (in all browsers).&lt;br /&gt;
&lt;br /&gt;
===Other major improvements===&lt;br /&gt;
&lt;br /&gt;
* [[Groups]] and [[Groupings]]&lt;br /&gt;
:: New support for groupings (groups of groups) which was added briefly and then removed from 1.8.x. Activities and resources may be assigned to particular groupings.&lt;br /&gt;
* New theme settings&lt;br /&gt;
** Category themes - can now set the theme for a category which will apply to all sub-categories and courses&lt;br /&gt;
** Theme order - new setting &#039;&#039;$CFG-&amp;gt;themeorder&#039;&#039; which sets the priority of the themes from highest to lowest.&lt;br /&gt;
* Ability to control block visibility with roles&lt;br /&gt;
** A new [[Capabilities/moodle/block:view|moodle/block:view]] capability has been added which allows control of who can view blocks from the roles system. This allows certain blocks to be hidden from the guest user, for example. See [[Block_permissions|Hiding blocks from certain users]].&lt;br /&gt;
&lt;br /&gt;
===Module improvements===&lt;br /&gt;
&lt;br /&gt;
* Quiz/Question improvements:&lt;br /&gt;
** Improved question bank, as above.&lt;br /&gt;
** Quizzes now listed on the MyMoodle page. (Implemented by Stephen Bourget and Tim Hunt.)&lt;br /&gt;
** A quiz can now [[Quiz submission email notification|send emails when an attempt is finished]] - a confirmation to the student, a notification to all teachers, or both. (Implemented by Graham Miller of [http://www.webenhanced.com.au/ Web Enhanced Solutions] and Tim Hunt.)&lt;br /&gt;
** Third party question types can now implement Moodle XML and other import and export format. (Implemented by Howard Miller.)&lt;br /&gt;
** Gift Import/Export format can now handle Essay and Description question types.&lt;br /&gt;
** Some slight improvements to quiz layout. See [http://tracker.moodle.org/browse/MDL-10374 MDL-10374] for details. Theme designers please note.&lt;br /&gt;
** Multiple choice questions now show the feedback for all the options to students on the review page after the attempt is over.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Developers please add news here!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Notes===&lt;br /&gt;
&lt;br /&gt;
* In the new accesslib there is a subtle difference in how we resolve conflicts between &#039;allow&#039; and &#039;prevent&#039; capabilities. See [[Development:Roles#Capability-locality_changes_in_v1.9|Capability-locality changes in 1.9]].&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.3==&lt;br /&gt;
&lt;br /&gt;
Released: 11th October 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10230&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.3].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* Some crucial performance fixes&lt;br /&gt;
* Many little annoying bugs squashed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.2==&lt;br /&gt;
&lt;br /&gt;
Released: 8th July 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10220&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.2].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* Two XSS security vulnerabilities (one reported in the wild) were fixed.&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.1==&lt;br /&gt;
&lt;br /&gt;
Released: 14th June 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10213&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.1].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* The groups implementation has been cleaned up somewhat from the 1.8 release.  The &#039;&#039;&#039;groupings&#039;&#039;&#039; GUI that appeared in 1.8 has been removed, because groupings are not complete and should not be used yet.  Moodle 1.8 sites that have created groupings should upgrade to 1.8.1 to have groupings reset ... otherwise there could be problem when upgrading to the real groupings in 1.9 or later.&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8==&lt;br /&gt;
&lt;br /&gt;
Released: 31st March 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10130 the full list of fixed issues in 1.8].&lt;br /&gt;
&lt;br /&gt;
===Headline features===&lt;br /&gt;
&lt;br /&gt;
* [[Accessibility]] - Moodle.com &lt;br /&gt;
:: The Moodle interface is now compliant with XHTML Strict 1.0 and major accessibility standards.&lt;br /&gt;
* [[Moodle Network]] - Catalyst, Richard Wyles&lt;br /&gt;
:: We can now set up peer Moodle installations allowing users to roam from one site to another, using comprehensive SSO and transparent remote enrolments.  Administrators at the originating Moodle install can see logs of remote activity. You can also run your Moodle in &amp;quot;Hub&amp;quot; mode where any Moodle install can connect and users roam across.&lt;br /&gt;
* [[Web Services API]] - Catalyst, Richard Wyles&lt;br /&gt;
:: The Moodle Network code includes an XML-RPC call dispatcher that can expose the WHOLE Moodle API to trusted hosts.  We will building on this in further versions but you can start using it now if you need to.&lt;br /&gt;
* [[Development:lib/formslib.php|Moodle forms library]] - Moodle.com &lt;br /&gt;
:: Majority of forms now use a single API for defining forms consistently and collecting data safely without using any HTML at all.&lt;br /&gt;
* [[Multi Authentication]] - Iñaki Arenaza / Catalyst / Moodle.com&lt;br /&gt;
:: It is now easier to configure multiple sources of authentication at once.  WARNING: the format for authentication plugins has changed, so custom plugins may be broken, however it&#039;s very easy to convert old code to the new format. More details can be found in /auth/README.txt.&lt;br /&gt;
* [[Development:Customisable user profiles|Customisable User Profiles]] - Pukunui Technology&lt;br /&gt;
::Allow new arbitrary fields to be added to the user profile, with more control over what fields appear on what signup and profile editing screens.&lt;br /&gt;
* Groups refactor - OU / Moodle.com&lt;br /&gt;
::Groups code has been reorganised to make it more flexible for the future (see 1.9).  &lt;br /&gt;
* [http://tracker.moodle.org/secure/IssueNavigator.jspa?mode=hide&amp;amp;requestId=10221 Roles improvements] - Moodle.com&lt;br /&gt;
:: In addition to many Roles fixes and refinements, Moodle 1.8 has separated the SYSTEM context from the SITE context (which makes it more like 1.6 used to work).  The SITE context is the &amp;quot;front page course&amp;quot; and its activities.  This should make it easier for admins to set up permissions. Login as and switching of roles was rewritten. Administrators can view recommended permission settings of legacy roles and may reset legacy roles to defaults.&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-7993 Support for ODS export] - Moodle.com&lt;br /&gt;
::Open Document Format should solve majority of current problems with exports into proprietary Excel format. You may need to install special import plugin if you are using MS Office.&lt;br /&gt;
&lt;br /&gt;
===Known problems===&lt;br /&gt;
* CAS auth not working&lt;br /&gt;
&lt;br /&gt;
===Module improvements===&lt;br /&gt;
* [[Authorize.net Payment Gateway]] enrolment plugin &lt;br /&gt;
:: Payment managers can obtain an authorization code over phone from customer&#039;s bank if the credit card of the user cannot be captured on the internet directly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Developers please add news here!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
*[[Upgrading to Moodle 1.8]]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.3==&lt;br /&gt;
&lt;br /&gt;
11th October, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10212&amp;amp;styleName=Html&amp;amp;projectId=10011 This page shows issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.2==&lt;br /&gt;
&lt;br /&gt;
30th March, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10174 This page shows issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
&lt;br /&gt;
* Unintended logouts are now prevented - sesskey added to logout.php script&lt;br /&gt;
* Fixed problem with visible posts in user profile when &amp;quot;forceloginforprofiles&amp;quot; disabled&lt;br /&gt;
* Fixed visibility of site blog entries&lt;br /&gt;
* Corrected wrong includes in lams&lt;br /&gt;
* XSS injection in SCORM 1.2 reports&lt;br /&gt;
* Fixed old problem with approvals in Data module, edited entries were approved automatically&lt;br /&gt;
* Fixed escaping in shell commands (Win32 platform only)&lt;br /&gt;
* Fixed visibility of blog drafts&lt;br /&gt;
* Rewritten parameter handling in repository plugin&lt;br /&gt;
* Fixed XSS in login block&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.1==&lt;br /&gt;
&lt;br /&gt;
17th January, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10151 This page shows details about issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7==&lt;br /&gt;
&lt;br /&gt;
7th November, 2006&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10120&amp;amp;styleName=Html&amp;amp;projectId=10011&amp;amp;Create=Create This page shows details about issues resolved in this version]	 &lt;br /&gt;
 &lt;br /&gt;
===Headline features===	 &lt;br /&gt;
 &lt;br /&gt;
* [[Roles]]	 &lt;br /&gt;
:: Permissions based on fine-grained capabilities allow all kinds of roles to be created and assigned in all contexts around Moodle. This creates a great deal more flexibility in the permissions that you can grant to people.	 &lt;br /&gt;
* [[Development:XMLDB Documentation|XML Database Schema]]	 &lt;br /&gt;
:: added support for MS-SQL and Oracle with more databases to come. Developers now have just one XML file to edit when changing the database structure, and there is even a very funky editor for this file built-in to Moodle	 &lt;br /&gt;
* New Admin interface	 &lt;br /&gt;
:: Completely new admin interface, with accessible design and cool features to make access to settings fast and easy.	 &lt;br /&gt;
* [[Unit tests|Unit testing framework]]	 &lt;br /&gt;
:: Making it easier for developers to write test code, which should ultimately lead to a more reliable Moodle.	 &lt;br /&gt;
* [[AJAX]] Course editing (STILL UNSTABLE IN 1.7 RELEASE AND OFF BY DEFAULT, USE WITH CAUTION!)	 &lt;br /&gt;
:: The Topics and Weekly course formats now feature AJAX editing which means you can drag drop blocks, activities and sections (weeks/topics) and it all happens instantly. No more page reloading!&lt;br /&gt;
&lt;br /&gt;
===Module improvements===	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Assignment module]]	 &lt;br /&gt;
**New type Advanced uploading of files	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Database module]]	 &lt;br /&gt;
**Template/Field settings can now be saved as Presets and shared across a site.	 &lt;br /&gt;
**Presets are just zip files, and can also be shared between sites.	 &lt;br /&gt;
**Moodle 1.7 comes with one sample preset (an Image Gallery) with more to come.	 &lt;br /&gt;
**New latitude/longitude data type	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Lesson module]]	 &lt;br /&gt;
**Now has a more unified view of lesson screens.	 &lt;br /&gt;
**Teacher editing:	 &lt;br /&gt;
***Collapsed view has a nicer format, displays more information regarding each page and allows the creation of new pages.	 &lt;br /&gt;
***Editing is now speedier by replacing 3 second redirect delays with a notification system.	 &lt;br /&gt;
**New feature: display default feedback.	 &lt;br /&gt;
***Default is &#039;&#039;&#039;On&#039;&#039;&#039; so previous lessons behave as before.	 &lt;br /&gt;
***Description: if no &#039;&#039;response&#039;&#039; is entered for a question answer and this setting is turned &#039;&#039;&#039;Off&#039;&#039;&#039;, then the user skips the feedback page.	 &lt;br /&gt;
**Graceful degrade of JavaScript.	 &lt;br /&gt;
**Several bug fixes.	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Quiz module]]	 &lt;br /&gt;
:* The teacher can configure comments that are displayed to the student at the end of their attempt, with the comment displayed depending on the student&#039;s score.	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to some core question types	 &lt;br /&gt;
:* All question types can now have some general feedback. This is displayed to all students after they have finished the question (depending on the quiz settings) and does not depend on what response the student gave. Use this to tell the student what the question was about, or link them to more information about the topic it covers.	 &lt;br /&gt;
:* [[Matching question type|Matching]] questions can have extra wrong answers, and work when two questions have the same answer.	 &lt;br /&gt;
:* [[Multiple Choice question type|Multiple Choice]] questions can have feedback for the whole question, as well as specific answers. This is particularly useful for multiple-response questions.	 &lt;br /&gt;
:* [[Numerical question type|Numerical]] questions can have different answers with different precisions and scores. (Previously this was only supported via GIFT import. Now you can edit questions like this.)	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Wiki module]]	 &lt;br /&gt;
:* While editing a wiki page it is now locked so that others cannot try to change it at the same time. Teachers can override the lock.	 &lt;br /&gt;
:* Minor bugfixes (mostly to fix problems that occured when using Postgres database).	 &lt;br /&gt;
 &lt;br /&gt;
===Enrolment plugin improvements===	 &lt;br /&gt;
 &lt;br /&gt;
* [[Authorize.net Payment Gateway]] enrolment plugin 	 &lt;br /&gt;
:*Accepts &#039;Electronic Checks (ACH)&#039;. After a user approving echeck, an admin who has upload csv capacity must import a CSV file to get the user enrolled in the Payment Management page.	 &lt;br /&gt;
:*Autoconfigures credit card and echeck types if the merchant does not accept some types of them.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Old releases|Old release notes]]&lt;br /&gt;
&lt;br /&gt;
[[es:Notas de versiones]]&lt;br /&gt;
[[fr:Notes de mise à jour]]&lt;br /&gt;
[[pt:Versões do Moodle]]&lt;br /&gt;
[[ru:Примечания к версиям]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Latest_release_notes&amp;diff=25251</id>
		<title>Latest release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Latest_release_notes&amp;diff=25251"/>
		<updated>2007-12-27T20:06:06Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Headline features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{About Moodle}}&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.9 Beta==&lt;br /&gt;
&lt;br /&gt;
Released: 14th August 2007&lt;br /&gt;
&lt;br /&gt;
This is a DEVELOPMENT RELEASE made available for wider testing by the community in preparation for a polished release of 1.9 in the coming weeks. It should not be used for production sites unless you are prepared to report the bugs you find in the [http://tracker.moodle.org Moodle Tracker], hopefully with your patches attached. :-)&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10190 the full list of fixed issues in 1.9 so far].&lt;br /&gt;
&lt;br /&gt;
===Headline features===&lt;br /&gt;
&lt;br /&gt;
* [[Development:Grades|Gradebook]] - Moodle.com  (funded by Open University)&lt;br /&gt;
:: Completely rewritten from scratch for speed and flexibility. The new gradebook consists of plugins for reports, imports and exports. There are a number of standard reports which are useful for graders, students etc. The grader report allows you to treat the gradebook much more like a spreadsheet with manual editing, calculations, aggregations, weighting, locking, hiding, textual notes and so on.&lt;br /&gt;
* [[Development:Outcomes|Outcomes]] - Moodle.com&lt;br /&gt;
:: You can also now develop a list of expected outcomes (competencies) and connect these to courses and activities. You can even grade against multiple outcomes at once (ie Rubrics).&lt;br /&gt;
* [[Development:Events|Events API]] - Moodle.com&lt;br /&gt;
::The new Events API provides a way for any code to &amp;quot;hook&amp;quot; into events in a clean, loosely coupled way.  It&#039;s the foundation of the new gradebook. A lot of events in Moodle (such as adding a user or a course) now trigger events that developers can hook into.&lt;br /&gt;
* [[Development:Scalability]] improvements - Catalyst Ltd&lt;br /&gt;
::A complete overhaul of the [[Roles]] implementation for correctness and scalability. Large sites with thousands of courses and users now load quickly and behave well under heavy traffic, thanks to reworked code for Roles. Additional boost for sites using PHP precompilers and significant improvements in the DB access code in all databases.&lt;br /&gt;
* [[Tags]] - Luiz Cruz ([[Student_projects/Social_Networking_features|GSOC Social Networking project]])&lt;br /&gt;
:: Allows users to describe their own interests in terms of tags, which creates interest pages around those tags, bringing information together from a variety of sources.&lt;br /&gt;
* [[Question_Engine_Changes_in_Moodle_1.9|Improved question bank]] - Jamie Pratt funded by [http://www.fun.ac.jp/en/ Future University Hakodate].&lt;br /&gt;
::Allows questions to be shared by the whole site, a course category, a single course, or be kept private to a single module. More control over who can do what to each question. Improved file management for files linked to by questions.&lt;br /&gt;
* [[Notes]] - Andrei Bautu ([[Student projects/User Management Improvements|GSOC User Management Improvements project]])&lt;br /&gt;
:: Detailed notes can be kept about individual users (for example teachers might want to keep and share notes about students in their class).&lt;br /&gt;
* [[Bulk user actions]] - Andrei Bautu ([[Student projects/User Management Improvements|GSOC User Management Improvements project]])&lt;br /&gt;
::Administrators can perform bulk user actions, such as the mass deletion of user accounts. Extended features in the bulk user upload script to allow generation of user fields based on templates. &lt;br /&gt;
* New Custom Corners theme - Urs Hunkler&lt;br /&gt;
:: Beautiful and curvy (in all browsers).&lt;br /&gt;
&lt;br /&gt;
===Other major improvements===&lt;br /&gt;
&lt;br /&gt;
* [[Groups]] and [[Groupings]]&lt;br /&gt;
:: New support for groupings (groups of groups) which was added briefly and then removed from 1.8.x. Activities and resources may be assigned to particular groupings.&lt;br /&gt;
* New theme settings&lt;br /&gt;
** Category themes - can now set the theme for a category which will apply to all sub-categories and courses&lt;br /&gt;
** Theme order - new setting &#039;&#039;$CFG-&amp;gt;themeorder&#039;&#039; which sets the priority of the themes from highest to lowest.&lt;br /&gt;
* Ability to control block visibility with roles&lt;br /&gt;
** A new [[Capabilities/moodle/block:view|moodle/block:view]] capability has been added which allows control of who can view blocks from the roles system. This allows certain blocks to be hidden from the guest user, for example. See [[Block_permissions|Hiding blocks from certain users]].&lt;br /&gt;
&lt;br /&gt;
===Module improvements===&lt;br /&gt;
&lt;br /&gt;
* Quiz/Question improvements:&lt;br /&gt;
** Improved question bank, as above.&lt;br /&gt;
** Quizzes now listed on the MyMoodle page. (Implemented by Stephen Bourget and Tim Hunt.)&lt;br /&gt;
** A quiz can now [[Quiz submission email notification|send emails when an attempt is finished]] - a confirmation to the student, a notification to all teachers, or both. (Implemented by Graham Miller of [http://www.webenhanced.com.au/ Web Enhanced Solutions] and Tim Hunt.)&lt;br /&gt;
** Third party question types can now implement Moodle XML and other import and export format. (Implemented by Howard Miller.)&lt;br /&gt;
** Gift Import/Export format can now handle Essay and Description question types.&lt;br /&gt;
** Some slight improvements to quiz layout. See [http://tracker.moodle.org/browse/MDL-10374 MDL-10374] for details. Theme designers please note.&lt;br /&gt;
** Multiple choice questions now show the feedback for all the options to students on the review page after the attempt is over.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Developers please add news here!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Notes===&lt;br /&gt;
&lt;br /&gt;
* In the new accesslib there is a subtle difference in how we resolve conflicts between &#039;allow&#039; and &#039;prevent&#039; capabilities. See [[Development:Roles#Capability-locality_changes_in_v1.9|Capability-locality changes in 1.9]].&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.3==&lt;br /&gt;
&lt;br /&gt;
Released: 11th October 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10230&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.3].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* Some crucial performance fixes&lt;br /&gt;
* Many little annoying bugs squashed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.2==&lt;br /&gt;
&lt;br /&gt;
Released: 8th July 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10220&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.2].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* Two XSS security vulnerabilities (one reported in the wild) were fixed.&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.1==&lt;br /&gt;
&lt;br /&gt;
Released: 14th June 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10213&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.1].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* The groups implementation has been cleaned up somewhat from the 1.8 release.  The &#039;&#039;&#039;groupings&#039;&#039;&#039; GUI that appeared in 1.8 has been removed, because groupings are not complete and should not be used yet.  Moodle 1.8 sites that have created groupings should upgrade to 1.8.1 to have groupings reset ... otherwise there could be problem when upgrading to the real groupings in 1.9 or later.&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8==&lt;br /&gt;
&lt;br /&gt;
Released: 31st March 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10130 the full list of fixed issues in 1.8].&lt;br /&gt;
&lt;br /&gt;
===Headline features===&lt;br /&gt;
&lt;br /&gt;
* [[Accessibility]] - Moodle.com &lt;br /&gt;
:: The Moodle interface is now compliant with XHTML Strict 1.0 and major accessibility standards.&lt;br /&gt;
* [[Moodle Network]] - Catalyst, Richard Wyles&lt;br /&gt;
:: We can now set up peer Moodle installations allowing users to roam from one site to another, using comprehensive SSO and transparent remote enrolments.  Administrators at the originating Moodle install can see logs of remote activity. You can also run your Moodle in &amp;quot;Hub&amp;quot; mode where any Moodle install can connect and users roam across.&lt;br /&gt;
* [[Web Services API]] - Catalyst, Richard Wyles&lt;br /&gt;
:: The Moodle Network code includes an XML-RPC call dispatcher that can expose the WHOLE Moodle API to trusted hosts.  We will building on this in further versions but you can start using it now if you need to.&lt;br /&gt;
* [[Development:lib/formslib.php|Moodle forms library]] - Moodle.com &lt;br /&gt;
:: Majority of forms now use a single API for defining forms consistently and collecting data safely without using any HTML at all.&lt;br /&gt;
* [[Multi Authentication]] - Iñaki Arenaza / Catalyst / Moodle.com&lt;br /&gt;
:: It is now easier to configure multiple sources of authentication at once.  WARNING: the format for authentication plugins has changed, so custom plugins may be broken, however it&#039;s very easy to convert old code to the new format. More details can be found in /auth/README.txt.&lt;br /&gt;
* [[Development:Customisable user profiles|Customisable User Profiles]] - Pukunui Technology&lt;br /&gt;
::Allow new arbitrary fields to be added to the user profile, with more control over what fields appear on what signup and profile editing screens.&lt;br /&gt;
* Groups refactor - OU / Moodle.com&lt;br /&gt;
::Groups code has been reorganised to make it more flexible for the future (see 1.9).  &lt;br /&gt;
* [http://tracker.moodle.org/secure/IssueNavigator.jspa?mode=hide&amp;amp;requestId=10221 Roles improvements] - Moodle.com&lt;br /&gt;
:: In addition to many Roles fixes and refinements, Moodle 1.8 has separated the SYSTEM context from the SITE context (which makes it more like 1.6 used to work).  The SITE context is the &amp;quot;front page course&amp;quot; and its activities.  This should make it easier for admins to set up permissions. Login as and switching of roles was rewritten. Administrators can view recommended permission settings of legacy roles and may reset legacy roles to defaults.&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-7993 Support for ODS export] - Moodle.com&lt;br /&gt;
::Open Document Format should solve majority of current problems with exports into proprietary Excel format. You may need to install special import plugin if you are using MS Office.&lt;br /&gt;
&lt;br /&gt;
===Known problems===&lt;br /&gt;
* CAS auth not working&lt;br /&gt;
&lt;br /&gt;
===Module improvements===&lt;br /&gt;
* [[Authorize.net Payment Gateway]] enrolment plugin &lt;br /&gt;
:: Payment managers can obtain an authorization code over phone from customer&#039;s bank if the credit card of the user cannot be captured on the internet directly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Developers please add news here!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
*[[Upgrading to Moodle 1.8]]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.3==&lt;br /&gt;
&lt;br /&gt;
11th October, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10212&amp;amp;styleName=Html&amp;amp;projectId=10011 This page shows issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.2==&lt;br /&gt;
&lt;br /&gt;
30th March, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10174 This page shows issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
&lt;br /&gt;
* Unintended logouts are now prevented - sesskey added to logout.php script&lt;br /&gt;
* Fixed problem with visible posts in user profile when &amp;quot;forceloginforprofiles&amp;quot; disabled&lt;br /&gt;
* Fixed visibility of site blog entries&lt;br /&gt;
* Corrected wrong includes in lams&lt;br /&gt;
* XSS injection in SCORM 1.2 reports&lt;br /&gt;
* Fixed old problem with approvals in Data module, edited entries were approved automatically&lt;br /&gt;
* Fixed escaping in shell commands (Win32 platform only)&lt;br /&gt;
* Fixed visibility of blog drafts&lt;br /&gt;
* Rewritten parameter handling in repository plugin&lt;br /&gt;
* Fixed XSS in login block&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.1==&lt;br /&gt;
&lt;br /&gt;
17th January, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10151 This page shows details about issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7==&lt;br /&gt;
&lt;br /&gt;
7th November, 2006&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10120&amp;amp;styleName=Html&amp;amp;projectId=10011&amp;amp;Create=Create This page shows details about issues resolved in this version]	 &lt;br /&gt;
 &lt;br /&gt;
===Headline features===	 &lt;br /&gt;
 &lt;br /&gt;
* [[Roles]]	 &lt;br /&gt;
:: Permissions based on fine-grained capabilities allow all kinds of roles to be created and assigned in all contexts around Moodle. This creates a great deal more flexibility in the permissions that you can grant to people.	 &lt;br /&gt;
* [[Development:XMLDB Documentation|XML Database Schema]]	 &lt;br /&gt;
:: added support for MS-SQL and Oracle with more databases to come. Developers now have just one XML file to edit when changing the database structure, and there is even a very funky editor for this file built-in to Moodle	 &lt;br /&gt;
* New Admin interface	 &lt;br /&gt;
:: Completely new admin interface, with accessible design and cool features to make access to settings fast and easy.	 &lt;br /&gt;
* [[Unit tests|Unit testing framework]]	 &lt;br /&gt;
:: Making it easier for developers to write test code, which should ultimately lead to a more reliable Moodle.	 &lt;br /&gt;
* [[AJAX]] Course editing (STILL UNSTABLE IN 1.7 RELEASE AND OFF BY DEFAULT, USE WITH CAUTION!)	 &lt;br /&gt;
:: The Topics and Weekly course formats now feature AJAX editing which means you can drag drop blocks, activities and sections (weeks/topics) and it all happens instantly. No more page reloading!&lt;br /&gt;
&lt;br /&gt;
===Module improvements===	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Assignment module]]	 &lt;br /&gt;
**New type Advanced uploading of files	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Database module]]	 &lt;br /&gt;
**Template/Field settings can now be saved as Presets and shared across a site.	 &lt;br /&gt;
**Presets are just zip files, and can also be shared between sites.	 &lt;br /&gt;
**Moodle 1.7 comes with one sample preset (an Image Gallery) with more to come.	 &lt;br /&gt;
**New latitude/longitude data type	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Lesson module]]	 &lt;br /&gt;
**Now has a more unified view of lesson screens.	 &lt;br /&gt;
**Teacher editing:	 &lt;br /&gt;
***Collapsed view has a nicer format, displays more information regarding each page and allows the creation of new pages.	 &lt;br /&gt;
***Editing is now speedier by replacing 3 second redirect delays with a notification system.	 &lt;br /&gt;
**New feature: display default feedback.	 &lt;br /&gt;
***Default is &#039;&#039;&#039;On&#039;&#039;&#039; so previous lessons behave as before.	 &lt;br /&gt;
***Description: if no &#039;&#039;response&#039;&#039; is entered for a question answer and this setting is turned &#039;&#039;&#039;Off&#039;&#039;&#039;, then the user skips the feedback page.	 &lt;br /&gt;
**Graceful degrade of JavaScript.	 &lt;br /&gt;
**Several bug fixes.	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Quiz module]]	 &lt;br /&gt;
:* The teacher can configure comments that are displayed to the student at the end of their attempt, with the comment displayed depending on the student&#039;s score.	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to some core question types	 &lt;br /&gt;
:* All question types can now have some general feedback. This is displayed to all students after they have finished the question (depending on the quiz settings) and does not depend on what response the student gave. Use this to tell the student what the question was about, or link them to more information about the topic it covers.	 &lt;br /&gt;
:* [[Matching question type|Matching]] questions can have extra wrong answers, and work when two questions have the same answer.	 &lt;br /&gt;
:* [[Multiple Choice question type|Multiple Choice]] questions can have feedback for the whole question, as well as specific answers. This is particularly useful for multiple-response questions.	 &lt;br /&gt;
:* [[Numerical question type|Numerical]] questions can have different answers with different precisions and scores. (Previously this was only supported via GIFT import. Now you can edit questions like this.)	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Wiki module]]	 &lt;br /&gt;
:* While editing a wiki page it is now locked so that others cannot try to change it at the same time. Teachers can override the lock.	 &lt;br /&gt;
:* Minor bugfixes (mostly to fix problems that occured when using Postgres database).	 &lt;br /&gt;
 &lt;br /&gt;
===Enrolment plugin improvements===	 &lt;br /&gt;
 &lt;br /&gt;
* [[Authorize.net Payment Gateway]] enrolment plugin 	 &lt;br /&gt;
:*Accepts &#039;Electronic Checks (ACH)&#039;. After a user approving echeck, an admin who has upload csv capacity must import a CSV file to get the user enrolled in the Payment Management page.	 &lt;br /&gt;
:*Autoconfigures credit card and echeck types if the merchant does not accept some types of them.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Old releases|Old release notes]]&lt;br /&gt;
&lt;br /&gt;
[[es:Notas de versiones]]&lt;br /&gt;
[[fr:Notes de mise à jour]]&lt;br /&gt;
[[pt:Versões do Moodle]]&lt;br /&gt;
[[ru:Примечания к версиям]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=3163</id>
		<title>Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=3163"/>
		<updated>2007-09-19T04:07:53Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Capability-locality changes in v1.9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 1.7}}&lt;br /&gt;
&#039;&#039;&#039;Roles and permissions&#039;&#039;&#039; is in Moodle 1.7 onwards.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
A role is an identifier of the user&#039;s status in some context. For example: Teacher, Student and Forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
A capability is a description of some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;mod/forum:replypost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
A permission is some value that is assigned for a capability for a particular role.  For example, allow or prevent.&lt;br /&gt;
&lt;br /&gt;
A context is a &amp;quot;space&amp;quot; in the Moodle, such as courses, activity modules, blocks etc.&lt;br /&gt;
&lt;br /&gt;
==The existing system==&lt;br /&gt;
&lt;br /&gt;
In versions prior to v1.7, Moodle uses a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can perform are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
With v1.7 and greater, Moodle introduces a roles and capabilities system.&lt;br /&gt;
&lt;br /&gt;
Role has two primary functions:&lt;br /&gt;
# define list of permissions - role definition is global for all contexts, but can be changed by local context overrides&lt;br /&gt;
# replace old course enrolments - role assignment in course context is simitar to the old enrolment process&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles (eg a teacher) &lt;br /&gt;
&lt;br /&gt;
A role consists of a list of permissions for different possible actions within Moodle (eg delete discussions, add activities etc)&lt;br /&gt;
&lt;br /&gt;
Roles can be applied to users in a context (eg assign Fred as a teacher in a particular course)&lt;br /&gt;
&lt;br /&gt;
Here are the possible contexts, listed from the most general to the most specific. &lt;br /&gt;
&lt;br /&gt;
#CONTEXT_SYSTEM       -- the whole site&lt;br /&gt;
#CONTEXT_PERSONAL     -- yourself&lt;br /&gt;
#CONTEXT_USER         -- another user&lt;br /&gt;
#CONTEXT_COURSECAT    -- a course category&lt;br /&gt;
#CONTEXT_COURSE       -- a course&lt;br /&gt;
&#039;&#039;&#039;#CONTEXT_GROUP        -- a group&lt;br /&gt;
#CONTEXT_MODULE       -- an activity module&lt;br /&gt;
#CONTEXT_BLOCK        -- a block&lt;br /&gt;
&lt;br /&gt;
[[Image:Moodle-contexts-1.8.png|right|thumb|A diagram of the contexts in Moodle 1.8, based on the [[Talk:Roles_and_capabilities|text diagram by Martin Dougiamas]]. Click on the diagram to see a more detailed view of it.]]&lt;br /&gt;
&lt;br /&gt;
An authorized user will be able to assign an arbitrary number of roles to each user in any context.&lt;br /&gt;
&lt;br /&gt;
Capabilities can have the following permissions:&lt;br /&gt;
&lt;br /&gt;
#CAP_INHERIT&lt;br /&gt;
#CAP_ALLOW&lt;br /&gt;
#CAP_PREVENT&lt;br /&gt;
#CAP_PROHIBIT&lt;br /&gt;
&lt;br /&gt;
If no permission is defined, then the capability permission is inherited from a context that is more general than the current context. If we define different permission values for the same capability in different contexts, we say that we are overriding the capability in the more specific context.&lt;br /&gt;
&lt;br /&gt;
Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by enforcing the rule that the capability defined for a more specific context will win, unless a prohibit is encountered in a less specific context.&lt;br /&gt;
&lt;br /&gt;
For example, Mark has a student role at course level, which allows him to write into a wiki. But Mark also got assigned a Visitor role at a module context level (for a particular wiki) which prevents him from writing to the wiki (read only). Therefore, for this particular wiki, Mark will not be able to write to the wiki since the more specific context wins.&lt;br /&gt;
&lt;br /&gt;
If we set a PROHIBIT on a capability, it means that the capability cannot be overridden and will ALWAYS  have a permission of prevent (deny). Prohibit always wins.   For example, Jeff has a naughty student role that prohibits him from postings in any forums (for the whole site), but he&#039;s also assigned a facilitator role in &amp;quot;Science forum&amp;quot; in the course Science and Math 101. Since prohibit always wins, Jeff is unable to post in &amp;quot;Science forum&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allow and prevent will cancel each other out if set for the same capability at the same context level. If this happens, we refer to the previous context level to determine the permission for the capability.&lt;br /&gt;
&lt;br /&gt;
This may sound more complex than it really is in practice.  The upshot is that the system can be flexible enough to allow pretty much any combination of permissions.&lt;br /&gt;
&lt;br /&gt;
===Capability-locality changes in v1.9===&lt;br /&gt;
&lt;br /&gt;
When resolving conflicts between &amp;quot;allow&amp;quot; and &amp;quot;prevent&amp;quot; in v1.7 and v1.8 the locality of the capability is taken into account, although with less weight than the locality of the role assignment. In v1.9 the process has been simplified, we consider locality of the role assignment when dealing with allow/prevent conflicts, but ignore where the capability has been defined (as long as it applies to the context).&lt;br /&gt;
&lt;br /&gt;
For example - for the situation where there is&lt;br /&gt;
&lt;br /&gt;
* two roles assigned to one user in a context (eg student role and teacher role)&lt;br /&gt;
* one override on one of those roles ( eg student role), at the same context&lt;br /&gt;
 &lt;br /&gt;
then&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1.7/1.8&#039;&#039;&#039; The override used to &#039;&#039;always&#039;&#039; win over the settings from the combined roles.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1.9&#039;&#039;&#039; The override is combined with the student role first. and then the roles are combined. This is more logical, as the override is acting like a modification to the student role.&lt;br /&gt;
&lt;br /&gt;
For more details, see [http://tracker.moodle.org/browse/MDL-11218 MDL-11218]&lt;br /&gt;
&lt;br /&gt;
==Upgrading from 1.6==&lt;br /&gt;
&lt;br /&gt;
A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the existing capabilities will be automatically retained.  This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, mirroring what we have  in 1.6.   With no modifications, Moodle will operate exactly the same before and after the upgrade.&lt;br /&gt;
&lt;br /&gt;
===Admins===&lt;br /&gt;
&lt;br /&gt;
Admin users will be assigned the default legacy admin role in the system (site) context&lt;br /&gt;
&lt;br /&gt;
===Course Creators===&lt;br /&gt;
&lt;br /&gt;
Course Creators will be assigned the default legacy course creator role in the system (site) context&lt;br /&gt;
&lt;br /&gt;
===Teachers===&lt;br /&gt;
&lt;br /&gt;
Users who were teachers will be assigned the default legacy teacher role (or non-editing teacher role) in all courses they were teacher.&lt;br /&gt;
&lt;br /&gt;
===Students===&lt;br /&gt;
&lt;br /&gt;
Users who were students will be assigned the default student role in all courses they were student.&lt;br /&gt;
&lt;br /&gt;
===Guests===&lt;br /&gt;
&lt;br /&gt;
There will still be a single guest user with no default role at site level.   For each course that allows guest access, the guest role will be assigned to the guest user for that course context.   The guest control for the course will be modified from three to two options (guests always need to enter enrolment key - on/off).  This setting is checked as now to force guests to enter key.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This will be a comprehensive list of capabilities (it&#039;s not complete yet). It is important that capability names are unique.&lt;br /&gt;
&lt;br /&gt;
===Core-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
Moodle core capability names start with &#039;moodle/&#039;.  The next word indicates what type of core capability it is, and the last word is the actual capability itself.  The capabilities for the Moodle core are defined in lib/db/access.php&lt;br /&gt;
&lt;br /&gt;
#moodle/legacy:guest - legacy capabilities are used to transition existing users to the new roles system during the upgrade to Moodle 1.7&lt;br /&gt;
#moodle/legacy:student&lt;br /&gt;
#moodle/legacy:teacher&lt;br /&gt;
#moodle/legacy:editingteacher&lt;br /&gt;
#moodle/legacy:coursecreator&lt;br /&gt;
#moodle/legacy:admin&lt;br /&gt;
#moodle/site:doanything - special capability, meant for admins, if is set, overrides all other capability settings&lt;br /&gt;
#moodle/site:config - applicable in admin/index.php and config.php (might break down later) : 1)admin/config.php 2)admin/configure.php 3)blocks/admin/block_admin.php load_content_for_site()&lt;br /&gt;
#moodle/site:readallmessages - reads all messages and history&lt;br /&gt;
#moodle/site:approvecourse - approves a pending course&lt;br /&gt;
#moodle/site:manageblocks - adding/removing/editing blocks (site, course contexts only for now) : 1)_add_edit_controls moodleblock.class.php &lt;br /&gt;
#moodle/site:backup - can create a course backup : 1)course/category.php 2)block_admin.php&lt;br /&gt;
#moodle/site:restore - can restore into this context : 1)course/category.php 2)block_admin.php&lt;br /&gt;
#moodle/site:import - can import other courses into this context : 1)block_admin.php&lt;br /&gt;
#moodle/site:accessallgroups - able to access all groups irrespective of what group the user is in&lt;br /&gt;
#moodle/site:accessdb - directly accessing db (phpmyadmin)&lt;br /&gt;
#moodle/site:viewfullnames - able to see fullnames of other users&lt;br /&gt;
#moodle/site:viewparticipants - able to view participants&lt;br /&gt;
#moodle/site:viewreports - able to view site/course reports&lt;br /&gt;
#moodle/site:trustcontent - ability to use trusttext feature and bypass cleaning in specific areas&lt;br /&gt;
#moodle/site:uploadusers - ability to upload/update users from text file; moodle/role:assign capability is needed for course enrolling&lt;br /&gt;
#moodle/blog:view - read blogs (usable in system or course context)&lt;br /&gt;
#moodle/blog:create - write new blog posts (usable in system context only)&lt;br /&gt;
#moodle/blog:manageofficialtags - create/delete official blog tags that others can use (usable in system context only)&lt;br /&gt;
#moodle/blog:managepersonaltags - delete personal blog tags that others can use (usable in system context only) Note: users can always add own personal tags. This setting should be off for students by default.&lt;br /&gt;
#moodle/blog:manageentries - edit/delete all blog entries (usable in system context only)&lt;br /&gt;
#moodle/course:setcurrentsection - mark course section&lt;br /&gt;
#moodle/course:create - create courses : 1)course/edit.php 2)course/category.php 3)course/index.php&lt;br /&gt;
#moodle/course:delete - create courses : 1)course/category.php&lt;br /&gt;
#moodle/course:update - update course settings&lt;br /&gt;
#moodle/course:view - can use this to find participants&lt;br /&gt;
#moodle/course:viewparticipants - allows a user to view participant list&lt;br /&gt;
#moodle/course:viewscales - view scales (i.e. in a help window?) : 1)course/scales.php&lt;br /&gt;
#moodle/course:manageactivities - adding/removing/editing activities and resources (don&#039;t think it makes any sense to split these)&lt;br /&gt;
#moodle/course:managescales - add, delete, edit scales, move scales up and down : 1)blocks/block_admin.php 2)course/scales.php&lt;br /&gt;
#moodle/course:managegroups - managing groups, add, edit, delete : 1)course/groups.php 2)course/group.php&lt;br /&gt;
#moodle/course:managefiles - manage course files and folders&lt;br /&gt;
#moodle/course:managequestions - manage course questions&lt;br /&gt;
#moodle/course:managemetacourse - manage child courses in metacourse&lt;br /&gt;
#moodle/course:reset - able to reset the course&lt;br /&gt;
#moodle/course:useremail - Can use the enable/disable email stuff&lt;br /&gt;
#moodle/course:visibility - hide/show courses : 1)course/category.php&lt;br /&gt;
#moodle/course:viewhiddencourses - see hidden courses&lt;br /&gt;
#moodle/course:activityvisibility - hide/show activities within a course&lt;br /&gt;
#moodle/course:viewhiddenactivities - able to see activities that have been hidden&lt;br /&gt;
#moodle/course:sectionvisibility - hide/show sections&lt;br /&gt;
#moodle/course:viewhiddensections - view hidden sections&lt;br /&gt;
#moodle/course:viewcoursegrades - views all grades in course&lt;br /&gt;
#moodle/course:viewhiddenuserfields - view all hidden user fields&lt;br /&gt;
#moodle/course:managegrades - manages grades settings in course&lt;br /&gt;
#moodle/category:create - create category : 1)course/index.php&lt;br /&gt;
#moodle/category:delete - delete category : 1)course/index.php&lt;br /&gt;
#moodle/category:update - update category settings (sort and rename) this is currently an admin capability : 1)course/category.php&lt;br /&gt;
#moodle/category:visibility - hide/show categories : 1)course/index.php&lt;br /&gt;
#moodle/user:viewusergrades - view your own, or other user&#039;s grades (with specified context)&lt;br /&gt;
#moodle/user:create - create user : 1) user/edit.php&lt;br /&gt;
#moodle/user:delete - delete user : 1) admin/user.php&lt;br /&gt;
#moodle/user:readuserblogs - read blog entries&lt;br /&gt;
#moodle/user:update - update user settings : 1) user/edit.php&lt;br /&gt;
#moodle/user:viewdetails - view personally-identifying user details (e.g. name, photo).&lt;br /&gt;
#moodle/user:viewhiddendetails - view user details marked as &amp;quot;hidden&amp;quot;&lt;br /&gt;
#moodle/calendar:manageownentries - create/edit/delete &lt;br /&gt;
#moodle/calendar:manageentries - create/edit/delete&lt;br /&gt;
#moodle/role:assign - assign roles to users&lt;br /&gt;
#moodle/role:override - can override role capabilities (depending on context)&lt;br /&gt;
#moodle/role:manage - create/edit/delete roles, set capability permissions for each role&lt;br /&gt;
#moodle/role:unassignself - unassign yourself from your own roles&lt;br /&gt;
#moodle/role:viewhiddenassigns - view role assignments that have been marked as hidden&lt;br /&gt;
#moodle/question:import - imports questions (course level?) - Yes, question permissions currently need to be course-level.--[[User:Tim Hunt|Tim Hunt]]&lt;br /&gt;
#moodle/question:export - exports questions (course level?)&lt;br /&gt;
#moodle/question:managecateory - add/delete/edit question categories (course level?)&lt;br /&gt;
#moodle/question:manage - add/edit/delete a question (course level)&lt;br /&gt;
&lt;br /&gt;
===User-level Capabilities===&lt;br /&gt;
# moodle/user:readuserposts -read individual user posts on profile page (parent?)&lt;br /&gt;
# moodle/user:readuserblogs -read individual user blogs on profile page (parent?)&lt;br /&gt;
# moodle/user:viewuseractivitiesreport-read individual activity report on profile page (parent?)&lt;br /&gt;
# moodle/user:editprofile - edit profile (normally used in CONTEXT_USERID and CONTEXT_SYSTEM)&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
The capabilities are cached into a database table when a module is installed or updated. Whenever the capability definitions are updated, the module version number should be bumped up so that the database table can be updated.&lt;br /&gt;
&lt;br /&gt;
The naming convention for capabilities that are specific to modules and blocks is &#039;mod/mod_name:capability&#039;.  The part before the colon is the full path to the module in the Moodle code.  The module capabilities are defined in mod/mod_name/db/access.php.&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##mod/assignment:view- reading the assignment description&lt;br /&gt;
##mod/assignment:submit - turn assignment in&lt;br /&gt;
##mod/assignment:grade - grading, viewing of list of submitted assignments&lt;br /&gt;
#Chat&lt;br /&gt;
##mod/chat:chat - allows a user to participate in this chat&lt;br /&gt;
##mod/chat:readlog - allows a user to read past chat session logs&lt;br /&gt;
##mod/chat:deletelog - allows a user to delete past chat logs&lt;br /&gt;
#Choice&lt;br /&gt;
##mod/choice:choose - make a choice&lt;br /&gt;
##mod/choice:readresponses - read all responses&lt;br /&gt;
##mod/choice:deleteresponses - deletes all responses&lt;br /&gt;
##mod/choice:downloadresponses - download responses&lt;br /&gt;
#Database&lt;br /&gt;
##mod/data:viewentry - reads other people&#039;s entry&lt;br /&gt;
##mod/data:writeentry - add / edit and delete (own) entries&lt;br /&gt;
##mod/data:managetemplates - add, delete, edit fields and templates&lt;br /&gt;
##mod/data:manageentries - edit/delete all entries&lt;br /&gt;
##mod/data:comment - comment&lt;br /&gt;
##mod/data:managecomments - edit/delete all comments&lt;br /&gt;
##mod/data:rate - rate an entry&lt;br /&gt;
##mod/data:viewrating&lt;br /&gt;
##mod/data:approve - approves an entry&lt;br /&gt;
##mod/data:uploadentries - batch upload of entries&lt;br /&gt;
#Exercise&lt;br /&gt;
##mod/exercise:assess&lt;br /&gt;
#Forum&lt;br /&gt;
##mod/forum:viewdiscussion&lt;br /&gt;
##mod/forum:viewdiscussionsfromallgroups&lt;br /&gt;
##mod/forum:viewhiddentimedposts&lt;br /&gt;
##mod/forum:startdiscussion&lt;br /&gt;
##mod/forum:replypost&lt;br /&gt;
##mod/forum:viewrating&lt;br /&gt;
##mod/forum:viewanyrating&lt;br /&gt;
##mod/forum:rate&lt;br /&gt;
##mod/forum:createattachment&lt;br /&gt;
##mod/forum:deleteownpost&lt;br /&gt;
##mod/forum:deleteanypost&lt;br /&gt;
##mod/forum:splitdiscussions&lt;br /&gt;
##mod/forum:movediscussions&lt;br /&gt;
##mod/forum:editanypost&lt;br /&gt;
##mod/forum:viewqandawithoutposting&lt;br /&gt;
##mod/forum:viewsubscribers&lt;br /&gt;
##mod/forum:managesubscriptions&lt;br /&gt;
##mod/forum:throttlingapplies&lt;br /&gt;
#Glossary&lt;br /&gt;
##mod/glossary:write - add entries&lt;br /&gt;
##mod/glossary:manageentries - add, edit, delete entries&lt;br /&gt;
##mod/glossary:managecategories - create, delete, edit categories&lt;br /&gt;
##mod/glossary:comment - comment on an entry&lt;br /&gt;
##mod/glossary:managecomments - edit, delete comments&lt;br /&gt;
##mod/glossary:import - import glossaries&lt;br /&gt;
##mod/glossary:export - export glossaries&lt;br /&gt;
##mod/glossary:approve - approve glossaries&lt;br /&gt;
##mod/glossary:rate - rates glossary&lt;br /&gt;
##mod/glossary:viewrating - view ratings&lt;br /&gt;
#Hotpot&lt;br /&gt;
##mod/hotpot:attempt - attempt a hotpot&lt;br /&gt;
##mod/hotpot:viewreport - review and view reports&lt;br /&gt;
##mod/hotpot:grade - (grade? and) regrade&lt;br /&gt;
##mod/hotpot:deleteattempt - deletes attempts&lt;br /&gt;
#Label&lt;br /&gt;
##none&lt;br /&gt;
#Lams&lt;br /&gt;
##mod/lams:participate - original student&lt;br /&gt;
##mod/lams:manage - original teacher&lt;br /&gt;
#Lesson&lt;br /&gt;
##mod/lesson:edit - add and edit pages&lt;br /&gt;
##mod/lesson:manage - view student attempts&lt;br /&gt;
#Quiz&lt;br /&gt;
##mod/quiz:grade - comment, override grade, manual grade&lt;br /&gt;
##mod/quiz:preview - previews the quiz&lt;br /&gt;
##mod/quiz:viewreports - view quiz result reports&lt;br /&gt;
##mod/quiz:manage - add/delete/move (up or down) questions for a quiz&lt;br /&gt;
##mod/quiz:attempt - attempt the quiz--[[User:Tim Hunt|Tim Hunt]]&lt;br /&gt;
#Resource&lt;br /&gt;
#Scorm&lt;br /&gt;
##mod/scorm:viewgrades&lt;br /&gt;
#Survey&lt;br /&gt;
##mod/survey:download - downloads survery result&lt;br /&gt;
##mod/survey:participate - participate/ do survey&lt;br /&gt;
##mod/survey:readresponses - read all user&#039;s responese&lt;br /&gt;
#Wiki&lt;br /&gt;
##mod/wiki:participate - original student, meaning depends of type and course setting&lt;br /&gt;
##mod/wiki:manage - original teacher, manages assigned group; moodle/site:accessallgroups is needed to manage all groups &lt;br /&gt;
##(Waiting on new wiki)&lt;br /&gt;
#Workshop&lt;br /&gt;
##mod/workshop:participate - original student, allows user to submit and assess&lt;br /&gt;
##mod/workshop:manage - original teacher, user can manage others&lt;br /&gt;
##(Waiting on new Workshop)&lt;br /&gt;
&lt;br /&gt;
===Enrolment-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
The naming convention for capabilities that are specific to enrolment is &#039;enrol/enrol_name:capability&#039;. The enrolment capabilities are defined in enrol/enrol_name/db/access.php.&lt;br /&gt;
&lt;br /&gt;
#Authorize.net Payment Gateway &lt;br /&gt;
##enrol/authorize:managepayments - manage user payments, capture, void, refund, delete etc.&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
#activity_modules&lt;br /&gt;
##None&lt;br /&gt;
#admin&lt;br /&gt;
#admin_2&lt;br /&gt;
#admin_bookmarks&lt;br /&gt;
#blog_menu&lt;br /&gt;
#blog_tags&lt;br /&gt;
#calendar_month&lt;br /&gt;
#calendar_upcoming&lt;br /&gt;
#course_list&lt;br /&gt;
#course_summary&lt;br /&gt;
#glossary_random&lt;br /&gt;
#html&lt;br /&gt;
#loancalc&lt;br /&gt;
#login&lt;br /&gt;
#messages&lt;br /&gt;
#news_items&lt;br /&gt;
#online_users&lt;br /&gt;
#participants&lt;br /&gt;
#quiz_results&lt;br /&gt;
#recent_activity&lt;br /&gt;
#rss_client&lt;br /&gt;
##block/rss_client:createprivatefeeds&lt;br /&gt;
##block/rss_client:createsharedfeeds&lt;br /&gt;
##block/rss_client:manageownfeeds&lt;br /&gt;
##block/rss_client:manageanyfeeds&lt;br /&gt;
#search&lt;br /&gt;
#search_forums&lt;br /&gt;
#section_links&lt;br /&gt;
#site_main_menu&lt;br /&gt;
#social_activities&lt;br /&gt;
&lt;br /&gt;
===Questions===&lt;br /&gt;
I am adding question categories here because they seem to have been forgotten in the whole scheme of things since having been removed from the quiz module itself. I&#039;ve made a suggestion on how these could be handled in [http://www.moodle.org/bugs/bug.php?op=show&amp;amp;bugid=6118&amp;amp;pos= bug 6118].&lt;br /&gt;
&lt;br /&gt;
See [http://moodle.org/mod/forum/discuss.php?d=51143 this forum thread] for a discussion about the current problems wth publishing question categories.[[User:Tim Hunt|Tim Hunt]] 18:50, 8 August 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
==Programming Interface==&lt;br /&gt;
&lt;br /&gt;
Although the Roles system may look complicated at first glance, implementing it in Moodle code is fairly simple.&lt;br /&gt;
&lt;br /&gt;
* You need to define each capability once, so that Moodle can upgrade existing roles to take advantage of it.  You do this in an access.php inside the db folder of any module (eg see mod/forum/db/access.php).  The array contains entries like this (note the descriptions for the legacy roles which provides forward compatibility):&lt;br /&gt;
    &#039;mod/forum:viewforum&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;captype&#039; =&amp;gt; &#039;read&#039;,&lt;br /&gt;
        &#039;contextlevel&#039; =&amp;gt; CONTEXT_MODULE,&lt;br /&gt;
        &#039;legacy&#039; =&amp;gt; array(&lt;br /&gt;
            &#039;guest&#039; =&amp;gt; CAP_PREVENT,&lt;br /&gt;
            &#039;student&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
            &#039;teacher&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
            &#039;editingteacher&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
            &#039;coursecreator&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
            &#039;admin&#039; =&amp;gt; CAP_ALLOW&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
* To load/change these capabilities you need to bump the module version.   There&#039;s no need to provide changes or differences as Moodle will scan the whole array and sort it out.&lt;br /&gt;
* On each page you need to find the context the user is working in, using the get_context_instance() function.  For example, in the forum module:&lt;br /&gt;
&lt;br /&gt;
  $context = get_context_instance(CONTEXT_MODULE, $cm-&amp;gt;id);&lt;br /&gt;
* or to at the course level:&lt;br /&gt;
  $context = get_context_instance(CONTEXT_COURSE, $id);&lt;br /&gt;
* Then, whenever you want to check that the current user has rights to do something, call has_capability() like this:&lt;br /&gt;
    if (!has_capability(&#039;mod/forum:viewforum&#039;, $context)) {&lt;br /&gt;
        print_error(&#039;nopermissiontoviewforum&#039;);&lt;br /&gt;
    }&lt;br /&gt;
* If you just want to assert a capability and then finish with an error message if it&#039;s not met (as we did above), then a shorter way it to use require_capability() like this:&lt;br /&gt;
&lt;br /&gt;
    require_capability(&#039;mod/forum:viewforum&#039;, $context);&lt;br /&gt;
&lt;br /&gt;
* Note that there are extra parameters you can specify to get a custom error message, otherwise users get an automated &amp;quot;No permissions&amp;quot; message that lists the permission they were missing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As a result of the new Roles System, all calls to isadmin(), iscoursecreator, isteacheredit(), isteacher(), isstudent(), and isguest() will have to be replaced with calls to has_capability() or require_capability().   However, these functions will be retained for some backward compatibility with old code, using the legacy capabilities to try and work out what to do.&lt;br /&gt;
&lt;br /&gt;
==Metacourses==&lt;br /&gt;
&lt;br /&gt;
The behaviour of metacourses in Moodle 1.7 changed slightly, in that where it used to just synch students from child courses to the parent course, it will now synch ALL roles. Teachers etc of the child courses will have the same role in the meta course. Technically metacourse synchronises all role assignments in CONTEXT_COURSE with its child courses; the only exception are users with moodle/course:managemetacourse capability, these users are synchronized only upwards, they are not unenrolled from metacourse when unenroling from child course or when removing the child from metacourse.&lt;br /&gt;
&lt;br /&gt;
In order to import/enrol other courses into metacoure you need to have moodle/course:managemetacourse capability. You can add manually only participants with moodle/course:managemetacourse, all other participants are automatically synced with child courses - if you try to manually enrol user without this capability error is displayed. Similar error is shown also when you try to manually unenrol participant from meta course while still being enrolled in child course.&lt;br /&gt;
&lt;br /&gt;
Sample setup:&lt;br /&gt;
* metacourse manager has been assigned role with moodle/course:managemetacourse capability in system or course category context&lt;br /&gt;
* students are enrolled in several child courses&lt;br /&gt;
* teachers are enrolled in separate child course(s)&lt;br /&gt;
&lt;br /&gt;
==Problem areas we are working on ==&lt;br /&gt;
&lt;br /&gt;
===Student view===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Student view&amp;quot; button has been removed completely.&lt;br /&gt;
&lt;br /&gt;
If there is time and a secure way can be found, it will be replaced by a menu to let the user assume a temporary role in the context of that course.&lt;br /&gt;
&lt;br /&gt;
===Teacher forum===&lt;br /&gt;
&lt;br /&gt;
Teacher forums were always a curious exception to normal forums, as they were not part of a course as such, and were not backed up.&lt;br /&gt;
&lt;br /&gt;
We&#039;re taking the opportunity to rectify this.   The upgrade converts teacher forums with content to normal forums in section 0 of the course, and ensures that only teachers can access them.  If the teacher forum had not been used in the course then it&#039;s not converted and will just dissappear.&lt;br /&gt;
&lt;br /&gt;
===Enrolment plugins===&lt;br /&gt;
&lt;br /&gt;
====Process of logging in====&lt;br /&gt;
&lt;br /&gt;
# load_user_capability() is called to load all the capabilities&lt;br /&gt;
# check_enrolment_plugins() is called at the top of load_user_capability() to check all the enrolment plugins.&lt;br /&gt;
# For each active plugin:&lt;br /&gt;
##Check for setup_enrolments($user) and run it.  This function will do all the processing needed to assign or unassign roles from the current user.&lt;br /&gt;
# load_user_capability() continues and loads up all the roles&lt;br /&gt;
# load_defaultuser_role() is called to add default site permissions (all users)&lt;br /&gt;
&lt;br /&gt;
====Process of checking access to a course====&lt;br /&gt;
&lt;br /&gt;
require_login($course-&amp;gt;id) is called by the script and has logic like this:&lt;br /&gt;
&lt;br /&gt;
# Is the user a guest at site level?&lt;br /&gt;
## Yes: Does the course allow guests?&lt;br /&gt;
### Yes: return true (and further capabilities are checked by the script)&lt;br /&gt;
### No:  send the user to course/enrol.php for enrolment&lt;br /&gt;
## No: continue below&lt;br /&gt;
&lt;br /&gt;
# Does the user have moodle/course:view in that (course) context?&lt;br /&gt;
## Yes: then they can enter (and further capabilities are checked by the script)&lt;br /&gt;
##  No: is guest access allowed on the course?&lt;br /&gt;
### Yes: assign temporary guest role to that user for that context (in session cache).&lt;br /&gt;
### No: send the user to course/enrol.php for enrolment.&lt;br /&gt;
&lt;br /&gt;
====Process of enrolling====&lt;br /&gt;
&lt;br /&gt;
(more soon)&lt;br /&gt;
&lt;br /&gt;
==Scenario brainstorming==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support.  Note some of these *may* not be possible in 1.7.&lt;br /&gt;
&lt;br /&gt;
===Student===&lt;br /&gt;
Obviously.&lt;br /&gt;
&lt;br /&gt;
===Site Designers===&lt;br /&gt;
Is there a role for people involved in how the site looks but not full administrators? Thinking here of online control of themes rather than FTP theme uploading. But in either case they caneditlogos, caneditcss, candeditlevelatwhichthemeapplies.&lt;br /&gt;
&lt;br /&gt;
===Educational Authority Adviser===&lt;br /&gt;
Someone who would want to browse the site and may be asked to comment or contribute to particular discussions or developments in school. Access for this role would be controlled by the school in the case of school level moodles but may be different if there were to be a Local Authority wide Moodle.&lt;br /&gt;
&lt;br /&gt;
===Educational Inspector===&lt;br /&gt;
Someone who will visit the site to verify the school&#039;s self review that comments on home school relationships, extending the classroom etc. They may want to see summaries of usage and reports from surveys garnering parent and pupil views.&lt;br /&gt;
&lt;br /&gt;
===Second Marker / Moderator===&lt;br /&gt;
A teacher within ths site that has access to assignments and quizzes from another teacher&#039;s course for second marking purposes. This may need additional functionality adding to the assignment module so that two sets of grades/feedback can be given to one set of assignments.&lt;br /&gt;
&lt;br /&gt;
===Peer observer of teaching===&lt;br /&gt;
Many institutions encourage peer observation of teaching, to encourage reflection on practice. In online environments this will be similar to moderation or inspection. The peer observer would need to be able to experience the course &amp;quot;as a student&amp;quot;, but also to be able to view summaries of usage, transcripts of interactions (forums/surveys/polls etc), grades assigned (e.g. in assignments).&lt;br /&gt;
&lt;br /&gt;
===External Examiner===&lt;br /&gt;
Has all the rights of inspectors, but would also need to be able to review assignments and feedback, view forums, glossaries etc. However, would not want to post, feedback onto the site at all.&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children and whether they are contributing as a parent or a school supporter.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY=3+4 yr olds) and Key Stage 1 (KS1=5+6 yr olds) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary. In Key Stage 2 (KS2=7-11 yr olds) parents would be more monitoring but may join in as well.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 (KS3=12-14 yr olds) and 4 (KS4=15+16 yr olds) this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments. Also in all Key Satges there may be a home-school agreement which may be signed up to. Could this form part of a site policy system that incorporates a tickable list of activities the parent agrees to the child using (blogs/wikis/forums etc.)?&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evenings often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
Again in the UK, parents have their own independent right of access to a child&#039;s educational records. Obviously, children&#039;s records must not be made available to other parties, including the parents of other children in the same class. Thus it would be necessary to associate parent accounts with their own child&#039;s accounts in such a way that they could, if so desired, have read access to their child&#039;s grades, answers and contributions, but generally not those of other children - this may be problematic in the case of wiki activities or forum posts.&lt;br /&gt;
&lt;br /&gt;
There is some concern that children&#039;s forum contributions etc may be constrained if their parents are able to read all that they write; this may be particularly problematic in areas such as Personal, Social and Health Education (PSHE), where some schools may choose to use obfuscated usernames.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant.&lt;br /&gt;
&lt;br /&gt;
===Guest Speaker===&lt;br /&gt;
&lt;br /&gt;
This role would be similar to the Visitor role above, but would allow seeing student names, and also allow both reading and posting to a specific forum or forums. We often have &amp;quot;guest speakers&amp;quot; who read and respond to student forum posts. Right now we have to add them as students, which isn&#039;t ideal.&lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
===Alumnus=== An ALUMNUS should be able to search for all other ALUMNI of the school, interact with them and be enrolled in a seperate course - which is like a META course with all the content of his learning and interaction - as well as capabilities to be a part of this ALUMNI only course.  All the teachers of courses during school years should automatically be a part of the ALUMNI course .. which means when an ALUMNUS is enrolled in a course, the original teachers of all his courses get enrolled ?  --[[User:Anil Sharma|Anil Sharma]] 20:54, 15 July 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at some schools such as Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
In schools there is often a book review system. This may be covered by the lending system database but may not in which case a librarian may neeed to have a course area they can create a database template to handle the reviews in which case they may have a normal teacher style role? Off topic but course an integration with common schools database systems would be great.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity. &lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity.&lt;br /&gt;
&lt;br /&gt;
I would take issue with &amp;quot;teachers should have read access to other teacher&#039;s courses unless explicitly prohibited.&amp;quot; This is a violation of the students&#039; privacy as how they perform and what they do in one class isn&#039;t the business of another teacher. Moreover, in the real world a teacher wouldn&#039;t suddenly go sit in on a colleague&#039;s class without asking permission first. I would not have appreciated such an invasion of privacy as either a teacher or a student. It could be an option, but shouldn&#039;t be default.--[[User:N Hansen|N Hansen]] 19:54, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Community Education Tutors/Trainers===&lt;br /&gt;
Teachers may be community adult education trainers making use of a school moodle so must only have access to their courses unless given access elsewhere. They would not necessarily get the default teacher privileges.&lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
===Student - FERPA rights===&lt;br /&gt;
&lt;br /&gt;
A student that has asserted their FERPA rights to non-disclosure.  Typically includes not publishing their name&lt;br /&gt;
in any public place.  Could include this student only being seen with an &amp;quot;alias&amp;quot; within course spaces.  Is this an attribute rather&lt;br /&gt;
than a role?&lt;br /&gt;
&lt;br /&gt;
===Help Desk===&lt;br /&gt;
&lt;br /&gt;
Help desk agents that have read access for the purposes of trouble shooting.  Some care in placing this role within a hierarchy&lt;br /&gt;
of inheritance is needed, full access will be problematic with FERPA.&lt;br /&gt;
&lt;br /&gt;
===Admin - Catgory based===&lt;br /&gt;
&lt;br /&gt;
Basically a person in between full Admin and Creator that has the permissions of an Admin but only with respect to courses and students. Currently a Creator has permissions site-wide which does not always meet the requirements of a given organisation (e.g. Department A may not be happy that a person from Department B can create/modify courses within Department A&#039;s area). The ability to designate a Creator within a specific category would allow areas to be set up for a faculty/department/organisation and allow the Admin for that area to create/delete courses, upload users, add site-wide entries to the calendar etc.&lt;br /&gt;
&lt;br /&gt;
===Process Roles===&lt;br /&gt;
&lt;br /&gt;
organising the learning process for a group you wish to have the choice to place students in differnt roles: examples of this are:&lt;br /&gt;
* Give a student the role of forum-moderator with edit and chunk-rights&lt;br /&gt;
* Give students different roles &amp;amp; rights in a Webquest design (and change these roles next week&lt;br /&gt;
* Give students different resources, depending of their roles in a rolegame/simulation&lt;br /&gt;
* Give a student the rights to create the section content of next week (and only that week..)&lt;br /&gt;
&lt;br /&gt;
==Things to finish for 1.7 Beta==&lt;br /&gt;
&#039;&#039;&#039;18 Sept 2006&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
#Remove core references to user_student, user_teacher, user_admin, user_coursecreator tables.  [Yu]&lt;br /&gt;
#Address function: isteacher, isadmin, isstudent [Yu]&lt;br /&gt;
#Remove &amp;quot;view&amp;quot; capabilities from all modules unless required [Vy]&lt;br /&gt;
#Remove all old references from remaining Blocks [Vy]&lt;br /&gt;
#Metacourses [Skodak]&lt;br /&gt;
#Add risks to GUI[Skodak]&lt;br /&gt;
#Enrolment plugins  [Martin and Alastair]&lt;br /&gt;
#[[Stats_roles_1.7|Statistics]] [Penny]&lt;br /&gt;
#Fix Loginas&lt;br /&gt;
#Add category-level assigns [Yu]&lt;br /&gt;
#[[Backup_roles_1.7|Backups]] [Eloy?]&lt;br /&gt;
&lt;br /&gt;
===Proposal for interface enhancement===&lt;br /&gt;
Martin asked some questions, here are my answers. The sketches below are not worked out proposals. Their task is to visualize the idea. The exact colours and functionality may be defined after possible agreement about the proposals. The Green, orange and red columns support the meaning of the options from &amp;quot;allow&amp;quot; to &amp;quot;prohibit&amp;quot; (If you may want to see larger images please click onto the image or the &amp;quot;Enlarge&amp;quot; icon below the image.)&lt;br /&gt;
&lt;br /&gt;
The list of possible settings is very long and &#039;&#039; &amp;quot;... the problem is not to overwhelm people with information&amp;quot; &#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
[[Image:01_moodle_define_roles_structured.png|thumb=01_moodle_define_roles_structured_pre.png]]&lt;br /&gt;
&lt;br /&gt;
1) One proposal is to use colour to structure the sections and the columns. Picture 1 shows that the user can keep a much better overview when the list is divided into meaningful different coloured columns and clear sections.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:02_moodle_define_roles_collapsed.png|thumb=02_moodle_define_roles_collapsed_pre.png]]&lt;br /&gt;
&lt;br /&gt;
2) A second proposal is to reduce the amount of information the user is shown at the same time. The YUI interface library offers great support to show/hide sections of the page by clicking on specific elements. &lt;br /&gt;
&lt;br /&gt;
For example click on an icon beside the sub heading &amp;quot;Course categories&amp;quot; and show/hide all table rows with the CLASS &amp;quot;course-category&amp;quot;.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:03_moodle_define_roles_tooltip.png|thumb=03_moodle_define_roles_tooltip_pre.png]]&lt;br /&gt;
&lt;br /&gt;
3) &#039;&#039; &amp;quot;The main problem is the last column for risk ... we were thinking of putting little icons in there ...&amp;quot; &#039;&#039;&lt;br /&gt;
Icons are good when they tell the user more about possible actions/meanings then the letters. I am not sure if this is the case here. For both - icons or letters - the YUI tool-tip function would be able to give the user valuable information about the meaning.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Hardening new Roles system]]&lt;br /&gt;
*[[Roles and modules]]&lt;br /&gt;
*Using Moodle course:&lt;br /&gt;
**[http://moodle.org/mod/forum/view.php?f=941 Roles and Capabilities forum]&lt;br /&gt;
**Key discussions at Using Moodle forums:&lt;br /&gt;
***[http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture]&lt;br /&gt;
***[http://moodle.org/mod/forum/discuss.php?d=56302#256313 An example of admin roles as set in the database]&lt;br /&gt;
&lt;br /&gt;
[[Category:Roles]]&lt;br /&gt;
[[Category:Roles]]&lt;br /&gt;
&lt;br /&gt;
[[fr:Developpement:Roles]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Latest_release_notes&amp;diff=25242</id>
		<title>Latest release notes</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Latest_release_notes&amp;diff=25242"/>
		<updated>2007-09-19T04:06:24Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: Notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{About Moodle}}&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.9 Beta==&lt;br /&gt;
&lt;br /&gt;
Released: 14th August 2007&lt;br /&gt;
&lt;br /&gt;
This is a DEVELOPMENT RELEASE made available for wider testing by the community in preparation for a polished release of 1.9 in the coming weeks. It should not be used for production sites unless you are prepared to report the bugs you find in the [http://tracker.moodle.org Moodle Tracker], hopefully with your patches attached. :-)&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10190 the full list of fixed issues in 1.9 so far].&lt;br /&gt;
&lt;br /&gt;
===Headline features===&lt;br /&gt;
&lt;br /&gt;
* [[Development:Grades|Gradebook]] - Moodle.com  (funded by Open University)&lt;br /&gt;
:: Completely rewritten from scratch for speed and flexibility. The new gradebook consists of plugins for reports, imports and exports. There are a number of standard reports which are useful for graders, students etc. The grader report allows you to treat the gradebook much more like a spreadsheet with manual editing, calculations, aggregations, weighting, locking, hiding, textual notes and so on.&lt;br /&gt;
* [[Development:Outcomes|Outcomes]] - Moodle.com&lt;br /&gt;
:: You can also now develop a list of expected outcomes (competencies) and connect these to courses and activities. You can even grade against multiple outcomes at once (ie Rubrics).&lt;br /&gt;
* [[Development:Events|Events API]] - Moodle.com&lt;br /&gt;
::The new Events API provides a way for any code to &amp;quot;hook&amp;quot; into events in a clean, loosely coupled way.  It&#039;s the foundation of the new gradebook. A lot of events in Moodle (such as adding a user or a course) now trigger events that developers can hook into.&lt;br /&gt;
* [[Tags]] - Luiz Cruz ([[Student_projects/Social_Networking_features|Google SOC Social Networking project]])&lt;br /&gt;
:: allows users to describe their own interests in terms of tags, which creates interest pages around those tags, bringing information together from a variety of sources.&lt;br /&gt;
* [[Question_Engine_Changes_in_Moodle_1.9|Improved question bank]] - Jamie Pratt funded by [http://www.fun.ac.jp/en/ Future University Hakodate].&lt;br /&gt;
::Allows questions to be shared by the whole site, a course category, a singe course, or be kept private to a single module. More control over who can do what to each question. Improved file management for files linked to by questions.&lt;br /&gt;
* [[Notes]] - &lt;br /&gt;
:: Detailed notes can be kept about individual users (for example teachers might want to keep and share notes about students in their class).&lt;br /&gt;
* New Custom Corners theme - Urs Hunkler&lt;br /&gt;
:: Beautiful and curvy (in all browsers).&lt;br /&gt;
&lt;br /&gt;
===Other major improvements===&lt;br /&gt;
&lt;br /&gt;
* Groups and Groupings&lt;br /&gt;
:: New support for groupings (groups of groups) which was added briefly and then removed from 1.8.x.&lt;br /&gt;
* New theme settings&lt;br /&gt;
** Category themes - can now set the theme for a category which will apply to all sub-categories and courses&lt;br /&gt;
** Theme order - new setting &#039;&#039;$CFG-&amp;gt;themeorder&#039;&#039; which sets the priority of the themes from highest to lowest.&lt;br /&gt;
&lt;br /&gt;
===Module improvements===&lt;br /&gt;
&lt;br /&gt;
* Quiz/Question improvements:&lt;br /&gt;
** A quiz can now [[Quiz submission email notification|send emails when an attempt is finished]] - a confirmation to the student, a notification to all teachers, or both. (Implemented by Graham Miller of [http://www.webenhanced.com.au/ Web Enhanced Solutions]).&lt;br /&gt;
** Third party question types can now implement Moodle XML and other import and export formats (Implemented by Howard Miller).&lt;br /&gt;
** Gift Import/Export format can now handle Essay and Description question types.&lt;br /&gt;
** Some slight improvements to quiz layout. See [http://tracker.moodle.org/browse/MDL-10374 MDL-10374] for details. Theme designers please note.&lt;br /&gt;
** Multiple choice questions now show the feedback for all the options to students on the review page after the attempt is over.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Developers please add news here!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Notes===&lt;br /&gt;
&lt;br /&gt;
* In the new accesslib there is a subtle difference in how we resolve conflicts between &#039;allow&#039; and &#039;prevent&#039; capabilities. See [[Development:Roles#Capability-locality_changes_in_v1.9]]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.2==&lt;br /&gt;
&lt;br /&gt;
Released: 8th July 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10220&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.2].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* Two XSS security vulnerabilities (one reported in the wild) were fixed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8.1==&lt;br /&gt;
&lt;br /&gt;
Released: 14th June 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10213&amp;amp;styleName=Html&amp;amp;projectId=10011 the full list of fixed issues in 1.8.1].&lt;br /&gt;
&lt;br /&gt;
===Highlights===&lt;br /&gt;
* The groups implementation has been cleaned up somewhat from the 1.8 release.  The &#039;&#039;&#039;groupings&#039;&#039;&#039; GUI that appeared in 1.8 has been removed, because groupings are not complete and should not be used yet.  Moodle 1.8 sites that have created groupings should upgrade to 1.8.1 to have groupings reset ... otherwise there could be problem when upgrading to the real groupings in 1.9 or later.&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.8==&lt;br /&gt;
&lt;br /&gt;
Released: 31st March 2007&lt;br /&gt;
&lt;br /&gt;
Here is [http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10130 the full list of fixed issues in 1.8].&lt;br /&gt;
&lt;br /&gt;
===Headline features===&lt;br /&gt;
&lt;br /&gt;
* [[Accessibility]] - Moodle.com &lt;br /&gt;
:: The Moodle interface is now compliant with XHTML Strict 1.0 and major accessibility standards.&lt;br /&gt;
* [[Moodle Network]] - Catalyst, Richard Wyles&lt;br /&gt;
:: We can now set up peer Moodle installations allowing users to roam from one site to another, using comprehensive SSO and transparent remote enrolments.  Administrators at the originating Moodle install can see logs of remote activity. You can also run your Moodle in &amp;quot;Hub&amp;quot; mode where any Moodle install can connect and users roam across.&lt;br /&gt;
* [[Web Services API]] - Catalyst, Richard Wyles&lt;br /&gt;
:: The Moodle Network code includes an XML-RPC call dispatcher that can expose the WHOLE Moodle API to trusted hosts.  We will building on this in further versions but you can start using it now if you need to.&lt;br /&gt;
* [[Development:lib/formslib.php|Moodle forms library]] - Moodle.com &lt;br /&gt;
:: Majority of forms now use a single API for defining forms consistently and collecting data safely without using any HTML at all.&lt;br /&gt;
* [[Multi Authentication]] - Iñaki Arenaza / Catalyst / Moodle.com&lt;br /&gt;
:: It is now easier to configure multiple sources of authentication at once.  WARNING: the format for authentication plugins has changed, so custom plugins may be broken, however it&#039;s very easy to convert old code to the new format. More details can be found in /auth/README.txt.&lt;br /&gt;
* [[Development:Customisable user profiles|Customisable User Profiles]] - Pukunui Technology&lt;br /&gt;
::Allow new arbitrary fields to be added to the user profile, with more control over what fields appear on what signup and profile editing screens.&lt;br /&gt;
* Groups refactor - OU / Moodle.com&lt;br /&gt;
::Groups code has been reorganised to make it more flexible for the future (see 1.9).  &lt;br /&gt;
* [http://tracker.moodle.org/secure/IssueNavigator.jspa?mode=hide&amp;amp;requestId=10221 Roles improvements] - Moodle.com&lt;br /&gt;
:: In addition to many Roles fixes and refinements, Moodle 1.8 has separated the SYSTEM context from the SITE context (which makes it more like 1.6 used to work).  The SITE context is the &amp;quot;front page course&amp;quot; and its activities.  This should make it easier for admins to set up permissions. Login as and switching of roles was rewritten. Administrators can view recommended permission settings of legacy roles and may reset legacy roles to defaults.&lt;br /&gt;
* [http://tracker.moodle.org/browse/MDL-7993 Support for ODS export] - Moodle.com&lt;br /&gt;
::Open Document Format should solve majority of current problems with exports into proprietary Excel format. You may need to install special import plugin if you are using MS Office.&lt;br /&gt;
&lt;br /&gt;
===Known problems===&lt;br /&gt;
* CAS auth not working&lt;br /&gt;
&lt;br /&gt;
===Module improvements===&lt;br /&gt;
* [[Authorize.net Payment Gateway]] enrolment plugin &lt;br /&gt;
:: Payment managers can obtain an authorization code over phone from customer&#039;s bank if the credit card of the user cannot be captured on the internet directly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Developers please add news here!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
*[[Upgrading to Moodle 1.8]]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.2==&lt;br /&gt;
&lt;br /&gt;
30th March, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10174 This page shows issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
&lt;br /&gt;
* Unintended logouts are now prevented - sesskey added to logout.php script&lt;br /&gt;
* Fixed problem with visible posts in user profile when &amp;quot;forceloginforprofiles&amp;quot; disabled&lt;br /&gt;
* Fixed visibility of site blog entries&lt;br /&gt;
* Corrected wrong includes in lams&lt;br /&gt;
* XSS injection in SCORM 1.2 reports&lt;br /&gt;
* Fixed old problem with approvals in Data module, edited entries were approved automatically&lt;br /&gt;
* Fixed escaping in shell commands (Win32 platform only)&lt;br /&gt;
* Fixed visibility of blog drafts&lt;br /&gt;
* Rewritten parameter handling in repository plugin&lt;br /&gt;
* Fixed XSS in login block&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7.1==&lt;br /&gt;
&lt;br /&gt;
17th January, 2007&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?projectId=10011&amp;amp;styleName=Html&amp;amp;version=10151 This page shows details about issues resolved in this version]&lt;br /&gt;
&lt;br /&gt;
==Moodle 1.7==&lt;br /&gt;
&lt;br /&gt;
7th November, 2006&lt;br /&gt;
&lt;br /&gt;
[http://tracker.moodle.org/secure/ReleaseNote.jspa?version=10120&amp;amp;styleName=Html&amp;amp;projectId=10011&amp;amp;Create=Create This page shows details about issues resolved in this version]	 &lt;br /&gt;
 &lt;br /&gt;
===Headline features===	 &lt;br /&gt;
 &lt;br /&gt;
* [[Roles]]	 &lt;br /&gt;
:: Permissions based on fine-grained capabilities allow all kinds of roles to be created and assigned in all contexts around Moodle. This creates a great deal more flexibility in the permissions that you can grant to people.	 &lt;br /&gt;
* [[Development:XMLDB Documentation|XML Database Schema]]	 &lt;br /&gt;
:: added support for MS-SQL and Oracle with more databases to come. Developers now have just one XML file to edit when changing the database structure, and there is even a very funky editor for this file built-in to Moodle	 &lt;br /&gt;
* New Admin interface	 &lt;br /&gt;
:: Completely new admin interface, with accessible design and cool features to make access to settings fast and easy.	 &lt;br /&gt;
* [[Unit tests|Unit testing framework]]	 &lt;br /&gt;
:: Making it easier for developers to write test code, which should ultimately lead to a more reliable Moodle.	 &lt;br /&gt;
* [[AJAX]] Course editing (STILL UNSTABLE IN 1.7 RELEASE AND OFF BY DEFAULT, USE WITH CAUTION!)	 &lt;br /&gt;
:: The Topics and Weekly course formats now feature AJAX editing which means you can drag drop blocks, activities and sections (weeks/topics) and it all happens instantly. No more page reloading!&lt;br /&gt;
&lt;br /&gt;
===Module improvements===	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Assignment module]]	 &lt;br /&gt;
**New type Advanced uploading of files	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Database module]]	 &lt;br /&gt;
**Template/Field settings can now be saved as Presets and shared across a site.	 &lt;br /&gt;
**Presets are just zip files, and can also be shared between sites.	 &lt;br /&gt;
**Moodle 1.7 comes with one sample preset (an Image Gallery) with more to come.	 &lt;br /&gt;
**New latitude/longitude data type	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Lesson module]]	 &lt;br /&gt;
**Now has a more unified view of lesson screens.	 &lt;br /&gt;
**Teacher editing:	 &lt;br /&gt;
***Collapsed view has a nicer format, displays more information regarding each page and allows the creation of new pages.	 &lt;br /&gt;
***Editing is now speedier by replacing 3 second redirect delays with a notification system.	 &lt;br /&gt;
**New feature: display default feedback.	 &lt;br /&gt;
***Default is &#039;&#039;&#039;On&#039;&#039;&#039; so previous lessons behave as before.	 &lt;br /&gt;
***Description: if no &#039;&#039;response&#039;&#039; is entered for a question answer and this setting is turned &#039;&#039;&#039;Off&#039;&#039;&#039;, then the user skips the feedback page.	 &lt;br /&gt;
**Graceful degrade of JavaScript.	 &lt;br /&gt;
**Several bug fixes.	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Quiz module]]	 &lt;br /&gt;
:* The teacher can configure comments that are displayed to the student at the end of their attempt, with the comment displayed depending on the student&#039;s score.	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to some core question types	 &lt;br /&gt;
:* All question types can now have some general feedback. This is displayed to all students after they have finished the question (depending on the quiz settings) and does not depend on what response the student gave. Use this to tell the student what the question was about, or link them to more information about the topic it covers.	 &lt;br /&gt;
:* [[Matching question type|Matching]] questions can have extra wrong answers, and work when two questions have the same answer.	 &lt;br /&gt;
:* [[Multiple Choice question type|Multiple Choice]] questions can have feedback for the whole question, as well as specific answers. This is particularly useful for multiple-response questions.	 &lt;br /&gt;
:* [[Numerical question type|Numerical]] questions can have different answers with different precisions and scores. (Previously this was only supported via GIFT import. Now you can edit questions like this.)	 &lt;br /&gt;
 &lt;br /&gt;
* Improvements to the [[Wiki module]]	 &lt;br /&gt;
:* While editing a wiki page it is now locked so that others cannot try to change it at the same time. Teachers can override the lock.	 &lt;br /&gt;
:* Minor bugfixes (mostly to fix problems that occured when using Postgres database).	 &lt;br /&gt;
 &lt;br /&gt;
===Enrolment plugin improvements===	 &lt;br /&gt;
 &lt;br /&gt;
* [[Authorize.net Payment Gateway]] enrolment plugin 	 &lt;br /&gt;
:*Accepts &#039;Electronic Checks (ACH)&#039;. After a user approving echeck, an admin who has upload csv capacity must import a CSV file to get the user enrolled in the Payment Management page.	 &lt;br /&gt;
:*Autoconfigures credit card and echeck types if the merchant does not accept some types of them.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Old releases|Old release notes]]&lt;br /&gt;
&lt;br /&gt;
[[es:Notas de versiones]]&lt;br /&gt;
[[fr:Notes de mise à jour]]&lt;br /&gt;
[[pt:Versões do Moodle]]&lt;br /&gt;
[[ru:Примечания к версиям]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=3162</id>
		<title>Roles</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Roles&amp;diff=3162"/>
		<updated>2007-09-19T04:04:24Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* The new roles and capability system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 1.7}}&lt;br /&gt;
&#039;&#039;&#039;Roles and permissions&#039;&#039;&#039; is in Moodle 1.7 onwards.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&lt;br /&gt;
A role is an identifier of the user&#039;s status in some context. For example: Teacher, Student and Forum moderator are examples of roles.&lt;br /&gt;
&lt;br /&gt;
A capability is a description of some particular Moodle feature. Capabilities are associated with roles. For example, &#039;&#039;mod/forum:replypost&#039;&#039; is a capability.&lt;br /&gt;
&lt;br /&gt;
A permission is some value that is assigned for a capability for a particular role.  For example, allow or prevent.&lt;br /&gt;
&lt;br /&gt;
A context is a &amp;quot;space&amp;quot; in the Moodle, such as courses, activity modules, blocks etc.&lt;br /&gt;
&lt;br /&gt;
==The existing system==&lt;br /&gt;
&lt;br /&gt;
In versions prior to v1.7, Moodle uses a fixed set of roles i.e. primary admin, admins, course creators, editing teachers, non-editing teachers, students, and guests. For each role, the capability or actions that they can perform are fixed. For example, the role student allows the user to submit an assignment, but doesn&#039;t allow the user to browse/edit other users&#039; work. By using this setup we limit ourselves to a rather rigid set of capabilities for each role. If we want, say a particular student or group to be able to mark assignments in a particular course, we can&#039;t do that without giving these users teacher privileges.&lt;br /&gt;
&lt;br /&gt;
==The new roles and capability system==&lt;br /&gt;
&lt;br /&gt;
With v1.7 and greater, Moodle introduces a roles and capabilities system.&lt;br /&gt;
&lt;br /&gt;
Role has two primary functions:&lt;br /&gt;
# define list of permissions - role definition is global for all contexts, but can be changed by local context overrides&lt;br /&gt;
# replace old course enrolments - role assignment in course context is simitar to the old enrolment process&lt;br /&gt;
&lt;br /&gt;
The new system will allow authorized users to define an arbitrary number of roles (eg a teacher) &lt;br /&gt;
&lt;br /&gt;
A role consists of a list of permissions for different possible actions within Moodle (eg delete discussions, add activities etc)&lt;br /&gt;
&lt;br /&gt;
Roles can be applied to users in a context (eg assign Fred as a teacher in a particular course)&lt;br /&gt;
&lt;br /&gt;
Here are the possible contexts, listed from the most general to the most specific. &lt;br /&gt;
&lt;br /&gt;
#CONTEXT_SYSTEM       -- the whole site&lt;br /&gt;
#CONTEXT_PERSONAL     -- yourself&lt;br /&gt;
#CONTEXT_USER         -- another user&lt;br /&gt;
#CONTEXT_COURSECAT    -- a course category&lt;br /&gt;
#CONTEXT_COURSE       -- a course&lt;br /&gt;
&#039;&#039;&#039;#CONTEXT_GROUP        -- a group&lt;br /&gt;
#CONTEXT_MODULE       -- an activity module&lt;br /&gt;
#CONTEXT_BLOCK        -- a block&lt;br /&gt;
&lt;br /&gt;
[[Image:Moodle-contexts-1.8.png|right|thumb|A diagram of the contexts in Moodle 1.8, based on the [[Talk:Roles_and_capabilities|text diagram by Martin Dougiamas]]. Click on the diagram to see a more detailed view of it.]]&lt;br /&gt;
&lt;br /&gt;
An authorized user will be able to assign an arbitrary number of roles to each user in any context.&lt;br /&gt;
&lt;br /&gt;
Capabilities can have the following permissions:&lt;br /&gt;
&lt;br /&gt;
#CAP_INHERIT&lt;br /&gt;
#CAP_ALLOW&lt;br /&gt;
#CAP_PREVENT&lt;br /&gt;
#CAP_PROHIBIT&lt;br /&gt;
&lt;br /&gt;
If no permission is defined, then the capability permission is inherited from a context that is more general than the current context. If we define different permission values for the same capability in different contexts, we say that we are overriding the capability in the more specific context.&lt;br /&gt;
&lt;br /&gt;
Since the capabilities in each role could be different, there could be conflict in capabilities. This is resolved by enforcing the rule that the capability defined for a more specific context will win, unless a prohibit is encountered in a less specific context.&lt;br /&gt;
&lt;br /&gt;
For example, Mark has a student role at course level, which allows him to write into a wiki. But Mark also got assigned a Visitor role at a module context level (for a particular wiki) which prevents him from writing to the wiki (read only). Therefore, for this particular wiki, Mark will not be able to write to the wiki since the more specific context wins.&lt;br /&gt;
&lt;br /&gt;
If we set a PROHIBIT on a capability, it means that the capability cannot be overridden and will ALWAYS  have a permission of prevent (deny). Prohibit always wins.   For example, Jeff has a naughty student role that prohibits him from postings in any forums (for the whole site), but he&#039;s also assigned a facilitator role in &amp;quot;Science forum&amp;quot; in the course Science and Math 101. Since prohibit always wins, Jeff is unable to post in &amp;quot;Science forum&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Allow and prevent will cancel each other out if set for the same capability at the same context level. If this happens, we refer to the previous context level to determine the permission for the capability.&lt;br /&gt;
&lt;br /&gt;
This may sound more complex than it really is in practice.  The upshot is that the system can be flexible enough to allow pretty much any combination of permissions.&lt;br /&gt;
&lt;br /&gt;
===Capability-locality changes in v1.9===&lt;br /&gt;
&lt;br /&gt;
When resolving conflicts between &amp;quot;allow&amp;quot; and &amp;quot;prevent&amp;quot; in v1.7 and v1.8 the locality of the capability is taken into account, although with less weight than the locality of the role assignment. In v1.9 the process has been simplified, we consider locality of the role assignment when dealing with allow/prevent conflicts, but ignore where the capability has been defined (as long as it applies to the context).&lt;br /&gt;
&lt;br /&gt;
For example - for the situation where there is&lt;br /&gt;
&lt;br /&gt;
* two roles assigned to one user in a context (eg student role and teacher role)&lt;br /&gt;
* one override on one of those roles ( eg student role), at the same context&lt;br /&gt;
 &lt;br /&gt;
then&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1.7/1.8&#039;&#039;&#039; The override used to &#039;&#039;always&#039;&#039; win over the settings from the combined roles.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1.9&#039;&#039;&#039; The override is combined with the student role first. and then the roles are combined. This is more logical, as the override is acting like a modification to the student role.&lt;br /&gt;
&lt;br /&gt;
==Upgrading from 1.6==&lt;br /&gt;
&lt;br /&gt;
A smooth upgrade will be provided with 1.7. The existing roles (admin, teacher, student, etc), and the existing capabilities will be automatically retained.  This is done by creating default roles at site/course levels, and assigning the current users to these roles accordingly. The default roles will have default capabilities associated with them, mirroring what we have  in 1.6.   With no modifications, Moodle will operate exactly the same before and after the upgrade.&lt;br /&gt;
&lt;br /&gt;
===Admins===&lt;br /&gt;
&lt;br /&gt;
Admin users will be assigned the default legacy admin role in the system (site) context&lt;br /&gt;
&lt;br /&gt;
===Course Creators===&lt;br /&gt;
&lt;br /&gt;
Course Creators will be assigned the default legacy course creator role in the system (site) context&lt;br /&gt;
&lt;br /&gt;
===Teachers===&lt;br /&gt;
&lt;br /&gt;
Users who were teachers will be assigned the default legacy teacher role (or non-editing teacher role) in all courses they were teacher.&lt;br /&gt;
&lt;br /&gt;
===Students===&lt;br /&gt;
&lt;br /&gt;
Users who were students will be assigned the default student role in all courses they were student.&lt;br /&gt;
&lt;br /&gt;
===Guests===&lt;br /&gt;
&lt;br /&gt;
There will still be a single guest user with no default role at site level.   For each course that allows guest access, the guest role will be assigned to the guest user for that course context.   The guest control for the course will be modified from three to two options (guests always need to enter enrolment key - on/off).  This setting is checked as now to force guests to enter key.&lt;br /&gt;
&lt;br /&gt;
==Capabilities==&lt;br /&gt;
&lt;br /&gt;
This will be a comprehensive list of capabilities (it&#039;s not complete yet). It is important that capability names are unique.&lt;br /&gt;
&lt;br /&gt;
===Core-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
Moodle core capability names start with &#039;moodle/&#039;.  The next word indicates what type of core capability it is, and the last word is the actual capability itself.  The capabilities for the Moodle core are defined in lib/db/access.php&lt;br /&gt;
&lt;br /&gt;
#moodle/legacy:guest - legacy capabilities are used to transition existing users to the new roles system during the upgrade to Moodle 1.7&lt;br /&gt;
#moodle/legacy:student&lt;br /&gt;
#moodle/legacy:teacher&lt;br /&gt;
#moodle/legacy:editingteacher&lt;br /&gt;
#moodle/legacy:coursecreator&lt;br /&gt;
#moodle/legacy:admin&lt;br /&gt;
#moodle/site:doanything - special capability, meant for admins, if is set, overrides all other capability settings&lt;br /&gt;
#moodle/site:config - applicable in admin/index.php and config.php (might break down later) : 1)admin/config.php 2)admin/configure.php 3)blocks/admin/block_admin.php load_content_for_site()&lt;br /&gt;
#moodle/site:readallmessages - reads all messages and history&lt;br /&gt;
#moodle/site:approvecourse - approves a pending course&lt;br /&gt;
#moodle/site:manageblocks - adding/removing/editing blocks (site, course contexts only for now) : 1)_add_edit_controls moodleblock.class.php &lt;br /&gt;
#moodle/site:backup - can create a course backup : 1)course/category.php 2)block_admin.php&lt;br /&gt;
#moodle/site:restore - can restore into this context : 1)course/category.php 2)block_admin.php&lt;br /&gt;
#moodle/site:import - can import other courses into this context : 1)block_admin.php&lt;br /&gt;
#moodle/site:accessallgroups - able to access all groups irrespective of what group the user is in&lt;br /&gt;
#moodle/site:accessdb - directly accessing db (phpmyadmin)&lt;br /&gt;
#moodle/site:viewfullnames - able to see fullnames of other users&lt;br /&gt;
#moodle/site:viewparticipants - able to view participants&lt;br /&gt;
#moodle/site:viewreports - able to view site/course reports&lt;br /&gt;
#moodle/site:trustcontent - ability to use trusttext feature and bypass cleaning in specific areas&lt;br /&gt;
#moodle/site:uploadusers - ability to upload/update users from text file; moodle/role:assign capability is needed for course enrolling&lt;br /&gt;
#moodle/blog:view - read blogs (usable in system or course context)&lt;br /&gt;
#moodle/blog:create - write new blog posts (usable in system context only)&lt;br /&gt;
#moodle/blog:manageofficialtags - create/delete official blog tags that others can use (usable in system context only)&lt;br /&gt;
#moodle/blog:managepersonaltags - delete personal blog tags that others can use (usable in system context only) Note: users can always add own personal tags. This setting should be off for students by default.&lt;br /&gt;
#moodle/blog:manageentries - edit/delete all blog entries (usable in system context only)&lt;br /&gt;
#moodle/course:setcurrentsection - mark course section&lt;br /&gt;
#moodle/course:create - create courses : 1)course/edit.php 2)course/category.php 3)course/index.php&lt;br /&gt;
#moodle/course:delete - create courses : 1)course/category.php&lt;br /&gt;
#moodle/course:update - update course settings&lt;br /&gt;
#moodle/course:view - can use this to find participants&lt;br /&gt;
#moodle/course:viewparticipants - allows a user to view participant list&lt;br /&gt;
#moodle/course:viewscales - view scales (i.e. in a help window?) : 1)course/scales.php&lt;br /&gt;
#moodle/course:manageactivities - adding/removing/editing activities and resources (don&#039;t think it makes any sense to split these)&lt;br /&gt;
#moodle/course:managescales - add, delete, edit scales, move scales up and down : 1)blocks/block_admin.php 2)course/scales.php&lt;br /&gt;
#moodle/course:managegroups - managing groups, add, edit, delete : 1)course/groups.php 2)course/group.php&lt;br /&gt;
#moodle/course:managefiles - manage course files and folders&lt;br /&gt;
#moodle/course:managequestions - manage course questions&lt;br /&gt;
#moodle/course:managemetacourse - manage child courses in metacourse&lt;br /&gt;
#moodle/course:reset - able to reset the course&lt;br /&gt;
#moodle/course:useremail - Can use the enable/disable email stuff&lt;br /&gt;
#moodle/course:visibility - hide/show courses : 1)course/category.php&lt;br /&gt;
#moodle/course:viewhiddencourses - see hidden courses&lt;br /&gt;
#moodle/course:activityvisibility - hide/show activities within a course&lt;br /&gt;
#moodle/course:viewhiddenactivities - able to see activities that have been hidden&lt;br /&gt;
#moodle/course:sectionvisibility - hide/show sections&lt;br /&gt;
#moodle/course:viewhiddensections - view hidden sections&lt;br /&gt;
#moodle/course:viewcoursegrades - views all grades in course&lt;br /&gt;
#moodle/course:viewhiddenuserfields - view all hidden user fields&lt;br /&gt;
#moodle/course:managegrades - manages grades settings in course&lt;br /&gt;
#moodle/category:create - create category : 1)course/index.php&lt;br /&gt;
#moodle/category:delete - delete category : 1)course/index.php&lt;br /&gt;
#moodle/category:update - update category settings (sort and rename) this is currently an admin capability : 1)course/category.php&lt;br /&gt;
#moodle/category:visibility - hide/show categories : 1)course/index.php&lt;br /&gt;
#moodle/user:viewusergrades - view your own, or other user&#039;s grades (with specified context)&lt;br /&gt;
#moodle/user:create - create user : 1) user/edit.php&lt;br /&gt;
#moodle/user:delete - delete user : 1) admin/user.php&lt;br /&gt;
#moodle/user:readuserblogs - read blog entries&lt;br /&gt;
#moodle/user:update - update user settings : 1) user/edit.php&lt;br /&gt;
#moodle/user:viewdetails - view personally-identifying user details (e.g. name, photo).&lt;br /&gt;
#moodle/user:viewhiddendetails - view user details marked as &amp;quot;hidden&amp;quot;&lt;br /&gt;
#moodle/calendar:manageownentries - create/edit/delete &lt;br /&gt;
#moodle/calendar:manageentries - create/edit/delete&lt;br /&gt;
#moodle/role:assign - assign roles to users&lt;br /&gt;
#moodle/role:override - can override role capabilities (depending on context)&lt;br /&gt;
#moodle/role:manage - create/edit/delete roles, set capability permissions for each role&lt;br /&gt;
#moodle/role:unassignself - unassign yourself from your own roles&lt;br /&gt;
#moodle/role:viewhiddenassigns - view role assignments that have been marked as hidden&lt;br /&gt;
#moodle/question:import - imports questions (course level?) - Yes, question permissions currently need to be course-level.--[[User:Tim Hunt|Tim Hunt]]&lt;br /&gt;
#moodle/question:export - exports questions (course level?)&lt;br /&gt;
#moodle/question:managecateory - add/delete/edit question categories (course level?)&lt;br /&gt;
#moodle/question:manage - add/edit/delete a question (course level)&lt;br /&gt;
&lt;br /&gt;
===User-level Capabilities===&lt;br /&gt;
# moodle/user:readuserposts -read individual user posts on profile page (parent?)&lt;br /&gt;
# moodle/user:readuserblogs -read individual user blogs on profile page (parent?)&lt;br /&gt;
# moodle/user:viewuseractivitiesreport-read individual activity report on profile page (parent?)&lt;br /&gt;
# moodle/user:editprofile - edit profile (normally used in CONTEXT_USERID and CONTEXT_SYSTEM)&lt;br /&gt;
&lt;br /&gt;
===Module-level Capabilities===&lt;br /&gt;
The capabilities are cached into a database table when a module is installed or updated. Whenever the capability definitions are updated, the module version number should be bumped up so that the database table can be updated.&lt;br /&gt;
&lt;br /&gt;
The naming convention for capabilities that are specific to modules and blocks is &#039;mod/mod_name:capability&#039;.  The part before the colon is the full path to the module in the Moodle code.  The module capabilities are defined in mod/mod_name/db/access.php.&lt;br /&gt;
&lt;br /&gt;
#Assignment&lt;br /&gt;
##mod/assignment:view- reading the assignment description&lt;br /&gt;
##mod/assignment:submit - turn assignment in&lt;br /&gt;
##mod/assignment:grade - grading, viewing of list of submitted assignments&lt;br /&gt;
#Chat&lt;br /&gt;
##mod/chat:chat - allows a user to participate in this chat&lt;br /&gt;
##mod/chat:readlog - allows a user to read past chat session logs&lt;br /&gt;
##mod/chat:deletelog - allows a user to delete past chat logs&lt;br /&gt;
#Choice&lt;br /&gt;
##mod/choice:choose - make a choice&lt;br /&gt;
##mod/choice:readresponses - read all responses&lt;br /&gt;
##mod/choice:deleteresponses - deletes all responses&lt;br /&gt;
##mod/choice:downloadresponses - download responses&lt;br /&gt;
#Database&lt;br /&gt;
##mod/data:viewentry - reads other people&#039;s entry&lt;br /&gt;
##mod/data:writeentry - add / edit and delete (own) entries&lt;br /&gt;
##mod/data:managetemplates - add, delete, edit fields and templates&lt;br /&gt;
##mod/data:manageentries - edit/delete all entries&lt;br /&gt;
##mod/data:comment - comment&lt;br /&gt;
##mod/data:managecomments - edit/delete all comments&lt;br /&gt;
##mod/data:rate - rate an entry&lt;br /&gt;
##mod/data:viewrating&lt;br /&gt;
##mod/data:approve - approves an entry&lt;br /&gt;
##mod/data:uploadentries - batch upload of entries&lt;br /&gt;
#Exercise&lt;br /&gt;
##mod/exercise:assess&lt;br /&gt;
#Forum&lt;br /&gt;
##mod/forum:viewdiscussion&lt;br /&gt;
##mod/forum:viewdiscussionsfromallgroups&lt;br /&gt;
##mod/forum:viewhiddentimedposts&lt;br /&gt;
##mod/forum:startdiscussion&lt;br /&gt;
##mod/forum:replypost&lt;br /&gt;
##mod/forum:viewrating&lt;br /&gt;
##mod/forum:viewanyrating&lt;br /&gt;
##mod/forum:rate&lt;br /&gt;
##mod/forum:createattachment&lt;br /&gt;
##mod/forum:deleteownpost&lt;br /&gt;
##mod/forum:deleteanypost&lt;br /&gt;
##mod/forum:splitdiscussions&lt;br /&gt;
##mod/forum:movediscussions&lt;br /&gt;
##mod/forum:editanypost&lt;br /&gt;
##mod/forum:viewqandawithoutposting&lt;br /&gt;
##mod/forum:viewsubscribers&lt;br /&gt;
##mod/forum:managesubscriptions&lt;br /&gt;
##mod/forum:throttlingapplies&lt;br /&gt;
#Glossary&lt;br /&gt;
##mod/glossary:write - add entries&lt;br /&gt;
##mod/glossary:manageentries - add, edit, delete entries&lt;br /&gt;
##mod/glossary:managecategories - create, delete, edit categories&lt;br /&gt;
##mod/glossary:comment - comment on an entry&lt;br /&gt;
##mod/glossary:managecomments - edit, delete comments&lt;br /&gt;
##mod/glossary:import - import glossaries&lt;br /&gt;
##mod/glossary:export - export glossaries&lt;br /&gt;
##mod/glossary:approve - approve glossaries&lt;br /&gt;
##mod/glossary:rate - rates glossary&lt;br /&gt;
##mod/glossary:viewrating - view ratings&lt;br /&gt;
#Hotpot&lt;br /&gt;
##mod/hotpot:attempt - attempt a hotpot&lt;br /&gt;
##mod/hotpot:viewreport - review and view reports&lt;br /&gt;
##mod/hotpot:grade - (grade? and) regrade&lt;br /&gt;
##mod/hotpot:deleteattempt - deletes attempts&lt;br /&gt;
#Label&lt;br /&gt;
##none&lt;br /&gt;
#Lams&lt;br /&gt;
##mod/lams:participate - original student&lt;br /&gt;
##mod/lams:manage - original teacher&lt;br /&gt;
#Lesson&lt;br /&gt;
##mod/lesson:edit - add and edit pages&lt;br /&gt;
##mod/lesson:manage - view student attempts&lt;br /&gt;
#Quiz&lt;br /&gt;
##mod/quiz:grade - comment, override grade, manual grade&lt;br /&gt;
##mod/quiz:preview - previews the quiz&lt;br /&gt;
##mod/quiz:viewreports - view quiz result reports&lt;br /&gt;
##mod/quiz:manage - add/delete/move (up or down) questions for a quiz&lt;br /&gt;
##mod/quiz:attempt - attempt the quiz--[[User:Tim Hunt|Tim Hunt]]&lt;br /&gt;
#Resource&lt;br /&gt;
#Scorm&lt;br /&gt;
##mod/scorm:viewgrades&lt;br /&gt;
#Survey&lt;br /&gt;
##mod/survey:download - downloads survery result&lt;br /&gt;
##mod/survey:participate - participate/ do survey&lt;br /&gt;
##mod/survey:readresponses - read all user&#039;s responese&lt;br /&gt;
#Wiki&lt;br /&gt;
##mod/wiki:participate - original student, meaning depends of type and course setting&lt;br /&gt;
##mod/wiki:manage - original teacher, manages assigned group; moodle/site:accessallgroups is needed to manage all groups &lt;br /&gt;
##(Waiting on new wiki)&lt;br /&gt;
#Workshop&lt;br /&gt;
##mod/workshop:participate - original student, allows user to submit and assess&lt;br /&gt;
##mod/workshop:manage - original teacher, user can manage others&lt;br /&gt;
##(Waiting on new Workshop)&lt;br /&gt;
&lt;br /&gt;
===Enrolment-level Capabilities===&lt;br /&gt;
&lt;br /&gt;
The naming convention for capabilities that are specific to enrolment is &#039;enrol/enrol_name:capability&#039;. The enrolment capabilities are defined in enrol/enrol_name/db/access.php.&lt;br /&gt;
&lt;br /&gt;
#Authorize.net Payment Gateway &lt;br /&gt;
##enrol/authorize:managepayments - manage user payments, capture, void, refund, delete etc.&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
#activity_modules&lt;br /&gt;
##None&lt;br /&gt;
#admin&lt;br /&gt;
#admin_2&lt;br /&gt;
#admin_bookmarks&lt;br /&gt;
#blog_menu&lt;br /&gt;
#blog_tags&lt;br /&gt;
#calendar_month&lt;br /&gt;
#calendar_upcoming&lt;br /&gt;
#course_list&lt;br /&gt;
#course_summary&lt;br /&gt;
#glossary_random&lt;br /&gt;
#html&lt;br /&gt;
#loancalc&lt;br /&gt;
#login&lt;br /&gt;
#messages&lt;br /&gt;
#news_items&lt;br /&gt;
#online_users&lt;br /&gt;
#participants&lt;br /&gt;
#quiz_results&lt;br /&gt;
#recent_activity&lt;br /&gt;
#rss_client&lt;br /&gt;
##block/rss_client:createprivatefeeds&lt;br /&gt;
##block/rss_client:createsharedfeeds&lt;br /&gt;
##block/rss_client:manageownfeeds&lt;br /&gt;
##block/rss_client:manageanyfeeds&lt;br /&gt;
#search&lt;br /&gt;
#search_forums&lt;br /&gt;
#section_links&lt;br /&gt;
#site_main_menu&lt;br /&gt;
#social_activities&lt;br /&gt;
&lt;br /&gt;
===Questions===&lt;br /&gt;
I am adding question categories here because they seem to have been forgotten in the whole scheme of things since having been removed from the quiz module itself. I&#039;ve made a suggestion on how these could be handled in [http://www.moodle.org/bugs/bug.php?op=show&amp;amp;bugid=6118&amp;amp;pos= bug 6118].&lt;br /&gt;
&lt;br /&gt;
See [http://moodle.org/mod/forum/discuss.php?d=51143 this forum thread] for a discussion about the current problems wth publishing question categories.[[User:Tim Hunt|Tim Hunt]] 18:50, 8 August 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
==Programming Interface==&lt;br /&gt;
&lt;br /&gt;
Although the Roles system may look complicated at first glance, implementing it in Moodle code is fairly simple.&lt;br /&gt;
&lt;br /&gt;
* You need to define each capability once, so that Moodle can upgrade existing roles to take advantage of it.  You do this in an access.php inside the db folder of any module (eg see mod/forum/db/access.php).  The array contains entries like this (note the descriptions for the legacy roles which provides forward compatibility):&lt;br /&gt;
    &#039;mod/forum:viewforum&#039; =&amp;gt; array(&lt;br /&gt;
        &#039;captype&#039; =&amp;gt; &#039;read&#039;,&lt;br /&gt;
        &#039;contextlevel&#039; =&amp;gt; CONTEXT_MODULE,&lt;br /&gt;
        &#039;legacy&#039; =&amp;gt; array(&lt;br /&gt;
            &#039;guest&#039; =&amp;gt; CAP_PREVENT,&lt;br /&gt;
            &#039;student&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
            &#039;teacher&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
            &#039;editingteacher&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
            &#039;coursecreator&#039; =&amp;gt; CAP_ALLOW,&lt;br /&gt;
            &#039;admin&#039; =&amp;gt; CAP_ALLOW&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
* To load/change these capabilities you need to bump the module version.   There&#039;s no need to provide changes or differences as Moodle will scan the whole array and sort it out.&lt;br /&gt;
* On each page you need to find the context the user is working in, using the get_context_instance() function.  For example, in the forum module:&lt;br /&gt;
&lt;br /&gt;
  $context = get_context_instance(CONTEXT_MODULE, $cm-&amp;gt;id);&lt;br /&gt;
* or to at the course level:&lt;br /&gt;
  $context = get_context_instance(CONTEXT_COURSE, $id);&lt;br /&gt;
* Then, whenever you want to check that the current user has rights to do something, call has_capability() like this:&lt;br /&gt;
    if (!has_capability(&#039;mod/forum:viewforum&#039;, $context)) {&lt;br /&gt;
        print_error(&#039;nopermissiontoviewforum&#039;);&lt;br /&gt;
    }&lt;br /&gt;
* If you just want to assert a capability and then finish with an error message if it&#039;s not met (as we did above), then a shorter way it to use require_capability() like this:&lt;br /&gt;
&lt;br /&gt;
    require_capability(&#039;mod/forum:viewforum&#039;, $context);&lt;br /&gt;
&lt;br /&gt;
* Note that there are extra parameters you can specify to get a custom error message, otherwise users get an automated &amp;quot;No permissions&amp;quot; message that lists the permission they were missing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As a result of the new Roles System, all calls to isadmin(), iscoursecreator, isteacheredit(), isteacher(), isstudent(), and isguest() will have to be replaced with calls to has_capability() or require_capability().   However, these functions will be retained for some backward compatibility with old code, using the legacy capabilities to try and work out what to do.&lt;br /&gt;
&lt;br /&gt;
==Metacourses==&lt;br /&gt;
&lt;br /&gt;
The behaviour of metacourses in Moodle 1.7 changed slightly, in that where it used to just synch students from child courses to the parent course, it will now synch ALL roles. Teachers etc of the child courses will have the same role in the meta course. Technically metacourse synchronises all role assignments in CONTEXT_COURSE with its child courses; the only exception are users with moodle/course:managemetacourse capability, these users are synchronized only upwards, they are not unenrolled from metacourse when unenroling from child course or when removing the child from metacourse.&lt;br /&gt;
&lt;br /&gt;
In order to import/enrol other courses into metacoure you need to have moodle/course:managemetacourse capability. You can add manually only participants with moodle/course:managemetacourse, all other participants are automatically synced with child courses - if you try to manually enrol user without this capability error is displayed. Similar error is shown also when you try to manually unenrol participant from meta course while still being enrolled in child course.&lt;br /&gt;
&lt;br /&gt;
Sample setup:&lt;br /&gt;
* metacourse manager has been assigned role with moodle/course:managemetacourse capability in system or course category context&lt;br /&gt;
* students are enrolled in several child courses&lt;br /&gt;
* teachers are enrolled in separate child course(s)&lt;br /&gt;
&lt;br /&gt;
==Problem areas we are working on ==&lt;br /&gt;
&lt;br /&gt;
===Student view===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Student view&amp;quot; button has been removed completely.&lt;br /&gt;
&lt;br /&gt;
If there is time and a secure way can be found, it will be replaced by a menu to let the user assume a temporary role in the context of that course.&lt;br /&gt;
&lt;br /&gt;
===Teacher forum===&lt;br /&gt;
&lt;br /&gt;
Teacher forums were always a curious exception to normal forums, as they were not part of a course as such, and were not backed up.&lt;br /&gt;
&lt;br /&gt;
We&#039;re taking the opportunity to rectify this.   The upgrade converts teacher forums with content to normal forums in section 0 of the course, and ensures that only teachers can access them.  If the teacher forum had not been used in the course then it&#039;s not converted and will just dissappear.&lt;br /&gt;
&lt;br /&gt;
===Enrolment plugins===&lt;br /&gt;
&lt;br /&gt;
====Process of logging in====&lt;br /&gt;
&lt;br /&gt;
# load_user_capability() is called to load all the capabilities&lt;br /&gt;
# check_enrolment_plugins() is called at the top of load_user_capability() to check all the enrolment plugins.&lt;br /&gt;
# For each active plugin:&lt;br /&gt;
##Check for setup_enrolments($user) and run it.  This function will do all the processing needed to assign or unassign roles from the current user.&lt;br /&gt;
# load_user_capability() continues and loads up all the roles&lt;br /&gt;
# load_defaultuser_role() is called to add default site permissions (all users)&lt;br /&gt;
&lt;br /&gt;
====Process of checking access to a course====&lt;br /&gt;
&lt;br /&gt;
require_login($course-&amp;gt;id) is called by the script and has logic like this:&lt;br /&gt;
&lt;br /&gt;
# Is the user a guest at site level?&lt;br /&gt;
## Yes: Does the course allow guests?&lt;br /&gt;
### Yes: return true (and further capabilities are checked by the script)&lt;br /&gt;
### No:  send the user to course/enrol.php for enrolment&lt;br /&gt;
## No: continue below&lt;br /&gt;
&lt;br /&gt;
# Does the user have moodle/course:view in that (course) context?&lt;br /&gt;
## Yes: then they can enter (and further capabilities are checked by the script)&lt;br /&gt;
##  No: is guest access allowed on the course?&lt;br /&gt;
### Yes: assign temporary guest role to that user for that context (in session cache).&lt;br /&gt;
### No: send the user to course/enrol.php for enrolment.&lt;br /&gt;
&lt;br /&gt;
====Process of enrolling====&lt;br /&gt;
&lt;br /&gt;
(more soon)&lt;br /&gt;
&lt;br /&gt;
==Scenario brainstorming==&lt;br /&gt;
&lt;br /&gt;
This section is for brainstorming some example roles that we would like to support.  Note some of these *may* not be possible in 1.7.&lt;br /&gt;
&lt;br /&gt;
===Student===&lt;br /&gt;
Obviously.&lt;br /&gt;
&lt;br /&gt;
===Site Designers===&lt;br /&gt;
Is there a role for people involved in how the site looks but not full administrators? Thinking here of online control of themes rather than FTP theme uploading. But in either case they caneditlogos, caneditcss, candeditlevelatwhichthemeapplies.&lt;br /&gt;
&lt;br /&gt;
===Educational Authority Adviser===&lt;br /&gt;
Someone who would want to browse the site and may be asked to comment or contribute to particular discussions or developments in school. Access for this role would be controlled by the school in the case of school level moodles but may be different if there were to be a Local Authority wide Moodle.&lt;br /&gt;
&lt;br /&gt;
===Educational Inspector===&lt;br /&gt;
Someone who will visit the site to verify the school&#039;s self review that comments on home school relationships, extending the classroom etc. They may want to see summaries of usage and reports from surveys garnering parent and pupil views.&lt;br /&gt;
&lt;br /&gt;
===Second Marker / Moderator===&lt;br /&gt;
A teacher within ths site that has access to assignments and quizzes from another teacher&#039;s course for second marking purposes. This may need additional functionality adding to the assignment module so that two sets of grades/feedback can be given to one set of assignments.&lt;br /&gt;
&lt;br /&gt;
===Peer observer of teaching===&lt;br /&gt;
Many institutions encourage peer observation of teaching, to encourage reflection on practice. In online environments this will be similar to moderation or inspection. The peer observer would need to be able to experience the course &amp;quot;as a student&amp;quot;, but also to be able to view summaries of usage, transcripts of interactions (forums/surveys/polls etc), grades assigned (e.g. in assignments).&lt;br /&gt;
&lt;br /&gt;
===External Examiner===&lt;br /&gt;
Has all the rights of inspectors, but would also need to be able to review assignments and feedback, view forums, glossaries etc. However, would not want to post, feedback onto the site at all.&lt;br /&gt;
&lt;br /&gt;
===Parent===&lt;br /&gt;
A parent will have one or more children in one or more institutions which could be using one or more moodle instances or a mixture of Learning Platforms. A parent&#039;s role will vary depending on the age of their children and whether they are contributing as a parent or a school supporter.&lt;br /&gt;
&lt;br /&gt;
In Early Years (EY=3+4 yr olds) and Key Stage 1 (KS1=5+6 yr olds) they may play/learn on an activity or write for the child. Parents often interpret homework tasks and read to their children perhaps filling in a joint reading diary. In Key Stage 2 (KS2=7-11 yr olds) parents would be more monitoring but may join in as well.&lt;br /&gt;
&lt;br /&gt;
In Key stages 3 (KS3=12-14 yr olds) and 4 (KS4=15+16 yr olds) this changes to more of a monitoring/awareness role where a parent would expect to have a summary report of attendance, attainment and general achievement on a weekly/monthly/termly or annual basis. Parents will often be asked to sign and write back comments about this review report.&lt;br /&gt;
&lt;br /&gt;
In all Key Stages there is a great need for parents to receive communication from the school which they can confirm they have received by signing a form. In some cases this may also involve making choices from a list. It may also involve payment for a trip or disco being returned so there could be the possibility of electronic payments. Also in all Key Satges there may be a home-school agreement which may be signed up to. Could this form part of a site policy system that incorporates a tickable list of activities the parent agrees to the child using (blogs/wikis/forums etc.)?&lt;br /&gt;
&lt;br /&gt;
Parent&#039;s evenings often involve complex booking systems that attempt to get parent&#039;s and teachers together. Easy for EY/KS1/KS2 very difficult for KS3/KS4. Wow would this help if it was built into the Learning Platform.&lt;br /&gt;
&lt;br /&gt;
In some cases there needs to be confidential communication between the parent and the teacher without the child being party to this. It may involve teaching and learning but could also involve a behaviour or medical issue. Often this may be done via a sealed letter or face to face. &lt;br /&gt;
&lt;br /&gt;
The latest incarnation of OfSTED with the Self Review Framework (SEF) there is a greater emphasis on schools gathering parent voice via surveys and discussion. There is a clear match here with parents have access to parental votes, questionnaires and discussions and for schools to be able to publish news, results and reports back to parents.&lt;br /&gt;
&lt;br /&gt;
In the UK the LP framework and agenda as being pushed by the DfES via Becta emphasises that within the mandatory groups and roles functionality the parent role is likely to be required to meet the LP Framework procurement standard.&lt;br /&gt;
&lt;br /&gt;
Again in the UK, parents have their own independent right of access to a child&#039;s educational records. Obviously, children&#039;s records must not be made available to other parties, including the parents of other children in the same class. Thus it would be necessary to associate parent accounts with their own child&#039;s accounts in such a way that they could, if so desired, have read access to their child&#039;s grades, answers and contributions, but generally not those of other children - this may be problematic in the case of wiki activities or forum posts.&lt;br /&gt;
&lt;br /&gt;
There is some concern that children&#039;s forum contributions etc may be constrained if their parents are able to read all that they write; this may be particularly problematic in areas such as Personal, Social and Health Education (PSHE), where some schools may choose to use obfuscated usernames.&lt;br /&gt;
&lt;br /&gt;
===Manager===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Weekly Seminar Leader===&lt;br /&gt;
&#039;&#039;In a university seminar, typically 8-15 students in their 3rd/4th year, each student is responsible for leading one topic in a study series.  I ask each student to research 5-10 resources, then give a powerpoint presentation to the other students.  This is followed by an in-class discussion and then online homework.  The homework involves some fun quiz questions and then some reflective journal questions.  I ask each seminar leader to prepare the quiz questions and journal questions as well as their presentation.  To do that, I would like to assign activity-making/authoring roles to the student--either for a short period, or for duration of the whole course.  Thus &amp;quot;Allow Quiz Authoring Role&amp;quot; or &amp;quot;Allow Assignment Authoring Role&amp;quot; at the course level or, if possible, even the Topic level (in a topic or week format course) would be important.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Mentor/Mentee===&lt;br /&gt;
&#039;&#039;Please add text here...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Community-Designed Rating Criteria===&lt;br /&gt;
&#039;&#039;The gradebook tends to be the domain of the teacher.  What if community/peer ratings/marks could also be entered there? What if peer assessment criteria could be designed by the students, not just the teacher?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Visitor===&lt;br /&gt;
&lt;br /&gt;
This would be a role whereby one could allow a visitor to visit one&#039;s classroom. This might be a colleague interested in seeing your course, or a journalist who might be writing an article about one&#039;s site. They should not be able to see the names of any students anywhere (eg recent activity, forum posts) for privacy reasons. They should be able to try out things like quizzes, and lessons but no grades would be recorded (like in teacher preview mode). They would not be able to participate in choices and forums but could view them. It would be read only in a way like former-student role below but without access to a particular student&#039;s records that former student role would grant.&lt;br /&gt;
&lt;br /&gt;
===Guest Speaker===&lt;br /&gt;
&lt;br /&gt;
This role would be similar to the Visitor role above, but would allow seeing student names, and also allow both reading and posting to a specific forum or forums. We often have &amp;quot;guest speakers&amp;quot; who read and respond to student forum posts. Right now we have to add them as students, which isn&#039;t ideal.&lt;br /&gt;
&lt;br /&gt;
===Former Student===&lt;br /&gt;
This role would be of particular use for courses with rolling enrollments. This role would be one where a student had completed all of the requirements of a course (ie assignments, quizzes etc.) but wished to have continued access to the course material for review or consultation. The key factor is that one would give access to the completed student to the notes he read, his work and the teacher&#039;s comments on it, but he would not be allowed to do anything that would take up the teacher&#039;s time. In other words, a sort-of read-only access to the course. How forums, which might contain pertinent information and would continue to grow, would be handled is a question. Perhaps the student would be shown only what was in the forums at the time he completed the course. He would not be allowed to see any new posts or add any himself. Same thing for database and glossary entries. In other words, a snapshot of the course at the time his regular enrollment ended. He shouldn&#039;t be able to see the names or profiles of any newly enrolled students for privacy reasons-hence the restrictions on forum access. One issue that would have to be dealt with would be changes to existing modules-such as resources. Does the student get access to the module as it was or as it is? We have no versioning of resources in Moodle so this would be a problem. What about a teacher changing a quiz question so that the answer is different? What would a former student see?&lt;br /&gt;
&lt;br /&gt;
===Alumnus=== An ALUMNUS should be able to search for all other ALUMNI of the school, interact with them and be enrolled in a seperate course - which is like a META course with all the content of his learning and interaction - as well as capabilities to be a part of this ALUMNI only course.  All the teachers of courses during school years should automatically be a part of the ALUMNI course .. which means when an ALUMNUS is enrolled in a course, the original teachers of all his courses get enrolled ?  --[[User:Anil Sharma|Anil Sharma]] 20:54, 15 July 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Librarian===&lt;br /&gt;
&lt;br /&gt;
Reference Librarians have an active role in most of the courses taught at some schools such as Earlham College (with Bibliographic Instruction). The Librarian role within Moodle could encompass default read access to all courses (unless prohibited by course teacher) and read access to all components of the course unless access is barred (again by teacher). The Librarians would also perhaps have a block called perhaps Reference Services or Reference Desk with write access where they could deposit resources. Also this block might have a chat applet whereby enrolled students could chat to the Reference Librarian on duty about their bibliographic research needs.&lt;br /&gt;
&lt;br /&gt;
In schools there is often a book review system. This may be covered by the lending system database but may not in which case a librarian may neeed to have a course area they can create a database template to handle the reviews in which case they may have a normal teacher style role? Off topic but course an integration with common schools database systems would be great.&lt;br /&gt;
&lt;br /&gt;
===Teacher===&lt;br /&gt;
&lt;br /&gt;
Teachers should have read access to other Teacher&#039;s courses unless explictly prohibited. They should be able to set parts of their own course to be totally private (perhaps even to admin?). Just as each activity can currently be set to have group access, each activity could have a permissions field. Teachers could set default permissions for all activities on their course (eg they might disallow Librarian access for example) and then change the access permission for an individual activity. &lt;br /&gt;
&lt;br /&gt;
I think that what is needed is a simple heirarchy of permissions and levels of granularity.&lt;br /&gt;
&lt;br /&gt;
I would take issue with &amp;quot;teachers should have read access to other teacher&#039;s courses unless explicitly prohibited.&amp;quot; This is a violation of the students&#039; privacy as how they perform and what they do in one class isn&#039;t the business of another teacher. Moreover, in the real world a teacher wouldn&#039;t suddenly go sit in on a colleague&#039;s class without asking permission first. I would not have appreciated such an invasion of privacy as either a teacher or a student. It could be an option, but shouldn&#039;t be default.--[[User:N Hansen|N Hansen]] 19:54, 12 June 2006 (WST)&lt;br /&gt;
&lt;br /&gt;
===Community Education Tutors/Trainers===&lt;br /&gt;
Teachers may be community adult education trainers making use of a school moodle so must only have access to their courses unless given access elsewhere. They would not necessarily get the default teacher privileges.&lt;br /&gt;
&lt;br /&gt;
===Secretary/Student Worker===&lt;br /&gt;
&lt;br /&gt;
We often have faculty who want their departmental secretary or student worker to scan and upload files and perhaps create resources. Currently they have to be given teacher access to the course. This is dangerous from a FERPA standpoint since they could easily get access to grades.&lt;br /&gt;
&lt;br /&gt;
===Teaching Assistant===&lt;br /&gt;
&lt;br /&gt;
Our Faculty frequently have undergraduate students acting as Teaching Assistants. These students need to be able to add resources, create assignments, and possibly grade assignments. However, due to FERPA they cannot have access to other students&#039; overall grade information. I think the requirements here are slightly different than those of Secretary/Student Worker&lt;br /&gt;
&lt;br /&gt;
===Student - FERPA rights===&lt;br /&gt;
&lt;br /&gt;
A student that has asserted their FERPA rights to non-disclosure.  Typically includes not publishing their name&lt;br /&gt;
in any public place.  Could include this student only being seen with an &amp;quot;alias&amp;quot; within course spaces.  Is this an attribute rather&lt;br /&gt;
than a role?&lt;br /&gt;
&lt;br /&gt;
===Help Desk===&lt;br /&gt;
&lt;br /&gt;
Help desk agents that have read access for the purposes of trouble shooting.  Some care in placing this role within a hierarchy&lt;br /&gt;
of inheritance is needed, full access will be problematic with FERPA.&lt;br /&gt;
&lt;br /&gt;
===Admin - Catgory based===&lt;br /&gt;
&lt;br /&gt;
Basically a person in between full Admin and Creator that has the permissions of an Admin but only with respect to courses and students. Currently a Creator has permissions site-wide which does not always meet the requirements of a given organisation (e.g. Department A may not be happy that a person from Department B can create/modify courses within Department A&#039;s area). The ability to designate a Creator within a specific category would allow areas to be set up for a faculty/department/organisation and allow the Admin for that area to create/delete courses, upload users, add site-wide entries to the calendar etc.&lt;br /&gt;
&lt;br /&gt;
===Process Roles===&lt;br /&gt;
&lt;br /&gt;
organising the learning process for a group you wish to have the choice to place students in differnt roles: examples of this are:&lt;br /&gt;
* Give a student the role of forum-moderator with edit and chunk-rights&lt;br /&gt;
* Give students different roles &amp;amp; rights in a Webquest design (and change these roles next week&lt;br /&gt;
* Give students different resources, depending of their roles in a rolegame/simulation&lt;br /&gt;
* Give a student the rights to create the section content of next week (and only that week..)&lt;br /&gt;
&lt;br /&gt;
==Things to finish for 1.7 Beta==&lt;br /&gt;
&#039;&#039;&#039;18 Sept 2006&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
#Remove core references to user_student, user_teacher, user_admin, user_coursecreator tables.  [Yu]&lt;br /&gt;
#Address function: isteacher, isadmin, isstudent [Yu]&lt;br /&gt;
#Remove &amp;quot;view&amp;quot; capabilities from all modules unless required [Vy]&lt;br /&gt;
#Remove all old references from remaining Blocks [Vy]&lt;br /&gt;
#Metacourses [Skodak]&lt;br /&gt;
#Add risks to GUI[Skodak]&lt;br /&gt;
#Enrolment plugins  [Martin and Alastair]&lt;br /&gt;
#[[Stats_roles_1.7|Statistics]] [Penny]&lt;br /&gt;
#Fix Loginas&lt;br /&gt;
#Add category-level assigns [Yu]&lt;br /&gt;
#[[Backup_roles_1.7|Backups]] [Eloy?]&lt;br /&gt;
&lt;br /&gt;
===Proposal for interface enhancement===&lt;br /&gt;
Martin asked some questions, here are my answers. The sketches below are not worked out proposals. Their task is to visualize the idea. The exact colours and functionality may be defined after possible agreement about the proposals. The Green, orange and red columns support the meaning of the options from &amp;quot;allow&amp;quot; to &amp;quot;prohibit&amp;quot; (If you may want to see larger images please click onto the image or the &amp;quot;Enlarge&amp;quot; icon below the image.)&lt;br /&gt;
&lt;br /&gt;
The list of possible settings is very long and &#039;&#039; &amp;quot;... the problem is not to overwhelm people with information&amp;quot; &#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
[[Image:01_moodle_define_roles_structured.png|thumb=01_moodle_define_roles_structured_pre.png]]&lt;br /&gt;
&lt;br /&gt;
1) One proposal is to use colour to structure the sections and the columns. Picture 1 shows that the user can keep a much better overview when the list is divided into meaningful different coloured columns and clear sections.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:02_moodle_define_roles_collapsed.png|thumb=02_moodle_define_roles_collapsed_pre.png]]&lt;br /&gt;
&lt;br /&gt;
2) A second proposal is to reduce the amount of information the user is shown at the same time. The YUI interface library offers great support to show/hide sections of the page by clicking on specific elements. &lt;br /&gt;
&lt;br /&gt;
For example click on an icon beside the sub heading &amp;quot;Course categories&amp;quot; and show/hide all table rows with the CLASS &amp;quot;course-category&amp;quot;.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:03_moodle_define_roles_tooltip.png|thumb=03_moodle_define_roles_tooltip_pre.png]]&lt;br /&gt;
&lt;br /&gt;
3) &#039;&#039; &amp;quot;The main problem is the last column for risk ... we were thinking of putting little icons in there ...&amp;quot; &#039;&#039;&lt;br /&gt;
Icons are good when they tell the user more about possible actions/meanings then the letters. I am not sure if this is the case here. For both - icons or letters - the YUI tool-tip function would be able to give the user valuable information about the meaning.&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Hardening new Roles system]]&lt;br /&gt;
*[[Roles and modules]]&lt;br /&gt;
*Using Moodle course:&lt;br /&gt;
**[http://moodle.org/mod/forum/view.php?f=941 Roles and Capabilities forum]&lt;br /&gt;
**Key discussions at Using Moodle forums:&lt;br /&gt;
***[http://moodle.org/mod/forum/discuss.php?d=38788 Roles and Permissions architecture]&lt;br /&gt;
***[http://moodle.org/mod/forum/discuss.php?d=56302#256313 An example of admin roles as set in the database]&lt;br /&gt;
&lt;br /&gt;
[[Category:Roles]]&lt;br /&gt;
[[Category:Roles]]&lt;br /&gt;
&lt;br /&gt;
[[fr:Developpement:Roles]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6104</id>
		<title>MNet</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6104"/>
		<updated>2007-01-23T20:44:36Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Key config variables and functions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 1.8}}&lt;br /&gt;
&lt;br /&gt;
Random notes for Moodle Network. Should get these organised...&lt;br /&gt;
&lt;br /&gt;
* Documentation for administrators is here [[Moodle Network]]&lt;br /&gt;
* Some old documentation about the initial planning and dev&lt;br /&gt;
** [[Community_hub]]&lt;br /&gt;
** [[Community_hub_technotes]]&lt;br /&gt;
** [[Community_hub_progress]]&lt;br /&gt;
&lt;br /&gt;
=Key config variables and functions=&lt;br /&gt;
&lt;br /&gt;
     // that mnethostid should &amp;quot;local&amp;quot; users have?&lt;br /&gt;
     // this is guaranteed to be set, except during the 1.7-&amp;gt;1.8 upgrade&lt;br /&gt;
     $id = $CFG-&amp;gt;mnet_localhost_id; &lt;br /&gt;
     &lt;br /&gt;
     // a quick way to check if our user is local&lt;br /&gt;
     is_mnet_remote_user($user); &lt;br /&gt;
     // internally wis_mnet_remote_user() does&lt;br /&gt;
     // if ($user-&amp;gt;mnethostid == $CFG-&amp;gt;mnet_localhost_id)&lt;br /&gt;
&lt;br /&gt;
     // Are we listening to mnet requests? Nothing else works if we aren&#039;t.&lt;br /&gt;
     if ($CFG-&amp;gt;mnet_dispatcher_mode === &#039;strict&#039;) {&lt;br /&gt;
         // Moodle is listening to mnet requests. Nothing else works if we aren&#039;t.&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
     // Are we allowing remote users in via auth/mnet?&lt;br /&gt;
     if (is_enabled_auth(&#039;mnet&#039;)) {&lt;br /&gt;
          // yes indeed&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
     // Will auth/mnet autocreate new user accts?&lt;br /&gt;
     if (get_config(&#039;auth/mnet&#039;, &#039;auto_add_remote_users&#039;)) {&lt;br /&gt;
         // yes it will!&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
=Protocols=&lt;br /&gt;
&lt;br /&gt;
==MNET handshake==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authentication/SSO==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Enrolment==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=To Do=&lt;br /&gt;
&lt;br /&gt;
Some immediate items that would add polish without major surgery&lt;br /&gt;
&lt;br /&gt;
* Exchange more enrolment info at log-entry exchange time on cron&lt;br /&gt;
* Special default role&lt;br /&gt;
** Add a new &amp;quot;remote student&amp;quot; role&lt;br /&gt;
** Add a config var to enrol/mnet: &amp;quot;defaultremoterole&amp;quot; to use &amp;quot;remote student&amp;quot;&lt;br /&gt;
** Add a config var to the courses table to optionally override defaultremoterole&lt;br /&gt;
* Nicer CSS in the &amp;quot;my courses&amp;quot; listing in moodle homepage for remote hosts and remote courses. See course/lib.php print_remote_course() and print_remote_host().&lt;br /&gt;
&lt;br /&gt;
=Roadmap=&lt;br /&gt;
&lt;br /&gt;
A bit more work, and a whole lot more features. From easy to hard...&lt;br /&gt;
&lt;br /&gt;
* Better per-host stats and log views for administrators. This is relatively easy using data we already have.&lt;br /&gt;
* In mod/forum craft a special URL for remote users so that the post URL is in the wantsurl parameter, so they can bounce-off their IDP in one go. &lt;br /&gt;
** According to Jonathan Harker, this requires that we modify jump to accept the remote wwwroot as a parameter. Also: will this be safe enough?&lt;br /&gt;
* Display aggregated calendar on the IDP&lt;br /&gt;
* Exchange grades. Needs a bit of design.&lt;br /&gt;
* Build a SCORM/IMSCP/MoodleZip repository scheme.&lt;br /&gt;
** MartinL has some ideas on how to get this done in easy and super-scalable.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6103</id>
		<title>MNet</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6103"/>
		<updated>2007-01-23T20:29:01Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 1.8}}&lt;br /&gt;
&lt;br /&gt;
Random notes for Moodle Network. Should get these organised...&lt;br /&gt;
&lt;br /&gt;
* Documentation for administrators is here [[Moodle Network]]&lt;br /&gt;
* Some old documentation about the initial planning and dev&lt;br /&gt;
** [[Community_hub]]&lt;br /&gt;
** [[Community_hub_technotes]]&lt;br /&gt;
** [[Community_hub_progress]]&lt;br /&gt;
&lt;br /&gt;
=Key config variables and functions=&lt;br /&gt;
&lt;br /&gt;
     // that mnethostid should &amp;quot;local&amp;quot; users have?&lt;br /&gt;
     // this is guaranteed to be set, except during the 1.7-&amp;gt;1.8 upgrade&lt;br /&gt;
     $id = $CFG-&amp;gt;mnet_localhost_id; &lt;br /&gt;
     &lt;br /&gt;
     // a quick way to check if our user is local&lt;br /&gt;
     is_mnet_remote_user($user); &lt;br /&gt;
     // internally wis_mnet_remote_user() does&lt;br /&gt;
     // if ($user-&amp;gt;mnethostid == $CFG-&amp;gt;mnet_localhost_id)&lt;br /&gt;
&lt;br /&gt;
     // Are we listening to mnet requests? Nothing else works if we aren&#039;t.&lt;br /&gt;
     if ($CFG-&amp;gt;mnet_dispatcher_mode === &#039;strict&#039;) {&lt;br /&gt;
         // Moodle is listening to mnet requests. Nothing else works if we aren&#039;t.&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
     // Are we allowing remote users in via auth/mnet?&lt;br /&gt;
     // this is a bit more involved -- we should have a function&lt;br /&gt;
     // CFG-&amp;gt;auth_plugins_enabled is guaranteed to be set, except during the 1.7-&amp;gt;1.8 upgrade&lt;br /&gt;
      $auths = explode(&#039;,&#039;, $CFG-&amp;gt;auth_plugins_enabled);&lt;br /&gt;
      if (in_array(&#039;mnet&#039;, $auths)) {&lt;br /&gt;
         // yes, auth/mnet is active  &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
     // Will auth/mnet autocreate new user accts?&lt;br /&gt;
     if (get_config(&#039;auth/mnet&#039;, &#039;auto_add_remote_users&#039;)) {&lt;br /&gt;
         // yes it will!&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
=Protocols=&lt;br /&gt;
&lt;br /&gt;
==MNET handshake==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authentication/SSO==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Enrolment==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=To Do=&lt;br /&gt;
&lt;br /&gt;
Some immediate items that would add polish without major surgery&lt;br /&gt;
&lt;br /&gt;
* Exchange more enrolment info at log-entry exchange time on cron&lt;br /&gt;
* Special default role&lt;br /&gt;
** Add a new &amp;quot;remote student&amp;quot; role&lt;br /&gt;
** Add a config var to enrol/mnet: &amp;quot;defaultremoterole&amp;quot; to use &amp;quot;remote student&amp;quot;&lt;br /&gt;
** Add a config var to the courses table to optionally override defaultremoterole&lt;br /&gt;
* Nicer CSS in the &amp;quot;my courses&amp;quot; listing in moodle homepage for remote hosts and remote courses. See course/lib.php print_remote_course() and print_remote_host().&lt;br /&gt;
&lt;br /&gt;
=Roadmap=&lt;br /&gt;
&lt;br /&gt;
A bit more work, and a whole lot more features. From easy to hard...&lt;br /&gt;
&lt;br /&gt;
* Better per-host stats and log views for administrators. This is relatively easy using data we already have.&lt;br /&gt;
* In mod/forum craft a special URL for remote users so that the post URL is in the wantsurl parameter, so they can bounce-off their IDP in one go. &lt;br /&gt;
** According to Jonathan Harker, this requires that we modify jump to accept the remote wwwroot as a parameter. Also: will this be safe enough?&lt;br /&gt;
* Display aggregated calendar on the IDP&lt;br /&gt;
* Exchange grades. Needs a bit of design.&lt;br /&gt;
* Build a SCORM/IMSCP/MoodleZip repository scheme.&lt;br /&gt;
** MartinL has some ideas on how to get this done in easy and super-scalable.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6102</id>
		<title>MNet</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6102"/>
		<updated>2007-01-23T20:28:43Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 1.8}}&lt;br /&gt;
&lt;br /&gt;
Random notes for Moodle Network. Should get these organised...&lt;br /&gt;
&lt;br /&gt;
* Documentation for end users is here [[Moodle Network]]&lt;br /&gt;
* Some old documentation about the initial planning and dev&lt;br /&gt;
** [[Community_hub]]&lt;br /&gt;
** [[Community_hub_technotes]]&lt;br /&gt;
** [[Community_hub_progress]]&lt;br /&gt;
&lt;br /&gt;
=Key config variables and functions=&lt;br /&gt;
&lt;br /&gt;
     // that mnethostid should &amp;quot;local&amp;quot; users have?&lt;br /&gt;
     // this is guaranteed to be set, except during the 1.7-&amp;gt;1.8 upgrade&lt;br /&gt;
     $id = $CFG-&amp;gt;mnet_localhost_id; &lt;br /&gt;
     &lt;br /&gt;
     // a quick way to check if our user is local&lt;br /&gt;
     is_mnet_remote_user($user); &lt;br /&gt;
     // internally wis_mnet_remote_user() does&lt;br /&gt;
     // if ($user-&amp;gt;mnethostid == $CFG-&amp;gt;mnet_localhost_id)&lt;br /&gt;
&lt;br /&gt;
     // Are we listening to mnet requests? Nothing else works if we aren&#039;t.&lt;br /&gt;
     if ($CFG-&amp;gt;mnet_dispatcher_mode === &#039;strict&#039;) {&lt;br /&gt;
         // Moodle is listening to mnet requests. Nothing else works if we aren&#039;t.&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
     // Are we allowing remote users in via auth/mnet?&lt;br /&gt;
     // this is a bit more involved -- we should have a function&lt;br /&gt;
     // CFG-&amp;gt;auth_plugins_enabled is guaranteed to be set, except during the 1.7-&amp;gt;1.8 upgrade&lt;br /&gt;
      $auths = explode(&#039;,&#039;, $CFG-&amp;gt;auth_plugins_enabled);&lt;br /&gt;
      if (in_array(&#039;mnet&#039;, $auths)) {&lt;br /&gt;
         // yes, auth/mnet is active  &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
     // Will auth/mnet autocreate new user accts?&lt;br /&gt;
     if (get_config(&#039;auth/mnet&#039;, &#039;auto_add_remote_users&#039;)) {&lt;br /&gt;
         // yes it will!&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
=Protocols=&lt;br /&gt;
&lt;br /&gt;
==MNET handshake==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authentication/SSO==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Enrolment==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=To Do=&lt;br /&gt;
&lt;br /&gt;
Some immediate items that would add polish without major surgery&lt;br /&gt;
&lt;br /&gt;
* Exchange more enrolment info at log-entry exchange time on cron&lt;br /&gt;
* Special default role&lt;br /&gt;
** Add a new &amp;quot;remote student&amp;quot; role&lt;br /&gt;
** Add a config var to enrol/mnet: &amp;quot;defaultremoterole&amp;quot; to use &amp;quot;remote student&amp;quot;&lt;br /&gt;
** Add a config var to the courses table to optionally override defaultremoterole&lt;br /&gt;
* Nicer CSS in the &amp;quot;my courses&amp;quot; listing in moodle homepage for remote hosts and remote courses. See course/lib.php print_remote_course() and print_remote_host().&lt;br /&gt;
&lt;br /&gt;
=Roadmap=&lt;br /&gt;
&lt;br /&gt;
A bit more work, and a whole lot more features. From easy to hard...&lt;br /&gt;
&lt;br /&gt;
* Better per-host stats and log views for administrators. This is relatively easy using data we already have.&lt;br /&gt;
* In mod/forum craft a special URL for remote users so that the post URL is in the wantsurl parameter, so they can bounce-off their IDP in one go. &lt;br /&gt;
** According to Jonathan Harker, this requires that we modify jump to accept the remote wwwroot as a parameter. Also: will this be safe enough?&lt;br /&gt;
* Display aggregated calendar on the IDP&lt;br /&gt;
* Exchange grades. Needs a bit of design.&lt;br /&gt;
* Build a SCORM/IMSCP/MoodleZip repository scheme.&lt;br /&gt;
** MartinL has some ideas on how to get this done in easy and super-scalable.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6101</id>
		<title>MNet</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6101"/>
		<updated>2007-01-23T20:15:55Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Key config variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 1.8}}&lt;br /&gt;
&lt;br /&gt;
Random notes for Moodle Network. Should get these organised...&lt;br /&gt;
&lt;br /&gt;
* Documentation for end users is here [Moodle Network]&lt;br /&gt;
* Some old documentation about the initial planning and dev&lt;br /&gt;
** [[Community_hub]]&lt;br /&gt;
** [[Community_hub_technotes]]&lt;br /&gt;
** [[Community_hub_progress]]&lt;br /&gt;
&lt;br /&gt;
=Key config variables and functions=&lt;br /&gt;
&lt;br /&gt;
     // that mnethostid should &amp;quot;local&amp;quot; users have?&lt;br /&gt;
     // this is guaranteed to be set, except during the 1.7-&amp;gt;1.8 upgrade&lt;br /&gt;
     $id = $CFG-&amp;gt;mnet_localhost_id; &lt;br /&gt;
     &lt;br /&gt;
     // a quick way to check if our user is local&lt;br /&gt;
     is_mnet_remote_user($user); &lt;br /&gt;
     // internally wis_mnet_remote_user() does&lt;br /&gt;
     // if ($user-&amp;gt;mnethostid == $CFG-&amp;gt;mnet_localhost_id)&lt;br /&gt;
&lt;br /&gt;
     // Are we listening to mnet requests? Nothing else works if we aren&#039;t.&lt;br /&gt;
     if ($CFG-&amp;gt;mnet_dispatcher_mode === &#039;strict&#039;) {&lt;br /&gt;
         // Moodle is listening to mnet requests. Nothing else works if we aren&#039;t.&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
     // Are we allowing remote users in via auth/mnet?&lt;br /&gt;
     // this is a bit more involved -- we should have a function&lt;br /&gt;
     // CFG-&amp;gt;auth_plugins_enabled is guaranteed to be set, except during the 1.7-&amp;gt;1.8 upgrade&lt;br /&gt;
      $auths = explode(&#039;,&#039;, $CFG-&amp;gt;auth_plugins_enabled);&lt;br /&gt;
      if (in_array(&#039;mnet&#039;, $auths)) {&lt;br /&gt;
         // yes, auth/mnet is active  &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
     // Will auth/mnet autocreate new user accts?&lt;br /&gt;
     if (get_config(&#039;auth/mnet&#039;, &#039;auto_add_remote_users&#039;)) {&lt;br /&gt;
         // yes it will!&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
=Protocols=&lt;br /&gt;
&lt;br /&gt;
==MNET handshake==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authentication/SSO==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Enrolment==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=To Do=&lt;br /&gt;
&lt;br /&gt;
Some immediate items that would add polish without major surgery&lt;br /&gt;
&lt;br /&gt;
* Exchange more enrolment info at log-entry exchange time on cron&lt;br /&gt;
* Special default role&lt;br /&gt;
** Add a new &amp;quot;remote student&amp;quot; role&lt;br /&gt;
** Add a config var to enrol/mnet: &amp;quot;defaultremoterole&amp;quot; to use &amp;quot;remote student&amp;quot;&lt;br /&gt;
** Add a config var to the courses table to optionally override defaultremoterole&lt;br /&gt;
* Nicer CSS in the &amp;quot;my courses&amp;quot; listing in moodle homepage for remote hosts and remote courses. See course/lib.php print_remote_course() and print_remote_host().&lt;br /&gt;
&lt;br /&gt;
=Roadmap=&lt;br /&gt;
&lt;br /&gt;
A bit more work, and a whole lot more features. From easy to hard...&lt;br /&gt;
&lt;br /&gt;
* Better per-host stats and log views for administrators. This is relatively easy using data we already have.&lt;br /&gt;
* In mod/forum craft a special URL for remote users so that the post URL is in the wantsurl parameter, so they can bounce-off their IDP in one go. &lt;br /&gt;
** According to Jonathan Harker, this requires that we modify jump to accept the remote wwwroot as a parameter. Also: will this be safe enough?&lt;br /&gt;
* Display aggregated calendar on the IDP&lt;br /&gt;
* Exchange grades. Needs a bit of design.&lt;br /&gt;
* Build a SCORM/IMSCP/MoodleZip repository scheme.&lt;br /&gt;
** MartinL has some ideas on how to get this done in easy and super-scalable.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6100</id>
		<title>MNet</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6100"/>
		<updated>2007-01-23T20:03:58Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 1.8}}&lt;br /&gt;
&lt;br /&gt;
Random notes for Moodle Network. Should get these organised...&lt;br /&gt;
&lt;br /&gt;
* Documentation for end users is here [Moodle Network]&lt;br /&gt;
* Some old documentation about the initial planning and dev&lt;br /&gt;
** [[Community_hub]]&lt;br /&gt;
** [[Community_hub_technotes]]&lt;br /&gt;
** [[Community_hub_progress]]&lt;br /&gt;
&lt;br /&gt;
=Key config variables=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Protocols=&lt;br /&gt;
&lt;br /&gt;
==MNET handshake==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authentication/SSO==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Enrolment==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=To Do=&lt;br /&gt;
&lt;br /&gt;
Some immediate items that would add polish without major surgery&lt;br /&gt;
&lt;br /&gt;
* Exchange more enrolment info at log-entry exchange time on cron&lt;br /&gt;
* Special default role&lt;br /&gt;
** Add a new &amp;quot;remote student&amp;quot; role&lt;br /&gt;
** Add a config var to enrol/mnet: &amp;quot;defaultremoterole&amp;quot; to use &amp;quot;remote student&amp;quot;&lt;br /&gt;
** Add a config var to the courses table to optionally override defaultremoterole&lt;br /&gt;
* Nicer CSS in the &amp;quot;my courses&amp;quot; listing in moodle homepage for remote hosts and remote courses. See course/lib.php print_remote_course() and print_remote_host().&lt;br /&gt;
&lt;br /&gt;
=Roadmap=&lt;br /&gt;
&lt;br /&gt;
A bit more work, and a whole lot more features. From easy to hard...&lt;br /&gt;
&lt;br /&gt;
* Better per-host stats and log views for administrators. This is relatively easy using data we already have.&lt;br /&gt;
* In mod/forum craft a special URL for remote users so that the post URL is in the wantsurl parameter, so they can bounce-off their IDP in one go. &lt;br /&gt;
** According to Jonathan Harker, this requires that we modify jump to accept the remote wwwroot as a parameter. Also: will this be safe enough?&lt;br /&gt;
* Display aggregated calendar on the IDP&lt;br /&gt;
* Exchange grades. Needs a bit of design.&lt;br /&gt;
* Build a SCORM/IMSCP/MoodleZip repository scheme.&lt;br /&gt;
** MartinL has some ideas on how to get this done in easy and super-scalable.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6099</id>
		<title>MNet</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6099"/>
		<updated>2007-01-22T22:23:49Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Moodle 1.8}}&lt;br /&gt;
&lt;br /&gt;
Random notes for Moodle Network. Should get these organised...&lt;br /&gt;
&lt;br /&gt;
* Documentation for end users is here [Moodle Network]&lt;br /&gt;
* Some old documentation about the initial planning and dev&lt;br /&gt;
** [[Community_hub]]&lt;br /&gt;
** [[Community_hub_technotes]]&lt;br /&gt;
** [[Community_hub_progress]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=To Do=&lt;br /&gt;
&lt;br /&gt;
Some immediate items that would add polish without major surgery&lt;br /&gt;
&lt;br /&gt;
* Exchange more enrolment info at log-entry exchange time on cron&lt;br /&gt;
* Special default role&lt;br /&gt;
** Add a new &amp;quot;remote student&amp;quot; role&lt;br /&gt;
** Add a config var to enrol/mnet: &amp;quot;defaultremoterole&amp;quot; to use &amp;quot;remote student&amp;quot;&lt;br /&gt;
** Add a config var to the courses table to optionally override defaultremoterole&lt;br /&gt;
* Nicer CSS in the &amp;quot;my courses&amp;quot; listing in moodle homepage for remote hosts and remote courses. See course/lib.php print_remote_course() and print_remote_host().&lt;br /&gt;
&lt;br /&gt;
=Roadmap=&lt;br /&gt;
&lt;br /&gt;
A bit more work, and a whole lot more features. From easy to hard...&lt;br /&gt;
&lt;br /&gt;
* Better per-host stats and log views for administrators. This is relatively easy using data we already have.&lt;br /&gt;
* In mod/forum craft a special URL for remote users so that the post URL is in the wantsurl parameter, so they can bounce-off their IDP in one go. &lt;br /&gt;
** According to Jonathan Harker, this requires that we modify jump to accept the remote wwwroot as a parameter. Also: will this be safe enough?&lt;br /&gt;
* Display aggregated calendar on the IDP&lt;br /&gt;
* Exchange grades. Needs a bit of design.&lt;br /&gt;
* Build a SCORM/IMSCP/MoodleZip repository scheme.&lt;br /&gt;
** MartinL has some ideas on how to get this done in easy and super-scalable.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6098</id>
		<title>MNet</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6098"/>
		<updated>2007-01-22T22:22:49Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random notes for Moodle Network. Should get these organised...&lt;br /&gt;
&lt;br /&gt;
* Documentation for end users is here [Moodle Network]&lt;br /&gt;
* Some old documentation about the initial planning and dev&lt;br /&gt;
** [[Community_hub]]&lt;br /&gt;
** [[Community_hub_technotes]]&lt;br /&gt;
** [[Community_hub_progress]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=To Do=&lt;br /&gt;
&lt;br /&gt;
Some immediate items that would add polish without major surgery&lt;br /&gt;
&lt;br /&gt;
* Exchange more enrolment info at log-entry exchange time on cron&lt;br /&gt;
* Special default role&lt;br /&gt;
** Add a new &amp;quot;remote student&amp;quot; role&lt;br /&gt;
** Add a config var to enrol/mnet: &amp;quot;defaultremoterole&amp;quot; to use &amp;quot;remote student&amp;quot;&lt;br /&gt;
** Add a config var to the courses table to optionally override defaultremoterole&lt;br /&gt;
* Nicer CSS in the &amp;quot;my courses&amp;quot; listing in moodle homepage for remote hosts and remote courses. See course/lib.php print_remote_course() and print_remote_host().&lt;br /&gt;
&lt;br /&gt;
=Roadmap=&lt;br /&gt;
&lt;br /&gt;
A bit more work, and a whole lot more features. From easy to hard...&lt;br /&gt;
&lt;br /&gt;
* Better per-host stats and log views for administrators. This is relatively easy using data we already have.&lt;br /&gt;
* In mod/forum craft a special URL for remote users so that the post URL is in the wantsurl parameter, so they can bounce-off their IDP in one go. &lt;br /&gt;
** According to Jonathan Harker, this requires that we modify jump to accept the remote wwwroot as a parameter. Also: will this be safe enough?&lt;br /&gt;
* Display aggregated calendar on the IDP&lt;br /&gt;
* Exchange grades. Needs a bit of design.&lt;br /&gt;
* Build a SCORM/IMSCP/MoodleZip repository scheme.&lt;br /&gt;
** MartinL has some ideas on how to get this done in easy and super-scalable.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6097</id>
		<title>MNet</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6097"/>
		<updated>2007-01-22T22:22:24Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random notes for Moodle Network. Should get these organised...&lt;br /&gt;
&lt;br /&gt;
* Documentation for end users is here [Moodle Network]&lt;br /&gt;
* Some old documentation about the initial planning and dev&lt;br /&gt;
** [Community_hub]&lt;br /&gt;
** [Community_hub_technotes]&lt;br /&gt;
** [Community_hub_progress]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=To Do=&lt;br /&gt;
&lt;br /&gt;
Some immediate items that would add polish without major surgery&lt;br /&gt;
&lt;br /&gt;
* Exchange more enrolment info at log-entry exchange time on cron&lt;br /&gt;
* Special default role&lt;br /&gt;
** Add a new &amp;quot;remote student&amp;quot; role&lt;br /&gt;
** Add a config var to enrol/mnet: &amp;quot;defaultremoterole&amp;quot; to use &amp;quot;remote student&amp;quot;&lt;br /&gt;
** Add a config var to the courses table to optionally override defaultremoterole&lt;br /&gt;
* Nicer CSS in the &amp;quot;my courses&amp;quot; listing in moodle homepage for remote hosts and remote courses. See course/lib.php print_remote_course() and print_remote_host().&lt;br /&gt;
&lt;br /&gt;
=Roadmap=&lt;br /&gt;
&lt;br /&gt;
A bit more work, and a whole lot more features. From easy to hard...&lt;br /&gt;
&lt;br /&gt;
* Better per-host stats and log views for administrators. This is relatively easy using data we already have.&lt;br /&gt;
* In mod/forum craft a special URL for remote users so that the post URL is in the wantsurl parameter, so they can bounce-off their IDP in one go. &lt;br /&gt;
** According to Jonathan Harker, this requires that we modify jump to accept the remote wwwroot as a parameter. Also: will this be safe enough?&lt;br /&gt;
* Display aggregated calendar on the IDP&lt;br /&gt;
* Exchange grades. Needs a bit of design.&lt;br /&gt;
* Build a SCORM/IMSCP/MoodleZip repository scheme.&lt;br /&gt;
** MartinL has some ideas on how to get this done in easy and super-scalable.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6096</id>
		<title>MNet</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6096"/>
		<updated>2007-01-22T22:20:53Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random notes for Moodle Network. Should get these organised...&lt;br /&gt;
&lt;br /&gt;
* Documentation for end users is here [Moodle Network]&lt;br /&gt;
* Some old documentation about the initial planning and dev is here&lt;br /&gt;
&lt;br /&gt;
=To Do=&lt;br /&gt;
&lt;br /&gt;
Some immediate items that would add polish without major surgery&lt;br /&gt;
&lt;br /&gt;
* Exchange more enrolment info at log-entry exchange time on cron&lt;br /&gt;
* Special default role&lt;br /&gt;
** Add a new &amp;quot;remote student&amp;quot; role&lt;br /&gt;
** Add a config var to enrol/mnet: &amp;quot;defaultremoterole&amp;quot; to use &amp;quot;remote student&amp;quot;&lt;br /&gt;
** Add a config var to the courses table to optionally override defaultremoterole&lt;br /&gt;
* Nicer CSS in the &amp;quot;my courses&amp;quot; listing in moodle homepage for remote hosts and remote courses. See course/lib.php print_remote_course() and print_remote_host().&lt;br /&gt;
&lt;br /&gt;
=Roadmap=&lt;br /&gt;
&lt;br /&gt;
A bit more work, and a whole lot more features. From easy to hard...&lt;br /&gt;
&lt;br /&gt;
* Better per-host stats and log views for administrators. This is relatively easy using data we already have.&lt;br /&gt;
* In mod/forum craft a special URL for remote users so that the post URL is in the wantsurl parameter, so they can bounce-off their IDP in one go. &lt;br /&gt;
** According to Jonathan Harker, this requires that we modify jump to accept the remote wwwroot as a parameter. Also: will this be safe enough?&lt;br /&gt;
* Display aggregated calendar on the IDP&lt;br /&gt;
* Exchange grades. Needs a bit of design.&lt;br /&gt;
* Build a SCORM/IMSCP/MoodleZip repository scheme.&lt;br /&gt;
** MartinL has some ideas on how to get this done in easy and super-scalable.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Developer_documentation&amp;diff=512</id>
		<title>Developer documentation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Developer_documentation&amp;diff=512"/>
		<updated>2007-01-22T22:20:29Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Documentation for core components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; New developer documentation pages should be added to the &#039;&#039;Development namespace&#039;&#039; by typing &amp;lt;code&amp;gt;Development:&amp;lt;/code&amp;gt; before the new page name i.e. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[New page name]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;If you are a developer, you probably want to change your [[Special:Preferences|preferences]] to include the Development namespace in searches.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Guidelines==&lt;br /&gt;
The following guidelines are crucial reading for anyone wanting to contribute to the Moodle code base:&lt;br /&gt;
*[[Coding|Coding guidelines]] have to be followed by all Moodle developers&lt;br /&gt;
*[[Moodle architecture]] spells out the basic design goals behind Moodle&lt;br /&gt;
*[[Interface guidelines]] aim to provide a common feel to the Moodle user interface&lt;br /&gt;
*[[CVS (developer)|Moodle CVS for developers]] explains how to work with the Moodle code in CVS&lt;br /&gt;
*[[Unit tests]] explains how to run the unit tests, and how to write new test cases.&lt;br /&gt;
*[[Tracker]] explains the Moodle Tracker for keeping track of bugs, issues, feature requests etc&lt;br /&gt;
*[[Working with the Community|Working with the Community]] explains how to engage with the dev community and discuss changes&lt;br /&gt;
&lt;br /&gt;
== Resources and tools ==&lt;br /&gt;
&lt;br /&gt;
*[[Developer FAQ]] - frequently asked questions, especially useful for newcomers to Moodle&lt;br /&gt;
*[http://tracker.moodle.org/ Moodle tracker] - bug reports, feature requests and other tracked issues&lt;br /&gt;
*[http://moodle.org/mod/forum/view.php?id=55 General developer forum]&lt;br /&gt;
*[http://moodle.cvs.sourceforge.net/moodle/moodle/ CVS code] - browse the Moodle code via the web&lt;br /&gt;
*[http://moodle.org/xref/nav.html?index.html Cross reference] - phpxref output for browsing Moodle source code&lt;br /&gt;
*[http://phpdocs.moodle.org/ Moodle PHP doc reference] - automatically generated documentation&lt;br /&gt;
*[[Database Schema|Database Schema]] - for recent releases&lt;br /&gt;
*[http://moodle.org/course/view.php?id=5#4 Development news and discussion] section of Using Moodle course&lt;br /&gt;
*[http://developer.yahoo.com/yui YUI documentation] - YUI is the official AJAX library in moodle.&lt;br /&gt;
*[[Setting up Eclipse for Moodle development]] - Eclipse is a great editor to use for php development, if you can work out how to set it up.&lt;br /&gt;
*[[Unmerged files]] - changes on the stable branch in CVS that have not been merged to HEAD&lt;br /&gt;
&lt;br /&gt;
==How you can contribute==&lt;br /&gt;
&lt;br /&gt;
The M in Moodle stands for &#039;Modular&#039;. There are many different types of components that you can contribute that can be plugged into Moodle to provide additional functionality. When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 database of Moodle modules and plugins]. The following types of plugins currently exist (in alphabetical order):&lt;br /&gt;
*[[Modules (developer)|Activity modules]]&lt;br /&gt;
*[[Admin reports|Admin reports]]&lt;br /&gt;
*[[Assignment types]]&lt;br /&gt;
*[[Authentication|Authentication methods]]&lt;br /&gt;
*[[Blocks|Blocks]]&lt;br /&gt;
*[[Course formats]]&lt;br /&gt;
*[[Database fields (developer)|Database fields]]&lt;br /&gt;
*[[Database presets]]&lt;br /&gt;
*[[Enrolment plugins (developer)|Enrolment plugins]]&lt;br /&gt;
*[[Filters|Filters]]&lt;br /&gt;
*[[Question_engine]]&lt;br /&gt;
*[[Question import/export formats]]&lt;br /&gt;
*[[Question bank|Question bank teacher docs]]&lt;br /&gt;
*[[Question_engine#Question_types|Question types developper docs]]&lt;br /&gt;
*[[Quiz reports]]&lt;br /&gt;
*[[Resource types]]&lt;br /&gt;
*[[SSO plugins]]&lt;br /&gt;
&lt;br /&gt;
There are also ways you can contribute that don&#039;t involve PHP programming:&lt;br /&gt;
*[[Themes]]&lt;br /&gt;
*[[Translation]]&lt;br /&gt;
*[[Database Schemas|Database schemas]]&lt;br /&gt;
&lt;br /&gt;
You can also help a lot by&lt;br /&gt;
*[[Tests|Testing]]&lt;br /&gt;
*[[Tracker|Participating in the bug tracker]]&lt;br /&gt;
&lt;br /&gt;
==Plans for the future==&lt;br /&gt;
Ideas for and details of planned future features of Moodle are initially discussed on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course at moodle.org. That developer discussions are intermixed with user discussions in the same forums may seem strange at first but is one of the reasons for the success of Moodle. It is important that both end-users and developers discuss the future features together.&lt;br /&gt;
&lt;br /&gt;
Once ideas begin to crystalize on the forums they can be summarized in this wiki, either as part of the [[Roadmap]] or in the form of [[Developer notes]]. These pages then form the basis for further discussion in the forums.&lt;br /&gt;
*[[Roadmap]]&lt;br /&gt;
*[[Developer notes]]&lt;br /&gt;
*[[Student projects]]&lt;br /&gt;
*[[Developer conference|Developer conferences]]&lt;br /&gt;
&lt;br /&gt;
==Documentation for core components==&lt;br /&gt;
This section is for documentation of specific components of the existing core Moodle code. Discussion of components that are under discussion or in development can be found in the [[Developer notes]] or on the [[Roadmap]].&lt;br /&gt;
&lt;br /&gt;
*[[Migration to Role-driven model|Migration to Role-driven model]] @ v[[1.7]]&lt;br /&gt;
*[[UTF-8 migration|Migration to UTF-8]] @ v[[:Category:Moodle 1.6|1.6]]&lt;br /&gt;
*[[Question engine]]&lt;br /&gt;
*[[Quiz developer docs|Quiz module]]&lt;br /&gt;
*[[SCORM schema|SCORM module 1.5 schema]]&lt;br /&gt;
*[[Authentication API]]&lt;br /&gt;
*[[Stats package]]&lt;br /&gt;
*[[Email processing]]&lt;br /&gt;
*[[Cookieless Sessions]]&lt;br /&gt;
*[[lib/formslib.php|Formslib]] for quickly writing code to display and process more accessible and secure forms.&lt;br /&gt;
*[[Moodle Network|Moodle Network]]&lt;br /&gt;
&lt;br /&gt;
==Documentation for contributed code==&lt;br /&gt;
Many Moodle users contribute code for the benefit of other Moodle users. This can take the form of new activity modules, blocks, themes, resource plug-ins, assignment plug-ins, question type plug-ins, question import/export formats, quiz report plug-ins, course formats, ... This code is initially posted on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course and then often go into the [http://cvs.sourceforge.net/viewcvs.py/moodle/contrib/ contrib area] of the Moodle [[CVS]] repository. When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 database of Moodle modules and plugins]. Developer documentation for these components should be listed here.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[http://security.moodle.org/ Moodle Security Centre]&lt;br /&gt;
*[http://moodle.com/partners/ Moodle Partners] - providers of custom Moodle development services&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[es:Documentación para Desarrolladores]]&lt;br /&gt;
[[fr:Documentation développeur]]&lt;br /&gt;
[[zh:开发者文档]]&lt;br /&gt;
[[ja:開発者ドキュメント]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6095</id>
		<title>MNet</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6095"/>
		<updated>2007-01-22T22:19:25Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random notes for Moodle Network. Should get these organised...&lt;br /&gt;
&lt;br /&gt;
* Documentation for end users is here [Moodle Network]&lt;br /&gt;
* Some old documentation about the initial planning and dev is here&lt;br /&gt;
&lt;br /&gt;
=To Do=&lt;br /&gt;
&lt;br /&gt;
Some immediate items that would add polish without major surgery&lt;br /&gt;
&lt;br /&gt;
* Exchange more enrolment info at log-entry exchange time on cron&lt;br /&gt;
* Special default role&lt;br /&gt;
** Add a new &amp;quot;remote student&amp;quot; role&lt;br /&gt;
** Add a config var to enrol/mnet: &amp;quot;defaultremoterole&amp;quot; to use &amp;quot;remote student&amp;quot;&lt;br /&gt;
** Add a config var to the courses table to optionally override defaultremoterole&lt;br /&gt;
* Nicer CSS in the &amp;quot;my courses&amp;quot; listing in moodle homepage for remote hosts and remote courses. See course/lib.php print_remote_course() and print_remote_host().&lt;br /&gt;
&lt;br /&gt;
=Roadmap=&lt;br /&gt;
&lt;br /&gt;
A bit more work, and a whole lot more features. From easy to hard...&lt;br /&gt;
&lt;br /&gt;
* Better per-host stats and log views for administrators. This is relatively easy using data we already have.&lt;br /&gt;
* In mod/forum craft a special URL for remote users so that the post URL is in the wantsurl parameter, so they can bounce-off their IDP in one go. &lt;br /&gt;
** According to Jonathan Harker, this requires that we modify jump to accept the remote wwwroot as a parameter. Also: will this be safe enough?&lt;br /&gt;
* Display aggregated calendar on the IDP&lt;br /&gt;
* Exchange grades. Needs a bit of design.&lt;br /&gt;
* Build a SCORM/IMSCP/MoodleZip repository scheme.&lt;br /&gt;
** MartinL has some ideas on how to get this done in easy and super-scalable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Administrator]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6094</id>
		<title>MNet</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6094"/>
		<updated>2007-01-22T22:15:52Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Roadmap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random notes for Moodle Network. Should get these organised...&lt;br /&gt;
&lt;br /&gt;
* Documentation for end users is here [Moodle Network]&lt;br /&gt;
* Some old documentation about the initial planning and dev is here&lt;br /&gt;
&lt;br /&gt;
=To Do=&lt;br /&gt;
&lt;br /&gt;
Some immediate items that would add polish without major surgery&lt;br /&gt;
&lt;br /&gt;
* Exchange more enrolment info at log-entry exchange time on cron&lt;br /&gt;
* Special default role&lt;br /&gt;
** Add a new &amp;quot;remote student&amp;quot; role&lt;br /&gt;
** Add a config var to enrol/mnet: &amp;quot;defaultremoterole&amp;quot; to use &amp;quot;remote student&amp;quot;&lt;br /&gt;
** Add a config var to the courses table to optionally override defaultremoterole&lt;br /&gt;
* Nicer CSS in the &amp;quot;my courses&amp;quot; listing in moodle homepage for remote hosts and remote courses. See course/lib.php print_remote_course() and print_remote_host().&lt;br /&gt;
&lt;br /&gt;
=Roadmap=&lt;br /&gt;
&lt;br /&gt;
A bit more work, and a whole lot more features. From easy to hard...&lt;br /&gt;
&lt;br /&gt;
* Better per-host stats and log views for administrators. This is relatively easy using data we already have.&lt;br /&gt;
* In mod/forum craft a special URL for remote users so that the post URL is in the wantsurl parameter, so they can bounce-off their IDP in one go. &lt;br /&gt;
** According to Jonathan Harker, this requires that we modify jump to accept the remote wwwroot as a parameter. Also: will this be safe enough?&lt;br /&gt;
* Display aggregated calendar on the IDP&lt;br /&gt;
* Exchange grades. Needs a bit of design.&lt;br /&gt;
* Build a SCORM/IMSCP/MoodleZip repository scheme.&lt;br /&gt;
** MartinL has some ideas on how to get this done in easy and super-scalable.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6093</id>
		<title>MNet</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6093"/>
		<updated>2007-01-22T22:10:08Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* ToDo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random notes for Moodle Network. Should get these organised...&lt;br /&gt;
&lt;br /&gt;
* Documentation for end users is here [Moodle Network]&lt;br /&gt;
* Some old documentation about the initial planning and dev is here&lt;br /&gt;
&lt;br /&gt;
=To Do=&lt;br /&gt;
&lt;br /&gt;
Some immediate items that would add polish without major surgery&lt;br /&gt;
&lt;br /&gt;
* Exchange more enrolment info at log-entry exchange time on cron&lt;br /&gt;
* Special default role&lt;br /&gt;
** Add a new &amp;quot;remote student&amp;quot; role&lt;br /&gt;
** Add a config var to enrol/mnet: &amp;quot;defaultremoterole&amp;quot; to use &amp;quot;remote student&amp;quot;&lt;br /&gt;
** Add a config var to the courses table to optionally override defaultremoterole&lt;br /&gt;
* Nicer CSS in the &amp;quot;my courses&amp;quot; listing in moodle homepage for remote hosts and remote courses. See course/lib.php print_remote_course() and print_remote_host().&lt;br /&gt;
&lt;br /&gt;
=Roadmap=&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6092</id>
		<title>MNet</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=MNet&amp;diff=6092"/>
		<updated>2007-01-22T22:05:49Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Random notes for Moodle Network. Should get these organised...&lt;br /&gt;
&lt;br /&gt;
* Documentation for end users is here [Moodle Network]&lt;br /&gt;
* Some old documentation about the initial planning and dev is here&lt;br /&gt;
&lt;br /&gt;
=ToDo=&lt;br /&gt;
&lt;br /&gt;
=Roadmap=&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Roadmap&amp;diff=26155</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Roadmap&amp;diff=26155"/>
		<updated>2007-01-22T21:59:01Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Version 1.8 - Expected January 2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This roadmap collects the best information about upcoming features in Moodle.   It is not 100% certain - features may change according to available funding and developers.&lt;br /&gt;
&lt;br /&gt;
== Version 1.8 - Expected January 2007 ==&lt;br /&gt;
&lt;br /&gt;
* [[Accessibility]] - Moodle.com &lt;br /&gt;
:: Compliance with all major accessibility standards&lt;br /&gt;
* [[Moodle forms library]] - Moodle.com &lt;br /&gt;
:: All forms can now use a single API for defining forms consistently and collecting data safely.&lt;br /&gt;
* [[Multi Authentication]] - Iñaki Arenaza / Jonathan Harker (Catalyst) / Martin Langhoff (Catalyst)&lt;br /&gt;
* [[Development:Customisable user profiles|Customisable User Profiles]] - Pukunui Technology&lt;br /&gt;
::Allow fields to be added to the user profile.&lt;br /&gt;
* [[Moodle Network]] - Catalyst and Moodle.com&lt;br /&gt;
:: Setup peer Moodle installations allowing users to roam across, using comprehensive SSO and transparent remote enrolments. Administrators at the originating Moodle install can see logs of remote activity. You can also run your Moodle in &amp;quot;Hub&amp;quot; mode where any Moodle install can connect and users roam across.&lt;br /&gt;
::[[Web Services API]] for Moodle communications. The Moodle Network code includes an XML-RPC call dispatcher that can expose the whole Moodle API to trusted hosts.&lt;br /&gt;
* Groups refactor - Juliette White / Nick Freear  (OU)&lt;br /&gt;
::Groups code will be reorganised to make it more flexible for the future (see 1.9)&lt;br /&gt;
* Blog commenting &lt;br /&gt;
:: You&#039;ll be able to make comments on blogs!  In time, all comments in Moodle will be merged into the same commenting system.&lt;br /&gt;
* [[Authorize.net Payment Gateway]] enrolment plugin &lt;br /&gt;
:: Payment managers can obtain an authorization code over phone from customer&#039;s bank if the credit card of the user cannot be captured on the internet directly.&lt;br /&gt;
* SCORM 2004?&lt;br /&gt;
* New Wiki?&lt;br /&gt;
&lt;br /&gt;
== Version 1.9 - Expected April 2007 ==&lt;br /&gt;
&lt;br /&gt;
* [[Repository API]] - Open University, Moodle.com and Humboldt&lt;br /&gt;
::Abstract all file operations to an API that allows plugins for different external repositories&lt;br /&gt;
* [[Learning Design export]] - Moodle.com and Open University of The Netherlands&lt;br /&gt;
::We plan to have a very simple export for any Moodle course into IMS LD format, as a proof of concept and to help the community start learning about IMS LD.&lt;br /&gt;
* New groups - Open University&lt;br /&gt;
::Site-wide groups, reusable groups, and assigning activities to groups are the major improvements being developed  &lt;br /&gt;
* [[Development:Gradebook development|Gradebook development]]&lt;br /&gt;
::The gradebook system will be revamped for performance, switching from our older &amp;quot;pull&amp;quot; model to a &amp;quot;push&amp;quot; model where all modules will now publish grades as necessary into a central table.&lt;br /&gt;
* [[Metadata]] - Moodle.com&lt;br /&gt;
::Build on the keywords in 1.6 to provide metadata for all activities and courses, linkable to standard lists of metadata such as State-based learning outcomes and curricula&lt;br /&gt;
&lt;br /&gt;
== Version 2.0 - Expected July 2007 ==&lt;br /&gt;
&lt;br /&gt;
* [[IMS Learning Design]] - Moodle.com&lt;br /&gt;
::Support for importing/exporting LD, converting Moodle activities and sequences of activities into a standard format for sharing, and importing standard sequences into Moodle courses&lt;br /&gt;
* [[Conditional activities]] - Moodle.com&lt;br /&gt;
::Allowing dependencies and forced paths through the content&lt;br /&gt;
* [[Community hub]] interfaces - Moodle.com and others&lt;br /&gt;
::Makes it easy for users to find and navigate other systems and external Moodle repositories, leveraging the Moodle Network in various ways.&lt;br /&gt;
* [[Student Information API]]&lt;br /&gt;
::API for integrating external systems for managing student information&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: Moodle 2.0 will require PHP 5.1 as a minimum, because of certain improvements not available in PHP 4.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Version 2.1 ==&lt;br /&gt;
&lt;br /&gt;
* [[Portfolio API]]&lt;br /&gt;
::Interface Moodle activities and repositories to help produce portfolios for internal assessment AND external publication&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Future]]&lt;br /&gt;
&lt;br /&gt;
[[es:Planificación]]&lt;br /&gt;
[[fr:Planification]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Working_with_the_Community&amp;diff=5588</id>
		<title>Working with the Community</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Working_with_the_Community&amp;diff=5588"/>
		<updated>2006-12-14T23:20:57Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The goal of the Moodle community is to provide the best possible LMS there is.  When you submit a patch (or new module, plugin or filter) for acceptance, it will be reviewed on its technical merits and those alone.  So, what should you be expecting?&lt;br /&gt;
&lt;br /&gt;
* criticism&lt;br /&gt;
* comments&lt;br /&gt;
* requests for change&lt;br /&gt;
* requests for justification&lt;br /&gt;
* silence&lt;br /&gt;
* pointers to another subproject with the same goals&lt;br /&gt;
&lt;br /&gt;
Remember, this is part of getting your patch into Moodle.  You have&lt;br /&gt;
to be able to take criticism and comments about your patches, evaluate&lt;br /&gt;
them at a technical level and either rework your patches or provide&lt;br /&gt;
clear and concise reasoning as to why those changes should not be made.&lt;br /&gt;
If there are no responses to your posting, wait a few days and try&lt;br /&gt;
again, sometimes things get lost in the huge volume.&lt;br /&gt;
&lt;br /&gt;
What should you not do?&lt;br /&gt;
* expect your patch to be accepted without question&lt;br /&gt;
* become defensive&lt;br /&gt;
* ignore comments&lt;br /&gt;
* resubmit the patch without making any of the requested changes&lt;br /&gt;
&lt;br /&gt;
In a community that is looking for the best technical solution possible,&lt;br /&gt;
there will always be differing opinions on how beneficial a patch is.&lt;br /&gt;
You have to be cooperative, and willing to adapt your idea to fit within&lt;br /&gt;
Moodle.  Or at least be willing to prove your idea is worth it.&lt;br /&gt;
Remember, being wrong is acceptable as long as you are willing to work&lt;br /&gt;
toward a solution that is right.&lt;br /&gt;
&lt;br /&gt;
==Differences between the Moodle community and corporate structures==&lt;br /&gt;
&lt;br /&gt;
The Moodle community works differently than most traditional corporate development environments.  Here is a list of things that you can try to do to try to avoid problems:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Good&#039;&#039;&#039; things to say regarding your proposed changes:&lt;br /&gt;
* &amp;quot;This solves multiple problems.&amp;quot;&lt;br /&gt;
* &amp;quot;This deletes 2000 lines of code.&amp;quot;&lt;br /&gt;
* &amp;quot;Here is a patch that explains what I am trying to describe.&amp;quot;&lt;br /&gt;
* &amp;quot;I tested it on 5 different databases...&amp;quot;&lt;br /&gt;
* &amp;quot;Here is a series of small patches that...&amp;quot;&lt;br /&gt;
* &amp;quot;This increases performance on typical machines...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bad&#039;&#039;&#039; things you should avoid saying:&lt;br /&gt;
* &amp;quot;We did it this way in WebCT/Blackboard, so therefore it must begood...&amp;quot;&lt;br /&gt;
* &amp;quot;I&#039;ve being doing this for 20 years, so...&amp;quot;&lt;br /&gt;
* &amp;quot;It makes this proprietary benchmark go faster&amp;quot;&lt;br /&gt;
* &amp;quot;This is required for my company to make money&amp;quot;&lt;br /&gt;
* &amp;quot;This is for our Enterprise product line.&amp;quot;&lt;br /&gt;
* &amp;quot;Here is my 1000 page design document that describes my idea&amp;quot;&lt;br /&gt;
* &amp;quot;I&#039;ve been working on this for 6 months...&amp;quot;&lt;br /&gt;
* &amp;quot;Here&#039;s a 5000 line patch that...&amp;quot;&lt;br /&gt;
* &amp;quot;I rewrote all of the current mess, and here it is...&amp;quot;&lt;br /&gt;
* &amp;quot;I have a deadline, and this patch needs to be applied now.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Another way the Moodle community is different than most traditional&lt;br /&gt;
software engineering work environments is the faceless nature of&lt;br /&gt;
interaction.  One benefit of using email and forums as the primary forms of&lt;br /&gt;
communication is the lack of discrimination based on gender or race.&lt;br /&gt;
The Moodle work environment is accepting of women and minorities&lt;br /&gt;
because all you are is an email address.  The international aspect also&lt;br /&gt;
helps to level the playing field because you can&#039;t guess gender based on&lt;br /&gt;
a person&#039;s name. A man may be named Andrea and a woman may be named Pat.&lt;br /&gt;
&lt;br /&gt;
The language barrier can cause problems for some people who are not&lt;br /&gt;
comfortable with English.  A good grasp of the language can be needed in&lt;br /&gt;
order to get ideas across properly on forums, so it is&lt;br /&gt;
recommended that you check your emails to make sure they make sense in&lt;br /&gt;
English before sending them.&lt;br /&gt;
&lt;br /&gt;
==Break your changes up==&lt;br /&gt;
&lt;br /&gt;
The Moodle community does not gladly accept large chunks of code&lt;br /&gt;
dropped on it all at once.  The changes need to be properly introduced,&lt;br /&gt;
discussed, and broken up into tiny, individual portions.  This is almost&lt;br /&gt;
the exact opposite of what companies are used to doing.  Your proposal&lt;br /&gt;
should also be introduced very early in the development process, so that&lt;br /&gt;
you can receive feedback on what you are doing.  It also lets the&lt;br /&gt;
community feel that you are working with them, and not simply using them&lt;br /&gt;
as a dumping ground for your feature.  However, don&#039;t post 50 times at&lt;br /&gt;
once in the forums! &lt;br /&gt;
&lt;br /&gt;
The reasons for breaking things up are the following:&lt;br /&gt;
&lt;br /&gt;
# Small patches increase the likelihood that your patches will be applied, since they don&#039;t take much time or effort to verify for correctness.  A 5 line patch can be applied by a maintainer with barely a second glance. However, a 500 line patch may take hours to review for correctness (the time it takes is exponentially proportional to the size of the patch, or something). Small patches also make it very easy to debug when something goes wrong.  It&#039;s much easier to back out patches one by one than it is to dissect a very large patch after it&#039;s been applied (and broken something).&lt;br /&gt;
# It&#039;s important not only to send small patches, but also to rewrite and simplify (or simply re-order) patches before submitting them.&lt;br /&gt;
&lt;br /&gt;
It may be challenging to keep the balance between presenting an elegant&lt;br /&gt;
solution and working together with the community and discuss your&lt;br /&gt;
unfinished work. Therefore it is good to get early in the process to&lt;br /&gt;
get feedback to improve your work, but also keep your changes in small&lt;br /&gt;
chunks that they may get already accepted, even when your whole task is&lt;br /&gt;
not ready for inclusion now.&lt;br /&gt;
&lt;br /&gt;
Also realize that it is not acceptable to send patches for inclusion&lt;br /&gt;
that are unfinished and will be &amp;quot;fixed up later.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Justify your change==&lt;br /&gt;
&lt;br /&gt;
Along with breaking up your patches, it is very important for you to let&lt;br /&gt;
the Moodle community know why they should add this change.  New features&lt;br /&gt;
must be justified as being needed and useful.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Working_with_the_Community&amp;diff=5587</id>
		<title>Working with the Community</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Working_with_the_Community&amp;diff=5587"/>
		<updated>2006-12-14T23:18:36Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Differences between the Moodle community and corporate structures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The goal of the Moodle community is to provide the best possible LMS there is.  When you submit a patch (or new module, plugin or filter) for acceptance, it will be reviewed on its technical merits and those alone.  So, what should you be expecting?&lt;br /&gt;
&lt;br /&gt;
* criticism&lt;br /&gt;
* comments&lt;br /&gt;
* requests for change&lt;br /&gt;
* requests for justification&lt;br /&gt;
* silence&lt;br /&gt;
&lt;br /&gt;
Remember, this is part of getting your patch into Moodle.  You have&lt;br /&gt;
to be able to take criticism and comments about your patches, evaluate&lt;br /&gt;
them at a technical level and either rework your patches or provide&lt;br /&gt;
clear and concise reasoning as to why those changes should not be made.&lt;br /&gt;
If there are no responses to your posting, wait a few days and try&lt;br /&gt;
again, sometimes things get lost in the huge volume.&lt;br /&gt;
&lt;br /&gt;
What should you not do?&lt;br /&gt;
* expect your patch to be accepted without question&lt;br /&gt;
* become defensive&lt;br /&gt;
* ignore comments&lt;br /&gt;
* resubmit the patch without making any of the requested changes&lt;br /&gt;
&lt;br /&gt;
In a community that is looking for the best technical solution possible,&lt;br /&gt;
there will always be differing opinions on how beneficial a patch is.&lt;br /&gt;
You have to be cooperative, and willing to adapt your idea to fit within&lt;br /&gt;
Moodle.  Or at least be willing to prove your idea is worth it.&lt;br /&gt;
Remember, being wrong is acceptable as long as you are willing to work&lt;br /&gt;
toward a solution that is right.&lt;br /&gt;
&lt;br /&gt;
==Differences between the Moodle community and corporate structures==&lt;br /&gt;
&lt;br /&gt;
The Moodle community works differently than most traditional corporate development environments.  Here is a list of things that you can try to do to try to avoid problems:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Good&#039;&#039;&#039; things to say regarding your proposed changes:&lt;br /&gt;
* &amp;quot;This solves multiple problems.&amp;quot;&lt;br /&gt;
* &amp;quot;This deletes 2000 lines of code.&amp;quot;&lt;br /&gt;
* &amp;quot;Here is a patch that explains what I am trying to describe.&amp;quot;&lt;br /&gt;
* &amp;quot;I tested it on 5 different databases...&amp;quot;&lt;br /&gt;
* &amp;quot;Here is a series of small patches that...&amp;quot;&lt;br /&gt;
* &amp;quot;This increases performance on typical machines...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bad&#039;&#039;&#039; things you should avoid saying:&lt;br /&gt;
* &amp;quot;We did it this way in WebCT/Blackboard, so therefore it must begood...&amp;quot;&lt;br /&gt;
* &amp;quot;I&#039;ve being doing this for 20 years, so...&amp;quot;&lt;br /&gt;
* &amp;quot;It makes this proprietary benchmark go faster&amp;quot;&lt;br /&gt;
* &amp;quot;This is required for my company to make money&amp;quot;&lt;br /&gt;
* &amp;quot;This is for our Enterprise product line.&amp;quot;&lt;br /&gt;
* &amp;quot;Here is my 1000 page design document that describes my idea&amp;quot;&lt;br /&gt;
* &amp;quot;I&#039;ve been working on this for 6 months...&amp;quot;&lt;br /&gt;
* &amp;quot;Here&#039;s a 5000 line patch that...&amp;quot;&lt;br /&gt;
* &amp;quot;I rewrote all of the current mess, and here it is...&amp;quot;&lt;br /&gt;
* &amp;quot;I have a deadline, and this patch needs to be applied now.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Another way the Moodle community is different than most traditional&lt;br /&gt;
software engineering work environments is the faceless nature of&lt;br /&gt;
interaction.  One benefit of using email and forums as the primary forms of&lt;br /&gt;
communication is the lack of discrimination based on gender or race.&lt;br /&gt;
The Moodle work environment is accepting of women and minorities&lt;br /&gt;
because all you are is an email address.  The international aspect also&lt;br /&gt;
helps to level the playing field because you can&#039;t guess gender based on&lt;br /&gt;
a person&#039;s name. A man may be named Andrea and a woman may be named Pat.&lt;br /&gt;
&lt;br /&gt;
The language barrier can cause problems for some people who are not&lt;br /&gt;
comfortable with English.  A good grasp of the language can be needed in&lt;br /&gt;
order to get ideas across properly on forums, so it is&lt;br /&gt;
recommended that you check your emails to make sure they make sense in&lt;br /&gt;
English before sending them.&lt;br /&gt;
&lt;br /&gt;
==Break your changes up==&lt;br /&gt;
&lt;br /&gt;
The Moodle community does not gladly accept large chunks of code&lt;br /&gt;
dropped on it all at once.  The changes need to be properly introduced,&lt;br /&gt;
discussed, and broken up into tiny, individual portions.  This is almost&lt;br /&gt;
the exact opposite of what companies are used to doing.  Your proposal&lt;br /&gt;
should also be introduced very early in the development process, so that&lt;br /&gt;
you can receive feedback on what you are doing.  It also lets the&lt;br /&gt;
community feel that you are working with them, and not simply using them&lt;br /&gt;
as a dumping ground for your feature.  However, don&#039;t post 50 times at&lt;br /&gt;
once in the forums! &lt;br /&gt;
&lt;br /&gt;
The reasons for breaking things up are the following:&lt;br /&gt;
&lt;br /&gt;
# Small patches increase the likelihood that your patches will be applied, since they don&#039;t take much time or effort to verify for correctness.  A 5 line patch can be applied by a maintainer with barely a second glance. However, a 500 line patch may take hours to review for correctness (the time it takes is exponentially proportional to the size of the patch, or something). Small patches also make it very easy to debug when something goes wrong.  It&#039;s much easier to back out patches one by one than it is to dissect a very large patch after it&#039;s been applied (and broken something).&lt;br /&gt;
# It&#039;s important not only to send small patches, but also to rewrite and simplify (or simply re-order) patches before submitting them.&lt;br /&gt;
&lt;br /&gt;
It may be challenging to keep the balance between presenting an elegant&lt;br /&gt;
solution and working together with the community and discuss your&lt;br /&gt;
unfinished work. Therefore it is good to get early in the process to&lt;br /&gt;
get feedback to improve your work, but also keep your changes in small&lt;br /&gt;
chunks that they may get already accepted, even when your whole task is&lt;br /&gt;
not ready for inclusion now.&lt;br /&gt;
&lt;br /&gt;
Also realize that it is not acceptable to send patches for inclusion&lt;br /&gt;
that are unfinished and will be &amp;quot;fixed up later.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Justify your change==&lt;br /&gt;
&lt;br /&gt;
Along with breaking up your patches, it is very important for you to let&lt;br /&gt;
the Moodle community know why they should add this change.  New features&lt;br /&gt;
must be justified as being needed and useful.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Working_with_the_Community&amp;diff=5586</id>
		<title>Working with the Community</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Working_with_the_Community&amp;diff=5586"/>
		<updated>2006-12-14T23:17:28Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Break your changes up */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The goal of the Moodle community is to provide the best possible LMS there is.  When you submit a patch (or new module, plugin or filter) for acceptance, it will be reviewed on its technical merits and those alone.  So, what should you be expecting?&lt;br /&gt;
&lt;br /&gt;
* criticism&lt;br /&gt;
* comments&lt;br /&gt;
* requests for change&lt;br /&gt;
* requests for justification&lt;br /&gt;
* silence&lt;br /&gt;
&lt;br /&gt;
Remember, this is part of getting your patch into Moodle.  You have&lt;br /&gt;
to be able to take criticism and comments about your patches, evaluate&lt;br /&gt;
them at a technical level and either rework your patches or provide&lt;br /&gt;
clear and concise reasoning as to why those changes should not be made.&lt;br /&gt;
If there are no responses to your posting, wait a few days and try&lt;br /&gt;
again, sometimes things get lost in the huge volume.&lt;br /&gt;
&lt;br /&gt;
What should you not do?&lt;br /&gt;
* expect your patch to be accepted without question&lt;br /&gt;
* become defensive&lt;br /&gt;
* ignore comments&lt;br /&gt;
* resubmit the patch without making any of the requested changes&lt;br /&gt;
&lt;br /&gt;
In a community that is looking for the best technical solution possible,&lt;br /&gt;
there will always be differing opinions on how beneficial a patch is.&lt;br /&gt;
You have to be cooperative, and willing to adapt your idea to fit within&lt;br /&gt;
Moodle.  Or at least be willing to prove your idea is worth it.&lt;br /&gt;
Remember, being wrong is acceptable as long as you are willing to work&lt;br /&gt;
toward a solution that is right.&lt;br /&gt;
&lt;br /&gt;
==Differences between the Moodle community and corporate structures==&lt;br /&gt;
&lt;br /&gt;
The Moodle community works differently than most traditional corporate development environments.  Here is a list of things that you can try to do to try to avoid problems:&lt;br /&gt;
&lt;br /&gt;
Good things to say regarding your proposed changes:&lt;br /&gt;
* &amp;quot;This solves multiple problems.&amp;quot;&lt;br /&gt;
* &amp;quot;This deletes 2000 lines of code.&amp;quot;&lt;br /&gt;
* &amp;quot;Here is a patch that explains what I am trying to describe.&amp;quot;&lt;br /&gt;
* &amp;quot;I tested it on 5 different databases...&amp;quot;&lt;br /&gt;
* &amp;quot;Here is a series of small patches that...&amp;quot;&lt;br /&gt;
* &amp;quot;This increases performance on typical machines...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Bad things you should avoid saying:&lt;br /&gt;
* &amp;quot;We did it this way in WebCT/Blackboard, so therefore it must begood...&amp;quot;&lt;br /&gt;
* &amp;quot;I&#039;ve being doing this for 20 years, so...&amp;quot;&lt;br /&gt;
* &amp;quot;It makes this proprietary benchmark go faster&amp;quot;&lt;br /&gt;
* &amp;quot;This is required for my company to make money&amp;quot;&lt;br /&gt;
* &amp;quot;This is for our Enterprise product line.&amp;quot;&lt;br /&gt;
* &amp;quot;Here is my 1000 page design document that describes my idea&amp;quot;&lt;br /&gt;
* &amp;quot;I&#039;ve been working on this for 6 months...&amp;quot;&lt;br /&gt;
* &amp;quot;Here&#039;s a 5000 line patch that...&amp;quot;&lt;br /&gt;
* &amp;quot;I rewrote all of the current mess, and here it is...&amp;quot;&lt;br /&gt;
* &amp;quot;I have a deadline, and this patch needs to be applied now.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Another way the Moodle community is different than most traditional&lt;br /&gt;
software engineering work environments is the faceless nature of&lt;br /&gt;
interaction.  One benefit of using email and forums as the primary forms of&lt;br /&gt;
communication is the lack of discrimination based on gender or race.&lt;br /&gt;
The Moodle work environment is accepting of women and minorities&lt;br /&gt;
because all you are is an email address.  The international aspect also&lt;br /&gt;
helps to level the playing field because you can&#039;t guess gender based on&lt;br /&gt;
a person&#039;s name. A man may be named Andrea and a woman may be named Pat.&lt;br /&gt;
&lt;br /&gt;
The language barrier can cause problems for some people who are not&lt;br /&gt;
comfortable with English.  A good grasp of the language can be needed in&lt;br /&gt;
order to get ideas across properly on forums, so it is&lt;br /&gt;
recommended that you check your emails to make sure they make sense in&lt;br /&gt;
English before sending them.&lt;br /&gt;
&lt;br /&gt;
==Break your changes up==&lt;br /&gt;
&lt;br /&gt;
The Moodle community does not gladly accept large chunks of code&lt;br /&gt;
dropped on it all at once.  The changes need to be properly introduced,&lt;br /&gt;
discussed, and broken up into tiny, individual portions.  This is almost&lt;br /&gt;
the exact opposite of what companies are used to doing.  Your proposal&lt;br /&gt;
should also be introduced very early in the development process, so that&lt;br /&gt;
you can receive feedback on what you are doing.  It also lets the&lt;br /&gt;
community feel that you are working with them, and not simply using them&lt;br /&gt;
as a dumping ground for your feature.  However, don&#039;t post 50 times at&lt;br /&gt;
once in the forums! &lt;br /&gt;
&lt;br /&gt;
The reasons for breaking things up are the following:&lt;br /&gt;
&lt;br /&gt;
# Small patches increase the likelihood that your patches will be applied, since they don&#039;t take much time or effort to verify for correctness.  A 5 line patch can be applied by a maintainer with barely a second glance. However, a 500 line patch may take hours to review for correctness (the time it takes is exponentially proportional to the size of the patch, or something). Small patches also make it very easy to debug when something goes wrong.  It&#039;s much easier to back out patches one by one than it is to dissect a very large patch after it&#039;s been applied (and broken something).&lt;br /&gt;
# It&#039;s important not only to send small patches, but also to rewrite and simplify (or simply re-order) patches before submitting them.&lt;br /&gt;
&lt;br /&gt;
It may be challenging to keep the balance between presenting an elegant&lt;br /&gt;
solution and working together with the community and discuss your&lt;br /&gt;
unfinished work. Therefore it is good to get early in the process to&lt;br /&gt;
get feedback to improve your work, but also keep your changes in small&lt;br /&gt;
chunks that they may get already accepted, even when your whole task is&lt;br /&gt;
not ready for inclusion now.&lt;br /&gt;
&lt;br /&gt;
Also realize that it is not acceptable to send patches for inclusion&lt;br /&gt;
that are unfinished and will be &amp;quot;fixed up later.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Justify your change==&lt;br /&gt;
&lt;br /&gt;
Along with breaking up your patches, it is very important for you to let&lt;br /&gt;
the Moodle community know why they should add this change.  New features&lt;br /&gt;
must be justified as being needed and useful.&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Database_Schema&amp;diff=5633</id>
		<title>Database Schema</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Database_Schema&amp;diff=5633"/>
		<updated>2006-11-23T01:07:14Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The files available here are in [http://fabforce.net/dbdesigner4/ DBDesigner4] format. DBDesigner4 is a schema drawing program released under GPL.&lt;br /&gt;
&lt;br /&gt;
The database schemas have been put together by [http://moodle.org/user/view.php?id=11101&amp;amp;course=11 Alberto Giampani] and [http://moodle.org/user/view.php?id=192442&amp;amp;course=11 Dario Toledo]. We are also discussing a means of creating them automatically from the new XMLDB definitions with an XML transform.&lt;br /&gt;
&lt;br /&gt;
Discussion of the database schemas happens either in the forum of the relevant module, or in the [http://moodle.org/mod/forum/view.php?id=45 Databases forum].&lt;br /&gt;
&lt;br /&gt;
=Moodle 1.7=&lt;br /&gt;
&lt;br /&gt;
http://moodle.org/file.php/11/moddata/forum/110/268325/db-edudist-Moodle-1.7_.rar&lt;br /&gt;
&lt;br /&gt;
=Moodle 1.5.3=&lt;br /&gt;
&lt;br /&gt;
http://moodle.org/file.php/11/moddata/forum/110/267644/Db-Edudist-Moodle1.5.3-xml.rar&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Database_Schema&amp;diff=5632</id>
		<title>Database Schema</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Database_Schema&amp;diff=5632"/>
		<updated>2006-11-22T23:37:30Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Moodle 1.7 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The files available here are in [http://fabforce.net/dbdesigner4/ DBDesigner4] format. DBDesigner4 is a schema drawing program released under GPL.&lt;br /&gt;
&lt;br /&gt;
The database schemas have been put together by [http://moodle.org/user/view.php?id=11101&amp;amp;course=11 Alberto Giampani] and [http://moodle.org/user/view.php?id=192442&amp;amp;course=11 Dario Toledo]. We are also discussing a means of creating them automatically from the new XMLDB definitions with an XML transform.&lt;br /&gt;
&lt;br /&gt;
Discussion of the database schemas happens either in the forum of the relevant module, or in the [http://moodle.org/mod/forum/view.php?id=45 Databases forum].&lt;br /&gt;
&lt;br /&gt;
=Moodle 1.7=&lt;br /&gt;
&lt;br /&gt;
http://moodle.org/file.php/11/moddata/forum/110/268325/db-edudist-Moodle-1.7_.rar&lt;br /&gt;
&lt;br /&gt;
=Moodle 1.5.3=&lt;br /&gt;
&lt;br /&gt;
http://moodle.org/file.php/11/moddata/forum/110/267644/Db-Edudist-Moodle1.5.3-xml.rar&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Database_Schema&amp;diff=5631</id>
		<title>Database Schema</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Database_Schema&amp;diff=5631"/>
		<updated>2006-11-22T23:37:21Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Moodle 1.5.3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The files available here are in [http://fabforce.net/dbdesigner4/ DBDesigner4] format. DBDesigner4 is a schema drawing program released under GPL.&lt;br /&gt;
&lt;br /&gt;
The database schemas have been put together by [http://moodle.org/user/view.php?id=11101&amp;amp;course=11 Alberto Giampani] and [http://moodle.org/user/view.php?id=192442&amp;amp;course=11 Dario Toledo]. We are also discussing a means of creating them automatically from the new XMLDB definitions with an XML transform.&lt;br /&gt;
&lt;br /&gt;
Discussion of the database schemas happens either in the forum of the relevant module, or in the [http://moodle.org/mod/forum/view.php?id=45 Databases forum].&lt;br /&gt;
&lt;br /&gt;
=Moodle 1.7=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Moodle 1.5.3=&lt;br /&gt;
&lt;br /&gt;
http://moodle.org/file.php/11/moddata/forum/110/267644/Db-Edudist-Moodle1.5.3-xml.rar&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Database_Schema&amp;diff=5630</id>
		<title>Database Schema</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Database_Schema&amp;diff=5630"/>
		<updated>2006-11-22T23:33:16Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The files available here are in [http://fabforce.net/dbdesigner4/ DBDesigner4] format. DBDesigner4 is a schema drawing program released under GPL.&lt;br /&gt;
&lt;br /&gt;
The database schemas have been put together by [http://moodle.org/user/view.php?id=11101&amp;amp;course=11 Alberto Giampani] and [http://moodle.org/user/view.php?id=192442&amp;amp;course=11 Dario Toledo]. We are also discussing a means of creating them automatically from the new XMLDB definitions with an XML transform.&lt;br /&gt;
&lt;br /&gt;
Discussion of the database schemas happens either in the forum of the relevant module, or in the [http://moodle.org/mod/forum/view.php?id=45 Databases forum].&lt;br /&gt;
&lt;br /&gt;
=Moodle 1.7=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Moodle 1.5.3=&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Developer_documentation&amp;diff=502</id>
		<title>Developer documentation</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Developer_documentation&amp;diff=502"/>
		<updated>2006-11-22T23:25:14Z</updated>

		<summary type="html">&lt;p&gt;Martinlanghoff: /* Resources and tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; New developer documentation pages should be added to the &#039;&#039;Development namespace&#039;&#039; by typing &amp;lt;code&amp;gt;Development:&amp;lt;/code&amp;gt; before the new page name i.e. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[New page name]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Guidelines==&lt;br /&gt;
The following guidelines are crucial reading for anyone wanting to contribute to the Moodle code base:&lt;br /&gt;
*[[Coding|Coding guidelines]] have to be followed by all Moodle developers&lt;br /&gt;
*[[Moodle architecture]] spells out the basic design goals behind Moodle&lt;br /&gt;
*[[Interface guidelines]] aim to provide a common feel to the Moodle user interface&lt;br /&gt;
*[[CVS (developer)|Moodle CVS for developers]] explains how to work with the Moodle code in CVS&lt;br /&gt;
*[[Unit tests]] explains how to run the unit tests, and how to write new test cases.&lt;br /&gt;
*[[Tracker]] explains the Moodle Tracker for keeping track of bugs, issues, feature requests etc&lt;br /&gt;
*[[Working with the Community|Working with the Community]] explains how to engage with the dev community and discuss changes&lt;br /&gt;
&lt;br /&gt;
== Resources and tools ==&lt;br /&gt;
&lt;br /&gt;
*[[Developer FAQ]] - frequently asked questions, especially useful for newcomers to Moodle&lt;br /&gt;
*[http://tracker.moodle.org/ Moodle tracker] - bug reports, feature requests and other tracked issues&lt;br /&gt;
*[http://moodle.org/mod/forum/view.php?id=55 General developer forum]&lt;br /&gt;
*[http://moodle.cvs.sourceforge.net/moodle/moodle/ CVS code] - browse the Moodle code via the web&lt;br /&gt;
*[http://moodle.org/xref/nav.html?index.html Cross reference] - phpxref output for browsing Moodle source code&lt;br /&gt;
*[http://phpdocs.moodle.org/ Moodle PHP doc reference] - automatically generated documentation&lt;br /&gt;
*[[Database Schema|Database Schema]] - for recent releases&lt;br /&gt;
*[http://moodle.org/course/view.php?id=5#4 Development news and discussion] section of Using Moodle course&lt;br /&gt;
*[http://developer.yahoo.com/yui YUI documentation] - YUI is the official AJAX library in moodle.&lt;br /&gt;
*[[Setting up Eclipse for Moodle development]] - Eclipse is a great editor to use for php development, if you can work out how to set it up.&lt;br /&gt;
*[[Unmerged files]] - changes on the stable branch in CVS that have not been merged to HEAD&lt;br /&gt;
&lt;br /&gt;
==How you can contribute==&lt;br /&gt;
&lt;br /&gt;
The M in Moodle stands for &#039;Modular&#039;. There are many different types of components that you can contribute that can be plugged into Moodle to provide additional functionality. When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 database of Moodle modules and plugins]. The following types of plugins currently exist (in alphabetical order):&lt;br /&gt;
*[[Modules (developer)|Activity modules]]&lt;br /&gt;
*[[Admin reports|Admin reports]]&lt;br /&gt;
*[[Assignment types]]&lt;br /&gt;
*[[Authentication|Authentication methods]]&lt;br /&gt;
*[[Blocks Howto|Blocks]]&lt;br /&gt;
*[[Course formats]]&lt;br /&gt;
*[[Database fields (developer)|Database fields]]&lt;br /&gt;
*[[Database presets]]&lt;br /&gt;
*[[Enrolment plugins (developer)|Enrolment plugins]]&lt;br /&gt;
*[[Filters|Filters]]&lt;br /&gt;
*[[Question_engine]]&lt;br /&gt;
*[[Question import/export formats]]&lt;br /&gt;
*[[Question bank|Question bank teacher docs]]&lt;br /&gt;
*[[Question_engine#Question_types|Question types developper docs]]&lt;br /&gt;
*[[Quiz reports]]&lt;br /&gt;
*[[Resource types]]&lt;br /&gt;
*[[SSO plugins]]&lt;br /&gt;
&lt;br /&gt;
There are also ways you can contribute that don&#039;t involve PHP programming:&lt;br /&gt;
*[[Themes]]&lt;br /&gt;
*[[Translation]]&lt;br /&gt;
*[[Database Schemas|Database schemas]]&lt;br /&gt;
&lt;br /&gt;
You can also help a lot by&lt;br /&gt;
*[[Tests|Testing]]&lt;br /&gt;
*[[Tracker|Participating in the bug tracker]]&lt;br /&gt;
&lt;br /&gt;
==Plans for the future==&lt;br /&gt;
Ideas for and details of planned future features of Moodle are initially discussed on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course at moodle.org. That developer discussions are intermixed with user discussions in the same forums may seem strange at first but is one of the reasons for the success of Moodle. It is important that both end-users and developers discuss the future features together.&lt;br /&gt;
&lt;br /&gt;
Once ideas begin to crystalize on the forums they can be summarized in this wiki, either as part of the [[Roadmap]] or in the form of [[Developer notes]]. These pages then form the basis for further discussion in the forums.&lt;br /&gt;
*[[Roadmap]]&lt;br /&gt;
*[[Developer notes]]&lt;br /&gt;
*[[Student projects]]&lt;br /&gt;
*[[Developer conference|Developer conferences]]&lt;br /&gt;
&lt;br /&gt;
==Documentation for core components==&lt;br /&gt;
This section is for documentation of specific components of the existing core Moodle code. Discussion of components that are under discussion or in development can be found in the [[Developer notes]] or on the [[Roadmap]].&lt;br /&gt;
&lt;br /&gt;
*[[Migration to Role-driven model|Migration to Role-driven model]] @ v[[1.7]]&lt;br /&gt;
*[[UTF-8 migration|Migration to UTF-8]] @ v[[:Category:Moodle 1.6|1.6]]&lt;br /&gt;
*[[Question engine]]&lt;br /&gt;
*[[Quiz developer docs|Quiz module]]&lt;br /&gt;
*[[SCORM schema|SCORM module 1.5 schema]]&lt;br /&gt;
*[[Authentication API]]&lt;br /&gt;
*[[Stats package]]&lt;br /&gt;
*[[Email processing]]&lt;br /&gt;
*[[Cookieless Sessions]]&lt;br /&gt;
*[[lib/formslib.php|Formslib]] for quickly writing code to display and process more accessible and secure forms.&lt;br /&gt;
&lt;br /&gt;
==Documentation for contributed code==&lt;br /&gt;
Many Moodle users contribute code for the benefit of other Moodle users. This can take the form of new activity modules, blocks, themes, resource plug-ins, assignment plug-ins, question type plug-ins, question import/export formats, quiz report plug-ins, course formats, ... This code is initially posted on the forums in the [http://moodle.org/course/view.php?id=5 Using Moodle] course and then often go into the [http://cvs.sourceforge.net/viewcvs.py/moodle/contrib/ contrib area] of the Moodle [[CVS]] repository. When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 database of Moodle modules and plugins]. Developer documentation for these components should be listed here.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[http://security.moodle.org/ Moodle Security Centre]&lt;br /&gt;
*[http://moodle.com/partners/ Moodle Partners] - providers of custom Moodle development services&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[es:Documentación para Desarrolladores]]&lt;br /&gt;
[[fr:Documentation développeur]]&lt;br /&gt;
[[zh:开发者文档]]&lt;/div&gt;</summary>
		<author><name>Martinlanghoff</name></author>
	</entry>
</feed>