Moodle Development Why work with Moodle? What skills are required. Strategies for building up the Moodle development community in Thailand.
Advantages of Involvement with The World Wide Moodle Community • Open nature of Moodle means that popular ideas are integrated into main Moodle distribution. You can influence the direction of Moodle if you have some good ideas. • Due to the size and complexity of modern software projects new models are needed for us to collaborate together so that as individuals and institutions we can contribute to building the software tools we want to use. • Satisfaction that your work is benefiting many people. • Recognition as a contributor to Moodle can lead to institutional links with institutions around the world. International collaboration on projects. • Review of your code and additions to your code. • Few institutions have the resources to make an effective and popular tool. A tool that is secure, adaptable and has the functionality of Moodle.
Estimated Time / Expense to Code Moodle Equivalent • Core code : 1,146,879 Lines of Code 317 Person Years at US$ 55,000 a year $17,423,701(estimated by ohloh.net).
Contributed code • Contributed code : 608,543 Lines of Code 164 Person Years $9,021,019
Opportunities • Theme development – only requires knowledge of xhtml and css. Nearly every new site needs some Theme customization – lots of work. • Most development work involves adapting Moodle to local needs. • Varying levels of skills are needed for development of Moodle.
Skills Useful for Moodle Development - Using Web Technologies • PHP : • advanced procedural / object orientated PHP 4/5. Moodle 2.0 will require PHP 5.2 • Care should be taken when coding for Moodle that security vulnerabilities are not introduced. PHP scripts can sometimes be insecure. All code going into Moodle core is carefully checked for possible security holes. And any vulnerabilities reported on the internet are quickly followed up.
Skills Useful for Moodle Development - Using Web Technologies • SQL databases. Moodle uses standard SQL that is cross database compatible and a custom data management library and data definition library so that installation, upgrade of database and data manipulation (INSERT, UPDATE, SELECTs, etc) work across many sql databases. • Moodle has a built in ‘XMLDB editor’ which can be used to edit the structure of the database. The editor automatically generates upgrade code and
Skills Useful for Moodle Development - Using Server Technologies • A Moodle developer should be able to install a local server for testing their code on their operating system of choice. XAMPP is a good choice currently for Windows. • Being able to use the Linux shell can be useful if you need to administer a Moodle server and understanding Apache is useful.
Skills Useful for Moodle Development • Familiarity with the Moodle LMS : • A developer could have some experience using Moodle as a user or teacher. This familiarity with Moodle will help the developer to be able to fit new functionality into the system in a sensible way. • A developer should have a good understanding of the Moodle architecture and the various APIs. • We have some coding guidelines here http://docs.moodle.org/en/Coding. These cover General rules, Coding style, Database structures and Security issues (and handling form and URL data) .
Moodle Plug Ins • Activity Module • Admin Report • Assignment Type • Authentication Method • Block • Course Format • Course Report • Database Field • Database Preset • Enrolment Method • Filter • Grade Export • Grade Import • Grade Report • Message Processor • Question Import/Export Format • Question Type • Quiz Report • Resource Type • SSO Plugin
Participation in the Moodle community • Participation in discussions on Moodle.org • Although the Moodle community is unusually helpful it should be remembered that the Moodle forums are about give and take. • try to solve your problem yourself rather than asking about it on the forums. Search through the forums and documentation using google or the built in search tools. • If you demonstrate that you have done some work trying to work out your problem yourself and maybe leave a record on the forums of the steps you have taken which will help someone else then people are more likely to help you. • Take the opportunity when you can to try to help someone else with their query when you can answer a question. You are likely to learn something yourself by participation in discussions! • Post to the bug tracker when you have found a bug, not to the forums. A good way to start to be recognized as a serious developer for Moodle would be to post bug fixes as patches to the tracker. This would also be a good way to start to find your way around the Moodle code. • Attend Moodle Moots and developer conferences to keep up to date with trends in Moodle development and get to know other Moodlers face to face.
Mentoring • Hire experienced programmers to review development plans and code of new programmers. • This kind of on the job training is ideal, not only do you end up with a better product, when done well it can be a very effective training tool so that inexperienced programmers can quickly learn the skills of more experienced coders.
Encourage Contribution Back to the Moodle Community • Give your developers time to polish their code and publish it. • Encourage development of English skills amongst at least some of your developers so that they can benefit from the wealth of resources out there on the web about web development and take a full part in the international Moodle development community. • Of course there is also the Thai Moodle forums.
Freelancing • Allow / encourage your more experienced developers to freelance, to work on international projects? • This will help to attract, retain and motivate talented individuals and will also give them a broader experience. • With good use of the inexperienced members to do what they can and the more experienced staff members / freelancers to review code you can keep costs down while being able to offer competitive rates of pay to experienced members of staff.
Learning to be a Moodle Developer • There is a lot of material available online on php development. • There is a good deal of documentation available for different aspects of Moodle development. • The code itself includes plenty of documentation as phpdoc comments.
Contact Me • Email : email@example.com • Web Page : http://jamiep.org • Skype : jamiepratt