====== Grading ======
Faculty give access to TAs to grade assignments. In the past, all TAs were added to a group called "submit", so they could access assignment submissions. This has various problems:
* Faculty often want to leave the original data inside course submit directories untouched.
* The labtest version of web submit writes files as group "labtest". TAs are not allowed in group labtest. This means that tech needs to manually copy the submission data to another folder in the course hierarchy to make it accessible to TAs. These copies take many hours of tech time. In addition, this secondary copy of the submit data occupies additional backup and archive space.
* By placing TAs in the submit group, this gives them access to the submit directory for ALL courses. Submit may be used for courses cross listed for grads. Grads may obtain access to submit data for courses they may be taking.
* When TAs are sharing files in a submit folder, and one TA writes files as their own user ID, the files may be written as group "grad" and without write access to the other TAs.
* Undergrads are TAing now. Being in group submit would give undergrads access to submit data for other courses that they may be taking now, and in the future!
In order to solve these problems, a new solution, "gsync" (grading sync) has been developed. Gsync includes:
* An on-demand, limited access grading account and group created for each course
* The Faculty member who owns the course directory has complete control over who can access the grading account
* A simple, on-demand, and efficient method to sync ALL the data from the course directory to the grading directory
* All the files and directories in the grading directory will be owned by the user who created the course directory, and will be the group of the grading account.
* All the files in the grading area will be completely readable and writable by the course directory owner, and the grading account owner.
In order to use gsync, follow these easy steps:
===== Step 1: Enable Gsync for Your Course Directory =====
After creating your course directory in "/eecs/course", enable gsync using the //gsyncu// command (GSync Utility) like this:
% gsyncu create
**NOTE:** Only the owner of the course directory can use the //gsyncu// command.
For example, if your course is "9999":
% gsyncu 9999 create
User bob added to gsync user list.
Gsync is enabled.
Gsync account updates occur once per hour, but only for courses in the current term.
Gsync is enabled for course 9999. The course directory owner (bob) is added to the gsync access list for the course.
**NOTE:** The instructions above assume your course is in the current term. While you can initialize gsync for a course in a different term by specifying a full path to the course directory (eg. /eecs/dept/course/2018-19/F/9999 instead of just "9999" above), you will only be able to **use** gsync when your course is being taught in the current term.
===== Step 2: Add Course TAs to Gsync Access List =====
Add TAs to the Gsync access list for your course:
To add users: gsyncu add user1 ... userN
To remove users: gsyncu remove user1 ... userN
To list users in the access list for your course: gsyncu list
**NOTE:** The instructions above assume your course is in the current term. While you can add TAs to the gsync access list for your course in a different term by specifying a full path to the course directory (eg. /eecs/dept/course/2018-19/F/9999 instead of just "9999" above), those TAs will only be able to **use** gsync when your course is being taught in the current term.
===== (optional) Step 3: Add Directories to Sync =====
By default, gsync will sync the "submit" directory in your course directory to the grading area. If you wish to add additional directories to sync, use these commands:
To add directories: gsyncu diradd dir1 ... dir2
To remove directories: gsyncu dirdel dir1 ... dirN
To list directories that will be gsynced for your course: gsyncu list
**NOTE:** is relative to the course directory. For example, to enable the directory /eecs/course/9999/quizes/quiz1 to be synced, use: gsyncu 9999 diradd quizes/quiz1
===== Step 4: Wait for Your Gsync Account to be Initialized =====
Gsync will create an account and group for your course (if one has not been created already). The account will be named ta, while the group will be tag. For example, for course 9999, the account "ta9999" and group "ta9999g" would be created. If additional letters are added to your course directory name (eg. 9999Z), those letters will also be added to the gsync account and group created. Note however that any capital letters will be converted to lowercase.
After about an hour, gsync will have created your gsync account and group, and will have updated the gsync access list.
**NOTE:** If your course is not being taught in the current term (eg. your course is taught in 2019-20 fall, and it is presently 2018-19 summer), then your gsync account updates will only occur when your course is being taught in the present term.
===== Step 5: Login to the Grading Server =====
Login to the grading server (grade1.eecs.yorku.ca) with your regular EECS account. For example:
indigo% ssh grade1
** NOTE: The grading server is intended to be used for grading assignments. Any other use is forbidden. **
===== Step 6: Access The Course Grading Account =====
In order to access the course grading account, use the "bu" (become user) command. For example, if your course directory is "9999", then the account name is "ta9999" and can be accessed like this:
grade1% bu -d ta9999
Notes:
* The grading account is only accessible from the grading server, grade1.
* You can only access the grading account for a course that is being offered in the current term. For example, if it is 2018-19 summer, and you have created a gsync account for teaching course 9999 in 2019-20 fall, you will not be able to access your gsync account until 2019-20 fall. When it becomes 2019-20 winter, you will lose access to the gsync account for the course automatically.
* The grading account is only accessible with the "bu" command.
* Your access list determines who can access the account. No passwords are required.
* If your course directory has capital letters (eg. 9999E), then all letters in the account name are converted to lowercase (eg. ta9999e).
===== Step 7: Sync the Course Data =====
After you've accessed the grading account, run the "gsync" command to sync the data from your course directory to the grading directory. gsync knows which course grading account you're logged into, so you don't need to tell it which course to sync:
grade1% gsync
Here's a sample run:
Syncing ...
Number of files: 11 (reg: 5, dir: 6)
Number of created files: 11 (reg: 5, dir: 6)
Number of deleted files: 0
Number of regular files transferred: 5
Total file size: 76,229 bytes
Total transferred file size: 76,229 bytes
Literal data: 76,229 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 76,809
Total bytes received: 154
sent 76,809 bytes received 154 bytes 153,926.00 bytes/sec
total size is 76,229 speedup is 0.99
Cleaning clone tree ...
Fixing file ownership/group ...
Fixing file and directory permissions ...
gsync complete.
The first time you run gsync on the grade1 server, it copies down the data from your course submit directory, and any other directories that you've configured gsync to clone. The synced data will be in /eecs/grading//clone. This directory is READ ONLY.
The /eecs/grading hierarchy works exactly like /eecs/course. /eecs/grading points at the grading hierarchy for the current session and term while /eecs/dept/grading points to the grading hierarchy for the current term.
Subsequent times that you run gsync, it will will copy down changes. If a file is deleted on the source, it will be deleted from the destination. If a file is updated on the source, it will be updated on the destination.
Each grading account has 3 directories created:
* clone - a **READ ONLY** copy of your submit directory and other directories that you've asked gsync to clone. All the files will be readable by everyone who has access to your grading account, no matter what the permissions are in the course directory.
* home - the home directory for the course gsync account (You probably won't be using this directory much.)
* work - This directory is created for you and your TAs to do grading. You can write to this directory, but you cannot rename it.
Neither you nor the TAs can create additional top-level directories in your grading directory. You have complete control over the "work" directory.
To begin grading, you or your TAs may want to copy the contents of the read only "clone" directory to the "work" directory. You would do that like this:
grade1% cp -r /eecs/grading/9999/clone/* /eecs/grading/9999/work
When you or your TAs run the gsync command, gsync will only update the "clone" directory. It will never touch files in the "work" directory to ensure that it doesn't overwrite your work! Please be **very** careful about copying "clone" to "work" after you've started grading. You need to be sure you don't overwrite your own files in "work".
===== (optional) Step 8: Add a Password to Your Gsync =====
If necessary, you can add a password to your course grading account to enable access to the files from your desktop via Secure FTP (sftp) client. Adding a password to your grading account is entirely optional.
Setup a password for course "9999" grading account like this:
% gsyncu 9999 password
*** WARNING ***
Enabling a password on a Gsync account is possible, but discouraged.
Please be vigilant about who has the Gsync password for your course.
Use a blank password to disable a previously enabled Gsync password.
Enter NEW password:
Verify password:
A Gsync password has been set. It will be enabled within an hour.
In order to access the account via sftp, you must sftp to grade1.eecs.yorku.ca, and login as the course account (taXXXX) and the password provided. You will only be able to access taXXXX accounts from home using grade1.eecs.york.ca.
===== Final Notes =====
A few final notes on gsync:
* The grading area is **NOT BACKED UP**. It is a duplicate of the data in the course directory. As a result, tech cannot restore deleted files from the grading area.
* The grading area will be cleared once per term (on a date to be set). Once the data is cleared, it cannot be restored.
* Remember that the grading account is only accessible on the grading server, grade1.
* gsync only copies data from the course directory to the grading area. If you want to copy data from grading area back to your course directory, you must do this manually. For example, to copy the "feedback" directory from the grading directory for course EECS9999 back to the course directory:
grade1% cd /eecs/grading/9999/work; tar cf - feedback | ( ssh bob@indigo "cd /eecs/course/9999; tar xvf -" )
* NOTE: Only the course directory owner will be able to copy files back to the course directory.
* There are other options including SCPing files, SFTP, creating an archive (zip, bzip, bzip2, etc) and transferring that.
* You can only access the grading account for a course that is being offered **in the current term**. For example, if it is 2018-19 summer, and you have created a gsync account for teaching course 9999 in 2019-20 fall, you will not be able to access your gsync account until 2019-20 fall. In addition, when it becomes 2019-20 winter, you will **lose access** to the gsync account for the course automatically. Please make sure that you have transferred any required data from the gsync account to your course directory before the first day of the next term.
* Ugrad TAs will need to have an alternate account setup with access to grade1 before they can access the grading account. Please consult with tech.
* Any use of the grading server, grade1 for any other task than grading is strictly forbidden.
* Group submit is now reserved for faculty use **only**.
* If you have any questions or feedback about gsync, please inform tech.