Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate feedback distribution within nbgrader #1120

Merged
merged 78 commits into from
Jun 5, 2019

Conversation

danielmaitre
Copy link
Contributor

@danielmaitre danielmaitre commented Jun 1, 2019

This is the result of the work of @dsblank, @perllaghu, @billywardrop29 and @danielmaitre at the Edinburgh hackathon.

It includes UI integration of the feedback step, release of the feedback to students in the exchange, and fetching of this feedback by the students.

Some UI work needs to be finished but starting a PR will help check the coverage of the existing tests.

Fixes #795
Replaces #1096

dsblank and others added 30 commits May 29, 2019 17:07
can release to a single student
better handling in releaseFeedback.py
Billy's Javascript Assignment link
Ian's and Doug's documentation updates
@danielmaitre
Copy link
Contributor Author

There are problems with the automatic CI tests, on travis only with python nighty and on appveyor only for python 3.5/6 (not sure which one it is, the executable says 3.5, the environment 3.6), anyone has any idea how to fix this?

@perllaghu
Copy link
Contributor

@BertR - you did some stuff with the Travis at the hackathon, got time to have a look?

@dsblank
Copy link
Member

dsblank commented Jun 4, 2019

Both errors on AppVeyor and Travis look like issues in nbconvert that has a missing language_info key in something. I don't think that is related to anything we (or nbgrader) has changed.

@jhamrick
Copy link
Member

jhamrick commented Jun 4, 2019

Both errors on AppVeyor and Travis look like issues in nbconvert that has a missing language_info key in something. I don't think that is related to anything we (or nbgrader) has changed.

Yes, that is my suspicion as well, I have restarted the tests to see.

Copy link
Member

@jhamrick jhamrick left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only a few very minor changes and then I am happy to merge this!

Also, as a side note, I had a bit of confusion with the UI, which is that I collected a new assignment and then tried to generate feedback (without autograding), and it wouldn't regenerate the feedback. At first I thought this was because you might need to pass the force option but really I think the answer was that I needed to autograde first. I wonder if there is a way we can make this clearer in the UI---not something we should do in this PR but just wondering out loud so I don't forget 🙂

.gitignore Outdated
@@ -112,3 +112,6 @@ package-lock.json
.goutputstream*


fakecoursedir/
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these changes needed for this PR? They don't seem to actually appear in the other changes.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed.

@@ -315,14 +389,51 @@ define([

Assignment.prototype.make_row = function () {
var row = $('<div/>').addClass('col-md-12');
row.append(this.make_link());
var link = this.make_link();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var link = this.make_link();
var link = this.make_link();

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@dsblank
Copy link
Member

dsblank commented Jun 5, 2019

@jhamrick @danielmaitre Final fixes can be found in danielmaitre#11

Formatting; gitignore; added @check_notebook_dir
@danielmaitre
Copy link
Contributor Author

All checks have passed!

@perllaghu
Copy link
Contributor

WOO-HOO!!!

Dang - that was some good work guys...

@dsblank
Copy link
Member

dsblank commented Jun 5, 2019

I very much enjoyed working with you all! Great project to dive into most of the topics of nbgrader, and a great team! Let's do it again :)

@jhamrick
Copy link
Member

jhamrick commented Jun 5, 2019

Fabulous, thanks so much to all of you for working on this!

@jhamrick jhamrick changed the title WIP: Integrate feedback distribution within nbgrader Integrate feedback distribution within nbgrader Jun 5, 2019
@jhamrick jhamrick merged commit 2539be8 into jupyter:master Jun 5, 2019
@dsblank
Copy link
Member

dsblank commented Jun 5, 2019

Party!

Thanks for being our mentor through this @jhamrick ! I know how much patience it takes. Much appreciated!

@jhamrick
Copy link
Member

jhamrick commented Jun 5, 2019

I am more than happy to---it's really exciting seeing other want to contribute! 😄

@danielmaitre
Copy link
Contributor Author

Thank you for your help on this project!
Github says I can safely delete the branch, should I?

@jhamrick
Copy link
Member

jhamrick commented Jun 6, 2019

Fine by me.

@danielmaitre danielmaitre deleted the edinburgh branch June 7, 2019 14:39
@rkdarst
Copy link
Contributor

rkdarst commented Aug 18, 2019

I was looking at this, wanting to take it into our use. It would be very nice to have and save us a lot of work! But first I had to figure out how it works. I was hoping that someone could confirm my observations below:

First, it seems to list the exchange inbound path (submitted assignments) to get notebook hashes, which are used to copy assignments back. But the security of the inbound path is by not allowing students to list it. Is this the case, do students have to list the inbound directory in order to fetch feedback?

Second, it also ensures that {course_directory}/feedback/ is read/execute by students and fails with an error if not. This would mean that students can list that entire directory and see all other students feedbacks. Is this the expected situation? At first I thought this could make the feedback dir read but not execute, so that students could get their feedback if they knew their exact filename (based on the hash), but not list all other assignments.

My thought, if the above is the case, chaneg it to do this: find the the hashes of the submitted notebooks from ~/.local/share/jupyter/nbgrader_cache/{course_id}/, which only the submitter would have for their own notebooks. Then, use that to get the feedback from the feedback dir, which they can access to copy known filenames from but not list.

@jhamrick
Copy link
Member

I am not sure the answers to your questions off the top of my head, but can help try to answer them later this weekend 😄 in the meantime perhaps @danielmaitre @dsblank @perllaghu would know?

@Sefriol
Copy link
Contributor

Sefriol commented Aug 21, 2019

I mimicked how Feedback Exchanger does determine submission and it's feedback in our environment.

By testing this with couple of submissions, you can indeed generate the same feedback md5-hash from ~/.local/share/jupyter/nbgrader_cache/{course_id}/ as you do from inbound directory which would guide the student to right feedback form. With this method student could then copy the feedback without giving student ls rights to the inbound directory. Much preferred way of doing things.

Also, currently fetch assignment is meant for students only (according to documentation), but it accepts student ID or no ID specified as a parameter. Other student should not be allowed to look for other students submissions / feedbacks straight on, therefore this configuration should not exist in the first place. For instructors, it's not really needed anyway. (and if we use ~/.local/share/jupyter/nbgrader_cache/{course_id}/ as a hash source, student_id would not be needed in the end)

All in all, I came into same observations as Richard and how the things currently seem to be, I think change in this is a requirement before this can go live.

Side note: FetchFeedbackApp has fetch assignment examples. Probably it shouldn't ;)

rkdarst added a commit to AaltoSciComp/nbgrader that referenced this pull request Aug 23, 2019
rkdarst added a commit to AaltoSciComp/nbgrader that referenced this pull request Aug 23, 2019
- This should not have to be listable, then any student can get any
  other student's data.
- jupyter#1120 (comment)
@jhamrick
Copy link
Member

Let's continue discussion in #1202

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add feedback generation to the formgrader
6 participants