<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/21/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Croux</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/21/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Croux"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/Special:Contributions/Croux"/>
	<updated>2026-05-15T15:59:41Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81492</id>
		<title>Development:Moodle 3.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81492"/>
		<updated>2011-02-22T13:32:44Z</updated>

		<summary type="html">&lt;p&gt;Croux: /* Please Sanitize the PHP code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Warning! This page is highly speculative.&lt;br /&gt;
&lt;br /&gt;
It is basically a dumping ground for random ideas from anyone who wants to write something here. It is not in any way an official Moodle roadmap or policy. Some of the good ideas here may be adopted, but most of the ideas are pretty crazy, and will never work. Basically, it is a place to brainstorm. Please add your own crazy ideas! They don&#039;t need to be consistent yet, just make sure your ideas are here to be boiled down later on.&lt;br /&gt;
&lt;br /&gt;
Think Big!&lt;br /&gt;
&lt;br /&gt;
===One type of plugin===&lt;br /&gt;
&lt;br /&gt;
All plugins/modules could be subclassed from one plugin class, making installation easier and simplifying the API a lot.&lt;br /&gt;
&lt;br /&gt;
===Look at new framework===&lt;br /&gt;
&lt;br /&gt;
Possibly base Moodle 3.0 on new existing frameworks?  Ruby on Rails?  Drupal?&lt;br /&gt;
&lt;br /&gt;
==== Drupal ====&lt;br /&gt;
There&#039;s an interesting discussion in the Language Teaching Course:&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=83963 How can Moodle be more of a social networking site?] with some links to the [http://groups.drupal.org/drupal-education Drupal in Education User Group]. --[[User:Frank Ralf|Frank Ralf]] 14:27, 18 January 2009 (CST)&lt;br /&gt;
&lt;br /&gt;
(I started a section about [[User_talk:Frank_Ralf#What_Moodle_could_learn_from_Drupal|What Moodle could learn from Drupal]] on my User talk page. --[[User:Frank Ralf|Frank Ralf]] 06:35, 21 January 2009 (CST))&lt;br /&gt;
&lt;br /&gt;
There are some activities in the Drupal community regarding better interoperability and integration of Moodle and Drupal, see [http://moodle.org/mod/forum/discuss.php?d=121859 Drupal Quiz module - data exchange with other LMSes] and [http://moodle.org/mod/forum/discuss.php?d=119857 Moodle integration with Drupal]. --[[User:Frank Ralf|Frank Ralf]] 08:10, 10 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Zend Framework ====&lt;br /&gt;
How about [http://framework.zend.com/ZendFramework ZendFramework]? It&#039;s open source, of course, runs on PHP, already has a pretty cool API with a well stocked service library, and the coders are working closely with Google, Adobe and Microsoft, among others, to produce some really high quality code. One feature I particularly like is that the main bulk of the PHP code is outside the public HTML directory. Since version 1.7 It also offers pretty good support for Flash Remoting (AMF0 and AMF3) making it especially easy to create integrated RIA frameworks. [http://framework.zend.com/about/components Check here] to see what you get &amp;quot;out of the box&amp;quot;. It looks like they&#039;ve already done most of the hard work for you.&lt;br /&gt;
&lt;br /&gt;
=== Moodlets===&lt;br /&gt;
&lt;br /&gt;
Individual-independent-activities backup/restore + metadata  - Eloy&lt;br /&gt;
&lt;br /&gt;
=== Support for alternate interfaces, mobile interfaces ===&lt;br /&gt;
&lt;br /&gt;
Optimized for tablet computing: iPad, others&lt;br /&gt;
Completely flash-based interface?  Designed for offline clients?&lt;br /&gt;
&lt;br /&gt;
=== Integrated category/taxonomy system ===&lt;br /&gt;
&lt;br /&gt;
Putting together the &amp;quot;course categories&amp;quot;, &amp;quot;tags&amp;quot; into a generic taxonomy system.&lt;br /&gt;
&lt;br /&gt;
=== Save the 1970-2038 limitation ===&lt;br /&gt;
&lt;br /&gt;
Those UNIX timestamps are [http://moodle.org/mod/forum/discuss.php?d=101984 pretty limited].&lt;br /&gt;
&lt;br /&gt;
=== Translation framework ===&lt;br /&gt;
Drupal uses [http://www.gnu.org/software/gettext/gettext.html GNU gettext].po files for providing translations which is a very robust and well understood format.&lt;br /&gt;
&lt;br /&gt;
Or XLIFF format (use in Zend Framework, Symfony, Intl extension) with [http://icu-project.org/download/rbmanager.html Resource bundle manager]&lt;br /&gt;
&lt;br /&gt;
=== Use PHP 5.3 Native Power ===&lt;br /&gt;
Like : PDO, SPL, Namespace, Intl, Phar...&lt;br /&gt;
(Zend Framework 2 use it)&lt;br /&gt;
&lt;br /&gt;
=== Make a replica Moodle ===&lt;br /&gt;
1 Moodle library, 100 Moodle platforms, just adding plugins and themes.&lt;br /&gt;
&lt;br /&gt;
=== Please Sanitize the PHP code ===&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;ini_set&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;error_reporting&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;@&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;eval&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Don&#039;t use alias : exemple : &#039;&#039;&#039;die&#039;&#039;&#039; (it&#039;s &#039;&#039;&#039;exit&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use depreciates functions : exemple : &#039;&#039;&#039;split&#039;&#039;&#039; (it&#039;s &#039;&#039;&#039;explode&#039;&#039;&#039; or &#039;&#039;&#039;preg_split&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A simple way to show all errors : (in php.ini with PHP 5.3) :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disable_functions = ini_set, error_reporting&lt;br /&gt;
&lt;br /&gt;
error_reporting = E_ALL | E_STRICT&lt;br /&gt;
&lt;br /&gt;
display_errors = On&lt;br /&gt;
&lt;br /&gt;
(eval can be disable with Suhosin)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use the right functions : exemple : it&#039;s not &#039;&#039;&#039;ini_set(&#039;include_path&#039;)&#039;&#039;&#039; it&#039;s &#039;&#039;&#039;set_include_path&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use Registry Pattern instead global&lt;br /&gt;
&lt;br /&gt;
Use Docbook everywhere&lt;br /&gt;
&lt;br /&gt;
Moodle is now PHP 5 : clear &amp;quot;&#039;&#039;&#039;var&#039;&#039;&#039;&amp;quot; in class, methods are &#039;&#039;&#039;public&#039;&#039;&#039;/&#039;&#039;&#039;private&#039;&#039;&#039;/&#039;&#039;&#039;protected&#039;&#039;&#039; &#039;&#039;&#039;function&#039;&#039;&#039; (not just &#039;&#039;&#039;function&#039;&#039;&#039;) and &#039;&#039;&#039;__construct&#039;&#039;&#039; for constructor method&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Many thanks for your invaluable and expert opinion, we&#039;ll be working hard on all those, sincerely! --[[User:Eloy Lafuente (stronk7)|Eloy Lafuente (stronk7)]] 01:37, 19 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Built for Teacher-to-teacher Content Sharing ===&lt;br /&gt;
&lt;br /&gt;
Drag-and-drop courses and course items from Moodle Hubs&lt;br /&gt;
&lt;br /&gt;
=== Learn from LAMS and Dokeos ===&lt;br /&gt;
&lt;br /&gt;
Integrated authoring system&lt;br /&gt;
Drag-and-drop sequential scenario-building&lt;br /&gt;
&lt;br /&gt;
=== Invent something crazily new ===&lt;br /&gt;
3-line ideas are welcome here:&lt;br /&gt;
* participation reward systems&lt;br /&gt;
* Add trashcan and /or undo function&lt;br /&gt;
* Make editing of modules WYSIWYG, no more icons that change layout&lt;br /&gt;
* Collaborative spreadsheet editing functionality - like Google Docs.&lt;br /&gt;
&lt;br /&gt;
=== More Agile Development ===&lt;br /&gt;
There are many elements in agile development that could apply to Moodle and benefit the development process tremendously.  With proper application of these elements, the Moodle&#039;s core code can be more solid and robust.  Any programmer can make changes to the source with confidence and not be afraid of breaking any other features.&lt;br /&gt;
&lt;br /&gt;
==== Test Driven Development ====&lt;br /&gt;
Require unit tests and acceptance tests be written for every change made to the core code.  No code should be committed to the core without any test written.  A code reviewer should run the tests and expect them to be failed before applying the code changes, and expect they all passed after applying the fix or code changes.  S/he should also run the full test suite to make sure the changes did not break any existing features and functionalities.&lt;br /&gt;
&lt;br /&gt;
==== Code Review ====&lt;br /&gt;
Implement a code review process like the [http://codereview.chromium.org Google Chromium project].  Developers can only commit to the trunk with one or more reviewers&#039; approval.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I wonder if the person who added these ideas has any idea how Moodle development actually works. I would guess not. The process is already very agile. All contributions are code-reviewed. There are not enough unit tests yet, but writing unit tests for legacy code is the hardest sort of tests to write (see the book xUnit test patterns) so frankly, it is not worth the effort, except in new code. I can get away with saying that because I have written 2500+ test cases for the latest bit of development I did.&#039;&#039;--[[User:Tim Hunt|Tim Hunt]] 15:23, 6 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hi Tim, please don&#039;t take me wrong.  I think the development team at Moodle is already very agile.  It is actually one of the few agile projects that I have seen in the open source communities.  The effort that you and many diligent individuals have made to coordinate and integrate contributions from all over the world is outstanding.  I just made these comments based on the software development environment I came from, where no code change is allowed to commit without any test written and reviewer signs off.  Our VCS is actually configured to reject any commit that do not have these two elements present.  You are correct that I do not fully know the Moodle development process yet, but the fact that I see codes (particular contributed codes) being checked in without any tests, I just thought it would help bolster Moodle&#039;s core code by enforcing this rule in future commits. And implementing something like [http://codereview.chromium.org Google Chromium code review] interface allows more eyes on the check-in codes, and hopefully alleviates some of the loads from you and the rest of the core team, who have been doing a wonderful work on peer-reviewing all these time.  Again, please don&#039;t take this as a criticism but a brian-storming idea if you will.  Peace.&#039;&#039; --Carson&lt;/div&gt;</summary>
		<author><name>Croux</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81487</id>
		<title>Development:Moodle 3.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81487"/>
		<updated>2011-02-22T12:49:36Z</updated>

		<summary type="html">&lt;p&gt;Croux: /* Please Sanitize the PHP code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Warning! This page is highly speculative.&lt;br /&gt;
&lt;br /&gt;
It is basically a dumping ground for random ideas from anyone who wants to write something here. It is not in any way an official Moodle roadmap or policy. Some of the good ideas here may be adopted, but most of the ideas are pretty crazy, and will never work. Basically, it is a place to brainstorm. Please add your own crazy ideas! They don&#039;t need to be consistent yet, just make sure your ideas are here to be boiled down later on.&lt;br /&gt;
&lt;br /&gt;
Think Big!&lt;br /&gt;
&lt;br /&gt;
===One type of plugin===&lt;br /&gt;
&lt;br /&gt;
All plugins/modules could be subclassed from one plugin class, making installation easier and simplifying the API a lot.&lt;br /&gt;
&lt;br /&gt;
===Look at new framework===&lt;br /&gt;
&lt;br /&gt;
Possibly base Moodle 3.0 on new existing frameworks?  Ruby on Rails?  Drupal?&lt;br /&gt;
&lt;br /&gt;
==== Drupal ====&lt;br /&gt;
There&#039;s an interesting discussion in the Language Teaching Course:&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=83963 How can Moodle be more of a social networking site?] with some links to the [http://groups.drupal.org/drupal-education Drupal in Education User Group]. --[[User:Frank Ralf|Frank Ralf]] 14:27, 18 January 2009 (CST)&lt;br /&gt;
&lt;br /&gt;
(I started a section about [[User_talk:Frank_Ralf#What_Moodle_could_learn_from_Drupal|What Moodle could learn from Drupal]] on my User talk page. --[[User:Frank Ralf|Frank Ralf]] 06:35, 21 January 2009 (CST))&lt;br /&gt;
&lt;br /&gt;
There are some activities in the Drupal community regarding better interoperability and integration of Moodle and Drupal, see [http://moodle.org/mod/forum/discuss.php?d=121859 Drupal Quiz module - data exchange with other LMSes] and [http://moodle.org/mod/forum/discuss.php?d=119857 Moodle integration with Drupal]. --[[User:Frank Ralf|Frank Ralf]] 08:10, 10 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Zend Framework ====&lt;br /&gt;
How about [http://framework.zend.com/ZendFramework ZendFramework]? It&#039;s open source, of course, runs on PHP, already has a pretty cool API with a well stocked service library, and the coders are working closely with Google, Adobe and Microsoft, among others, to produce some really high quality code. One feature I particularly like is that the main bulk of the PHP code is outside the public HTML directory. Since version 1.7 It also offers pretty good support for Flash Remoting (AMF0 and AMF3) making it especially easy to create integrated RIA frameworks. [http://framework.zend.com/about/components Check here] to see what you get &amp;quot;out of the box&amp;quot;. It looks like they&#039;ve already done most of the hard work for you.&lt;br /&gt;
&lt;br /&gt;
=== Moodlets===&lt;br /&gt;
&lt;br /&gt;
Individual-independent-activities backup/restore + metadata  - Eloy&lt;br /&gt;
&lt;br /&gt;
=== Support for alternate interfaces, mobile interfaces ===&lt;br /&gt;
&lt;br /&gt;
Optimized for tablet computing: iPad, others&lt;br /&gt;
Completely flash-based interface?  Designed for offline clients?&lt;br /&gt;
&lt;br /&gt;
=== Integrated category/taxonomy system ===&lt;br /&gt;
&lt;br /&gt;
Putting together the &amp;quot;course categories&amp;quot;, &amp;quot;tags&amp;quot; into a generic taxonomy system.&lt;br /&gt;
&lt;br /&gt;
=== Save the 1970-2038 limitation ===&lt;br /&gt;
&lt;br /&gt;
Those UNIX timestamps are [http://moodle.org/mod/forum/discuss.php?d=101984 pretty limited].&lt;br /&gt;
&lt;br /&gt;
=== Translation framework ===&lt;br /&gt;
Drupal uses [http://www.gnu.org/software/gettext/gettext.html GNU gettext].po files for providing translations which is a very robust and well understood format.&lt;br /&gt;
&lt;br /&gt;
Or XLIFF format (use in Zend Framework, Symfony, Intl extension) with [http://icu-project.org/download/rbmanager.html Resource bundle manager]&lt;br /&gt;
&lt;br /&gt;
=== Use PHP 5.3 Native Power ===&lt;br /&gt;
Like : PDO, SPL, Namespace, Intl, Phar...&lt;br /&gt;
(Zend Framework 2 use it)&lt;br /&gt;
&lt;br /&gt;
=== Make a replica Moodle ===&lt;br /&gt;
1 Moodle library, 100 Moodle platforms, just adding plugins and themes.&lt;br /&gt;
&lt;br /&gt;
=== Please Sanitize the PHP code ===&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;ini_set&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;error_reporting&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;@&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;eval&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Don&#039;t use alias : exemple : &#039;&#039;&#039;die&#039;&#039;&#039; (it&#039;s &#039;&#039;&#039;exit&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use depreciates functions : exemple : &#039;&#039;&#039;split&#039;&#039;&#039; (it&#039;s &#039;&#039;&#039;explode&#039;&#039;&#039; or &#039;&#039;&#039;preg_split&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A simple way to show all errors : (in php.ini with PHP 5.3) :&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
disable_functions = ini_set, error_reporting, eval&lt;br /&gt;
&lt;br /&gt;
error_reporting = E_ALL | E_STRICT&lt;br /&gt;
&lt;br /&gt;
display_errors = On&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use the right functions : exemple : it&#039;s not &#039;&#039;&#039;ini_set(&#039;include_path&#039;)&#039;&#039;&#039; it&#039;s &#039;&#039;&#039;set_include_path&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use Registry Pattern instead global&lt;br /&gt;
&lt;br /&gt;
Use Docbook everywhere&lt;br /&gt;
&lt;br /&gt;
Moodle is now PHP 5 : clear &amp;quot;&#039;&#039;&#039;var&#039;&#039;&#039;&amp;quot; in class, methods are &#039;&#039;&#039;public&#039;&#039;&#039;/&#039;&#039;&#039;private&#039;&#039;&#039;/&#039;&#039;&#039;protected&#039;&#039;&#039; &#039;&#039;&#039;function&#039;&#039;&#039; (not just &#039;&#039;&#039;function&#039;&#039;&#039;) and &#039;&#039;&#039;__construct&#039;&#039;&#039; for constructor method&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Many thanks for your invaluable and expert opinion, we&#039;ll be working hard on all those, sincerely! --[[User:Eloy Lafuente (stronk7)|Eloy Lafuente (stronk7)]] 01:37, 19 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Built for Teacher-to-teacher Content Sharing ===&lt;br /&gt;
&lt;br /&gt;
Drag-and-drop courses and course items from Moodle Hubs&lt;br /&gt;
&lt;br /&gt;
=== Learn from LAMS and Dokeos ===&lt;br /&gt;
&lt;br /&gt;
Integrated authoring system&lt;br /&gt;
Drag-and-drop sequential scenario-building&lt;br /&gt;
&lt;br /&gt;
=== Invent something crazily new ===&lt;br /&gt;
3-line ideas are welcome here:&lt;br /&gt;
* participation reward systems&lt;br /&gt;
* Add trashcan and /or undo function&lt;br /&gt;
* Make editing of modules WYSIWYG, no more icons that change layout&lt;br /&gt;
* Collaborative spreadsheet editing functionality - like Google Docs.&lt;br /&gt;
&lt;br /&gt;
=== More Agile Development ===&lt;br /&gt;
There are many elements in agile development that could apply to Moodle and benefit the development process tremendously.  With proper application of these elements, the Moodle&#039;s core code can be more solid and robust.  Any programmer can make changes to the source with confidence and not be afraid of breaking any other features.&lt;br /&gt;
&lt;br /&gt;
==== Test Driven Development ====&lt;br /&gt;
Require unit tests and acceptance tests be written for every change made to the core code.  No code should be committed to the core without any test written.  A code reviewer should run the tests and expect them to be failed before applying the code changes, and expect they all passed after applying the fix or code changes.  S/he should also run the full test suite to make sure the changes did not break any existing features and functionalities.&lt;br /&gt;
&lt;br /&gt;
==== Code Review ====&lt;br /&gt;
Implement a code review process like the [http://codereview.chromium.org Google Chromium project].  Developers can only commit to the trunk with one or more reviewers&#039; approval.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I wonder if the person who added these ideas has any idea how Moodle development actually works. I would guess not. The process is already very agile. All contributions are code-reviewed. There are not enough unit tests yet, but writing unit tests for legacy code is the hardest sort of tests to write (see the book xUnit test patterns) so frankly, it is not worth the effort, except in new code. I can get away with saying that because I have written 2500+ test cases for the latest bit of development I did.&#039;&#039;--[[User:Tim Hunt|Tim Hunt]] 15:23, 6 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hi Tim, please don&#039;t take me wrong.  I think the development team at Moodle is already very agile.  It is actually one of the few agile projects that I have seen in the open source communities.  The effort that you and many diligent individuals have made to coordinate and integrate contributions from all over the world is outstanding.  I just made these comments based on the software development environment I came from, where no code change is allowed to commit without any test written and reviewer signs off.  Our VCS is actually configured to reject any commit that do not have these two elements present.  You are correct that I do not fully know the Moodle development process yet, but the fact that I see codes (particular contributed codes) being checked in without any tests, I just thought it would help bolster Moodle&#039;s core code by enforcing this rule in future commits. And implementing something like [http://codereview.chromium.org Google Chromium code review] interface allows more eyes on the check-in codes, and hopefully alleviates some of the loads from you and the rest of the core team, who have been doing a wonderful work on peer-reviewing all these time.  Again, please don&#039;t take this as a criticism but a brian-storming idea if you will.  Peace.&#039;&#039; --Carson&lt;/div&gt;</summary>
		<author><name>Croux</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81486</id>
		<title>Development:Moodle 3.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81486"/>
		<updated>2011-02-22T12:48:43Z</updated>

		<summary type="html">&lt;p&gt;Croux: /* Please Sanitize the PHP code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Warning! This page is highly speculative.&lt;br /&gt;
&lt;br /&gt;
It is basically a dumping ground for random ideas from anyone who wants to write something here. It is not in any way an official Moodle roadmap or policy. Some of the good ideas here may be adopted, but most of the ideas are pretty crazy, and will never work. Basically, it is a place to brainstorm. Please add your own crazy ideas! They don&#039;t need to be consistent yet, just make sure your ideas are here to be boiled down later on.&lt;br /&gt;
&lt;br /&gt;
Think Big!&lt;br /&gt;
&lt;br /&gt;
===One type of plugin===&lt;br /&gt;
&lt;br /&gt;
All plugins/modules could be subclassed from one plugin class, making installation easier and simplifying the API a lot.&lt;br /&gt;
&lt;br /&gt;
===Look at new framework===&lt;br /&gt;
&lt;br /&gt;
Possibly base Moodle 3.0 on new existing frameworks?  Ruby on Rails?  Drupal?&lt;br /&gt;
&lt;br /&gt;
==== Drupal ====&lt;br /&gt;
There&#039;s an interesting discussion in the Language Teaching Course:&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=83963 How can Moodle be more of a social networking site?] with some links to the [http://groups.drupal.org/drupal-education Drupal in Education User Group]. --[[User:Frank Ralf|Frank Ralf]] 14:27, 18 January 2009 (CST)&lt;br /&gt;
&lt;br /&gt;
(I started a section about [[User_talk:Frank_Ralf#What_Moodle_could_learn_from_Drupal|What Moodle could learn from Drupal]] on my User talk page. --[[User:Frank Ralf|Frank Ralf]] 06:35, 21 January 2009 (CST))&lt;br /&gt;
&lt;br /&gt;
There are some activities in the Drupal community regarding better interoperability and integration of Moodle and Drupal, see [http://moodle.org/mod/forum/discuss.php?d=121859 Drupal Quiz module - data exchange with other LMSes] and [http://moodle.org/mod/forum/discuss.php?d=119857 Moodle integration with Drupal]. --[[User:Frank Ralf|Frank Ralf]] 08:10, 10 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Zend Framework ====&lt;br /&gt;
How about [http://framework.zend.com/ZendFramework ZendFramework]? It&#039;s open source, of course, runs on PHP, already has a pretty cool API with a well stocked service library, and the coders are working closely with Google, Adobe and Microsoft, among others, to produce some really high quality code. One feature I particularly like is that the main bulk of the PHP code is outside the public HTML directory. Since version 1.7 It also offers pretty good support for Flash Remoting (AMF0 and AMF3) making it especially easy to create integrated RIA frameworks. [http://framework.zend.com/about/components Check here] to see what you get &amp;quot;out of the box&amp;quot;. It looks like they&#039;ve already done most of the hard work for you.&lt;br /&gt;
&lt;br /&gt;
=== Moodlets===&lt;br /&gt;
&lt;br /&gt;
Individual-independent-activities backup/restore + metadata  - Eloy&lt;br /&gt;
&lt;br /&gt;
=== Support for alternate interfaces, mobile interfaces ===&lt;br /&gt;
&lt;br /&gt;
Optimized for tablet computing: iPad, others&lt;br /&gt;
Completely flash-based interface?  Designed for offline clients?&lt;br /&gt;
&lt;br /&gt;
=== Integrated category/taxonomy system ===&lt;br /&gt;
&lt;br /&gt;
Putting together the &amp;quot;course categories&amp;quot;, &amp;quot;tags&amp;quot; into a generic taxonomy system.&lt;br /&gt;
&lt;br /&gt;
=== Save the 1970-2038 limitation ===&lt;br /&gt;
&lt;br /&gt;
Those UNIX timestamps are [http://moodle.org/mod/forum/discuss.php?d=101984 pretty limited].&lt;br /&gt;
&lt;br /&gt;
=== Translation framework ===&lt;br /&gt;
Drupal uses [http://www.gnu.org/software/gettext/gettext.html GNU gettext].po files for providing translations which is a very robust and well understood format.&lt;br /&gt;
&lt;br /&gt;
Or XLIFF format (use in Zend Framework, Symfony, Intl extension) with [http://icu-project.org/download/rbmanager.html Resource bundle manager]&lt;br /&gt;
&lt;br /&gt;
=== Use PHP 5.3 Native Power ===&lt;br /&gt;
Like : PDO, SPL, Namespace, Intl, Phar...&lt;br /&gt;
(Zend Framework 2 use it)&lt;br /&gt;
&lt;br /&gt;
=== Make a replica Moodle ===&lt;br /&gt;
1 Moodle library, 100 Moodle platforms, just adding plugins and themes.&lt;br /&gt;
&lt;br /&gt;
=== Please Sanitize the PHP code ===&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;ini_set&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;error_reporting&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;@&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;eval&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Don&#039;t use alias : exemple : &#039;&#039;&#039;die&#039;&#039;&#039; (it&#039;s &#039;&#039;&#039;exit&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use depreciates functions : exemple : &#039;&#039;&#039;split&#039;&#039;&#039; (it&#039;s &#039;&#039;&#039;explode&#039;&#039;&#039; or &#039;&#039;&#039;preg_split&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A simple to show all errors : (in php.ini with PHP 5.3) :&#039;&#039;&#039;&lt;br /&gt;
disable_functions = ini_set, error_reporting, eval&lt;br /&gt;
error_reporting = E_ALL | E_STRICT&lt;br /&gt;
display_errors = On&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use the right functions : exemple : it&#039;s not &#039;&#039;&#039;ini_set(&#039;include_path&#039;)&#039;&#039;&#039; it&#039;s &#039;&#039;&#039;set_include_path&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use Registry Pattern instead global&lt;br /&gt;
&lt;br /&gt;
Use Docbook everywhere&lt;br /&gt;
&lt;br /&gt;
Moodle is now PHP 5 : clear &amp;quot;&#039;&#039;&#039;var&#039;&#039;&#039;&amp;quot; in class, methods are &#039;&#039;&#039;public&#039;&#039;&#039;/&#039;&#039;&#039;private&#039;&#039;&#039;/&#039;&#039;&#039;protected&#039;&#039;&#039; &#039;&#039;&#039;function&#039;&#039;&#039; (not just &#039;&#039;&#039;function&#039;&#039;&#039;) and &#039;&#039;&#039;__construct&#039;&#039;&#039; for constructor method&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Many thanks for your invaluable and expert opinion, we&#039;ll be working hard on all those, sincerely! --[[User:Eloy Lafuente (stronk7)|Eloy Lafuente (stronk7)]] 01:37, 19 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Built for Teacher-to-teacher Content Sharing ===&lt;br /&gt;
&lt;br /&gt;
Drag-and-drop courses and course items from Moodle Hubs&lt;br /&gt;
&lt;br /&gt;
=== Learn from LAMS and Dokeos ===&lt;br /&gt;
&lt;br /&gt;
Integrated authoring system&lt;br /&gt;
Drag-and-drop sequential scenario-building&lt;br /&gt;
&lt;br /&gt;
=== Invent something crazily new ===&lt;br /&gt;
3-line ideas are welcome here:&lt;br /&gt;
* participation reward systems&lt;br /&gt;
* Add trashcan and /or undo function&lt;br /&gt;
* Make editing of modules WYSIWYG, no more icons that change layout&lt;br /&gt;
* Collaborative spreadsheet editing functionality - like Google Docs.&lt;br /&gt;
&lt;br /&gt;
=== More Agile Development ===&lt;br /&gt;
There are many elements in agile development that could apply to Moodle and benefit the development process tremendously.  With proper application of these elements, the Moodle&#039;s core code can be more solid and robust.  Any programmer can make changes to the source with confidence and not be afraid of breaking any other features.&lt;br /&gt;
&lt;br /&gt;
==== Test Driven Development ====&lt;br /&gt;
Require unit tests and acceptance tests be written for every change made to the core code.  No code should be committed to the core without any test written.  A code reviewer should run the tests and expect them to be failed before applying the code changes, and expect they all passed after applying the fix or code changes.  S/he should also run the full test suite to make sure the changes did not break any existing features and functionalities.&lt;br /&gt;
&lt;br /&gt;
==== Code Review ====&lt;br /&gt;
Implement a code review process like the [http://codereview.chromium.org Google Chromium project].  Developers can only commit to the trunk with one or more reviewers&#039; approval.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I wonder if the person who added these ideas has any idea how Moodle development actually works. I would guess not. The process is already very agile. All contributions are code-reviewed. There are not enough unit tests yet, but writing unit tests for legacy code is the hardest sort of tests to write (see the book xUnit test patterns) so frankly, it is not worth the effort, except in new code. I can get away with saying that because I have written 2500+ test cases for the latest bit of development I did.&#039;&#039;--[[User:Tim Hunt|Tim Hunt]] 15:23, 6 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hi Tim, please don&#039;t take me wrong.  I think the development team at Moodle is already very agile.  It is actually one of the few agile projects that I have seen in the open source communities.  The effort that you and many diligent individuals have made to coordinate and integrate contributions from all over the world is outstanding.  I just made these comments based on the software development environment I came from, where no code change is allowed to commit without any test written and reviewer signs off.  Our VCS is actually configured to reject any commit that do not have these two elements present.  You are correct that I do not fully know the Moodle development process yet, but the fact that I see codes (particular contributed codes) being checked in without any tests, I just thought it would help bolster Moodle&#039;s core code by enforcing this rule in future commits. And implementing something like [http://codereview.chromium.org Google Chromium code review] interface allows more eyes on the check-in codes, and hopefully alleviates some of the loads from you and the rest of the core team, who have been doing a wonderful work on peer-reviewing all these time.  Again, please don&#039;t take this as a criticism but a brian-storming idea if you will.  Peace.&#039;&#039; --Carson&lt;/div&gt;</summary>
		<author><name>Croux</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81484</id>
		<title>Development:Moodle 3.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81484"/>
		<updated>2011-02-22T12:26:06Z</updated>

		<summary type="html">&lt;p&gt;Croux: /* Please Sanitize the PHP code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Warning! This page is highly speculative.&lt;br /&gt;
&lt;br /&gt;
It is basically a dumping ground for random ideas from anyone who wants to write something here. It is not in any way an official Moodle roadmap or policy. Some of the good ideas here may be adopted, but most of the ideas are pretty crazy, and will never work. Basically, it is a place to brainstorm. Please add your own crazy ideas! They don&#039;t need to be consistent yet, just make sure your ideas are here to be boiled down later on.&lt;br /&gt;
&lt;br /&gt;
Think Big!&lt;br /&gt;
&lt;br /&gt;
===One type of plugin===&lt;br /&gt;
&lt;br /&gt;
All plugins/modules could be subclassed from one plugin class, making installation easier and simplifying the API a lot.&lt;br /&gt;
&lt;br /&gt;
===Look at new framework===&lt;br /&gt;
&lt;br /&gt;
Possibly base Moodle 3.0 on new existing frameworks?  Ruby on Rails?  Drupal?&lt;br /&gt;
&lt;br /&gt;
==== Drupal ====&lt;br /&gt;
There&#039;s an interesting discussion in the Language Teaching Course:&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=83963 How can Moodle be more of a social networking site?] with some links to the [http://groups.drupal.org/drupal-education Drupal in Education User Group]. --[[User:Frank Ralf|Frank Ralf]] 14:27, 18 January 2009 (CST)&lt;br /&gt;
&lt;br /&gt;
(I started a section about [[User_talk:Frank_Ralf#What_Moodle_could_learn_from_Drupal|What Moodle could learn from Drupal]] on my User talk page. --[[User:Frank Ralf|Frank Ralf]] 06:35, 21 January 2009 (CST))&lt;br /&gt;
&lt;br /&gt;
There are some activities in the Drupal community regarding better interoperability and integration of Moodle and Drupal, see [http://moodle.org/mod/forum/discuss.php?d=121859 Drupal Quiz module - data exchange with other LMSes] and [http://moodle.org/mod/forum/discuss.php?d=119857 Moodle integration with Drupal]. --[[User:Frank Ralf|Frank Ralf]] 08:10, 10 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Zend Framework ====&lt;br /&gt;
How about [http://framework.zend.com/ZendFramework ZendFramework]? It&#039;s open source, of course, runs on PHP, already has a pretty cool API with a well stocked service library, and the coders are working closely with Google, Adobe and Microsoft, among others, to produce some really high quality code. One feature I particularly like is that the main bulk of the PHP code is outside the public HTML directory. Since version 1.7 It also offers pretty good support for Flash Remoting (AMF0 and AMF3) making it especially easy to create integrated RIA frameworks. [http://framework.zend.com/about/components Check here] to see what you get &amp;quot;out of the box&amp;quot;. It looks like they&#039;ve already done most of the hard work for you.&lt;br /&gt;
&lt;br /&gt;
=== Moodlets===&lt;br /&gt;
&lt;br /&gt;
Individual-independent-activities backup/restore + metadata  - Eloy&lt;br /&gt;
&lt;br /&gt;
=== Support for alternate interfaces, mobile interfaces ===&lt;br /&gt;
&lt;br /&gt;
Optimized for tablet computing: iPad, others&lt;br /&gt;
Completely flash-based interface?  Designed for offline clients?&lt;br /&gt;
&lt;br /&gt;
=== Integrated category/taxonomy system ===&lt;br /&gt;
&lt;br /&gt;
Putting together the &amp;quot;course categories&amp;quot;, &amp;quot;tags&amp;quot; into a generic taxonomy system.&lt;br /&gt;
&lt;br /&gt;
=== Save the 1970-2038 limitation ===&lt;br /&gt;
&lt;br /&gt;
Those UNIX timestamps are [http://moodle.org/mod/forum/discuss.php?d=101984 pretty limited].&lt;br /&gt;
&lt;br /&gt;
=== Translation framework ===&lt;br /&gt;
Drupal uses [http://www.gnu.org/software/gettext/gettext.html GNU gettext].po files for providing translations which is a very robust and well understood format.&lt;br /&gt;
&lt;br /&gt;
Or XLIFF format (use in Zend Framework, Symfony, Intl extension) with [http://icu-project.org/download/rbmanager.html Resource bundle manager]&lt;br /&gt;
&lt;br /&gt;
=== Use PHP 5.3 Native Power ===&lt;br /&gt;
Like : PDO, SPL, Namespace, Intl, Phar...&lt;br /&gt;
(Zend Framework 2 use it)&lt;br /&gt;
&lt;br /&gt;
=== Make a replica Moodle ===&lt;br /&gt;
1 Moodle library, 100 Moodle platforms, just adding plugins and themes.&lt;br /&gt;
&lt;br /&gt;
=== Please Sanitize the PHP code ===&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;ini_set&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;error_reporting&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;@&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;eval&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Don&#039;t use alias : exemple : &#039;&#039;&#039;die&#039;&#039;&#039; (it&#039;s &#039;&#039;&#039;exit&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use depreciates functions : exemple : &#039;&#039;&#039;split&#039;&#039;&#039; (it&#039;s &#039;&#039;&#039;explode&#039;&#039;&#039; or &#039;&#039;&#039;preg_split&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use the right functions : exemple : it&#039;s not &#039;&#039;&#039;ini_set(&#039;include_path&#039;)&#039;&#039;&#039; it&#039;s &#039;&#039;&#039;set_include_path&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use Registry Pattern instead global&lt;br /&gt;
&lt;br /&gt;
Use Docbook everywhere&lt;br /&gt;
&lt;br /&gt;
Moodle is now PHP 5 : clear &amp;quot;&#039;&#039;&#039;var&#039;&#039;&#039;&amp;quot; in class, methods are &#039;&#039;&#039;public&#039;&#039;&#039;/&#039;&#039;&#039;private&#039;&#039;&#039;/&#039;&#039;&#039;protected&#039;&#039;&#039; &#039;&#039;&#039;function&#039;&#039;&#039; (not just &#039;&#039;&#039;function&#039;&#039;&#039;) and &#039;&#039;&#039;__construct&#039;&#039;&#039; for constructor method&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Many thanks for your invaluable and expert opinion, we&#039;ll be working hard on all those, sincerely! --[[User:Eloy Lafuente (stronk7)|Eloy Lafuente (stronk7)]] 01:37, 19 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Built for Teacher-to-teacher Content Sharing ===&lt;br /&gt;
&lt;br /&gt;
Drag-and-drop courses and course items from Moodle Hubs&lt;br /&gt;
&lt;br /&gt;
=== Learn from LAMS and Dokeos ===&lt;br /&gt;
&lt;br /&gt;
Integrated authoring system&lt;br /&gt;
Drag-and-drop sequential scenario-building&lt;br /&gt;
&lt;br /&gt;
=== Invent something crazily new ===&lt;br /&gt;
3-line ideas are welcome here:&lt;br /&gt;
* participation reward systems&lt;br /&gt;
* Add trashcan and /or undo function&lt;br /&gt;
* Make editing of modules WYSIWYG, no more icons that change layout&lt;br /&gt;
* Collaborative spreadsheet editing functionality - like Google Docs.&lt;br /&gt;
&lt;br /&gt;
=== More Agile Development ===&lt;br /&gt;
There are many elements in agile development that could apply to Moodle and benefit the development process tremendously.  With proper application of these elements, the Moodle&#039;s core code can be more solid and robust.  Any programmer can make changes to the source with confidence and not be afraid of breaking any other features.&lt;br /&gt;
&lt;br /&gt;
==== Test Driven Development ====&lt;br /&gt;
Require unit tests and acceptance tests be written for every change made to the core code.  No code should be committed to the core without any test written.  A code reviewer should run the tests and expect them to be failed before applying the code changes, and expect they all passed after applying the fix or code changes.  S/he should also run the full test suite to make sure the changes did not break any existing features and functionalities.&lt;br /&gt;
&lt;br /&gt;
==== Code Review ====&lt;br /&gt;
Implement a code review process like the [http://codereview.chromium.org Google Chromium project].  Developers can only commit to the trunk with one or more reviewers&#039; approval.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I wonder if the person who added these ideas has any idea how Moodle development actually works. I would guess not. The process is already very agile. All contributions are code-reviewed. There are not enough unit tests yet, but writing unit tests for legacy code is the hardest sort of tests to write (see the book xUnit test patterns) so frankly, it is not worth the effort, except in new code. I can get away with saying that because I have written 2500+ test cases for the latest bit of development I did.&#039;&#039;--[[User:Tim Hunt|Tim Hunt]] 15:23, 6 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hi Tim, please don&#039;t take me wrong.  I think the development team at Moodle is already very agile.  It is actually one of the few agile projects that I have seen in the open source communities.  The effort that you and many diligent individuals have made to coordinate and integrate contributions from all over the world is outstanding.  I just made these comments based on the software development environment I came from, where no code change is allowed to commit without any test written and reviewer signs off.  Our VCS is actually configured to reject any commit that do not have these two elements present.  You are correct that I do not fully know the Moodle development process yet, but the fact that I see codes (particular contributed codes) being checked in without any tests, I just thought it would help bolster Moodle&#039;s core code by enforcing this rule in future commits. And implementing something like [http://codereview.chromium.org Google Chromium code review] interface allows more eyes on the check-in codes, and hopefully alleviates some of the loads from you and the rest of the core team, who have been doing a wonderful work on peer-reviewing all these time.  Again, please don&#039;t take this as a criticism but a brian-storming idea if you will.  Peace.&#039;&#039; --Carson&lt;/div&gt;</summary>
		<author><name>Croux</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81482</id>
		<title>Development:Moodle 3.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81482"/>
		<updated>2011-02-22T10:36:04Z</updated>

		<summary type="html">&lt;p&gt;Croux: /* Please Sanitize the PHP code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Warning! This page is highly speculative.&lt;br /&gt;
&lt;br /&gt;
It is basically a dumping ground for random ideas from anyone who wants to write something here. It is not in any way an official Moodle roadmap or policy. Some of the good ideas here may be adopted, but most of the ideas are pretty crazy, and will never work. Basically, it is a place to brainstorm. Please add your own crazy ideas! They don&#039;t need to be consistent yet, just make sure your ideas are here to be boiled down later on.&lt;br /&gt;
&lt;br /&gt;
Think Big!&lt;br /&gt;
&lt;br /&gt;
===One type of plugin===&lt;br /&gt;
&lt;br /&gt;
All plugins/modules could be subclassed from one plugin class, making installation easier and simplifying the API a lot.&lt;br /&gt;
&lt;br /&gt;
===Look at new framework===&lt;br /&gt;
&lt;br /&gt;
Possibly base Moodle 3.0 on new existing frameworks?  Ruby on Rails?  Drupal?&lt;br /&gt;
&lt;br /&gt;
==== Drupal ====&lt;br /&gt;
There&#039;s an interesting discussion in the Language Teaching Course:&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=83963 How can Moodle be more of a social networking site?] with some links to the [http://groups.drupal.org/drupal-education Drupal in Education User Group]. --[[User:Frank Ralf|Frank Ralf]] 14:27, 18 January 2009 (CST)&lt;br /&gt;
&lt;br /&gt;
(I started a section about [[User_talk:Frank_Ralf#What_Moodle_could_learn_from_Drupal|What Moodle could learn from Drupal]] on my User talk page. --[[User:Frank Ralf|Frank Ralf]] 06:35, 21 January 2009 (CST))&lt;br /&gt;
&lt;br /&gt;
There are some activities in the Drupal community regarding better interoperability and integration of Moodle and Drupal, see [http://moodle.org/mod/forum/discuss.php?d=121859 Drupal Quiz module - data exchange with other LMSes] and [http://moodle.org/mod/forum/discuss.php?d=119857 Moodle integration with Drupal]. --[[User:Frank Ralf|Frank Ralf]] 08:10, 10 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Zend Framework ====&lt;br /&gt;
How about [http://framework.zend.com/ZendFramework ZendFramework]? It&#039;s open source, of course, runs on PHP, already has a pretty cool API with a well stocked service library, and the coders are working closely with Google, Adobe and Microsoft, among others, to produce some really high quality code. One feature I particularly like is that the main bulk of the PHP code is outside the public HTML directory. Since version 1.7 It also offers pretty good support for Flash Remoting (AMF0 and AMF3) making it especially easy to create integrated RIA frameworks. [http://framework.zend.com/about/components Check here] to see what you get &amp;quot;out of the box&amp;quot;. It looks like they&#039;ve already done most of the hard work for you.&lt;br /&gt;
&lt;br /&gt;
=== Moodlets===&lt;br /&gt;
&lt;br /&gt;
Individual-independent-activities backup/restore + metadata  - Eloy&lt;br /&gt;
&lt;br /&gt;
=== Support for alternate interfaces, mobile interfaces ===&lt;br /&gt;
&lt;br /&gt;
Optimized for tablet computing: iPad, others&lt;br /&gt;
Completely flash-based interface?  Designed for offline clients?&lt;br /&gt;
&lt;br /&gt;
=== Integrated category/taxonomy system ===&lt;br /&gt;
&lt;br /&gt;
Putting together the &amp;quot;course categories&amp;quot;, &amp;quot;tags&amp;quot; into a generic taxonomy system.&lt;br /&gt;
&lt;br /&gt;
=== Save the 1970-2038 limitation ===&lt;br /&gt;
&lt;br /&gt;
Those UNIX timestamps are [http://moodle.org/mod/forum/discuss.php?d=101984 pretty limited].&lt;br /&gt;
&lt;br /&gt;
=== Translation framework ===&lt;br /&gt;
Drupal uses [http://www.gnu.org/software/gettext/gettext.html GNU gettext].po files for providing translations which is a very robust and well understood format.&lt;br /&gt;
&lt;br /&gt;
Or XLIFF format (use in Zend Framework, Symfony, Intl extension) with [http://icu-project.org/download/rbmanager.html Resource bundle manager]&lt;br /&gt;
&lt;br /&gt;
=== Use PHP 5.3 Native Power ===&lt;br /&gt;
Like : PDO, SPL, Namespace, Intl, Phar...&lt;br /&gt;
(Zend Framework 2 use it)&lt;br /&gt;
&lt;br /&gt;
=== Make a replica Moodle ===&lt;br /&gt;
1 Moodle library, 100 Moodle platforms, just adding plugins and themes.&lt;br /&gt;
&lt;br /&gt;
=== Please Sanitize the PHP code ===&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;ini_set&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;error_reporting&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;@&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : &#039;&#039;&#039;eval&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Don&#039;t use alias : exemple : &#039;&#039;&#039;die&#039;&#039;&#039; (it&#039;s &#039;&#039;&#039;exit&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use depreciates functions : exemple : &#039;&#039;&#039;split&#039;&#039;&#039; (it&#039;s &#039;&#039;&#039;explode&#039;&#039;&#039; or &#039;&#039;&#039;preg_split&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use the right functions : exemple : it&#039;s not &#039;&#039;&#039;ini_set(&#039;include_path&#039;)&#039;&#039;&#039; it&#039;s &#039;&#039;&#039;set_include_path&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use Registry Pattern instead global&lt;br /&gt;
&lt;br /&gt;
Use Docbook everywhere&lt;br /&gt;
&lt;br /&gt;
Moodle is now PHP 5 : clear &amp;quot;&#039;&#039;&#039;var&#039;&#039;&#039;&amp;quot; in class, methods are &#039;&#039;&#039;public&#039;&#039;&#039;/&#039;&#039;&#039;private&#039;&#039;&#039;/&#039;&#039;&#039;protected&#039;&#039;&#039; &#039;&#039;&#039;function&#039;&#039;&#039; (not just &#039;&#039;&#039;function&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
:Many thanks for your invaluable and expert opinion, we&#039;ll be working hard on all those, sincerely! --[[User:Eloy Lafuente (stronk7)|Eloy Lafuente (stronk7)]] 01:37, 19 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Built for Teacher-to-teacher Content Sharing ===&lt;br /&gt;
&lt;br /&gt;
Drag-and-drop courses and course items from Moodle Hubs&lt;br /&gt;
&lt;br /&gt;
=== Learn from LAMS and Dokeos ===&lt;br /&gt;
&lt;br /&gt;
Integrated authoring system&lt;br /&gt;
Drag-and-drop sequential scenario-building&lt;br /&gt;
&lt;br /&gt;
=== Invent something crazily new ===&lt;br /&gt;
3-line ideas are welcome here:&lt;br /&gt;
* participation reward systems&lt;br /&gt;
* Add trashcan and /or undo function&lt;br /&gt;
* Make editing of modules WYSIWYG, no more icons that change layout&lt;br /&gt;
* Collaborative spreadsheet editing functionality - like Google Docs.&lt;br /&gt;
&lt;br /&gt;
=== More Agile Development ===&lt;br /&gt;
There are many elements in agile development that could apply to Moodle and benefit the development process tremendously.  With proper application of these elements, the Moodle&#039;s core code can be more solid and robust.  Any programmer can make changes to the source with confidence and not be afraid of breaking any other features.&lt;br /&gt;
&lt;br /&gt;
==== Test Driven Development ====&lt;br /&gt;
Require unit tests and acceptance tests be written for every change made to the core code.  No code should be committed to the core without any test written.  A code reviewer should run the tests and expect them to be failed before applying the code changes, and expect they all passed after applying the fix or code changes.  S/he should also run the full test suite to make sure the changes did not break any existing features and functionalities.&lt;br /&gt;
&lt;br /&gt;
==== Code Review ====&lt;br /&gt;
Implement a code review process like the [http://codereview.chromium.org Google Chromium project].  Developers can only commit to the trunk with one or more reviewers&#039; approval.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I wonder if the person who added these ideas has any idea how Moodle development actually works. I would guess not. The process is already very agile. All contributions are code-reviewed. There are not enough unit tests yet, but writing unit tests for legacy code is the hardest sort of tests to write (see the book xUnit test patterns) so frankly, it is not worth the effort, except in new code. I can get away with saying that because I have written 2500+ test cases for the latest bit of development I did.&#039;&#039;--[[User:Tim Hunt|Tim Hunt]] 15:23, 6 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hi Tim, please don&#039;t take me wrong.  I think the development team at Moodle is already very agile.  It is actually one of the few agile projects that I have seen in the open source communities.  The effort that you and many diligent individuals have made to coordinate and integrate contributions from all over the world is outstanding.  I just made these comments based on the software development environment I came from, where no code change is allowed to commit without any test written and reviewer signs off.  Our VCS is actually configured to reject any commit that do not have these two elements present.  You are correct that I do not fully know the Moodle development process yet, but the fact that I see codes (particular contributed codes) being checked in without any tests, I just thought it would help bolster Moodle&#039;s core code by enforcing this rule in future commits. And implementing something like [http://codereview.chromium.org Google Chromium code review] interface allows more eyes on the check-in codes, and hopefully alleviates some of the loads from you and the rest of the core team, who have been doing a wonderful work on peer-reviewing all these time.  Again, please don&#039;t take this as a criticism but a brian-storming idea if you will.  Peace.&#039;&#039; --Carson&lt;/div&gt;</summary>
		<author><name>Croux</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81396</id>
		<title>Development:Moodle 3.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81396"/>
		<updated>2011-02-18T00:47:30Z</updated>

		<summary type="html">&lt;p&gt;Croux: /* Please Sanitize the PHP code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Warning! This page is highly speculative.&lt;br /&gt;
&lt;br /&gt;
It is basically a dumping ground for random ideas from anyone who wants to write something here. It is not in any way an official Moodle roadmap or policy. Some of the good ideas here may be adopted, but most of the ideas are pretty crazy, and will never work. Basically, it is a place to brainstorm. Please add your own crazy ideas! They don&#039;t need to be consistent yet, just make sure your ideas are here to be boiled down later on.&lt;br /&gt;
&lt;br /&gt;
Think Big!&lt;br /&gt;
&lt;br /&gt;
===One type of plugin===&lt;br /&gt;
&lt;br /&gt;
All plugins/modules could be subclassed from one plugin class, making installation easier and simplifying the API a lot.&lt;br /&gt;
&lt;br /&gt;
===Look at new framework===&lt;br /&gt;
&lt;br /&gt;
Possibly base Moodle 3.0 on new existing frameworks?  Ruby on Rails?  Drupal?&lt;br /&gt;
&lt;br /&gt;
==== Drupal ====&lt;br /&gt;
There&#039;s an interesting discussion in the Language Teaching Course:&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=83963 How can Moodle be more of a social networking site?] with some links to the [http://groups.drupal.org/drupal-education Drupal in Education User Group]. --[[User:Frank Ralf|Frank Ralf]] 14:27, 18 January 2009 (CST)&lt;br /&gt;
&lt;br /&gt;
(I started a section about [[User_talk:Frank_Ralf#What_Moodle_could_learn_from_Drupal|What Moodle could learn from Drupal]] on my User talk page. --[[User:Frank Ralf|Frank Ralf]] 06:35, 21 January 2009 (CST))&lt;br /&gt;
&lt;br /&gt;
There are some activities in the Drupal community regarding better interoperability and integration of Moodle and Drupal, see [http://moodle.org/mod/forum/discuss.php?d=121859 Drupal Quiz module - data exchange with other LMSes] and [http://moodle.org/mod/forum/discuss.php?d=119857 Moodle integration with Drupal]. --[[User:Frank Ralf|Frank Ralf]] 08:10, 10 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Zend Framework ====&lt;br /&gt;
How about [http://framework.zend.com/ZendFramework ZendFramework]? It&#039;s open source, of course, runs on PHP, already has a pretty cool API with a well stocked service library, and the coders are working closely with Google, Adobe and Microsoft, among others, to produce some really high quality code. One feature I particularly like is that the main bulk of the PHP code is outside the public HTML directory. Since version 1.7 It also offers pretty good support for Flash Remoting (AMF0 and AMF3) making it especially easy to create integrated RIA frameworks. [http://framework.zend.com/about/components Check here] to see what you get &amp;quot;out of the box&amp;quot;. It looks like they&#039;ve already done most of the hard work for you.&lt;br /&gt;
&lt;br /&gt;
=== Moodlets===&lt;br /&gt;
&lt;br /&gt;
Individual-independent-activities backup/restore + metadata  - Eloy&lt;br /&gt;
&lt;br /&gt;
=== Support for alternate interfaces, mobile interfaces ===&lt;br /&gt;
&lt;br /&gt;
Optimized for tablet computing: iPad, others&lt;br /&gt;
Completely flash-based interface?  Designed for offline clients?&lt;br /&gt;
&lt;br /&gt;
=== Integrated category/taxonomy system ===&lt;br /&gt;
&lt;br /&gt;
Putting together the &amp;quot;course categories&amp;quot;, &amp;quot;tags&amp;quot; into a generic taxonomy system.&lt;br /&gt;
&lt;br /&gt;
=== Save the 1970-2038 limitation ===&lt;br /&gt;
&lt;br /&gt;
Those UNIX timestamps are [http://moodle.org/mod/forum/discuss.php?d=101984 pretty limited].&lt;br /&gt;
&lt;br /&gt;
=== Translation framework ===&lt;br /&gt;
Drupal uses [http://www.gnu.org/software/gettext/gettext.html GNU gettext].po files for providing translations which is a very robust and well understood format.&lt;br /&gt;
&lt;br /&gt;
Or XLIFF format (use in Zend Framework, Symfony, Intl extension) with [http://icu-project.org/download/rbmanager.html Resource bundle manager]&lt;br /&gt;
&lt;br /&gt;
=== Use PHP 5.3 Native Power ===&lt;br /&gt;
Like : PDO, SPL, Namespace, Intl, Phar...&lt;br /&gt;
(Zend Framework 2 use it)&lt;br /&gt;
&lt;br /&gt;
=== Make a replica Moodle ===&lt;br /&gt;
1 Moodle library, 100 Moodle platforms, just adding plugins and themes.&lt;br /&gt;
&lt;br /&gt;
=== Please Sanitize the PHP code ===&lt;br /&gt;
Don&#039;t use : ini_set&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : error_reporting&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : @&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : eval&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use alias : exemple : die (it&#039;s exit)&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use depreciates functions : exemple : split (it&#039;s explode or preg_split)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use the right functions : exemple : it&#039;s not ini_set(&#039;include_path&#039;) it&#039;s set_include_path&lt;br /&gt;
&lt;br /&gt;
Use Docbook everywhere&lt;br /&gt;
&lt;br /&gt;
Moodle is now PHP 5 : clear &amp;quot;var&amp;quot; in class, methods are public/private/protected function (not just function)&lt;br /&gt;
&lt;br /&gt;
=== Built for Teacher-to-teacher Content Sharing ===&lt;br /&gt;
&lt;br /&gt;
Drag-and-drop courses and course items from Moodle Hubs&lt;br /&gt;
&lt;br /&gt;
=== Learn from LAMS and Dokeos ===&lt;br /&gt;
&lt;br /&gt;
Integrated authoring system&lt;br /&gt;
Drag-and-drop sequential scenario-building&lt;br /&gt;
&lt;br /&gt;
=== Invent something crazily new ===&lt;br /&gt;
3-line ideas are welcome here:&lt;br /&gt;
* participation reward systems&lt;br /&gt;
* Add trashcan and /or undo function&lt;br /&gt;
* Make editing of modules WYSIWYG, no more icons that change layout&lt;br /&gt;
* Collaborative spreadsheet editing functionality - like Google Docs.&lt;br /&gt;
&lt;br /&gt;
=== More Agile Development ===&lt;br /&gt;
There are many elements in agile development that could apply to Moodle and benefit the development process tremendously.  With proper application of these elements, the Moodle&#039;s core code can be more solid and robust.  Any programmer can make changes to the source with confidence and not be afraid of breaking any other features.&lt;br /&gt;
&lt;br /&gt;
==== Test Driven Development ====&lt;br /&gt;
Require unit tests and acceptance tests be written for every change made to the core code.  No code should be committed to the core without any test written.  A code reviewer should run the tests and expect them to be failed before applying the code changes, and expect they all passed after applying the fix or code changes.  S/he should also run the full test suite to make sure the changes did not break any existing features and functionalities.&lt;br /&gt;
&lt;br /&gt;
==== Code Review ====&lt;br /&gt;
Implement a code review process like the [http://codereview.chromium.org Google Chromium project].  Developers can only commit to the trunk with one or more reviewers&#039; approval.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I wonder if the person who added these ideas has any idea how Moodle development actually works. I would guess not. The process is already very agile. All contributions are code-reviewed. There are not enough unit tests yet, but writing unit tests for legacy code is the hardest sort of tests to write (see the book xUnit test patterns) so frankly, it is not worth the effort, except in new code. I can get away with saying that because I have written 2500+ test cases for the latest bit of development I did.&#039;&#039;--[[User:Tim Hunt|Tim Hunt]] 15:23, 6 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hi Tim, please don&#039;t take me wrong.  I think the development team at Moodle is already very agile.  It is actually one of the few agile projects that I have seen in the open source communities.  The effort that you and many diligent individuals have made to coordinate and integrate contributions from all over the world is outstanding.  I just made these comments based on the software development environment I came from, where no code change is allowed to commit without any test written and reviewer signs off.  Our VCS is actually configured to reject any commit that do not have these two elements present.  You are correct that I do not fully know the Moodle development process yet, but the fact that I see codes (particular contributed codes) being checked in without any tests, I just thought it would help bolster Moodle&#039;s core code by enforcing this rule in future commits. And implementing something like [http://codereview.chromium.org Google Chromium code review] interface allows more eyes on the check-in codes, and hopefully alleviates some of the loads from you and the rest of the core team, who have been doing a wonderful work on peer-reviewing all these time.  Again, please don&#039;t take this as a criticism but a brian-storming idea if you will.  Peace.&#039;&#039; --Carson&lt;/div&gt;</summary>
		<author><name>Croux</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81395</id>
		<title>Development:Moodle 3.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81395"/>
		<updated>2011-02-18T00:46:53Z</updated>

		<summary type="html">&lt;p&gt;Croux: /* Please Sanitize the PHP code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Warning! This page is highly speculative.&lt;br /&gt;
&lt;br /&gt;
It is basically a dumping ground for random ideas from anyone who wants to write something here. It is not in any way an official Moodle roadmap or policy. Some of the good ideas here may be adopted, but most of the ideas are pretty crazy, and will never work. Basically, it is a place to brainstorm. Please add your own crazy ideas! They don&#039;t need to be consistent yet, just make sure your ideas are here to be boiled down later on.&lt;br /&gt;
&lt;br /&gt;
Think Big!&lt;br /&gt;
&lt;br /&gt;
===One type of plugin===&lt;br /&gt;
&lt;br /&gt;
All plugins/modules could be subclassed from one plugin class, making installation easier and simplifying the API a lot.&lt;br /&gt;
&lt;br /&gt;
===Look at new framework===&lt;br /&gt;
&lt;br /&gt;
Possibly base Moodle 3.0 on new existing frameworks?  Ruby on Rails?  Drupal?&lt;br /&gt;
&lt;br /&gt;
==== Drupal ====&lt;br /&gt;
There&#039;s an interesting discussion in the Language Teaching Course:&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=83963 How can Moodle be more of a social networking site?] with some links to the [http://groups.drupal.org/drupal-education Drupal in Education User Group]. --[[User:Frank Ralf|Frank Ralf]] 14:27, 18 January 2009 (CST)&lt;br /&gt;
&lt;br /&gt;
(I started a section about [[User_talk:Frank_Ralf#What_Moodle_could_learn_from_Drupal|What Moodle could learn from Drupal]] on my User talk page. --[[User:Frank Ralf|Frank Ralf]] 06:35, 21 January 2009 (CST))&lt;br /&gt;
&lt;br /&gt;
There are some activities in the Drupal community regarding better interoperability and integration of Moodle and Drupal, see [http://moodle.org/mod/forum/discuss.php?d=121859 Drupal Quiz module - data exchange with other LMSes] and [http://moodle.org/mod/forum/discuss.php?d=119857 Moodle integration with Drupal]. --[[User:Frank Ralf|Frank Ralf]] 08:10, 10 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Zend Framework ====&lt;br /&gt;
How about [http://framework.zend.com/ZendFramework ZendFramework]? It&#039;s open source, of course, runs on PHP, already has a pretty cool API with a well stocked service library, and the coders are working closely with Google, Adobe and Microsoft, among others, to produce some really high quality code. One feature I particularly like is that the main bulk of the PHP code is outside the public HTML directory. Since version 1.7 It also offers pretty good support for Flash Remoting (AMF0 and AMF3) making it especially easy to create integrated RIA frameworks. [http://framework.zend.com/about/components Check here] to see what you get &amp;quot;out of the box&amp;quot;. It looks like they&#039;ve already done most of the hard work for you.&lt;br /&gt;
&lt;br /&gt;
=== Moodlets===&lt;br /&gt;
&lt;br /&gt;
Individual-independent-activities backup/restore + metadata  - Eloy&lt;br /&gt;
&lt;br /&gt;
=== Support for alternate interfaces, mobile interfaces ===&lt;br /&gt;
&lt;br /&gt;
Optimized for tablet computing: iPad, others&lt;br /&gt;
Completely flash-based interface?  Designed for offline clients?&lt;br /&gt;
&lt;br /&gt;
=== Integrated category/taxonomy system ===&lt;br /&gt;
&lt;br /&gt;
Putting together the &amp;quot;course categories&amp;quot;, &amp;quot;tags&amp;quot; into a generic taxonomy system.&lt;br /&gt;
&lt;br /&gt;
=== Save the 1970-2038 limitation ===&lt;br /&gt;
&lt;br /&gt;
Those UNIX timestamps are [http://moodle.org/mod/forum/discuss.php?d=101984 pretty limited].&lt;br /&gt;
&lt;br /&gt;
=== Translation framework ===&lt;br /&gt;
Drupal uses [http://www.gnu.org/software/gettext/gettext.html GNU gettext].po files for providing translations which is a very robust and well understood format.&lt;br /&gt;
&lt;br /&gt;
Or XLIFF format (use in Zend Framework, Symfony, Intl extension) with [http://icu-project.org/download/rbmanager.html Resource bundle manager]&lt;br /&gt;
&lt;br /&gt;
=== Use PHP 5.3 Native Power ===&lt;br /&gt;
Like : PDO, SPL, Namespace, Intl, Phar...&lt;br /&gt;
(Zend Framework 2 use it)&lt;br /&gt;
&lt;br /&gt;
=== Make a replica Moodle ===&lt;br /&gt;
1 Moodle library, 100 Moodle platforms, just adding plugins and themes.&lt;br /&gt;
&lt;br /&gt;
=== Please Sanitize the PHP code ===&lt;br /&gt;
Don&#039;t use : ini_set&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : error_reporting&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : @&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : eval&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use alias : exemple : die&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use depreciates functions : exemple : split (it&#039;s explode or preg_split)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use the right functions : exemple : it&#039;s not ini_set(&#039;include_path&#039;) it&#039;s set_include_path&lt;br /&gt;
&lt;br /&gt;
Use Docbook everywhere&lt;br /&gt;
&lt;br /&gt;
Moodle is now PHP 5 : clear &amp;quot;var&amp;quot; in class, methods are public/private/protected function (not just function)&lt;br /&gt;
&lt;br /&gt;
=== Built for Teacher-to-teacher Content Sharing ===&lt;br /&gt;
&lt;br /&gt;
Drag-and-drop courses and course items from Moodle Hubs&lt;br /&gt;
&lt;br /&gt;
=== Learn from LAMS and Dokeos ===&lt;br /&gt;
&lt;br /&gt;
Integrated authoring system&lt;br /&gt;
Drag-and-drop sequential scenario-building&lt;br /&gt;
&lt;br /&gt;
=== Invent something crazily new ===&lt;br /&gt;
3-line ideas are welcome here:&lt;br /&gt;
* participation reward systems&lt;br /&gt;
* Add trashcan and /or undo function&lt;br /&gt;
* Make editing of modules WYSIWYG, no more icons that change layout&lt;br /&gt;
* Collaborative spreadsheet editing functionality - like Google Docs.&lt;br /&gt;
&lt;br /&gt;
=== More Agile Development ===&lt;br /&gt;
There are many elements in agile development that could apply to Moodle and benefit the development process tremendously.  With proper application of these elements, the Moodle&#039;s core code can be more solid and robust.  Any programmer can make changes to the source with confidence and not be afraid of breaking any other features.&lt;br /&gt;
&lt;br /&gt;
==== Test Driven Development ====&lt;br /&gt;
Require unit tests and acceptance tests be written for every change made to the core code.  No code should be committed to the core without any test written.  A code reviewer should run the tests and expect them to be failed before applying the code changes, and expect they all passed after applying the fix or code changes.  S/he should also run the full test suite to make sure the changes did not break any existing features and functionalities.&lt;br /&gt;
&lt;br /&gt;
==== Code Review ====&lt;br /&gt;
Implement a code review process like the [http://codereview.chromium.org Google Chromium project].  Developers can only commit to the trunk with one or more reviewers&#039; approval.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I wonder if the person who added these ideas has any idea how Moodle development actually works. I would guess not. The process is already very agile. All contributions are code-reviewed. There are not enough unit tests yet, but writing unit tests for legacy code is the hardest sort of tests to write (see the book xUnit test patterns) so frankly, it is not worth the effort, except in new code. I can get away with saying that because I have written 2500+ test cases for the latest bit of development I did.&#039;&#039;--[[User:Tim Hunt|Tim Hunt]] 15:23, 6 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hi Tim, please don&#039;t take me wrong.  I think the development team at Moodle is already very agile.  It is actually one of the few agile projects that I have seen in the open source communities.  The effort that you and many diligent individuals have made to coordinate and integrate contributions from all over the world is outstanding.  I just made these comments based on the software development environment I came from, where no code change is allowed to commit without any test written and reviewer signs off.  Our VCS is actually configured to reject any commit that do not have these two elements present.  You are correct that I do not fully know the Moodle development process yet, but the fact that I see codes (particular contributed codes) being checked in without any tests, I just thought it would help bolster Moodle&#039;s core code by enforcing this rule in future commits. And implementing something like [http://codereview.chromium.org Google Chromium code review] interface allows more eyes on the check-in codes, and hopefully alleviates some of the loads from you and the rest of the core team, who have been doing a wonderful work on peer-reviewing all these time.  Again, please don&#039;t take this as a criticism but a brian-storming idea if you will.  Peace.&#039;&#039; --Carson&lt;/div&gt;</summary>
		<author><name>Croux</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81375</id>
		<title>Development:Moodle 3.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=81375"/>
		<updated>2011-02-17T15:41:43Z</updated>

		<summary type="html">&lt;p&gt;Croux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Warning! This page is highly speculative.&lt;br /&gt;
&lt;br /&gt;
It is basically a dumping ground for random ideas from anyone who wants to write something here. It is not in any way an official Moodle roadmap or policy. Some of the good ideas here may be adopted, but most of the ideas are pretty crazy, and will never work. Basically, it is a place to brainstorm. Please add your own crazy ideas! They don&#039;t need to be consistent yet, just make sure your ideas are here to be boiled down later on.&lt;br /&gt;
&lt;br /&gt;
Think Big!&lt;br /&gt;
&lt;br /&gt;
===One type of plugin===&lt;br /&gt;
&lt;br /&gt;
All plugins/modules could be subclassed from one plugin class, making installation easier and simplifying the API a lot.&lt;br /&gt;
&lt;br /&gt;
===Look at new framework===&lt;br /&gt;
&lt;br /&gt;
Possibly base Moodle 3.0 on new existing frameworks?  Ruby on Rails?  Drupal?&lt;br /&gt;
&lt;br /&gt;
==== Drupal ====&lt;br /&gt;
There&#039;s an interesting discussion in the Language Teaching Course:&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=83963 How can Moodle be more of a social networking site?] with some links to the [http://groups.drupal.org/drupal-education Drupal in Education User Group]. --[[User:Frank Ralf|Frank Ralf]] 14:27, 18 January 2009 (CST)&lt;br /&gt;
&lt;br /&gt;
(I started a section about [[User_talk:Frank_Ralf#What_Moodle_could_learn_from_Drupal|What Moodle could learn from Drupal]] on my User talk page. --[[User:Frank Ralf|Frank Ralf]] 06:35, 21 January 2009 (CST))&lt;br /&gt;
&lt;br /&gt;
There are some activities in the Drupal community regarding better interoperability and integration of Moodle and Drupal, see [http://moodle.org/mod/forum/discuss.php?d=121859 Drupal Quiz module - data exchange with other LMSes] and [http://moodle.org/mod/forum/discuss.php?d=119857 Moodle integration with Drupal]. --[[User:Frank Ralf|Frank Ralf]] 08:10, 10 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Zend Framework ====&lt;br /&gt;
How about [http://framework.zend.com/ZendFramework ZendFramework]? It&#039;s open source, of course, runs on PHP, already has a pretty cool API with a well stocked service library, and the coders are working closely with Google, Adobe and Microsoft, among others, to produce some really high quality code. One feature I particularly like is that the main bulk of the PHP code is outside the public HTML directory. Since version 1.7 It also offers pretty good support for Flash Remoting (AMF0 and AMF3) making it especially easy to create integrated RIA frameworks. [http://framework.zend.com/about/components Check here] to see what you get &amp;quot;out of the box&amp;quot;. It looks like they&#039;ve already done most of the hard work for you.&lt;br /&gt;
&lt;br /&gt;
=== Moodlets===&lt;br /&gt;
&lt;br /&gt;
Individual-independent-activities backup/restore + metadata  - Eloy&lt;br /&gt;
&lt;br /&gt;
=== Support for alternate interfaces, mobile interfaces ===&lt;br /&gt;
&lt;br /&gt;
Optimized for tablet computing: iPad, others&lt;br /&gt;
Completely flash-based interface?  Designed for offline clients?&lt;br /&gt;
&lt;br /&gt;
=== Integrated category/taxonomy system ===&lt;br /&gt;
&lt;br /&gt;
Putting together the &amp;quot;course categories&amp;quot;, &amp;quot;tags&amp;quot; into a generic taxonomy system.&lt;br /&gt;
&lt;br /&gt;
=== Save the 1970-2038 limitation ===&lt;br /&gt;
&lt;br /&gt;
Those UNIX timestamps are [http://moodle.org/mod/forum/discuss.php?d=101984 pretty limited].&lt;br /&gt;
&lt;br /&gt;
=== Translation framework ===&lt;br /&gt;
Drupal uses [http://www.gnu.org/software/gettext/gettext.html GNU gettext].po files for providing translations which is a very robust and well understood format.&lt;br /&gt;
&lt;br /&gt;
Or XLIFF format (use in Zend Framework, Symfony, Intl extension) with [http://icu-project.org/download/rbmanager.html Resource bundle manager]&lt;br /&gt;
&lt;br /&gt;
=== Use PHP 5.3 Native Power ===&lt;br /&gt;
Like : PDO, SPL, Namespace, Intl, Phar...&lt;br /&gt;
(Zend Framework 2 use it)&lt;br /&gt;
&lt;br /&gt;
=== Make a replica Moodle ===&lt;br /&gt;
1 Moodle library, 100 Moodle platforms, just adding plugins and themes.&lt;br /&gt;
&lt;br /&gt;
=== Please Sanitize the PHP code ===&lt;br /&gt;
Don&#039;t use : ini_set&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : error_reporting&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use : @&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use alias : exemple : die&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use depreciates functions : exemple : split (it&#039;s explode or preg_split)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use the right functions : exemple : it&#039;s not ini_set(&#039;include_path&#039;) it&#039;s set_include_path&lt;br /&gt;
&lt;br /&gt;
Use Docbook everywhere&lt;br /&gt;
&lt;br /&gt;
Moodle is now PHP 5 : clear &amp;quot;var&amp;quot; in class, methods are public/private/protected function (not just function)&lt;br /&gt;
&lt;br /&gt;
=== Built for Teacher-to-teacher Content Sharing ===&lt;br /&gt;
&lt;br /&gt;
Drag-and-drop courses and course items from Moodle Hubs&lt;br /&gt;
&lt;br /&gt;
=== Learn from LAMS and Dokeos ===&lt;br /&gt;
&lt;br /&gt;
Integrated authoring system&lt;br /&gt;
Drag-and-drop sequential scenario-building&lt;br /&gt;
&lt;br /&gt;
=== Invent something crazily new ===&lt;br /&gt;
3-line ideas are welcome here:&lt;br /&gt;
* participation reward systems&lt;br /&gt;
* Add trashcan and /or undo function&lt;br /&gt;
* Make editing of modules WYSIWYG, no more icons that change layout&lt;br /&gt;
* Collaborative spreadsheet editing functionality - like Google Docs.&lt;br /&gt;
&lt;br /&gt;
=== More Agile Development ===&lt;br /&gt;
There are many elements in agile development that could apply to Moodle and benefit the development process tremendously.  With proper application of these elements, the Moodle&#039;s core code can be more solid and robust.  Any programmer can make changes to the source with confidence and not be afraid of breaking any other features.&lt;br /&gt;
&lt;br /&gt;
==== Test Driven Development ====&lt;br /&gt;
Require unit tests and acceptance tests be written for every change made to the core code.  No code should be committed to the core without any test written.  A code reviewer should run the tests and expect them to be failed before applying the code changes, and expect they all passed after applying the fix or code changes.  S/he should also run the full test suite to make sure the changes did not break any existing features and functionalities.&lt;br /&gt;
&lt;br /&gt;
==== Code Review ====&lt;br /&gt;
Implement a code review process like the [http://codereview.chromium.org Google Chromium project].  Developers can only commit to the trunk with one or more reviewers&#039; approval.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I wonder if the person who added these ideas has any idea how Moodle development actually works. I would guess not. The process is already very agile. All contributions are code-reviewed. There are not enough unit tests yet, but writing unit tests for legacy code is the hardest sort of tests to write (see the book xUnit test patterns) so frankly, it is not worth the effort, except in new code. I can get away with saying that because I have written 2500+ test cases for the latest bit of development I did.&#039;&#039;--[[User:Tim Hunt|Tim Hunt]] 15:23, 6 February 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hi Tim, please don&#039;t take me wrong.  I think the development team at Moodle is already very agile.  It is actually one of the few agile projects that I have seen in the open source communities.  The effort that you and many diligent individuals have made to coordinate and integrate contributions from all over the world is outstanding.  I just made these comments based on the software development environment I came from, where no code change is allowed to commit without any test written and reviewer signs off.  Our VCS is actually configured to reject any commit that do not have these two elements present.  You are correct that I do not fully know the Moodle development process yet, but the fact that I see codes (particular contributed codes) being checked in without any tests, I just thought it would help bolster Moodle&#039;s core code by enforcing this rule in future commits. And implementing something like [http://codereview.chromium.org Google Chromium code review] interface allows more eyes on the check-in codes, and hopefully alleviates some of the loads from you and the rest of the core team, who have been doing a wonderful work on peer-reviewing all these time.  Again, please don&#039;t take this as a criticism but a brian-storming idea if you will.  Peace.&#039;&#039; --Carson&lt;/div&gt;</summary>
		<author><name>Croux</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=80866</id>
		<title>Development:Moodle 3.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=80866"/>
		<updated>2011-01-27T10:31:38Z</updated>

		<summary type="html">&lt;p&gt;Croux: /* Use PHP 5.3 Native Power */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a brainstorm about a complete rewrite/refactor for Moodle 3.0.&lt;br /&gt;
&lt;br /&gt;
Please add your ideas!   They don&#039;t need to be consistent yet, just make sure your ideas are here to be boiled down later on.&lt;br /&gt;
&lt;br /&gt;
Think Big!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===One type of plugin===&lt;br /&gt;
&lt;br /&gt;
All plugins/modules could be subclassed from one plugin class, making installation easier and simplifying the API a lot.&lt;br /&gt;
&lt;br /&gt;
===Look at new framework===&lt;br /&gt;
&lt;br /&gt;
Possibly base Moodle 3.0 on new existing frameworks?  Ruby on Rails?  Drupal?&lt;br /&gt;
&lt;br /&gt;
==== Drupal ====&lt;br /&gt;
There&#039;s an interesting discussion in the Language Teaching Course:&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=83963 How can Moodle be more of a social networking site?] with some links to the [http://groups.drupal.org/drupal-education Drupal in Education User Group]. --[[User:Frank Ralf|Frank Ralf]] 14:27, 18 January 2009 (CST)&lt;br /&gt;
&lt;br /&gt;
(I started a section about [[User_talk:Frank_Ralf#What_Moodle_could_learn_from_Drupal|What Moodle could learn from Drupal]] on my User talk page. --[[User:Frank Ralf|Frank Ralf]] 06:35, 21 January 2009 (CST))&lt;br /&gt;
&lt;br /&gt;
There are some activities in the Drupal community regarding better interoperability and integration of Moodle and Drupal, see [http://moodle.org/mod/forum/discuss.php?d=121859 Drupal Quiz module - data exchange with other LMSes] and [http://moodle.org/mod/forum/discuss.php?d=119857 Moodle integration with Drupal]. --[[User:Frank Ralf|Frank Ralf]] 08:10, 10 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Zend Framework ====&lt;br /&gt;
How about [http://framework.zend.com/ZendFramework ZendFramework]? It&#039;s open source, of course, runs on PHP, already has a pretty cool API with a well stocked service library, and the coders are working closely with Google, Adobe and Microsoft, among others, to produce some really high quality code. One feature I particularly like is that the main bulk of the PHP code is outside the public HTML directory. Since version 1.7 It also offers pretty good support for Flash Remoting (AMF0 and AMF3) making it especially easy to create integrated RIA frameworks. [http://framework.zend.com/about/components Check here] to see what you get &amp;quot;out of the box&amp;quot;. It looks like they&#039;ve already done most of the hard work for you.&lt;br /&gt;
&lt;br /&gt;
=== Moodlets===&lt;br /&gt;
&lt;br /&gt;
Individual-independent-activities backup/restore + metadata  - Eloy&lt;br /&gt;
&lt;br /&gt;
=== Support for alternate interfaces ===&lt;br /&gt;
&lt;br /&gt;
Completely flash-based interface?  Designed for offline clients?&lt;br /&gt;
&lt;br /&gt;
=== Integrated category/taxonomy system ===&lt;br /&gt;
&lt;br /&gt;
Putting together the &amp;quot;course categories&amp;quot;, &amp;quot;tags&amp;quot; into a generic taxonomy system.&lt;br /&gt;
&lt;br /&gt;
=== Save the 1970-2038 limitation ===&lt;br /&gt;
&lt;br /&gt;
Those UNIX timestamps are [http://moodle.org/mod/forum/discuss.php?d=101984 pretty limited].&lt;br /&gt;
&lt;br /&gt;
=== Translation framework ===&lt;br /&gt;
Drupal uses [http://www.gnu.org/software/gettext/gettext.html GNU gettext].po files for providing translations which is a very robust and well understood format.&lt;br /&gt;
&lt;br /&gt;
=== Use PHP 5.3 Native Power ===&lt;br /&gt;
Like : PDO, SPL, Namespace, Intl, Phar...&lt;br /&gt;
(Zend Framework 2 use it)&lt;br /&gt;
&lt;br /&gt;
=== Make a replica Moodle ===&lt;br /&gt;
1 Moodle library, 100 Moodle platforms, just adding plugins and themes.&lt;br /&gt;
&lt;br /&gt;
=== Invent something crazily new ===&lt;br /&gt;
3-line ideas are welcome here:&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Croux</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=80865</id>
		<title>Development:Moodle 3.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=80865"/>
		<updated>2011-01-27T10:27:04Z</updated>

		<summary type="html">&lt;p&gt;Croux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a brainstorm about a complete rewrite/refactor for Moodle 3.0.&lt;br /&gt;
&lt;br /&gt;
Please add your ideas!   They don&#039;t need to be consistent yet, just make sure your ideas are here to be boiled down later on.&lt;br /&gt;
&lt;br /&gt;
Think Big!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===One type of plugin===&lt;br /&gt;
&lt;br /&gt;
All plugins/modules could be subclassed from one plugin class, making installation easier and simplifying the API a lot.&lt;br /&gt;
&lt;br /&gt;
===Look at new framework===&lt;br /&gt;
&lt;br /&gt;
Possibly base Moodle 3.0 on new existing frameworks?  Ruby on Rails?  Drupal?&lt;br /&gt;
&lt;br /&gt;
==== Drupal ====&lt;br /&gt;
There&#039;s an interesting discussion in the Language Teaching Course:&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=83963 How can Moodle be more of a social networking site?] with some links to the [http://groups.drupal.org/drupal-education Drupal in Education User Group]. --[[User:Frank Ralf|Frank Ralf]] 14:27, 18 January 2009 (CST)&lt;br /&gt;
&lt;br /&gt;
(I started a section about [[User_talk:Frank_Ralf#What_Moodle_could_learn_from_Drupal|What Moodle could learn from Drupal]] on my User talk page. --[[User:Frank Ralf|Frank Ralf]] 06:35, 21 January 2009 (CST))&lt;br /&gt;
&lt;br /&gt;
There are some activities in the Drupal community regarding better interoperability and integration of Moodle and Drupal, see [http://moodle.org/mod/forum/discuss.php?d=121859 Drupal Quiz module - data exchange with other LMSes] and [http://moodle.org/mod/forum/discuss.php?d=119857 Moodle integration with Drupal]. --[[User:Frank Ralf|Frank Ralf]] 08:10, 10 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Zend Framework ====&lt;br /&gt;
How about [http://framework.zend.com/ZendFramework ZendFramework]? It&#039;s open source, of course, runs on PHP, already has a pretty cool API with a well stocked service library, and the coders are working closely with Google, Adobe and Microsoft, among others, to produce some really high quality code. One feature I particularly like is that the main bulk of the PHP code is outside the public HTML directory. Since version 1.7 It also offers pretty good support for Flash Remoting (AMF0 and AMF3) making it especially easy to create integrated RIA frameworks. [http://framework.zend.com/about/components Check here] to see what you get &amp;quot;out of the box&amp;quot;. It looks like they&#039;ve already done most of the hard work for you.&lt;br /&gt;
&lt;br /&gt;
=== Moodlets===&lt;br /&gt;
&lt;br /&gt;
Individual-independent-activities backup/restore + metadata  - Eloy&lt;br /&gt;
&lt;br /&gt;
=== Support for alternate interfaces ===&lt;br /&gt;
&lt;br /&gt;
Completely flash-based interface?  Designed for offline clients?&lt;br /&gt;
&lt;br /&gt;
=== Integrated category/taxonomy system ===&lt;br /&gt;
&lt;br /&gt;
Putting together the &amp;quot;course categories&amp;quot;, &amp;quot;tags&amp;quot; into a generic taxonomy system.&lt;br /&gt;
&lt;br /&gt;
=== Save the 1970-2038 limitation ===&lt;br /&gt;
&lt;br /&gt;
Those UNIX timestamps are [http://moodle.org/mod/forum/discuss.php?d=101984 pretty limited].&lt;br /&gt;
&lt;br /&gt;
=== Translation framework ===&lt;br /&gt;
Drupal uses [http://www.gnu.org/software/gettext/gettext.html GNU gettext].po files for providing translations which is a very robust and well understood format.&lt;br /&gt;
&lt;br /&gt;
=== Use PHP 5.3 Native Power ===&lt;br /&gt;
Like : PDO, SPL, Namespace, Intl, Phar...&lt;br /&gt;
&lt;br /&gt;
=== Make a replica Moodle ===&lt;br /&gt;
1 Moodle library, 100 Moodle platforms, just adding plugins and themes.&lt;br /&gt;
&lt;br /&gt;
=== Invent something crazily new ===&lt;br /&gt;
3-line ideas are welcome here:&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Croux</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=80864</id>
		<title>Development:Moodle 3.0</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Development:Moodle_3.0&amp;diff=80864"/>
		<updated>2011-01-27T10:26:50Z</updated>

		<summary type="html">&lt;p&gt;Croux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a brainstorm about a complete rewrite/refactor for Moodle 3.0.&lt;br /&gt;
&lt;br /&gt;
Please add your ideas!   They don&#039;t need to be consistent yet, just make sure your ideas are here to be boiled down later on.&lt;br /&gt;
&lt;br /&gt;
Think Big!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===One type of plugin===&lt;br /&gt;
&lt;br /&gt;
All plugins/modules could be subclassed from one plugin class, making installation easier and simplifying the API a lot.&lt;br /&gt;
&lt;br /&gt;
===Look at new framework===&lt;br /&gt;
&lt;br /&gt;
Possibly base Moodle 3.0 on new existing frameworks?  Ruby on Rails?  Drupal?&lt;br /&gt;
&lt;br /&gt;
==== Drupal ====&lt;br /&gt;
There&#039;s an interesting discussion in the Language Teaching Course:&lt;br /&gt;
[http://moodle.org/mod/forum/discuss.php?d=83963 How can Moodle be more of a social networking site?] with some links to the [http://groups.drupal.org/drupal-education Drupal in Education User Group]. --[[User:Frank Ralf|Frank Ralf]] 14:27, 18 January 2009 (CST)&lt;br /&gt;
&lt;br /&gt;
(I started a section about [[User_talk:Frank_Ralf#What_Moodle_could_learn_from_Drupal|What Moodle could learn from Drupal]] on my User talk page. --[[User:Frank Ralf|Frank Ralf]] 06:35, 21 January 2009 (CST))&lt;br /&gt;
&lt;br /&gt;
There are some activities in the Drupal community regarding better interoperability and integration of Moodle and Drupal, see [http://moodle.org/mod/forum/discuss.php?d=121859 Drupal Quiz module - data exchange with other LMSes] and [http://moodle.org/mod/forum/discuss.php?d=119857 Moodle integration with Drupal]. --[[User:Frank Ralf|Frank Ralf]] 08:10, 10 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Zend Framework ====&lt;br /&gt;
How about [http://framework.zend.com/ZendFramework ZendFramework]? It&#039;s open source, of course, runs on PHP, already has a pretty cool API with a well stocked service library, and the coders are working closely with Google, Adobe and Microsoft, among others, to produce some really high quality code. One feature I particularly like is that the main bulk of the PHP code is outside the public HTML directory. Since version 1.7 It also offers pretty good support for Flash Remoting (AMF0 and AMF3) making it especially easy to create integrated RIA frameworks. [http://framework.zend.com/about/components Check here] to see what you get &amp;quot;out of the box&amp;quot;. It looks like they&#039;ve already done most of the hard work for you.&lt;br /&gt;
&lt;br /&gt;
=== Moodlets===&lt;br /&gt;
&lt;br /&gt;
Individual-independent-activities backup/restore + metadata  - Eloy&lt;br /&gt;
&lt;br /&gt;
=== Support for alternate interfaces ===&lt;br /&gt;
&lt;br /&gt;
Completely flash-based interface?  Designed for offline clients?&lt;br /&gt;
&lt;br /&gt;
=== Integrated category/taxonomy system ===&lt;br /&gt;
&lt;br /&gt;
Putting together the &amp;quot;course categories&amp;quot;, &amp;quot;tags&amp;quot; into a generic taxonomy system.&lt;br /&gt;
&lt;br /&gt;
=== Save the 1970-2038 limitation ===&lt;br /&gt;
&lt;br /&gt;
Those UNIX timestamps are [http://moodle.org/mod/forum/discuss.php?d=101984 pretty limited].&lt;br /&gt;
&lt;br /&gt;
=== Translation framework ===&lt;br /&gt;
Drupal uses [http://www.gnu.org/software/gettext/gettext.html GNU gettext].po files for providing translations which is a very robust and well understood format.&lt;br /&gt;
&lt;br /&gt;
=== Use PHP 5.3 Native Power ===&lt;br /&gt;
Like : PDO, SPL, Namespace, Intl, Phar...&lt;br /&gt;
&lt;br /&gt;
=== Make a replica Moodle ===&lt;br /&gt;
1 Moodle library, 100 Moodle platform, just adding plugins and themes.&lt;br /&gt;
&lt;br /&gt;
=== Invent something crazily new ===&lt;br /&gt;
3-line ideas are welcome here:&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Croux</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/21/en/index.php?title=Installing_APC_in_Windows&amp;diff=79016</id>
		<title>Installing APC in Windows</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/21/en/index.php?title=Installing_APC_in_Windows&amp;diff=79016"/>
		<updated>2010-12-09T15:58:27Z</updated>

		<summary type="html">&lt;p&gt;Croux: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
APC (Alternative PHP Cache) is a PHP opcode cache. It stores PHP pages in RAM and reduces hard disk activity. This makes a real difference to the performance in Moodle, and you should be able to achieve a 50% increase in system capacity and your CPU will be 50% less busy.&lt;br /&gt;
&lt;br /&gt;
This guide is for installation of APC on a Windows server. The instructions have been tested on a Windows 2003 server, and they should also be applicable if you are using Windows XP as a test server.&lt;br /&gt;
&lt;br /&gt;
==Installation on Windows Server==&lt;br /&gt;
&#039;&#039;&#039;Warning: You cannot install APC and Zend Optimiser on the same server. You should choose one or the other.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Follow these steps to install APC.&lt;br /&gt;
&lt;br /&gt;
===Download the correct version===&lt;br /&gt;
Download the windows binary for the PHP version you have installed from http://downloads.php.net/pierre/. Save into the PHP extensions folder, which is c:\php\ext by default.&lt;br /&gt;
&lt;br /&gt;
Note: Make sure you choose the right extension for your version (branch) of PHP.&lt;br /&gt;
&lt;br /&gt;
===Enable the APC extension in your PHP.INI file===&lt;br /&gt;
Edit the php.ini file and add the following line in the extensions section:&lt;br /&gt;
&lt;br /&gt;
 extension = php_apc.dll&lt;br /&gt;
&lt;br /&gt;
Check that this has worked by restarting your web server and looking at the output of phpinfo from the Moodle administration screens or from a text file containing this line: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php phpinfo(); ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Check the memory available===&lt;br /&gt;
To check the amount of memory that is available for APC to use:&lt;br /&gt;
&lt;br /&gt;
* Run WordPad and create a text file called apcmeminfo.php.&lt;br /&gt;
* Copy and paste this line into the file&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php print_r(apc_sma_info()); ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Save the file into moodle/admin/apcmeminfo.php&lt;br /&gt;
* Browse to http://mymoodle.com/moodle/admin/apcmeminfo.php.&lt;br /&gt;
* Note the avail_mem value (in bytes)&lt;br /&gt;
&lt;br /&gt;
 ... [avail_mem] =&amp;gt; 31447368 ... &lt;br /&gt;
&lt;br /&gt;
The total amount of memory used by the cache is given by this formula:&lt;br /&gt;
&lt;br /&gt;
 total_memory = apc.shm_segments * apc.shm_size&lt;br /&gt;
&lt;br /&gt;
In this example, the available memory is approx 32Mb. Usually if we need more than 32Mb in our cache, we should increase the number of segments that APC uses. However, this is can cause web server faults, so it is best to increase the segment size instead.&lt;br /&gt;
&lt;br /&gt;
When setting the total memory available for the cache, start with the lowest that a single Moodle install can work with (64Mb). This amount may not be enough if you have extra modules and blocks installed, so check by monitoring the cache regularly in the first two weeks that your server is running. Look at the monitoring section below and gradually increase your total cache memory until there is no more cache churn.&lt;br /&gt;
&lt;br /&gt;
===Customizing APC settings for Moodle===&lt;br /&gt;
The default APC settings are as follows:&lt;br /&gt;
&lt;br /&gt;
 apc.cache_by_default = On&lt;br /&gt;
 apc.enable_cli = Off&lt;br /&gt;
 apc.enabled = On&lt;br /&gt;
 apc.file_update_protection = 2&lt;br /&gt;
 apc.filters = &#039;&#039;&lt;br /&gt;
 apc.gc_ttl = 3600&lt;br /&gt;
 apc.include_once_override = Off&lt;br /&gt;
 apc.max_file_size = 1M&lt;br /&gt;
 apc.num_files_hint = 1000&lt;br /&gt;
 apc.optimization = Off&lt;br /&gt;
 apc.report_autofilter = Off&lt;br /&gt;
 apc.shm_segments = 1&lt;br /&gt;
 apc.shm_size = 30&lt;br /&gt;
 apc.slam_defense = 0&lt;br /&gt;
 apc.stat = On&lt;br /&gt;
 apc.ttl = 0&lt;br /&gt;
 apc.user_entries_hint = 100&lt;br /&gt;
 apc.user_ttl = 0&lt;br /&gt;
 apc.write_lock = On&lt;br /&gt;
&lt;br /&gt;
For a full explanation of these settings, see http://www.php.net/apc.&lt;br /&gt;
&lt;br /&gt;
For a general Moodle installation several changes are needed. These are: &lt;br /&gt;
* The apc.shm_size (the size of the cache) which should be set initially to 64Mb.&lt;br /&gt;
* The apc.shm_segments which should be set to 1. This gives a total initial cache size of 64Mb.&lt;br /&gt;
* The apc.stat (file stating) which should be set to 1 otherwise you may get blank pages.&lt;br /&gt;
* The apc.max_file_size setting which should be increased to 10Mb.&lt;br /&gt;
&lt;br /&gt;
Note that to disable APC temporarily set apc.enabled = 0 in PHP.INI and restart your webserver.&lt;br /&gt;
&lt;br /&gt;
A working APC section of of PHP.INI is shown below, so copy and paste the following at the end of your PHP.INI file:&lt;br /&gt;
&lt;br /&gt;
 [APC]&lt;br /&gt;
 apc.enabled = 1&lt;br /&gt;
 apc.shm_segments = 1&lt;br /&gt;
 apc.shm_size = 64&lt;br /&gt;
 apc.max_file_size = 10M&lt;br /&gt;
 apc.stat=1&lt;br /&gt;
 &lt;br /&gt;
The remainder of the settings can be left as their default.&lt;br /&gt;
&lt;br /&gt;
===Set the temp directory===&lt;br /&gt;
APC needs a temporary directory to save its files. It will attempt to save the files in the windows temp directory, so set the C:\WINDOWS\TEMP directory to be writable by the web server user (for IIS this is IUSR_machine-name, for Apache no change to permissions are necessary), e.g. at least Read &amp;amp; Execute permissions.&lt;br /&gt;
&lt;br /&gt;
==Monitoring and tuning the cache==&lt;br /&gt;
The APC source contains a php script that is useful for monitoring and tuning the performance of your cache.&lt;br /&gt;
&lt;br /&gt;
* Download the APC monitoring file from http://pecl.php.net/package/apc and extract the contents. &lt;br /&gt;
* Look for the file apc.php as this is the file that displays APC monitoring information. &lt;br /&gt;
* Save the file apc.php into the /moodle/admin folder on your server. &lt;br /&gt;
&lt;br /&gt;
Note: Once you have successfully installed APC, move this file to a password protected area for security.&lt;br /&gt;
&lt;br /&gt;
* Verify that the script is working by browsing to http://mymoodle.com/moodle/admin/apc.php (or whatever the location of the apc.php file is on your server). You should see a graphical display of your cache with some statistical data on the left side.&lt;br /&gt;
&lt;br /&gt;
To tune the cache, look at the &#039;&#039;General Cache Information&#039;&#039; and &#039;&#039;Detailed Memory Usage and Fragmentation&#039;&#039; sections. Watch the &#039;&#039;&#039;Cache Full Count&#039;&#039;&#039; and &#039;&#039;&#039;Fragmentation %&#039;&#039;&#039; indicators. &lt;br /&gt;
* If Cache Full Count &amp;gt; 0, this indicates that the cache is filling-up and churning as there is not enough memory allocated. To solve this problem increase the memory allocation (apc.shm_size).&lt;br /&gt;
* The Fragmentation % indicator should be 0% but may increase from time-to-time especially if the cache is churning.&lt;br /&gt;
&lt;br /&gt;
===APC.php security===&lt;br /&gt;
You can configure the APC monitoring script to use Moodle security.&lt;br /&gt;
Create a new file apc.conf.php in the admin directory containing the following code. This will be automatically loaded by apc.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Moodle user Authentication&lt;br /&gt;
require_once(&amp;quot;../config.php&amp;quot;);&lt;br /&gt;
require_once($CFG-&amp;gt;libdir.&#039;/adminlib.php&#039;);&lt;br /&gt;
require_login();&lt;br /&gt;
require_capability(&#039;moodle/site:config&#039;, get_context_instance(CONTEXT_SYSTEM, SITEID));&lt;br /&gt;
&lt;br /&gt;
// Disable APC Auth&lt;br /&gt;
defaults(&#039;USE_AUTHENTICATION&#039;,0);&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Checking performance==&lt;br /&gt;
To confirm that there has been an improvement in performance, try the following:&lt;br /&gt;
&lt;br /&gt;
* Disable the cache in PHP.INI and restart the web server.&lt;br /&gt;
* Run ab.exe (included in the apache bin folder) at the command prompt as follows:&lt;br /&gt;
&lt;br /&gt;
 c:\apache2\bin&amp;gt;ab.exe -n 50 -c 1 -d http://mymoodle.com/moodle/index.php&lt;br /&gt;
&lt;br /&gt;
* Note the transfer rate and the time per request values.&lt;br /&gt;
* Enable the cache in PHP.INI and restart the web server.&lt;br /&gt;
* Load http://mymoodle.com/moodle/index.php in your browser so that it is stored in the cache.&lt;br /&gt;
* Run ab.exe again and compare the transfer rate and time per request values. You should see an increase in both of these values by approximately 50%.&lt;br /&gt;
&lt;br /&gt;
==Uninstalling APC==&lt;br /&gt;
To uninstall APC, add a semicolon to the extension line in your PHP.INI as follows:&lt;br /&gt;
&lt;br /&gt;
 ;extension = php_apc.dll&lt;br /&gt;
&lt;br /&gt;
Remember to restart your web server.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=56900 A discussion of an alternative to APC - Xcache]&lt;br /&gt;
* [http://cvs.php.net/viewvc.cgi/pecl/apc/TECHNOTES.txt?view=co APC technical notes]&lt;br /&gt;
&lt;br /&gt;
[[Category:Administrator]]&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:Performance]]&lt;br /&gt;
&lt;br /&gt;
[[pl:Instalacja APC w Windows]]&lt;/div&gt;</summary>
		<author><name>Croux</name></author>
	</entry>
</feed>