Note:

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

Moodle Wishlist

From MoodleDocs
Revision as of 15:35, 12 October 2017 by German Valero (talk | contribs) (Updated ===Fix Moodle's core unatractive look and feel (theme)===)

Warning! This page is highly speculative.

It is basically a dumping ground for random ideas from anyone who wants to write something here. It is not in any way an official Moodle roadmap or policy. Some of the good ideas here may be adopted, but most of the ideas are pretty crazy, and will never work. Basically, it is a place to brainstorm. Please add your own crazy ideas! They don't need to be consistent yet, just make sure your ideas are here to be boiled down later on.

Think Big!

Enhanced rubric reporting

How about a rubic grading report that has each criterion listed in rows and a column for each student. And... dare I ask... some nice graphics showing general results by criteria.

One type of plugin

All plugins/modules could be subclassed from one plugin class, making installation easier and simplifying the API a lot.

Or even just unify all activities and resources...

Look at new framework

Possibly base Moodle 3.0 on new existing frameworks? Ruby on Rails? Drupal? Symfony2? +2

Why not consider something like Phalcon PHP (http://phalconphp.com/en/)? (Blazing faster than Drupal or Symfony) -- Sebastian Berm

Keypoints: -- Gabriel Mazetto

  • MVC is a must (we waste too much time reimplementing "mvc" in every single page, and we lack best practices by doing it again and again and again)
  • Better ORM (I understand that in some time of the history, it was a good idea to create our own ORM, but today's lack of modern ORM means bad APIs, ancient unit tests, no "factories" which leads to expensive tests and bazilion fixtures)
  • Object Orientation done right (doesn't matter if it's php, ruby or whatever, but let's use all the useful features the language has to offer and lets make the code easy hackable, no more useless private/protected that makes impossible to overwrite pieces of code without having to duplicate everything).
  • Use more external libraries (let's just not reinvent the well again, there is a lot of good libraries out there that have strong community to maintain, and let's not waste time reimplementing our "perfect" version of them, that soon will be obsolete as no one is willing to maintain... and also let's make an effort to update regularly thous external libraries).

Drupal

There's an interesting discussion in the Language Teaching Course: How can Moodle be more of a social networking site? with some links to the Drupal in Education User Group. --Frank Ralf 14:27, 18 January 2009 (CST)

(I started a section about talk on my User talk page. --Frank Ralf 06:35, 21 January 2009 (CST))

There are some activities in the Drupal community regarding better interoperability and integration of Moodle and Drupal, see Drupal Quiz module - data exchange with other LMSes and Moodle integration with Drupal. --Frank Ralf 08:10, 10 June 2009 (UTC)

Symfony

Drupal successfully moved to Symfony. Its a good framework and may attract more community contributions.

Zend Framework

How about ZendFramework? It's open source, of course, runs on PHP, already has a pretty cool API with a well stocked service library, and the coders are working closely with Google, Adobe and Microsoft, among others, to produce some really high quality code. One feature I particularly like is that the main bulk of the PHP code is outside the public HTML directory. Since version 1.7 It also offers pretty good support for Flash Remoting (AMF0 and AMF3) making it especially easy to create integrated RIA frameworks. Check here to see what you get "out of the box". It looks like they've already done most of the hard work for you.

Node.js

Thinking "big", how about ditching PHP entirely and building on top of node.js? You could exploit its real-time-friendly design, and integrate the node.js-based etherpad-lite for synchronous document collaboration. And javascript has some of the same hacker-friendliness that PHP has.

Laravel

A modern PHP framework, that promotes best practices and modern development. Currently the most popular framework in the PHP world. Integrated with Composer, and pulling in many of the PHP communities most popular packages, including Symfony components. It also has a huge following and vast array of learning resources (http://laracasts.com).

OctoberCMS built on Laravel: https://octobercms.com/ Laravel: http://laravel.com / https://github.com/laravel/laravel

Moodlets

Individual-independent-activities backup/restore + metadata - Eloy

Support for alternate interfaces, mobile interfaces

Optimized for tablet computing: iPad, others Completely flash-based interface? Designed for offline clients?

Integrated category/taxonomy system

Putting together the "course categories", "tags" into a generic taxonomy system.

Save the 1970-2038 limitation

Those UNIX timestamps are pretty limited.

Translation framework

Drupal uses GNU gettext.po files for providing translations which is a very robust and well understood format.

Or XLIFF format (use in Zend Framework, Symfony, Intl extension) with Resource bundle manager

Use PHP 5.3 Native Power

Like : PDO, SPL, Namespace, Intl, Phar... (Zend Framework 2 use it)

Caching with Edge Side Includes (ESI) and a proxy (varnish, squid)

This should provide performance improvements while not having to limit the number of portlets on a page for optimisation. (Symfony2 provides that possibility out of the box, leaving the choice to activate it or not)

Make a replica Moodle

1 Moodle library, 100 Moodle platforms, just adding plugins and themes.

Please Sanitize the PHP code

Don't use : ini_set

Don't use : error_reporting Don't use : @

Don't use : eval

Don't use alias : exemple : die (it's exit)

Don't use depreciates functions : exemple : split (it's explode or preg_split)


A simple way to show all errors : (in php.ini with PHP 5.3) :

disable_functions = ini_set, error_reporting

error_reporting = E_ALL | E_STRICT

display_errors = On

(eval can be disable with Suhosin)


Use the right functions : exemple : it's not ini_set('include_path') it's set_include_path

Use Registry Pattern instead global

Use Docbook everywhere

Moodle is now PHP 5 : clear "var" in class, methods are public/private/protected function (not just function) and __construct for constructor method


Many thanks for your invaluable and expert opinion, we'll be working hard on all those, sincerely! --Eloy Lafuente (stronk7) 01:37, 19 February 2011 (UTC)

Built for Teacher-to-teacher Content Sharing

Drag-and-drop courses and course items from Moodle Hubs

Learn from LAMS and Dokeos

Integrated authoring system Drag-and-drop sequential scenario-building

Invent something crazily new

3-line ideas are welcome here:

  • participation reward systems
  • Add trashcan and /or undo function (DONE in Moodle 3.1)
  • Make editing of modules WYSIWYG, no more icons that change layout
  • Collaborative spreadsheet editing functionality - like Google Docs.
  • Being able to upload documents into the questionnaire activity

Even more crazy

  • To turn Moodle as a Community of Practice Management tool.
  • To make it general enough so that it becomes a terrific tool for many types of activities that manages communities, but still based on socio-constructivist principles.
  • Use fractal principles where a course categories is in fact a course. They both are containers/circles with parent-child links.
  • If enrolled in a child circle, than automatically enrolled in the upper parents category/containers.
  • The scope of a Glossary should be extendable to child containers/circles.
  • Tags : Any persons, any containers/circles, any calendar events, any objects should be taggable. So that anyone that is looking for resources can find it easily. Sorted by center of interests, geographical proximity and time line.

More Agile Development

There are many elements in agile development that could apply to Moodle and benefit the development process tremendously. With proper application of these elements, the Moodle's core code can be more solid and robust. Any programmer can make changes to the source with confidence and not be afraid of breaking any other features.

Test Driven Development

Require unit tests and acceptance tests be written for every change made to the core code. No code should be committed to the core without any test written. A code reviewer should run the tests and expect them to be failed before applying the code changes, and expect they all passed after applying the fix or code changes. S/he should also run the full test suite to make sure the changes did not break any existing features and functionalities.

Code Review

Implement a code review process like the Google Chromium project. Developers can only commit to the trunk with one or more reviewers' approval.

I wonder if the person who added these ideas has any idea how Moodle development actually works. I would guess not. The process is already very agile. All contributions are code-reviewed. There are not enough unit tests yet, but writing unit tests for legacy code is the hardest sort of tests to write (see the book xUnit test patterns) so frankly, it is not worth the effort, except in new code. I can get away with saying that because I have written 2500+ test cases for the latest bit of development I did.--Tim Hunt 15:23, 6 February 2011 (UTC)

Hi Tim, please don't take me wrong. I think the development team at Moodle is already very agile. It is actually one of the few agile projects that I have seen in the open source communities. The effort that you and many diligent individuals have made to coordinate and integrate contributions from all over the world is outstanding. I just made these comments based on the software development environment I came from, where no code change is allowed to commit without any test written and reviewer signs off. Our VCS is actually configured to reject any commit that do not have these two elements present. You are correct that I do not fully know the Moodle development process yet, but the fact that I see codes (particular contributed codes) being checked in without any tests, I just thought it would help bolster Moodle's core code by enforcing this rule in future commits. And implementing something like Google Chromium code review interface allows more eyes on the check-in codes, and hopefully alleviates some of the loads from you and the rest of the core team, who have been doing a wonderful work on peer-reviewing all these time. Again, please don't take this as a criticism but a brian-storming idea if you will. Peace. --Carson

Audio Feedback

  • The ability for lecturers to leave audio feedback on students work (student uploaded work could be: text,audio,video...) as opposed to written text feedback. Students can then listen to feedback rather than read text feedback on-line.
  • On the (moodle) activity/assignment submissions page, beside each students text input box, have a record, pause & stop button for teachers to record & save the audio feedback.
  • It would be for all audio feedback left by lecturers in a particular course for a particular student could be aggregated into one podcast, which could be listened to by students on their mobiles, on the move--Jago Brown
This does not require any major changes to Moodle. It just requires a few plugins, possibly just a 'record audio' repository plugin. And, perhaps, a new assignment type or question type. This is all perfectly possible in Moodle 2.x.--Tim Hunt 16:22, 10 September 2011 (WST)

Being able to use apostrophe in file and folder names

It would be good, to respect user choice (and language) to be able to use apostrophe in folder names and filenames. A tracker issue was opened for that : MDL-42724

Fix the Scroll of Death

Allow layout settings to be applied to course sections (as they are to courses). Allow multiple image types to be added to themes for activity / resource types. Allow images to be overridden (uploaded) for individual activities. Allow sections to be added and deleted on the in line within the course page as opposed to defining them in the course settings.

The idea would be that within each course section you could choose between grid / tiled layouts, columns, collapsable toggles, accordians etc. Because this would be based on sections not the entire course you could mix and match different layouts within a single course as required.

Another approach would be to build a system of shortcodes into the text editor. Commercial Wordpress themes have done this for some time for example "Avada Theme", "FlexForm", "U-Design" (all can be found on ThemeForest). If shortcodes were an option templates could be saved and re-used / loaded into a given course.

Split Assignments out From Content

Assignments grades and feedback should belong to the student not to the course. Clearing down of these records should be driven by a site (and possibly category) wide retention policy not by a teacher deciding (or not as the case may be) to reset the course.

Rebuild MOODLE modules as Drupal Components

I see Drupal has been already mentioned, but rather than rebuild MOODLE using Drupal, rebuild the functionality and modules as a series of standalone Drupal modules. MOODLE would not be an application in its self but a collection of modules, best practices for on-line delivery, and a Drupal distribution.

https://drupal.org/documentation/build/distributions

From a learning perspective this would open up new ways for people to access the pedagogy that underpins MOODLE. From a technology point of view development time would be sped up as many modules already exist in Drupal and the potential developer base would explode in terms of size.

Make Quiz Module Work as a Class Response System

The Quiz module is a best of breed example of a question, answer and feedback activity, but the implicit message in its design is content is pre-arranged for students working alone. Master teachers introduce questions as they see necessary in classes to stimulate thinking and discussion and debate to force examination and building of concepts. Having a "live quiz mode" wherein a teacher can add a question "on the fly" even verbally (for example: What will happen when I do this), then collect and dsiplay responses is one of the most powerful additions technology can make to a conventional classroom.

It does not make sense to cram this into the quiz module. It is a different type of activity, and someone has already made it: https://moodle.org/plugins/view.php?plugin=mod_realtimequiz --Tim Hunt (talk) 16:24, 5 January 2015 (AWST)

Make Moodle a Tin Can LRS

Making Moodle a Learning Record Store (LRS) based on the Tin Can API will enable learning experiences that happen outside of Moodle to be captured as part of a learner’s total education.

Make Everything a Module

Make moodle 'core' 3.0 have essentially 0 plugins, then make every activity, resource, theme, auth, enrollment, etc... a stand-alone plugin. Then we could provide a cool 'build' page where people check what they want and moodle downloads with those components. Eventually moodle.com could stop developing plugins they don't want to maintain anymore (like they did with all the <2.7 themes) and create new one that they do. New ones could be added much more quickly without bloating the core.

Consider some very very popular available additional plugins for inclusion into Moodle core

There is a list of the top 20 plugins downloaded from the Moodle plugins database, in the previous three months, at https://moodle.org/plugins/stats.php.

If MANY Moodle admins have been downloading the same plugins for several months, I think that means they have found/heard/read that this plugin is useful, and it would surely benefit a large number of other users if these plugins were already part of the Moodle core.

I reckon that adding one additional plugin into core would likely require a considerable amount of the scarce Moodle HQ programmers time, but the number of people who will benefit from this inclusion (I think) is sure to be very high (just look at the numbers in the plugins database stat page). Moodle HQ might choose which plugin is either:

  • mature enough
  • highly rated
  • small in size
  • well written
  • well documented
  • well maintained
  • a usability improvement
  • in agreement with the Moodle roadmap

to make a good choice of one plugin (or two?) every major release (every 6 months).German Valero (talk)

Make a Moodle recycle bin

Fix Moodle's core unatractive look and feel (theme)

There have been great improvements recently, but one third of the most downloaded plugins in the previous 3 months for Moodle are themes. If some of these additional themes were included into Moodle core, many users of many hosted sites -who currently cannot install additional plugins- would be extremely happy. German Valero (talk)

Fix Moodle's lack of a properly built-in grading tool

As described by https://moodle.org/mod/forum/discuss.php?d=186227#unread, ll other LMS systems the author has worked in let you see all the work that needs to be graded in the course. One additional plugin that works extremely well and has a great review is the AJAX Marking block . However, since Remote Learner no longer lets their customers install blocks on their own, many Moodle users can't install this block. It this plugin were included in Moodle core, Moodle core would have a teacher-friendly functionality that most other LMS currently have. German Valero (talk)

Different Front Page Look

Perhaps it's time to offer some other options for the front page (before and after logging on). One option that I can think of is offering the Grid layout which can be applied to courses should be available for use on the Front Page.

Apply Availability restrictions plugin to Course and Category Context

  • This would allow the visibility or access to courses or even categories based on the same restrictions placed on course topics and activities.
  • For example user 1 in the system may be able to see the courses contained in category 1, whereas user 2 can only see courses in category 2 and user 3 can see courses in both category 1 and 2.
  • This could be based on the contents of a particular user profile field or any other restriction type.

Update the Usability of the Moodle Calendar

The Moodle Calendar should be the glue that holds a school together (at least at the K-12 level) by delivering user specific as well as general institutional information to all stakeholders. It is hard to get teachers and administrators to use the calendar, however, because it doesn't offer the kind of user experience that people expect. It needs features like: 1) the ability to drag entries from one date to another, 2) the ability to edit an event's type, 2) the ability to easily clone events, 3) a week view, etc. I'm tired of trying to convince teachers that they should use the Moodle calendar rather than embed a Google calendar in their course page. Moodle becomes a much more attractive tool for students/parents/teachers/schools when they experience the results of the auto-creation of calendar events via assignment options (due date, available from). Improving calendar usability features would really encourage schools to see Moodle as THE tool for assignment and content delivery and collection, rather than A tool among many.

Introduce Simple Course Duplication Process

The current backup and restore process is prone to upload problems, and cloned course often has small operational snags.

In Brain Honey, a clone of a course is located in the courses folder, and teachers can very simply click on a course and "duplicate it" in their file space. SO SIMPLE!

Avoid the issue of having me duplicate multiple courses for different teachers in different buildings: they can duplicate the courses they want, and I don't have to get involved beyond posting the course in "courses folder."

Main things to improve

Simple, automated installation. (Make it as easy as Microsoft.)

Simple, automated upgrades

Integrate Moodle with a full ERP and Student Managenent System. Not necessarily very difficult.

Make the "lesson" activity easy to use.

A way of naming files of work that students have uploaded so that it's easy to find the files.

An intuitive way of combining Moodle courses into academic subjects (e.g. Literature 101 might comprise several Moodle courses.

Make the whole process simpler to use. (If someone needs training, it's too complicated.)