Significant improvements to distributed documentation

This commit is contained in:
martin 2002-08-19 13:19:07 +00:00
parent 1ff53f25ac
commit 175ccb493f
7 changed files with 304 additions and 31 deletions

View File

@ -8,12 +8,32 @@
<H2>Background</H2>
<P>Right now, Moodle is still in early development. Some features are unfinished,
and there is a way to go yet before it could be compared to commercial tools
such as WebCT or Blackboard.</P>
<P>That said, it has already been used to successfully conduct a postgraduate
course at Curtin University of Technology, and many improvements are planned
in the near future.</P>
<P>Moodle is an active and evolving work in progress.</P>
<P>I've been working on it, in some way or other, for several years. It started
in the 90's when I was webmaster at <a href="http://dougiamas.com/">Curtin University
of Technology</a> and a system administrator of their WebCT installation. I
encountered many frustrations with the WebCT beast and developed an itch that
needed scratching - there had to be a better way (no, not Blackboard :-)</P>
<P>I also know a lot of people in schools and smaller institutions (and some big
ones!) who want to make better use of the Internet but don't know where to start
in the maze of technologies and pedagogies that are out there. I've always hoped
there would be a Free alternative that such people could use to help them move
their teaching skills into the online environment.</P>
<P>My strong beliefs in the unrealised possibilities of Internet-based education
led me to complete a Masters and then a PhD in Education, combining my former
career in Computer Science with newly constructed knowledge about the nature
of learning and collaboration.</P>
<P>Since then Moodle has progressed through several very different prototypes
to achieve something I'm ready to call version 1.0 and release upon an unsuspecting
world (August 20, 2002). I've been using it in several courses and find it an
extremely usable and reliable tool for building high-quality online courses
- others are reporting the same. Given the context in which it's been designed,
it works particularly well for smaller institutions, or for smaller, more intimate
classes.</P>
<P>When compared to the big commercial tools such as WebCT or Blackboard I think
it still falls short in some areas (such as scalability and standards support),
but it comes out ahead in many others (see <a href="features.html">Features</a>).
</P>
<P>&nbsp;</P>
<P ALIGN="CENTER"><FONT SIZE="1"><A HREF="index.html" TARGET="_top">Moodle Documentation</A></FONT></P>

View File

@ -8,7 +8,9 @@
<FONT SIZE=2 FACE="san-serif">
<P><B>Moodle Documentation</B></P>
<LI><A TARGET="main" HREF="intro.html">Introduction</A>
<LI><A TARGET="main" HREF="background.html">Background</A>
<LI><a href="features.html">Features</a>
<LI><A TARGET="main" HREF="install.html">Installation</A>
<LI><A TARGET="main" HREF="teacher.html">Teacher Manual</A>

View File

@ -8,7 +8,7 @@
<H2>Credits</H2>
<P><B>Moodle </B>itself is Copyright &copy; 2001, <A HREF="http://dougiamas.com/">
<P><B>Moodle </B>itself is Copyright &copy; 2001-2002, <A HREF="http://dougiamas.com/">
Martin Dougiamas</A>. &nbsp;It is distributed under the <A HREF="licence.html">
GNU Public License</A>.</P>

View File

@ -4,20 +4,232 @@
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2>Developers Manual</H2>
<H3>Moodle architecture</H3>
<P>This section will describe the overall architecture for Moodle and some of
the major design decisions that were made during development.</P>
<P>&nbsp;</P>
<H3>Plug-in modules</H3>
<P>Moodle has been designed to be modular, so that new learning activities can
be easily written and &quot;plugged-in&quot; to a Moodle installation by the
system administrator.</P>
<P>This section will describe the Plug-in API and provide a simple example of
a Moodle plug-in.</P>
<P>This document describes some of Moodle's design and how you can contribute.</P>
<P>Sections in this document:</P>
<OL>
<LI><A HREF="#architecture">Moodle architecture</A></LI>
<LI><A HREF="#contribute">How you can contribute</A>
<ol>
<li><A HREF="#activities">Learning activities</A></li>
<li><A HREF="#themes">Themes</A></li>
<li><A HREF="#languages">Languages</A></li>
<li><A HREF="#database">Database Schemas</A></li>
<li><a href="#courseformats">Course formats</a></li>
<li><a href="#doc">Documentation and articles</a></li>
<li><a href="#bugs">Participating in the bug tracker</a></li>
</ol>
</LI>
</OL>
<P>&nbsp;</P>
<H3><a name="architecture"></a>Moodle architecture</H3>
<P>From a system administrator's perspective, Moodle has been designed according
to the following criteria:</P>
<ol>
<li><strong>Moodle should run on the widest variety of platforms</strong><br>
<br>
The web application platform that runs on most platforms is PHP combined with
MySQL, and this is the environment that Moodle has been developed in (on Linux,
Windows, and Mac OS X). Moodle also uses the ADOdb library for database abstraction,
which means Moodle can use <a href="http://php.weblogs.com/ADOdb_manual#drivers">more
than ten different brands of database</a> (unfortunately, though, it can not
yet <em><strong>set up tables</strong></em> in all these databases - more
on this later). <br>
</li>
<li><strong>Moodle should be easy to install, learn and modify</strong><br>
<br>
Early prototypes of Moodle (1999) were built using <a href="http://www.zope.org/">Zope</a>
- an advanced object-oriented web application server. Unfortunately I found
that although the technology was pretty cool, it had a very steep learning
curve and was not very flexible in terms of system administration. The PHP
scripting language, on the other hand, is very easy to get into (especially
if you've done any programming using any other scripting language). Early
on I made the decision to avoid using a class-oriented design - again, to
keep it simple to understand for novices. Code reuse is instead achieved by
libraries of clearly-named functions and consistent layout of script files.
PHP is also easy to install (binaries are available for every platform) and
is widely available to the point that most web hosting services provide it
as standard.<br>
</li>
<li><strong>It should be easy to upgrade from one version to the next</strong><br>
<br>
Moodle knows what version it is (as well as the versions of all plug-in modules)
and a mechanism has been built-in so that Moodle can properly upgrade itself
to new versions (for example it can rename database tables or add new fields).
If using CVS in Unix for example, one can just do a &quot;cvs update -d&quot;
and then visit the site home page to complete an upgrade.<br>
</li>
<li><strong>It should be modular to allow for growth</strong><br>
<br>
Moodle has a number of features that are modular, including themes, activities,
interface languages, database schemas and course formats. This allows anyone
to add features to the main codebase or to even distribute them separately.
More on this below in the next section.<br>
</li>
<li><strong>It should be able to be used in conjunction with other systems</strong><br>
<br>
One thing Moodle does is keep all files for one course within a single, normal
directory on the server. This would allow a system administrator to provide
seamless forms of file-level access for each teacher, such as Appletalk, SMB,
NFS, FTP, WebDAV and so on. Otherwise, there is work yet to do. Features planned
for Moodle in future versions include: flexible connection to existing databases
of user details and grades; import and export of Moodle data using XML-based
formats; and increased use of style sheets for interface formatting (so that
it can be integrated visually into other web sites).</li>
</ol>
<p>&nbsp;</p>
<H3><a name="contribute" id="contribute"></a>How you can contribute</H3>
<P>As mentioned above, Moodle has a number of features that are modular. Even
if you are not a programmer there are things you can change or help with.</P>
<P><strong><a name="activities" id="activities"></a>Learning Activities</strong></P>
<blockquote>
<p>These are by far the most important modules, and reside in the 'mod' directory.
There are six default modules: assignment, choice, forum, journal, reading,
and survey. Each module is in a separate subdirectory and consists of the
following mandatory elements (plus extra scripts unique to each module):</p>
<ul>
<li>mod.html: a form to set up or update an instance of this module</li>
<li>version.php: defines some meta-info and provides upgrading code</li>
<li>icon.gif: a 16x16 icon for the module</li>
<li>db/: SQL dumps of all the required db tables and data (for each database
type) </li>
<li>index.php: a page to list all instances in a course</li>
<li>view.php: a page to view a particular instance</li>
<li>lib.php: any/all functions defined by the module should be in here. If
the modulename if called widget, then the required functions include:
<ul>
<li>widget_add_instance() - code to add a new instance of widget</li>
<li>widget_update_instance() - code to update an existing instance</li>
<li>widget_delete_instance() - code to delete an instance</li>
<li>widget_user_outline() - given an instance, return a summary of a user's
contribution</li>
<li>widget_user_complete() - given an instance, print details of a user's
contribution<br>
</li>
<li>To avoid possible conflict, any module functions should be named starting
with widget_ and any constants you define should start with WIDGET_
</li>
</ul>
</li>
<li>Lastly, each module will have some language files that contain strings
for that module. See below.<br>
</li>
</ul>
</blockquote>
<p> <strong><a name="themes" id="themes"></a>Themes</strong></p>
<blockquote>
<p>Themes (or skins) define the look of a site. A number of simple themes are
provided in the main distribution, but you may want to copy one of these and
customise it to suit your own needs (eg local logo, colours, styles, graphics
etc)</p>
<p>Each theme is in a subdirectory of the &quot;theme&quot; directory. You can
copy the &quot;standard&quot; theme as a template.<br>
</p>
</blockquote>
<p><strong><a name="languages" id="languages"></a>Languages</strong></p>
<blockquote>
<p>Moodle has been designed for internationalisation. Each 'string' or 'page'
of text that is displayed as part of the interface is drawn from a set of
language files. Each language is a subdirectory of the directory 'lang'. The
structure of the lang directory is as follows:</p>
<p><strong>lang/en</strong> - directory containing all files for one language
(eg English)</p>
<ul>
<li>moodle.php - strings for main interface</li>
<li>assignment.php - strings for assignment module</li>
<li>choice.php - strings for choice module</li>
<li>forum.php - strings for forum module</li>
<li>journal.php - strings for journal module </li>
<li>reading.php - strings for reading module</li>
<li>survey.php - strings for reading module</li>
<li>.... plus other modules if any.<br>
<br>
A string is called from these files using the <strong><em>get_string()</em></strong><em>
</em>or<em> <strong>print_string()</strong> </em>functions. Each string
supports variable substitution, to support variable ordering in different
languages.<em><br>
<br>
</em>eg $strdueby = get_string(&quot;assignmentdueby&quot;, &quot;assignment&quot;,
userdate($date)); <br>
<br>
If a string doesn't exist in a particular language, then the equivalent
in English will automatically be used instead.</li>
</ul>
<p><strong>lang/en/help</strong> - contains whole help pages (for popup context-sensitive
help)</p>
<blockquote>
<p>Main help pages are situated here, while help pages specific to each module
are located in subdirectories with the module's name.</p>
<p>You can insert a helpbutton in a page with the helpbutton function.</p>
<p>eg helpbutton(&quot;text&quot;, &quot;Click here for help about text&quot;);</p>
<p>and for modules:</p>
<p>helpbutton(&quot;forumtypes&quot;, &quot;Forum types&quot;, &quot;forum&quot;);</p>
</blockquote>
</blockquote>
<p><br>
<strong><a name="database" id="database"></a>Database Schemas</strong></p>
<blockquote>
<p>Given a working database with defined tables, the intentionally simple SQL
used in Moodle should work fine with a wide variety of database brands.</p>
<p>A problem exists with <strong>automatically creating</strong> new tables
in a database, which is what Moodle tries to do upon initial installation.
Because every database is very different, there doesn't yet exist any way
to do this in a platform-independent way. To support this automation in each
database, schemas can be created that list the required SQL to create Moodle
tables in a particular database. These are files in <strong>lib/db</strong>
and inside the <strong>db</strong> subdirectory of each module.</p>
<p>Currently, only MySQL is supported because that's what I know. If you are
familiar with another database (especially open source databases) and are
willing to help port the MySQL schema, please get in contact with me (<a href="mailto:martin@moodle.com">martin@moodle.com</a>).</p>
</blockquote>
<p>&nbsp;</p>
<p><strong><a name="courseformats" id="courseformats"></a>Course Formats</strong></p>
<blockquote>
<p>Moodle 1.0 supports three different course formats: weekly, topics and social.
</p>
<p>These are a little more connected to the rest of the code (and hence, less
&quot;pluggable&quot;) but it is still quite easy to add new ones.</p>
<p>If you have any ideas for different formats that you need or would like to
see, get in touch with me and I'll do my absolute best to have them available
in future releases.</p>
</blockquote>
<p>&nbsp;</p>
<p><strong><a name="doc" id="doc"></a>Documentation and articles</strong></p>
<blockquote>
<p>If you feel like writing a tutorial, an article, an academic paper or anything
else about Moodle, please do! Put it on the web and make sure you include
links to <a href="http://moodle.com/">http://moodle.com/</a></p>
</blockquote>
<p>&nbsp;</p>
<p><strong><a name="bugs" id="bugs"></a>Participating in the bug tracker</strong></p>
<blockquote>
<p>Finally, I would like to invite you to register on the &quot;bug tracker&quot;
at <a href="http://bugs.moodle.org">bugs.moodle.org</a> so you can file any
bugs that you find and perhaps participate in discussing and fixing them.
</p>
<p>&quot;Bugs&quot; not only includes software bugs with current versions of
Moodle, but also new ideas, feature requests and even constructive criticism
of existing features. The beauty of open source is that anyone can participate
in some way and help to create a better product for all of us to enjoy. In
this project, your input is very welcome!</p>
</blockquote>
<p>&nbsp;</p>
<blockquote>
<blockquote>
<blockquote>
<p align="center">Thanks for using Moodle!</p>
<p align="center">Cheers,<br>
<a href="http://dougiamas.com/" target="_top">Martin Dougiamas</a></p>
</blockquote>
</blockquote>
</blockquote>
<p>&nbsp;</p>
<p>&nbsp;</p>
<blockquote>
<p>&nbsp;</p>
</blockquote>
<P ALIGN="CENTER"><FONT SIZE="1"><A HREF="index.html" TARGET="_top">Moodle Documentation</A></FONT></P>
<P ALIGN="CENTER"><FONT SIZE="1">Version: $Id$</FONT></P>
<P ALIGN="CENTER"><FONT SIZE="1">Version: $Id: developer.html,v 1.2 2001/12/09
10:34:19 martin Exp $</FONT></P>
</BODY>

34
doc/features.html Executable file
View File

@ -0,0 +1,34 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Moodle Docs: Background</TITLE>
<LINK REL="stylesheet" HREF="../theme/standard/styles.css" TYPE="TEXT/CSS">
</HEAD>
<BODY BGCOLOR="#ffffff">
<H2>Features</H2>
Here is a big list of some of the features in Moodle 1.0:
<UL><LI>Supports a social constructionist pedagogy (collaboration, activities, critical reflection, etc)</LI><LI>Suitable for 100% online classes as well as supplementing face-to-face learning<LI>Simple, lightweight, browser-compatible interface</LI><LI>Plug-in "themes" allow you to customise the colours, fonts, layout etc</LI><LI>Easy to install on most platforms</LI><LI>Easy administration - students can create their own accounts. Email addresses are verified.</LI><LI>One account works for the whole server</LI><LI>Security - teachers can add an "enrolment key" to their courses to keep out non-students. They can give out this key face-to-face or via personal email etc</LI><LI>Students are encouraged to build an online profile including photos, description etc</LI><LI>Every user can specify their own timezone, and every date in Moodle is translated to that timezone (eg posting dates, assignment due dates etc)</LI><LI>Choice of course formats such as by week, by topic or a discussion-focussed social format</LI><LI>Flexible array of course modules - Forums, Journals, Readings, Choices, Surveys, Assignments.</LI><LI>New modules can be written and plugged in to existing Moodle installations</LI><LI>The code is clearly-written PHP under a GPL license - easy to modify and localise</LI><LI>Full database abstraction supports all major brands of database (except for initial table definition)</LI><LI>Ready for internationalisation - supports plug-in languages and locale-based date formats etc</LI><LI>Mail integration - copies of forum posts, teacher feedback etc can be mailed in HTML or plain text.</LI><LI>Recent changes to the course since the last login are displayed on the course home page</LI><LI>Full user logging and tracking - activity reports for each student are available with graphs and details about each module (last access, number of times read) as well as a detailed "story" of each students involvement including postings, journal entries etc on one page.</LI>
</UL>
<B>Forum Module</B>
<UL><LI>Different types of forums are available, such as teacher-only, course news, open-to-all, and one-thread-per-user.</LI><LI>All postings have the authors photo attached.</LI><LI>Discussions can be viewed nested, flat or threaded, oldest or newest first.</LI><LI>Individual forums can be subscribed to by each person so that copies are forwarded via email, or the teacher can force subscription for all</LI>
</UL>
<B>Survey Module</B>
<UL><LI>Built-in surveys (COLLES, ATTLS) have been proven as instruments for analysing online classes</LI><LI>Online survey reports always available, including many graphs. Data is downloadable as an Excel spreadsheet or CSV text file.</LI><LI>Survey interface prevents partly-finished surveys.</LI><LI>Feedback is provided to the student of their results compared to the class averages</UL>
<B>Readings Module</B>
<UL><LI>Supports display of any electronic content</LI><LI>Files can be uploaded and managed on the server, or created on the fly using web forms (text or HTML)</LI><LI>External content on the web can be linked to or seamlessly included within the course interface.</LI></UL>
<B>Choice Module</B>
<UL><LI>Like a poll. Can either be used to vote on something, or to get feedback from every student (eg research consent)</LI></UL>
<B>Journal Module</B>
<UL><LI>Journals are private between student and teacher.</LI><LI>Each journal entry can be directed by an open question.</LI><LI>For each particular journal entry, the whole class can be assessed on one page in one form.</LI><LI>Teacher feedback is appended to the journal entry page, and notification is mailed out.</LI></UL>
<B>Assignment Module</B>
<UL><LI>Assignments can be specified with a due date and a maximum grade.</LI><LI>Students can upload their assignments (any file format) to the server - they are date-stamped.</LI><LI>Late assignments are allowed, but the amount of lateness is shown clearly to the teacher</LI><LI>For each particular assignment, the whole class can be assessed (grade and comment) on one page in one form.</LI><LI>Teacher feedback is appended to the assignment page for each student, and notification is mailed out.</LI></UL>
<P>&nbsp;</P>
<P ALIGN="CENTER"><FONT SIZE="1"><A HREF="index.html" TARGET="_top">Moodle Documentation</A></FONT></P>
<P ALIGN="CENTER"><FONT SIZE="1">Version: $Id: features.html,v 1.2 2001/12/09
10:34:19 martin Exp $</FONT></P>
</BODY>
</HTML>

View File

@ -7,13 +7,18 @@
<H2>Future</H2>
<P>I'm committed to continuing my work on Moodle and on keeping it Open and Free.
I have a deeply-held belief in the importance of unrestricted
education, and Moodle is the main way I can contribute to these ideals.
<P>As Moodle gains in maturity, I hope its directions are influenced
by the community of developers and users. A dynamic database of proposed
features and their status can be found at <A TARGET=_top HREF="http://bugs.moodle.org/">bugs.moodle.org</A>.
Your contributions in the form of ideas, code, feedback and promotion are all very welcome.
I have a deeply-held belief in the importance of unrestricted education and
empowered teaching, and Moodle is the main way I can contribute to the realisation
of these ideals.
<P>As Moodle gains in maturity, I hope its directions are influenced by the community
of developers and users. A dynamic database of proposed features and their status
can be found at <A TARGET=_top HREF="http://bugs.moodle.org/">bugs.moodle.org</A>.
Your <a href="developer.html">contributions</a> in the form of ideas, code,
feedback and promotion are all very welcome.
<P>Now that 1.0 has been released, most of my efforts will concentrate on the
macro level (supporting larger classes and integrating into larger institutions)
and the micro level (improving support for decisions and processes, for both
teachers and learners).
<P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER"><FONT SIZE="1"><A HREF="index.html" TARGET="_top">Moodle Documentation</A></FONT></P>
<P ALIGN="CENTER"><FONT SIZE="1">Version: $Id$</FONT></P>

View File

@ -19,7 +19,7 @@
license to any derivative work.
<P>Moodle will run on any computer that can run <A HREF="http://www.php.net/">
PHP</A>, and supports almost every brand of database.</P>
PHP</A>, and can support many types of database (particularly <a href="http://www.mysql.com/">MySQL</a>).</P>
<P>The word Moodle is an acronym for Modular Object-Oriented Dynamic Learning
Environment, which is mostly useful to programmers and education theorists.&nbsp;