Preparing Mooshak for adolescence
Preparing Mooshak for adolescence
Mooshak is a web based system with automatic evaluation originally designed for managing ICPC contests. For over a decade it evolved to manage other kinds of contests and programming courses. Mooshak is now 12 years old and if it were a person it would soon be a teenager. This is a difficult age, of great transformations, of finding an identity, of abandoning old habits and preparing for new challenges. For those of us taking care of Mooshak it is a time of balance and reflection. What has been achieved so far? What do we want to accomplish in coming years? How should we prepared it to meet those challenges? Above all we want to preserve Mooshak's identity and strengthen the core values that made it relevant for the last decade: extendability, usability and scalability.
Mooshak is being actively used in several universities and in a couple of companies, such as Tata Consulting in India. Mooshak's extendability was crucial to use it in disparate settings, ranging from managing contests of several types (ICPC, IOI, IEEExtreme, etc) to different pedagogical activities involving automatic evaluation (lab classes, assignments, practical exams, staff selection, etc). Since it is is easy to configure and extend, Mooshak is also being used as a testbed for research in automatic evaluation. There are over 120 references to Mooshak in Google Scholar and the original paper on the system has 54 citations. Mooshak has a NoSQL data repository that enables developers to run their own scripts and adapt the systems to their needs, and this is a feature we want to keep. Also, preserving the current data formats will enable the use of all the content (e.g. programming problems) already available. On the other hand, most of the current code base is written in a obscure scripting language named Tcl that that discourages many programmers from contributing to this open source project.
This project started in 2001 so we have to admit that it runs on last century technology, such as CGIs and frames. This has a negative impact on Mooshak's usability since GUIs are sometimes slow and cumbersome. Administrative GUIs are the most affected as they are more complex to make the system highly configurable. But it hurts end users as well since the current tight coupling of the business and presentation layers difficult the creation of new GUIs, which affects also the extendability of the system. The current version of Mooshak has a single GUI for contestants and students. Ideally it would have a GUI for each contest type, and for each kind of pedagogical use. The amount of data transferred between between web servers and clients for producing HTML formatted listings is another issue with an impact usability, but also on scalability.
The current version of Mooshak has a simple but effective approach to scalability and it has been used managing large contests with hundreds of teams, including a worldwide contest deployed on the cloud with clusters of servers in the US, Europe and Asia. However, these large networks of Mooshak servers are difficult to configure and deploy, and do not make an efficient used of computational resources. A better scalability model is necessary for managing large contests and MOOCs with automatic evaluation.
To meet all these requirements Mooshak 2.0 needs a few radical changes. To achieve greater extendability it is being completely rewritten in Java, adopting industry standards and defining APIs for exposing automatic evaluation as a service. To improve its usability several types of GUIs are being implemented with the Google Web Toolkit (GWT) using SmartClient widgets. A lighter client-server communication model, based on propagation of events, is replacing listings generation. To improve scalability Mooshak will make better use of muti-core processors for running tests in parallel, and when deployed in a cluster of servers, or in a cloud, it will flexibly adjust the number of hosts it controls depending on its load. With all these changes a few growing pains are to be expected but if Mooshak succeeds in continuing to do its job for the coming 12 years then they will be worthwhile.
José Paulo Leal is an assistant professor at the department of Computer Science of the Faculty of Sciences of the University of Porto (FCUP) and associate researcher of the Center for Research in Advanced Computing Systems (CRACS). He has been involved with ICPC since 2001 and regularly participates in the organization of local, national (Portuguese) and regional ICPC contests. His main research interests include eLearning system implementation with a special emphasis on automatic evaluation, as well as on linked data and structured document processing.