Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Projects for new developers: Difference between revisions

From MoodleDocs
No edit summary
Line 145: Line 145:


In future this files would be also executed, this needs to be considered during design/development, but would not be part of this project. Please, before applying be sure to read about the Behat - Moodle integration (https://docs.moodle.org/dev/Acceptance_testing) and understand it.
In future this files would be also executed, this needs to be considered during design/development, but would not be part of this project. Please, before applying be sure to read about the Behat - Moodle integration (https://docs.moodle.org/dev/Acceptance_testing) and understand it.
== Assignment submission type URL submission ==
This is an idea for a new submission type for the assignment module. Students provide a URL or a list of URLs and the assignment will download a snapshot of the URL(s) as of the time of submission. Optional would be for students to also provide correct bibliographic fields to identify the author etc.
There is a skeleton of a this plugin available as a starting point so the parts that would need to be implemented have less to do with the Moodle API and more to do with general php/curl development.
When complete this plugin would be added to the plugins database for anyone to use.
:'''Skills required''': PHP (also Git or others source version control systems)
:'''Difficulty level''': Medium
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=1337843 Damyon Wiese]


==See also==
==See also==

Revision as of 03:20, 26 February 2013


This evolving page lists possible Moodle projects for new developers derived from community suggestions.

If you have any ideas for new features in Moodle which might be suitable as projects for new developers, please see New feature ideas.

Self-assessment activity using the question bank

The basic idea is that the teacher sets up a bank of questions organised into categories. Then the student can then choose what questions they want to practice when. This is about student-centred learning based on the capabilities of the Moodle question bank.

The idea is explained in more detail in [http://tjhunt.blogspot.com/2011/09/what-i-want-to-build-next.html this blog post. (Note that I am not going to get time to do this myself!)

If you are interested in working on this, there is still a lot of work to do to decide a scope for the project. I think it is important to find a minimal 'version 1.0' set of functionality that can be build as a short project that leads to a completely working activity. Then we can add more features to that already-working core.

Skills required: PHP
Difficulty level: Medium
Possible mentor: Tim Hunt


New question types

This is not really a specific project idea, but I would like to point one an important general area:

With HTML5 the range of what can be done in a web browser keeps expanding. Can we use these possibilities to make new, much more interactive, question types for Moodle?

There are some ideas in this forum thread: https://moodle.org/mod/forum/discuss.php?d=222439

  • a question type where students have to join things up correctly by adding lines to a diagram (for example to complete an electric circuit).
  • a question type where students can change the colour of certain parts of a diagram, and they have to get it correct.
  • ... I am sure there are more possible ideas. Use your imagination!
Skills required: PHP & JavaScript
Difficulty level: Medium - Hard
Possible mentors: Tim Hunt

Before proposing anything, please make sure you are familiar with the standard question types already available in Moodle, and the contributed question types that other people have already created.


Role assigning tool

Develop a tool for easily assigning a role to a user in many places, for example, enrol a student in several courses.

Skills required: PHP
Difficulty level: Medium
Mentors: Rossiani Wijaya

For further details see:


Form text autosave

Moodle is a web based application which makes heavy use of text input from the web browser, a common annoyance from our users is loosing that text input into the browser. A common request is for input to be automatically saved or manually saved as a draft in order that input is not lost or can be worked on between sessions. Similar functions to this exist in web applications like wordpress or Gmail.

Your task would be to implement this feature in Moodle. It is important that you make consideration of the fact that unlike other applications like blogging engines - Moodle has a wide variety of places where text would need to be stored as draft (examples: a forum post, a quiz essay question, an online text assignment) and this solution should be universal across all long text entry fields.

If you are interested in this project it is important that you research the various attempts which have been made to implement this feature in Moodle, posts on the Moodle forums and demonstrate awareness in your application.

Skills required: PHP & JavaScript [YUI]
Difficulty level: Medium
Possible mentors: Dan Poltawski

For further details see:

Forms user experience improvements (HTML5)

Moodle forms API doesn't allow for complex relationships during data entry. This in turn doesn't allow a rich experience for the user while entering data. This project would serve to make moodle forms accessible while maintaining a high quality on data input as well as improving user experience during data input.

Your task would be:

 * to improve the moodle forms API (or as a separate local plugin) with a view to improve interactivity between the user and the moodle form with the above aims in mind.
 * to document and provide examples of these improved forms.

This might involve Investigation into improving the API uses in moodle, incorporating new or better technologies (HTML5, YUI ? ).

An example of a very minor improvement : moodle/lib/formslib.php contains a function focus() which implements js. HTML5 has the 'autofocus' attribute now instead.

Related article(s) :

* http://net.tutsplus.com/tutorials/html-css-techniques/rethinking-forms-in-html5/

Some related issues:

* MDL-38181
* MDL-38114 (See 'Progress and Meter" in related article above and http://www.wufoo.com/html5/elements/2-progress.html)
Skills required: HTML5, PHP, JavaScript, HTML5, HTML5
Difficulty level: Hard
Possible mentor: Aparup Banerjee

Enrolment UI improvements

The Enrolment User Interface could do with an overhaul to improve its usability and accessibility. At present they key issues relate to:

  • pagination of users displayed; and
  • JS popups - broken and inefficient in places, modal + focus issues.

It would be good if we could write a new interface which offers:

  • dynamic filters (using JS)
  • pagination
  • filter by letter (similar to mod_assign grading page)
  • improved/rewritten JS popups
Skills required: PHP & JavaScript [YUI]
Difficulty level: Medium
Possible mentors: Andrew Nicols

SCORM

There are various SCORM related projects I'd be interested in mentoring for GSOC in 2013.

  • SCORM 2004 - this will build on previous GSOC project work improving SCORM 2004 support.
  • SCORM player rewrite - the player currently uses YUI2 code - it should be converted to YUI3 and improved maybe adding an HTML5 version of the player?
  • SCORM reports - there are currently 3 SCORM reports - ideas on new report plugins would be considered as possible projects.
  • Improve file linking support (MDL-25879)
Skills required: PHP, JavaScript
Difficulty level: Medium -> Hard
Possible mentor: Dan Marsden

Plagiarism plugin

There are various commercial plugins avaialble that use the Plagiarism API in Moodle - I'd like to see a basic plugin developed that could be used for testing the Plagiarism API and provided some simple useful functionality. All Plagiarism API functions for all Modules that support the API should be implemented and used. It should check the file contenthash against all other files uploaded in the Moodle files table and if a matching record is found it should display information about the duplicate submission including if the same student has submitted the file in a different course/activity or if a different user has uploaded the file with the same contenthash.

Skills required: PHP
Difficulty level: Medium
Possible mentor: Dan Marsden

Improve Behat's new features user interface

Right now we list the available steps definitions and we have a form to filter them. Would be good to allow feature files to be created directly from this page filling a textarea field with the selected steps from the list, adding a template in some cases to reduce human errors when writting new feature files, this template would depend on the arguments expected by the step.

Check the current user interface on the latest Moodle 2.5 development version (https://github.com/moodle/moodle, master branch) going to Site administration block -> Development -> Acceptance testing

Mockup of how could it look like: https://docs.moodle.org/dev/File:GSOC_2013_acceptance_test_new_ui_proposal.png

Skills required: Javascript & PHP (also Git or others source version control systems)
Difficulty level: Easy - Medium
Possible mentor: David Monllaó

In future this files would be also executed, this needs to be considered during design/development, but would not be part of this project. Please, before applying be sure to read about the Behat - Moodle integration (https://docs.moodle.org/dev/Acceptance_testing) and understand it.

Assignment submission type URL submission

This is an idea for a new submission type for the assignment module. Students provide a URL or a list of URLs and the assignment will download a snapshot of the URL(s) as of the time of submission. Optional would be for students to also provide correct bibliographic fields to identify the author etc.

There is a skeleton of a this plugin available as a starting point so the parts that would need to be implemented have less to do with the Moodle API and more to do with general php/curl development.

When complete this plugin would be added to the plugins database for anyone to use.

Skills required: PHP (also Git or others source version control systems)
Difficulty level: Medium
Possible mentor: Damyon Wiese

See also