Note:

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

Developer documentation: Difference between revisions

From MoodleDocs
No edit summary
(redirect)
 
(121 intermediate revisions by 36 users not shown)
Line 1: Line 1:
(Redirected from Developer documentation)
#redirect [[Main Page]]
Jump to: navigation, search
 
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.
Contents
[show]
 
    * 1 How Moodle development works
    * 2 Guidelines
    * 3 Documentation for core components
          o 3.1 Core components that affect everything
          o 3.2 Core libraries with a more specific uses
          o 3.3 Modules included in the standard distribution
    * 4 How you can contribute
          o 4.1 Make a new plugin
          o 4.2 Change core code
          o 4.3 Ways to contribute that do not involve PHP programming
    * 5 Plans for the future
    * 6 Resources and tools
    * 7 See also
 
[edit] 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.
[edit] Guidelines
 
The following guidelines are crucial reading for anyone wanting to contribute to the Moodle code base:
 
    * Coding guidelines have to be followed by all Moodle developers
    * Moodle design goals spells out the basic design goals behind Moodle
    * Interface guidelines aim to provide a common feel to the Moodle user interface
    * Moodle CVS for developers explains how to work with the Moodle code in CVS
    * Tracker explains the Moodle Tracker for keeping track of bugs, issues, feature requests etc
    * Working with the Community explains how to engage with the dev community and discuss changes
    * Unit tests explains how to run the unit tests, and how to write new test cases.
    * Development:Fast portable SQL shows SQL techniques that are fast, efficient, and known to work on all supported DBs.
 
[edit] 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, and you can browse the code online using phpXRef. Moodle code should be easy to read and understand. Use the source, Luke!
[edit] Core components that affect everything
 
    * The database schema
    * lib/moodlelib.php
    * lib/weblib.php for outputting stuff
    * JavaScript function available on the client side
    * Database abstraction layer @ v1.7
    * Roles and Capabilities system @ v1.7 for controlling who can do what
    * Forms library @ v1.8 for creating accessible and secure HTML forms that let users edit things
 
[edit] Core libraries with a more specific uses
 
    * Authentication API
    * Cookieless Sessions
    * Email processing
    * Environment checking before install, check the user's server to ensure Moodle will work there.
    * Groups system
    * Gradebook
    * Moodle Network
    * Question engine
    * Stats package
    * Migration to UTF-8 @ v1.6
    * YUI JavaScript library - YUI was selected as the official AJAX library for Moodle.
    * lib/graphlib
    * Admin settings
 
[edit] Modules included in the standard distribution
 
    * Lesson Specification
    * Quiz module
    * SCORM module 1.5 schema
 
[edit] How you can contribute
[edit] 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:
 
    * Activity modules
    * Admin reports
    * Assignment types
    * Authentication plugins
    * Blocks
    * Course formats
    * Course reports
    * Database fields
    * Database presets
    * Enrolment plugins
    * Filters
    * Gradebook plugins
          o Gradebook report
          o Gradebook export
          o Gradebook import
    * Portfolio Plugins
    * Question types
    * Question import/export formats
    * Quiz reports
    * Repository plugins
    * Resource types
    * Search engine adapters
 
General information that applies to all types of plugins
 
    * Where to put language strings for your plugin
    * Defining the database tables for your plugin
 
Please see the Guidelines for contributed code for an overview of how to contribute to the Moodle code.
[edit] 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. See Development:Overview#Major_Development for more details.
[edit] Ways to contribute that do not involve PHP programming
 
    * Create Moodle themes
    * Translate Moodle into other languages
    * Help document Moodle
    * Database schemas
    * Join the testing effort, which involves participating in the bug tracker
 
[edit] 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.
 
    * Roadmap
    * Developer notes
    * Student projects
    * Developer meetings
 
[edit] Resources and tools
 
    * Developer FAQ - frequently asked questions, especially useful for newcomers to Moodle
    * Finding your way into the Moodle code - also aimed at newcomers
    * Moodle tracker - bug reports, feature requests and other tracked issues
          o Firefox tracker search - How to setup a firefox quicksearch to easily navigate to moodle bugs
    * Unmerged files - changes on the stable branch in CVS that have not been merged to HEAD
    * Browse the code online:
          o the code with a complete change history from CVS
          o the code, with links generated by PHPXref
    * Moodle PHP doc reference - compiled from the comment attached to each class and function in the code
    * Database Schema - for recent releases
    * Development news and discussion section of Using Moodle course
          o especially the General developer forum
          o cool tricks you can use in the moodle.org forums
    * Some tools people use when working on Moodle code:
          o Setting up Eclipse for Moodle development - Eclipse is a great editor to use for php development, if you can work out how to set it up.
          o Setting up Vim for Moodle development
          o Setting up Netbeans for Moodle development - Netbeans Early Acces for PHP is a great out-of-the-box editor.
          o Ctags - Using a tags file to navigate code
          o W3C HTML validator - Moodle has built in support to make using it easier.
          o Firebug plugin for Firefox.
    * Windows Installer - Windows Installer documentation for developer.
 
[edit] See also
 
    * Moodle Security Centre
    * Moodle Partners - providers of custom Moodle development services
 
Retrieved from "https://docs.moodle.org/en/Development:Developer_documentation"
 
Category: Developer

Latest revision as of 07:04, 7 July 2014

Redirect to: