Welcome to Moodle development!
This is a tutorial to help you learn how to write plugins for Moodle from start to finish, while showing you how to navigate the most important developer documentation along the way.
PRE-REQUISITES: We assume you are fairly comfortable with PHP in general and that you are able to install a database and web server on your local machine.
Background
Setting up your development environment
The Moodle development framework
What type of plugin are you developing?
Let's make a plugin
The skeleton of your plugin
Basic page structure
How we support 110 languages
Add content to your page
Adding your plugin into Moodle's navigation
Database queries
Creating your own database tables
Supporting access permissions: roles, capabilities and contexts
Adding web forms
Maintaining good security
Handling files
Adding Javascript
Adding events and logging
Web Services and AJAX
Using caching to improve performance
Supporting backup and restore
Supporting automated testing
Publishing your plugin
Adding your plugin to moodle.org
Supporting your plugin
TODO
See also these older tutorials