Here is a list of resources that helped me get started in Moodle development. I've even put together a few articles of my own to share covering topics like Getting Started in Moodle, Git for Moodle Developers in Windows and Upgrading Moodle packages for Windows (XAMPP Control Panel, PHP, phpMyAdmin, Apache, MySQL)
[Updated: This is an updated version of an article that was originally published on October 25, 2013]
Moodle Development Environment
- Moodle XAMPP installation for Windows or Mac OS X.
- Moodle Reset OPCache plugin -- Allows you to instantly reset you PHP OPCache from within Moodle,,, for those times when nothing seems to change.
- Moodle Code-Checker plugin -- Test Moodle source code to ensure it conforms to the official Moodle Coding Style Guidelines.
- Moodle Development Kit (MDK) -- A collection of tools to make life easier for Moodle developers.
- Moosh -- Moodle Shell. Be sure to watch the videos. If you want to create a plugin for example, this will dramatically increase your productivity.
- User Related Debugmodus -- Though not as good as Moodle's built-in Debug Developer Mode, this is a great tool you can use to enable debugging on a per user basis on a production server.
- Moodle Debugger in Developer Mode (click Home > Site Administration > Development > Debugging -- be sure to check the box next to "Display debug messages" if you want to see the errors on your screen. Otherwise they just end up in your log file.
- phpMyAdmin or Adminer -- to view and edit Moodle's MySQL database tables. There is even a Moodle Adminer plugin so you can edit the database right from within Moodle.
- Moodle PHPdoc Check -- Checks phpdocs in the code for compliance with Moodle Coding Style.
- Vagrant Local Development Environment -- Run your development environment in a virtual machine.
I have also tested a number of source code editors on Windows including Atom, Brackets, Notepad++ and Sublime Text v2 and v3. I don't recommend using Atom. While a nice editor, it slows to a crawl when editing some of Moodle's larger files that can be upwards of 250KB at times. This is important because much of Moodle's development documentation is in the source code. In Atom, a single keystroke can take up to several seconds to happen.
Notepad++ is super fast and my text editor of choice for most work. The down side is that Notepad++ can't effectively use XDEBUG PHP tracing on larger source code files.
Brackets and Sublime Text ($) aren't quite as fast however their advantage is that plugins are available which are specifically targeted to help Moodle development. I think Sublime Text is a little faster. I have yet to try either of these with XDEBUG.
As for NetBeans, once you've got it configured properly with XDEBUG, it works almost perfectly though it is slower than a native Windows application because it needs to run in a Java virtual machine.
I have yet to try the following popular alternatives:
- phpStorm ($) -- Besides being is Java based, it can take a little getting used to the user interface.
- phpDesigner ($) -- a native Windows application.
Moodle Development Books
Moodle Programming Courses
Introduction to Moodle 1.8 Programming -- Important note: Moodle 2.x has some important different from 1.8. That being said, I found it very helpful to go through this course. It is unfortunate that it was never updated for Moodle 2.x.
Introduction to Moodle Programming by Tim Hunt
Moodle Documentation for Developers
- Moodle Development
- Moodle Coding Guide
- Moodle Coding Styles
- Moodle Developer Documentation
- Moodle Documentation --- For Users and For Developers
- Moodle Debugging
Useful Moodle Related Online Development Tools
- Moodle General Developer Forum -- A place to ask questions, get feedback and help other community members
- Moodle Sandbox --- runs the latest stable version of Moodle
- Moodle QA Testing Site -- A place you can go and test your code
- Moodle Tracker -- Report issues, request new features and share solutions to Moodle core and 3rd party contributions (like plugins and themes)
- GitHub --- The official place to post your patches for integration into Moodle and code repository for plugin development
- Git for Developers --- instructions on using Git for Moodle Developers
- How to Report Bugs Effectively and How to Manipulate Moodle Developers
- Moodle General Developer Meetings -- see YouTube recordings
- Moodle videos on YouTube
- Moodle on Twitter -- If moodle.org goes down, get status updates from here.
More to come…
Have a resource you'd like to see added? Drop me a comment!