MarkUs System Administrator Documentation

MarkUs is a ruby-on-rails based online assignment submission system that allows markers to annotate submitted documents, and provide feedback to students, online. The MarkUs software is currently maintained by the Computer Science department at the University of Toronto and is being used by some courses here at the University of Waterloo. Our implementation of the software has a hook in place to auto-execute marking scripts that live on the course account against a submission, effectively providing something like auto-testing feedback.

System Specifications


MarkUs runs over several machines:

  • markus002.student.cs
  • postgres.student.cs


  • markus002.student.cs runs the apache and server that implements
  • The account markus on markus002.student.cs runs the ruby-on-rails instances that are basically the individual MarkUs course instances.
  • postgres.student.cs hosts the PostGreSql server that contains MarkUs databases for courses.
  • Requires the following debian packages to run: I'm not sure, but do you think we should include version numbers?
    • ruby
    • ruby-dev
    • rdoc
    • libopenssl-ruby
    • postgresql
    • libpq-dev
    • subversion
    • libsvn-ruby
    • apache2
    • libapache2-svn

Authentication and Authorization Information

Some systems demand authentication before they can be managed. List the information required to gain access to the system. Please do not put passwords on this page. This page will be public and accessible by Google.


  • Administrator: Omar Nafees (omnafees)
  • Point of contact (expert): Omar Nafees (omnafees)
  • Major clients:
    • CS 135
      • Uses MarkUs for all assignments
      • Are there any important details about this client? Who is the POC? Is there anything unique about what they might ask for or how they use MarkUs?
    • CS 136
      • Uses MarkUS for assignment questions that do not require that code be compiled
      • Are there any important details about this client? Who is the POC? Is there anything unique about what they might ask for or how they use MarkUs?


For example:

  • Definitum
    • In a definition the word being defined is the definitum
    • Is a fancy word that nobody ever really uses
  • MarkUs
    • A marking system in which students can submit their code and faculty can provide feedback and assign grades
    • Originates from the University of Toronto

Guides to the Completion of Scheduled Tasks

Halfway through every term

Set up new instances of MarkUs for each course using it in the upcoming term

This process typically starts a couple months before the relevant term to prevent unneeded rush.

  1. Contact ISC's to acquire a list of courses that will be using MarkUs in the upcoming term. Typically, this list does not vary from year to year, meaning that you can probably use the list from the year before (not the term before) to help prevent some courses from being forgotten. The list of courses using Markus in prvious terms is included for your convenience: It might be useful to include the specific year of these terms in the table. I just pulled this list from ST#87461. Please also review this list. I made a few assumptions based on what I read in the first summary of the ST item.
    Fall Winter Spring
    CS 115 CS 115 CS 115
    CS 116 CS 116 CS 116
    CS 135 CS 135
    CS 136 CS 136 CS 136
    CS 230 CS 230
    CS 234 CS 234
    CS 240 CS 240 CS 240
    CS 246 CS 246 CS 246
  2. Process feedback from ISC's about MarkUs What does this entail?
  3. Upgrade MarkUs Is there a place where we can check for updates to see if they are available? How do we upgrade if they are available?
  4. Clean out last year's databases and SVN repositories, then restart the relevant instances. Is there a time that would be too early to do this? I guess it would be a bad idea to clear out stuff that is still being used, eh? It would be good to state this concern explicitly along with when would be a good time.
  5. Create directory in markus@markus002:~/ and update configuration accordingly It might not be clear what it means to update the configuration accordingly. More details here would be helpful
  6. Create database on postgres.student.cs %Again, this could use some more specific detail.
  7. Add proxy info to /etc/apache/sites-available/markus Will people acting on your behalf know how to do this?
  8. Check if markus@markus002 can ssh into course@linux.student.cs What will this accomplish? What do they do if they cannot SSH into it?
  9. Check that course@linux.student.cs can ssh into markus@markus002 What will this accomplish? What do they do if they cannot SSH into it?
  10. Start the server of the new MarkUs instance.

Guides to the Completion of Common Requests

Implement an instance of MarkUs for a brand new course

I'm just guessing here, but I suspect that this (see section heading) is something that needs to be done sometimes. There's probably a lot that we can scavenge from the "Set up new instances of MarkUs for each course using it in the upcoming term" section to fill this up.

Also, can you think of any other common requests that you've seen for this system?

Common Failures/Bugs & Troubleshooting

Can you think of any common problems that have arisen while maintaining this system?

Current Discussions Related to the System

Some systems have important long-term changes that are being discussed. If needed, a summary of each discussion may be included here.

See Also

Related ST Items

Related Twiki Pages

Related EDocs

Related External Links

Edit | Attach | Watch | Print version | History: r28 < r27 < r26 < r25 < r24 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r28 - 2016-12-13 - YiLee
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2023 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback