Moodle Development

Download Report

Transcript Moodle Development

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 Web
Technologies
– XHTML STRICT, CSS.
• We try to separate all styling into the CSS files and not use
html attributes and tags for styling pages.
• Moodle is optimized for use with screen readers since
Moodle 1.8. Someone developing themes should understand
concepts of accessibility in web sites.
– JavaScript, generally we always have a fallback for if
a user doesn’t have javascript eg. for people using
screenreaders.
• Moodle now includes the Yahoo User Interface JS library.
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 - Using Developer
Tools
– CVS
– a php editor - vi and eclipse are the editors
favored by the core Moodle developers. A
good editor can really speed up development
and help you explore the Moodle code.
– phpMyAdmin is useful for examining the
contents of databases.
– The firefox extension Firebug is excellent for
debugging html / css and javascript.
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.
Encouraging the Developer
Community
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 protected]
• Web Page : http://jamiep.org
• Skype : jamiepratt