Note: You are currently viewing documentation for Moodle 1.9. Up-to-date documentation for the latest stable version is available here: Projects for new developers.

Projects for new developers

From MoodleDocs
Revision as of 17:49, 8 March 2008 by Matt Gibson (talk | contribs)

This page lists available student projects in Moodle.

Note that all those projects related to the Google Summer of Code program have been moved to this page.


Suggested Projects

Secure RSS feeds

Currently RSS is less than useful because:

  • Either we can't publish private information to the outside world because it's too sensitive.
  • We open up sensitive information to the outside world

We should add codes to make the RSS URLs practically impossible to guess, much the same way as Google Calendar does it.

  • Overhaul all the RSS feeds in Moodle to make use of a long hash-like string in the URL for identification (Forums, Data etc).
  • Store these codes in a new field per-user and per-course.
  • Add GUIs to let the user recreate their code to something else should they suspect a breach.
  • Add RSS to other areas of Moodle such as the participants "last logins" and the activity logs.
  • Explore/research other methods of opening up RSS in a safe way to the outside world.

Old Specification: Secure RSS feeds


Roles interface improvements

Improve the roles editing interface by making it more dynamic and flexible. You can use the YUI library for ajax if you like, but there must be a good fall-back interface too. Some ideas include:

  • Improve the order of the capabilities and implement better grouping.
  • Make the groups of capabilities collapsible to make it easier to "zoom in" to a particular section.
  • Add floating tooltip help when you hover over any given capability.
  • Experiment with an (alternate) interface seeing the roles all side-by-side for easier comparison/editing.
  • Implement a roles backup and restore system to allow site administrators to distribute useful roles in the moodle comunity (rather than having to describe the permissions setup)
  • Analyse the problem carefully with feedback from the community for more ideas.


Integration with bibliographic systems such as Wikindx

Managing references and citing them is an important behaviour in university education and research. Bibliographic facilities are quite complicated and go beyond the capabilities of Moodle built-in technology (e.g. the database activity). Integrating Moodle with open-source bibliographic software such as Wikindx could much facilitate this practice within Moodle.

Design and construct an integration with Wikindx (or other open-source bibliographic tools, if appropriate).

Teachers should be able to easily refer to wikindx bibliography items throughout a Moodle course, and be able to:

  • Generate correctly-formatted in-place references (using standard styles e.g. Harvard, APA) for the commonly-cited reference types (e.g. journal article, book chapter, book). It may be possible to delegate the formatting directly to wikindx (since it already performs functions like these) rather than implementing a whole new set of logic in the Moodle integration.
    • Possibly, allow some kind of direct searching of a wikindx database from within Moodle, so as to make it easier to refer to items
  • Generate reading lists / bibliographies
  • Allow export of the above into common machine-readable formats such as Bibtex or RIS. (Wikindx can perform this so again it's a question of hooking into, or expanding, wikindx functionality.)

See also Development:Wikindx and this forum discussion too


Implement CATs in Moodle

This book describes a number of assessment techniques that involve collaboration and group work, and therefore fit very well into Moodle's Social Constructivist philosophy. The book about using these techniques in the classroom, but at an conference I attended there was a talk by Jean Runyon and Thomas Gorecki from the College of Southern Maryland saying how well these techniques work online.

Some of them just need a forum of something basic, but others would need to be done as a database module templates. Doing this would

  1. Make Moodle an even better teaching tool.
  2. Provide some good exemplars of how to do interesting things with database templates.
  3. Possibly highlight limitations in the database template system, that would require improvements to the database module code to overcome.
  4. One of the outcomes of this project could be some really good 'How to write a database template' tutorial, which would be very valuable to the community.

This is my (Tim Hunt's) idea, but I would not be interested in mentoring it. It would need to be someone who knows all about the database module.


Blog Assignment Type

What is it for?

Blogs are inherently user owned and driven by definition, however teachers would like to have a way to use blogs as assignments in their courses, comment, grade, etc.

A solution to this conundrum would be a new Assignment type that makes it possible for a student to easily submit the link one of their blogs to an assignment in a course, and have that blog entry privately graded and commented on by the instructor of that course. The blog entry itself remains public along with all of the student's other blogs. The tool would provide a time filter in the Assignment, so that the instructor could limit the blog entry posting dates that will be accepted (both to ensure 'fresh' entries and to keep the list of entries the student chooses short for frequent student bloggers).

I suggest a blog assignment type that functions as follows:

Teacher: Teacher creates a blog assignment, this puts a grade in the gradebook and provides an assignment link for students to see.

The teacher can configure options to allow a blog entry posted in the last X days to be used for the assignment.

Students: When students enter the assignment they see a drop down menu of all their current (blog entries posted in the last X days as chosen by the teacher) blog entries, and they choose one to satisfy the assignment.

Assessment: The teacher goes in to the Assignment, views the blogs that are linked from the assignment, leaves comments (the comments only show up to the student when they view the blog assignment), and gives a grade.

The blog entries themselves stay on the student's blog, only the grades, links, and comments go in the assignment (optionally the assignment scrapes the student's blog and loads the full text in to store for backup and restore).


Moodle IDE

The objective of this project is to create a Moodle IDE based on Eclipse so that new developers can get to develop Moodle in less time.

Ideas

  • First release: Eclipse + Plugins + Moodle splashscreen + CVS Configuration + Apache + MySQL + Moodle CVS code. All preconfigured and ready out of the box.
  • Future
    • Every X time, it checks for new versions of Moodle and packs it.
    • Checkstyle plugin alike fo follow Moodle Design Guidelines.
    • Development help (can be wiki pages to navigate offline)

Mentor: David Horat

Download: MoodleIDE-latest

Moodle Multisite

The objective of this project is to make Moodle able to manage several Moodle sites with just one source code. This will help administrators of several sites to centralize code upgrades and technical problems.

Ideas

  • First release
    • config.php will be a proxy that executes the concrete config file depending on the current url.
    • The concrete config file will be under the directory /config and will have an arbitrary name created by the user.
  • Future
    • Create an XML file with all the pairs URL(n)-ConfigFile(1).
    • Every time this file changes, it should be created the config.php file proxy.
    • Develop a Web frontend to change this file, that can be just accessed by the super admin in every site.

Mentor: David Horat


Moodle Target tracking + rewards/gifts

This one would suit a facebook enthusiast! The Facebook gifts system is very popular and an ideal motivator for students at school level. Moodle needs an equivalent.

The aim is to develop a system for setting targets e.g. 'get at least 60% in this assignment/quiz/whatever' and for reward credits to be awarded automatically when it is completed. These reward credits translate to a system of Gifts similar to facebook ones (small images, akin to stickers, which can be bought for a small fee and sent to friends who then display them on their profile). Admins can control what the reward images are for their site, maybe having them in some sort of rank order of value, or having different ones with different meanings. There are several ways they could be implemented beyond that:

  • Teachers could choose which rewards can be earned for a specific task. For example, there may be different rewards for forums and assignments
  • Teachers may want to specify different rewards for different levels of performance on the same task
  • Teachers decide how many points a certain target is worth and the students cash in those points for rewards of various values
  • Teachers decide how many rewards a target is worth and students choose that many rewards. None are worth more than 1 point each, the only difference is the graphic.

Once students have rewards, they need a way of allocating them (presumably permanently) to their friends. A system for logically displaying them on the friend's profile page would be needed too and will need to take into account

  • Students with only a few stickers given to them by friends will want them to maximise their display
  • Students who are very popular with hundreds of stickers may need to groups of 10 similar ones substituted for a super-sticker to use less space
  • Hovering over the sticker should give details of who awarded it and when and possibly a short message.

Additionally, the social rating/ranking that this achieves will have most effect when it is publicly visible in various places e.g. under forum avatars and maybe in the online users block as well as the user profile.

Maybe this would sit well with the 'Friends' part of last years GSOC social networking project if it were finished.

I can't offer to mentor in coding terms, but will help with ideas all I can. Matt Gibson 05:26, 4 March 2008 (CST)

Use of Video Material Effectively within Moodle

The main purpose of this module will be to get use of video content, most probably a lecture, in a more fomal/controled/affective way within moodle.

The main features of this module will be;

  • Stream the video file (most probably in flv format)
    • Should be able to stream by using multiple ways (e.x. FMS, Red5, lighttpd, etc..)
    • Develop a fronted to configure the streaming server settings
    • automatic media conversion (controlled by other moodle settings like max file size, etc..)
  • The teacher can give related notes, websites or other resources with the video
  • The students can keep a note related to each video
  • Share/view other student's notes (probably controlled by the teachers and/or students)
  • Optionally asses the student notes and include them in the grade book

The above list may expanded based on your views. Some of the features have implemented at FlashVideo and that can be used as a starting point


by Rashan Anushka


Web-based upgrade and plugins interface

A system for Moodle to be upgraded along with its plugins from within the admin interface.

Currently, adding third party modules can be messy and can especially slow down the upgrade process if CVS is not used. The aim would be to develop a way to package plugins in a standardisesd way so that a single zip file could be retrieved and installed automatically, similar to the way courses are restored. An added feature would be for the modules and plugins database on moodle.org to have an XML index so that you could browse available plugins from within your own moodle instance and have a on-click install option. Version compatibility info could be included so that only those which will work with your install wil be shown. At upgrade time, the new third-party components screen could then show which ones could be upgraded along with the rest of the code and which would need to dropped because there is no compatible replacement.