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
(remove plagiarism api - (implemented in GSOC2012))
(This page will not be migrated to new devdocs)
 
(199 intermediate revisions by 33 users not shown)
Line 1: Line 1:
[[File:GSoC2012 logo.png|right]]
{{Template:WillNotMigrate}}
<p class="note">'''Latest news:''' ''Moodle will be taking part in the [http://socghop.appspot.com/ Google Summer of Code] for our sixth year in 2012!''</p>


{{GSOC}}
==Getting started==


If you're thinking of applying to work with Moodle for GSOC 2012, please check the information on [[Applying to work with Moodle for GSOC]] and join our gsoc2012@conference.moodle.org jabber chat!
* Moodle uses PHP, JavaScript, SQL and a number of other Web languages, so learning those is a good place to start.
* When you have some basic PHP programming skills, you may wish to start learning about how the Moodle code is organised. It is recommended that you go through the [[Tutorial]].
* If you are looking for projects suggested in the tracker, look for issues with the [https://tracker.moodle.org/issues/?jql=Difficulty%20%3D%20Easy%20AND%20resolution%20%3D%20Unresolved%20 'addon_candidate' label].
* If you are looking to make a quick contribution, look for tracker issues with marked as [https://tracker.moodle.org/issues/?jql=Difficulty%20%3D%20Easy easy].
* As you become more involved in Moodle development, you might like to learn more about the [[Coding|coding conventions]] used and how changes to Moodle core code are [[Process|processed]]. Once you become confident enough, please consider adopting a [https://moodle.org/plugins/browse.php?list=set&id=61 plugin seeking a new maintainer].


==Potential projects==


This evolving page lists possible Moodle projects for new developers derived from community suggestions.
This evolving page lists possible Moodle projects for new developers derived from community suggestions and lists projects together with experienced core developers willing to mentor new developers.


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


== SCORM 2004 ==
=== Acceptance tests for the Moodle app ===
The student/s will use the [https://docs.moodle.org/dev/SCORM_Test_Harness SCORM Test harness] (developed in 2011 GSOC) to improve the SCORM 2004 support in Moodle - If multiple suitable applicants apply to this project and enough slots are available more than 1 student may be accepted to work on different parts of SCORM 2004 at the same time.


:'''Skills required''': Javascript, PHP
Since Moodle 3.7 it will be possible to write and run acceptance tests for the Moodle app.
:'''Difficulty level''': Medium
:'''Mentors''': [http://moodle.org/user/view.php?id=21591&course=5 Dan Marsden]
 
For further details see:
* Tracker issue MDL-7068
 
==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''': [http://moodle.org/user/view.php?id=93821&course=5 Tim Hunt]
 
==New question types==


This is not really a specific project idea, but I would like to point one an important general area:
Tasks:
* Write new acceptance tests for the Moodle app


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?
Requirement for GSOC prospective students:


As I say, I do not currently have any specific suggestion for new HTML5 question types, but if you have an interesting idea, please feel free to propose it, or at least discuss it with us.
* We require prospective students to set-up and run in a local environment the existing tests hosted [https://github.com/moodlehq/moodle-local_moodlemobileapp here] following this documentation: [[Acceptance testing for the mobile app]]. Students must record and submit a video of the tests running on a local machine as part of the GSOC application process.
* We also require students to create an additional simple test based [https://github.com/moodlehq/moodle-local_moodlemobileapp on the existing ones]


:'''Skills required''': PHP & JavaScript
:'''Skills required:''' Behat (PHP)
:'''Difficulty level''': Medium - Hard
:'''Difficulty level:''' Medium
:'''Possible mentors''': [http://moodle.org/user/view.php?id=93821&course=5 Tim Hunt] - but only if you have an interesting enough idea!
:'''Possible mentor:''' [https://moodle.org/user/profile.php?id=49568 Juan Leyva]


Before proposing anything, please make sure you are familiar with the [https://docs.moodle.org/22/en/Questions standard question types] already available in Moodle, and the [http://moodle.org/plugins/browse.php?list=category&id=29 contributed question types] that other people have already created.
=== Front-end editor for the plugin skeleton generator ===


This is a follow-up project for a [[GSOC/2016#Plugin skeleton generator|successful GSOC 2016 project]] that resulted in a new tool allowing developers to quickly generate a skeleton (scaffolding, template) for a new Moodle plugin. The tool proved to be a helpful helper with significant impact on the quality of Moodle plugins code. This follow-up project aims at further improvements of the skeleton generator. The primary goal is to implement a developer-friendly user interface / front-end editor allowing to configure the plugin's properties (recipe file) easily. The UI should guide the developer through the process of designing and defining the plugin properties and facilitate the whole process.


==Email reminders for calendar events==
* We require prospective students to make an attempt at fixing at least 1 issue in the Moodle tracker before their proposal can be considered. This MUST be completed before your application can be considered valid.


It would be nice to have some automated and configurable functionality that enables email reminders for events to be sent automatically.
:'''Skills required''': PHP + JS
 
This would be integrated in the current messaging system as a message provider.
 
:'''Skills required''': PHP
:'''Difficulty level''': Medium
:'''Difficulty level''': Medium
:'''Mentors''': [http://moodle.org/user/view.php?id=381842&course=5 Michael de Raadt]
:'''Possible mentor''': [http://moodle.org/user/view.php?id=1601&course=5 David Mudrák]
 
For further details see:
 
* Tracker issue MDL-1329
 
==Video/audio capture repository plugin==
 
A new repository plugin can be developed to allow the user to speak directly into the Moodle 2.0 filepicker via their microphone, and have the audio file saved securely as an MP3 into the correct current filearea.


Flash would be ideal but Java might be required because of Flash's server requirements (but this should all be examined again to be sure).  One possibility might be to develop a single public server at xxx.moodle.org to act as a service for Moodle sites around the world.
=== Make badges criteria a subplugin ===


[http://www.poodll.com/?p=242 Poodll] would be a good thing to look at, as well as [http://gong.ust.hk/nanogong/ nanogong] and this previous project which used riffly.com:  MDL-18341. (update 6/2011: riffly.com is dead) Note that sam marshall has written a simple, GPL, record audio Java Applet, which you can get from https://github.com/sammarshallou/ouaudioapplets. also, see video and audio recording plugin for Moodle 1.9 (http://tracker.moodle.org/browse/CONTRIB-2730) that can (and probably will) be ported to Moodle 2 (as soon as i have some spare time,[[User:Nadav_Kavalerchik]])
Moodle is an acronym for "Modular Object-Oriented Dynamic Learning Environment" so it allows for extending and tailoring learning environments using community sourced plugins.


:'''Skills required''': PHP, Javascript, Flash?, Java?
Moodle let users create badges, which are a validated indicator of accomplishment, skill, quality or interest that can be earned. However, for now, the criteria for earning them are a closed list (https://docs.moodle.org/en/Using_badges#Criteria).
:'''Difficulty level''': Medium
:'''Mentors''': [http://tracker.moodle.org/secure/ViewProfile.jspa?name=rajeshtaneja Rajesh Taneja]


==Role assigning tool==
* We require to prepare a mechanism to create custom create to Moodle as a third-party plugin. More information about that can be found here: https://tracker.moodle.org/browse/MDL-39864
 
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
:'''Skills required''': PHP
:'''Difficulty level''': Medium
:'''Difficulty level''': Medium
:'''Mentors''': [http://moodle.org/user/view.php?id=955449&course=5 Rossiani Wijaya]
:'''Possible mentor''': [https://moodle.org/user/profile.php?id=119927&course=5 Sara Arjona]
 
For further details see:
* Tracker issue MDL-10002
 
==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''': [http://moodle.org/user/view.php?id=104159&course=5 Dan Poltawski]
 
For further details see:
* Tracker issue MDL-18014
* Related discussions: [http://moodle.org/mod/forum/discuss.php?d=191050 Usability idea for 2.3: Autosave] [[User_Data_Always_Safe]]


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


* [[GSOC]] - describing Moodle's involvement with Google in their Summer of Code program
* [[GSOC]] - describing Moodle's involvement with Google in their Summer of Code program
* [http://tracker.moodle.org/secure/IssueNavigator!executeAdvanced.jspa?jqlQuery=type+in+%28%22New+Feature%22%2C+Improvement%29+AND+resolution+%3D+unresolved+ORDER+BY+votes+DESC&runQuery=true&clear=true Popular new feature and improvement requests in Tracker]
* [https://tracker.moodle.org/issues/?jql=type%20in%20%28%22New%20Feature%22%2C%20Improvement%29%20AND%20resolution%20%3D%20unresolved%20and%20labels%20in%20%28addon_candidate%29%20ORDER%20BY%20votes%20DESC Popular new feature and improvement requests in Tracker that can be implemented as plugins]
 
[[Category:GSOC]]

Latest revision as of 14:09, 20 May 2022


Warning: This page is no longer in use. The information contained on the page should NOT be seen as relevant or reliable.



Getting started

  • Moodle uses PHP, JavaScript, SQL and a number of other Web languages, so learning those is a good place to start.
  • When you have some basic PHP programming skills, you may wish to start learning about how the Moodle code is organised. It is recommended that you go through the Tutorial.
  • If you are looking for projects suggested in the tracker, look for issues with the 'addon_candidate' label.
  • If you are looking to make a quick contribution, look for tracker issues with marked as easy.
  • As you become more involved in Moodle development, you might like to learn more about the coding conventions used and how changes to Moodle core code are processed. Once you become confident enough, please consider adopting a plugin seeking a new maintainer.

Potential projects

This evolving page lists possible Moodle projects for new developers derived from community suggestions and lists projects together with experienced core developers willing to mentor new developers.

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

Acceptance tests for the Moodle app

Since Moodle 3.7 it will be possible to write and run acceptance tests for the Moodle app.

Tasks:

  • Write new acceptance tests for the Moodle app

Requirement for GSOC prospective students:

  • We require prospective students to set-up and run in a local environment the existing tests hosted here following this documentation: Acceptance testing for the mobile app. Students must record and submit a video of the tests running on a local machine as part of the GSOC application process.
  • We also require students to create an additional simple test based on the existing ones
Skills required: Behat (PHP)
Difficulty level: Medium
Possible mentor: Juan Leyva

Front-end editor for the plugin skeleton generator

This is a follow-up project for a successful GSOC 2016 project that resulted in a new tool allowing developers to quickly generate a skeleton (scaffolding, template) for a new Moodle plugin. The tool proved to be a helpful helper with significant impact on the quality of Moodle plugins code. This follow-up project aims at further improvements of the skeleton generator. The primary goal is to implement a developer-friendly user interface / front-end editor allowing to configure the plugin's properties (recipe file) easily. The UI should guide the developer through the process of designing and defining the plugin properties and facilitate the whole process.

  • We require prospective students to make an attempt at fixing at least 1 issue in the Moodle tracker before their proposal can be considered. This MUST be completed before your application can be considered valid.
Skills required: PHP + JS
Difficulty level: Medium
Possible mentor: David Mudrák

Make badges criteria a subplugin

Moodle is an acronym for "Modular Object-Oriented Dynamic Learning Environment" so it allows for extending and tailoring learning environments using community sourced plugins.

Moodle let users create badges, which are a validated indicator of accomplishment, skill, quality or interest that can be earned. However, for now, the criteria for earning them are a closed list (https://docs.moodle.org/en/Using_badges#Criteria).

Skills required: PHP
Difficulty level: Medium
Possible mentor: Sara Arjona

See also