It has been a hectic few months as a Google Summer of Code student for 2015 for Moodle, and it has come to a successful conclusion.
It was my greatest pleasure to work on Moodle throughout this period, to get to know and respect my awesome mentor, Dan Marsden, to learn about how Moodle and its community functions, and to eventually be able to help that community with a successfully completed GSoC project.
I set out to develop a skeleton plugin known as Moorsp for Moodle’s Plagiarism Framework, to incorporate the latest and greatest of Moodle’s framework goals within a testable plugin that wouldn’t need commercial logins to run automated tests. At the end of the project, all my code has been successfully integrated in to the Moorsp base code , and I have been awarded a pass by the Moodle community, both in terms of my contribution in code and community engagement. This makes me extremely happy.
I hope to continue my work on Moodle and have already started to help Dan with integrating some of the newer concepts in the Moodle framework in to some of the older plagiarism plugins such as the Urkund Plagiarism Plugin which is maintained by Dan himself. I believe that the most important part of me doing a GSoC project is gaining the ability to integrate and work closely with the Moodle community, an opportunity which I absolutely will not let go to waste.
Finally, I will leave you with the lovely Moodle GSoC 2015 Student Badge awarded to me by moodle.org. Thank you, Moodle, for this lovely token of appreciation. I shall always cherish it.
The 10th week of my GSoC project for Moodle passed with me writing more Behat tests for the Moorsp plugin, completing the Behat test writing phase of development.
During writing tests I found some interesting bugs that were present in the code of Moorsp, most notable being that in onlinetext submission in the assign plugin, the content to be evaluated for plagiarism was being returned with <div class=”no-overflow”> tags around them, causing the filehashes to be mismatched and those text submissions not to be evaluated. I managed to build a workaround for this by hashing the contents with the offending tags included for onlinetext submissions.
Behat tests are running smoothly, with the main Behat tests implemented here.
Here is a sample of the final Behat test, show_teacher_plagiarism_status.feature, in action:
The past week was spent continuing writing Behat tests for the Moorsp plugin. During writing the test for the feature where students are shown the plagiarism status on their submissions, I discovered that students were not being shown their plagiarism status even if the course manager had set a particular assignment, workshop or forum to show students this information. So I was able to fix this issue thanks to writing tests.
The past week saw me reconfiguring my complete Moodle instance to get Behat testing working again, and the beginning of writing Behat tests for the Moorsp Plagiarism Plugin. I began writing tests for the following functionality:
Enable/Disable Moorsp plugin – Completed
Enable/Disable Moorsp submissions for assign – Completed
Enable/Disable Moorsp submissions for workshop – Completed
Enable/Disable Moorsp submissions for forum – Completed
Show student plagiarism disclosure when submitting – Completed
Show plagiarism level (whether plagiarised or not) on grading screen
Show/hide plagiarism info from student
I will continue to write Behat and PHPUnit tests for the plugin next week.
During the past week, I’ve been busy working on testing the Moorsp plugin – through Unit Tests and Behat tests. I set up the PHPUnit environment for my Moodle instance and got it up and running. I also wrote most of the unit tests needed to test the class functions in the plugin, and had an interesting discussion on the Moodle forum whether form building functions should be tested on PHPUnit or Behat.
I also ran in to a slight problem running Behat tests after running PHPUnit, I posted a question on the forum and hope someone will be able to clarify that for me.
The current tests can be found here, and I will be adding to them continuously.
The first week of coding for GSoC 2015 proved to be a pretty busy one for me as I continued work on integrating Moorsp in to its supported modules. I completed the following tasks during the past week:
Added an install.xml file to the plugin which creates the initial database tables as Moorsp is being installed.
Completed the settings form which is displayed alongside the settings for each module that uses Moorsp – for example, if mod_assign uses Moorsp, editing settings on an assignment will give a form to edit Moorsp settings for that assignment.
Completed saving module-specific settings to the Moorsp config table.
Worked on my first implementation of a plagiarism event within Moorsp: the moorsp_event_files_done() function maps to the files_done() event in the plagiarism framework and enables files to be added to the database for later processing by Moorsp.
That’s it for this week – my fork of Moorsp can be here for further reference.