End of Google SoC 2007
It has been a great summer, but Summer of Code is over. Thanks to all that help me all these long days. Juanan Pereira: my Project Director, Nicolas Conault: my mentor, Martin Dougiamas: Moodle Lead Developer, all mentors and developers of Moodle (Eloy Lafuente, Petr Škoda, Tim Hunt, Penny Leach, David Horat…) and all people I forgot. Really, thank you so much.
Now, I have to write a report for what has been done through out the last few months, as a part of my thesis. Not so funny as coding, but I must do it.
See you next year ![]()
Install DOMjudge with Moodle
Most code is already implemented, and now we need to build and installer to allow Epaile spread all over the world
Well, at this point, we have a bit problem. DOMjudge needs root privileges to be installed but Moodle doesn’t. How to avoid this problem? We have two ways:
- First, drop security levels (no chroot, no setuid…) and allow install DOMjudge to anybody. This isn’t a real solution for me. Students will become hackers so quick!
- Second, build a package with DOMjudge, easy to install and downloadable from the web. DOMjudge could be installed in the same server as Moodle or other server (much better security) and comunicate them through SOAP. Root privileges are needed only once, at installation.
I think second solution is the right way, root privileges MUST be a software requirement.
SOAP call / response
Previously, I talk about the idea of use xmlrpc to comunicate Moodle and DOMjudge. Weel, finally we decided to use SOAP to do this. Moodle includes a library to handle SOAP connections and calls / responses, so no need to use other tecnologies.
I have already implemented the web service on DOMjudge side, and the code necesary to make the calls and handle responses on Moodle side. Theese are call / response parameters:
Call:
- source: submitted source code.
- input: test input data.
- output: expected program output.
- lang: programming language.
- maxbytes: source file maximum size.
- time: program maximum runtime.
- mem: program maximum memory usage.
- assignment: actual assignment id.
- user: user id.
Two last parameters are used to create temporaly folders to avoid possible file overwriting.
Response:
- status: correct, wrong answer, runtime error…
- compile.out: possible compile warnings / errors.
- compile.time: compile time.
- program.err: possible runtime errors.
- program.out: program output.
- program.time: program runtime.
I hope to finish last code lines this weekend, and publish the first public beta on Monday.
Stay tuned!
Code ported to Moodle 1.9
I’ve finished code porting from Moodle 1.7.2+ to Moodle 1.9 (still in development) and the integration of Epaile like Assignment plugin. The most difficult step in this migration was the use of HTML_QuickForm. Well, this library is beautifull to build “simple” forms, but not if you want to make something more complex (at least for me…)
Now I’m going to start with the integration of Moodle and DOMJudge, through xmlrpc. Good luck!
Midterm status report
We are near the equator of Google Summer of Code. I have write the goals I achieved until today, and a planning for all the things I have to do. Here they are:
Reached goals:
- Use cases model. A very important initial point for every project.
- Teacher use cases: manage assignments and tests, grade submissions manually, consult grades.
- Student use cases: upload solutions, consult grades.
- System: grade submissions automatically.
- Database diagram and the XML schema.
- Epaile table: stores assigments information (name, description, available / due dates, max filesize…).
- Submissions table: stores students, uploaded susbmissions (submission date, files number, compile / execution errors, grade…).
- Tests table: all tests for an assignment.
- Programming languages table: all programming languages available.
- User interface for Epaile. At this moment, you can add, update and delete instances of Epaile, define tests, submit problems solutions and grade it manually.
- Code syntax highlighter: http://code.google.com/p/syntaxhighlighter/
- Installation of DOMJudge and first tests over it.
- First installer only with the user interface and database, but totally functional.
TODO:
- Finalize configure and runing DOMJudge (07/09 - 07/15).
- Configuration page for Epaile: max runtime, max memory usage, max child processes… (07/09 - 07/15)
- Develop and interface to comunicate Epaile and DOMJudge core using XML-RPC. For this first version of Epaile, the DOMJudge core will run in the same Moodle server, but XMP-RPC protocol will bring us the possibility of installing it in another server (07/16 - 07/29).
- Build an installer, including Epaile and DOMJudge core (07/23 - 07/31).
- Try the software. Bug fixing. (08/01 - 08/20).
- Documentation (08/21 - 08/31)
- Create an icon for epaile… need help!
Week #4 status report
At least I finalize my exams. I have passed some days in London and now I’m fully free to work in Epaile.
Theese days I’ve been working to finalize the GUI of Epaile, and I’ve achieved a fisrt basic version to manage assignments, manage submissions and grade it manually. Some basic features that have been implemented:
- Opening date
- Due date
- An assigment can be graded immediately or in a given date (cron)
- Programming language choice (Java, C, C++, Perl)
- Limit size on submissions
- Prevent late submissions (yes/no)
- Program tests definition
- Submissions manual grade
With theese options Epaile is up to work, but we need to improve it with several and better features:
- Allow the option of specifying the names of the files required for the assignment
- Optional limit on memory size and execution time
- Optional early bonuses: extra credit for early completion
- Each submission can be compiled before runing tests, allowing students to be sure their code compile on server.
At this point, I’m going to start studying the integration between DOMJudge and Moodle. First step is unify two databases into Moodle, and write some interface for DOMJugde… Any ideas?
Week #2 status report
I’m still studying for my final exams, so no much time to develop. This week I’ve continued coding epaile’s user interface, and I`ve got a basic system to add, update and delete assignments. Some features:
- Basic features from Assignment module: name, description, available - due dates, file maximum size… view
- Posibility to define program tests. view
- List of course assignments. view
TODO next week:
- Study for my last exam.
- List of students submissions. Display basic information.
- Grade submissions manually. This option can be useful if automated grade don’t work correctly.
Offtopic: tomorrow I’m going to Madrid to see Pearl Jam in concert. I’m really exited!
Installing DOMJudge
Yesterday I tried to install DOMJudge. And no, I didn’t get it. I’m a mac user and in spite of is based on FreeBSD, it is not pure Unix system. Theese are some problems I had:
- The first step to install DOMJudge is configure it. Well, I type make config in my terminal and here comes my first problem:
cp: illegal option -- a
It seems that my iMac dosen’t support -a option. No problem, let’s see cp man page. Well, I can change -a option with -PpR, so I replace it in configuration file and it works. Great. - Second problem: now is time to make. I got some error outputs again. Let’s see.
beep.c:28:22: error: linux/kd.h: No such file or directory
Of course, I don’t use Linux! I Comment some lines in beep.c file, and seems it works now… - More problems: wget. Apple decided not include it in recent versions of Mac OS X. They come with curl instead…
At this point, I decided to install Linux on my mac and run Moodle and DOMJudge on it. This night I will start with it… best of luck!
Epaile specs
I have started writing some Epaile specifications. Nicolas (my mentor) and me prefer to get us much feedback as possible from Moodle community, so I have posted first specifications in Moodle developer forum.
You can contribute!
At this time, DOMJudge is the best choice for program testing. Do you know another one?
Google Summer of Code’07
Epaile has been accepted to take part in the Summer of Code. I’m really excited about this. Lot of people around the world is interested in this project: in China, India, Germany, Spain…
Thanks to Moodle community, Google and Juanan Pereira for this chance. Now is time to work…