Difference between revisions of "Developer documentation"

Jump to: navigation, search
(Core components that affect everything)
(Make a new plugin)
Line 71: Line 71:
 
*[[Resource types|Resource types]]
 
*[[Resource types|Resource types]]
 
*[[SSO plugins|SSO plugins]]
 
*[[SSO plugins|SSO plugins]]
 +
*[[Search engine adapters|Search engine adapters]]
 
*[[Course Report Plugins|Course Report Plugins]]
 
*[[Course Report Plugins|Course Report Plugins]]
 +
  
 
When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 Moodle modules and plugins database].
 
When you have developed a new component please publish it in the [http://moodle.org/mod/data/view.php?id=6009 Moodle modules and plugins database].

Revision as of 21:00, 17 November 2007

Note: New developer documentation pages should be added to the Development namespace by typing

Development:
before the new page name i.e.
[[New page name]]
.

If you are a developer, you probably want to change your preferences to include the Development namespace in searches.

A page may be added to the Developer category by typing
[[Category:New page name]]
at the bottom of the page.

How Moodle development works

This overview of the Moodle development process may be handy in understanding how the development of Moodle occurs and how people become Moodle developers.

Guidelines

The following guidelines are crucial reading for anyone wanting to contribute to the Moodle code base:

Documentation for core components

This section is for documentation of specific components of the existing core Moodle code. Discussion of components that are under discussion or in development can be found in the Developer notes or on the Roadmap.

The documents below give a general overview. For detailed function-by-function documentation, see the phpDocumentor documentation that is automatically generated from the comments in the code. And don't forget that the most up-to-date and detailed description of how the code works is the code itself. Moodle code should be easy to read and understand. Use the source, Luke!

Core components that affect everything

Core libraries with a more specific uses

Modules included in the standard distribution

How you can contribute

Make a new plugin

The M in Moodle stands for modular, and the easiest, most maintainable way to add new functionality to Moodle is by using one of the many plugin APIs. There are many types of plugin you can write:


When you have developed a new component please publish it in the Moodle modules and plugins database.

Change core code

Some types of change can only be made by editing the core Moodle code. Such changes are much harder to maintain than plugins. If you want your core change to be considered for inclusion in the official Moodle release, you need to create an issue in the tracker, and attach your change as a patch. It is also a good idea to discuss your ideas in the forums first.

Ways to contribute that do not involve PHP programming

Plans for the future

Ideas for and details of planned future features of Moodle are initially discussed on the forums in the Using Moodle course at moodle.org. That developer discussions are intermixed with user discussions in the same forums may seem strange at first but is one of the reasons for the success of Moodle. It is important that both end-users and developers discuss the future features together.

Once ideas begin to crystallize on the forums they can be summarized in this wiki, either as part of the Roadmap or in the form of Developer notes. These pages then form the basis for further discussion in the forums.

Resources and tools

See also