Skip to content
This repository

Git repository of MarkUs

Merge pull request #1411 from davidrd/issue-1398

Closes #1398: Pressing the Enter/Return key while a grade box is selected attempts to release marks.
latest commit e7e6436767
Benjamin Vialle benjaminvialle authored
Octocat-spinner-32 app Merge pull request #1411 from davidrd/issue-1398 April 13, 2014
Octocat-spinner-32 config Remove SSL requirement April 12, 2014
Octocat-spinner-32 data - Add .gitignore files to otherwise empty data/* dirs. October 16, 2010
Octocat-spinner-32 db Fix: schema.rb March 23, 2014
Octocat-spinner-32 doc Added ECN contributors January 02, 2014
Octocat-spinner-32 lib Using Marshal class methos "load" and "dump" to instead of Time class… February 23, 2014
Octocat-spinner-32 public Calendar_date_select: Using a gem instead of vendor/plugins April 12, 2014
Octocat-spinner-32 script Fix: ruby 1.8 not set by default anymore June 08, 2013
Octocat-spinner-32 test Merge pull request #1394 from tiagochst/issue-1388 April 12, 2014
Octocat-spinner-32 tmp Adding .gitignore to tmp directory. October 27, 2010
Octocat-spinner-32 vendor Calendar_date_select: Using a gem instead of vendor/plugins April 12, 2014
Octocat-spinner-32 .gitignore Add sass-rails (force tilt to resolve), use sass for main.css, update… September 30, 2013
Octocat-spinner-32 .reviewboardrc Add .reviewboardrc for post-review users. April 17, 2011
Octocat-spinner-32 .rvmrc add rvmrc file integration September 30, 2012
Octocat-spinner-32 Changelog Update: changelog September 01, 2013
Octocat-spinner-32 Gemfile Calendar_date_select: Using a gem instead of vendor/plugins April 12, 2014
Octocat-spinner-32 Gemfile.lock Rebasing branch into master April 12, 2014
Octocat-spinner-32 INSTALL Updated INSTALL September 01, 2013
Octocat-spinner-32 LICENSE Added MIT-LICENSE file to the project. June 10, 2011
Octocat-spinner-32 README.rst Added ECN contributors January 02, 2014
Octocat-spinner-32 Rakefile Remove old fix in Rakefile January 02, 2014
Octocat-spinner-32 Modifying routing-filter for locales for subdomains January 11, 2014
MarkUs logo

Welcome to MarkUs! Online Marking Made Easy

MarkUs (pronounced "mark us") is an open-source tool which recreates the ease and flexibility of grading assignments with pen on paper, within a web application. It also allows students and instructors to form groups, and collaborate on assignments. Its predecessor OLM (Online Marking) was originally written in Python on top of the TurboGears framework.

The MarkUs project is a re-implementation of the Online Marking system using Ruby on Rails. The goal of this project is to take what we learned from OLM and our forays into Web-CAT, and build a web-based marking tool that includes an early submission and testing system in support of test driven development.

1. Features

  • Graders can easily annotate students' code (overlapping annotations, graded source code remains untouched)
  • Subversion storage back-end
  • Instructors can form teams
  • Students can form groups on their own
  • Supports different course models:
    • Web-based file upload for first-year courses
    • Subversion client commits for upper year courses (disabled Web-upload)
    • Allows students to work on code of other groups from one assignment to the next
  • Web-based course administration
  • One MarkUs application per course (independent databases across courses)

Please see the INSTALL file for installation instructions.

2. Links

3. Sandbox

If you are interested in MarkUs and would like to try it out, there is a MarkUs sandbox installation available ( For information as to how to use the demo instance please see our "How to use the demo server" ( blog post. We hope you will enjoy it and please let us know how you liked it:

4. System Requirements

  • Rails 3.0/Ruby 1.8.7 or Ruby 1.9.3
  • Unicorn/Passenger
  • PostgreSQL/MySQL
  • Subversion

Note: As of now, the latest stable version is MarkUs 0.10.0. Here is our current deployment/configuration documentation. Please send us email if you have any trouble installing MarkUs---we'd be happy to help you out.

5. Who is Using MarkUs?

  • Department of Computer Science, University of Toronto, Canada
  • School of Computer Science, University of Waterloo, Canada
  • École Centrale de Nantes, France

6. Staying in Touch

Want the latest MarkUs news? It's available several ways:

  • General queries can be sent to
  • The development team has a blog at
  • There is a mailing list for MarkUs users. You can also find us on IRC in the #markus channel on FreeNode.
  • We use Review Board to manage code reviews. You can view our development activity using our event log.

7. Screencasts

Here are are some screencasts of MarkUs (reverse chronological order):

  • Student File Submission: September 2, 2009

    This screencast demonstrates how students can upload, replace and delete files using MarkUs' easy to use Web interface. The nice part is that files really end up in a Subversion repository (without students ever noticing).

  • Student Group Formation: August 17, 2009

    MarkUs supports various course models. One possibility of which is that an instructor can allow students to work in teams. If an Assignment is set up this way, students can go and start form groups on their own using MarkUs.

  • The Grader View: June 6, 2009

    The grader view is one of the core functionalities of MarkUs, which allows graders (usually TAs) to mark a student's/group's work for an assignment. He or she can annotate the submitted source code - which is syntax highlighted - and mark according to rubrics defined by the instructor.

8. Helping Out

Found a bug? Want a feature? Please email

9. Credits

MarkUs grew out of OLM, which was build using the TurboGears framework. We are grateful to everyone who worked on or funded both projects, and to the creators of Ruby on Rails for building such a great framework.

MarkUs' development has been supported by the University of Toronto, École Centrale de Nantes, et. al. Kudos to everyone who turned that support into working code:

Aaron Lee, Abdelhamid Benmouffok, Adam Goucher, Aimen Khan, Alexandre Lissy, Alex Krassikov, Alysha Kwok, Amanda Manarin, Andrew Louis, Andrey Kulakevich, Ante Zheng, Anthony Labaere, Anthony Le Jallé, Anton Braverman, Augustin Doury, Benjamin Thorent, Benjamin Vialle, Bertan Guven, Brian Bo, Brian Xu, Bryan Shen, Camille Guérin, Catherine Fawcett, Christian Jacques, Christine Yu, Claire Mayer, Clément Delafargue, Clément Schiano, Danesh Dadachanji, Daniel St. Jules, Daryn Lam, Derek Dowling, Diane Tam, Dina Sabie, Egor Philippov, Emerik Morency, Erik Traikov, Evan Browning, Farah Juma, Fernando Garces, François Neber, Gabriel Roy-Lortie, Gaëtan Girin, Geoffrey Flores, Ghislain Guiot, Hanson Wu, Horatiu Halmaghi, Ian Smith, Ibrahim Shahin, Jay Parekh, Jeffrey Ling, Jérôme Gazel, Jiahui Xu, Joel Burford, Joey Perry, Jordan Saleh, Joseph Mate, Joseph Maté, Julien Starozinski, Justin Foong, Karel Kahula, Kira McCoan, Kristian Lejao, Kurtis Schmidt, Loïc Labagnara, Luke Kysow, Marc Bodmer, Mélanie Gaudet, Michael Ing, Michael Lumbroso, Michael Margel, Mike Conley, Mike Gunderloy, Mike Stewart, Mike Wu, Mina Almasry, Misa Sakamoto, Neha Kumar, Nelle Varoquaux, Nick Lee, Nicolas Bouillon, Nicolas Carougeau, Noé Bedetti, Oloruntobi Ogunbiyi, Oussama Ben Amar, Razvan Vlaicu, Robert Burke, Samuel Gougeon, Sean Budning, Severin Gehwolf, Shion Kashimura, Simon Lavigne-Giroux, Tara Clark, Tianhai Hu, Valentin Roger, Veronica Wong, Victoria Mui, Victor Ivri, Vivien Suen, Yansong Zang

Supervisors: Karen Reid, Morgan Magnin

Something went wrong with that request. Please try again.