Skip to content
This repository has been archived by the owner on Mar 12, 2020. It is now read-only.

Add option to copy the open issues from the starter code repo to all student repos #546

Closed
rmacklin opened this issue Apr 4, 2016 · 7 comments

Comments

@rmacklin
Copy link
Contributor

rmacklin commented Apr 4, 2016

I'd like to add a feature that gives assignment creators the option to copy the open issues from the starter code repository to each student repository created for that assignment. My use case: the assignment is a long-term project and these issues are smaller "tasks" for the students to complete along the way.

I've got a basic implementation working locally with these changes: b6fc84a~...7475523. I'd be happy to submit a pull request, but I haven't finished the tests yet. I added a few inline comments to 7475523 with some questions.

The other thing I have not dealt with is error handling for the background job. I'd like to hear what you guys think we should do if errors occur during the issue copying. Automatically retrying the issue creation (from the point at which it failed) would be nice, but it could introduce undesired complexity, and there's still the possibility that errors occur again during the retry attempts. So a simpler approach would be to just alert the user of the error (which they could then manually recover from). Thoughts?

@johndbritton
Copy link
Contributor

I'd like to add a feature that gives assignment creators the option to copy the open issues from the starter code repository to each student repository created for that assignment.

Thanks for the suggestion. We've had some similar ideas, but haven't come up with a solution that we love yet:

  1. Copy over all starter repo issues on creation
  2. Provide the ability to create an issue on all student repositories through Classroom on demand
  3. Provide a way to automatically create issues on a set timeline

A couple of key considerations:

  • Every issue is created by a person, who should the issues be created by?
    • If the issue is created by the teacher, they will get notifications for every comment on every student issue
    • If the issue is created by a bot account, teachers will have to subscribe to issues proactively
  • Issue numbers are based on the order in which issues are created
    • If a student creates an issue before the issues are imported, different students will have different issue numbers
    • Is there value / need to have the same issue numbers across all the repositories

My use case: the assignment is a long-term project and these issues are smaller "tasks" for the students to complete along the way.

I think this is a common use case. I'd love to hear from other folks about how they would use a feature like this. Our biggest challenge with Classroom is coming up with generalized solutions so that teachers have flexibility in how they use the tool.

This seems tangentially related to #502, in that you might want to share new code with the students as they work through the assignments.

I've got a basic implementation working locally with these changes: b6fc84a~...7475523. I'd be happy to submit a pull request, but I haven't finished the tests yet. I added a few inline comments to 7475523 with some questions.

Great, thanks for getting started. I'd opening a pull request sooner rather than later, even if it's still work in progress. That way you can get feedback on the approach your taking. It's helpful to include screenshots or gifs of what you're changing to give people an idea of the experience.

The other thing I have not dealt with is error handling for the background job. I'd like to hear what you guys think we should do if errors occur during the issue copying.

The first hurdle is figuring out the general use solution for this followed by getting a quality technical implementation. Let's figure out what we want to implement first and then we can help with this if it's still an issue.

cc/ @irishbryan as we've talked a bit about the unit of learning on GitHub. This feature request is essentially looking for a way to write a script for the student to work through on GitHub.

@rmacklin
Copy link
Contributor Author

rmacklin commented Apr 5, 2016

Thanks for the detailed reply @johndbritton!

  1. Copy over all starter repo issues on creation
  2. Provide the ability to create an issue on all student repositories through Classroom on demand
  3. Provide a way to automatically create issues on a set timeline

(1) is the feature I'm requesting. For on-demand issue creation, I can do that right now just using Octokit, so I don't currently experience too much pain that (2) would solve. (3) is not personally something I need because I intentionally want students to be able to work at their own pace, so I just create all the issues from the get-go. Still, this (and (2)) could be useful for others, but I don't think it means implementing (1) first would be a bad idea.

Every issue is created by a person, who should the issues be created by?

  • If the issue is created by the teacher, they will get notifications for every comment on every student issue
  • If the issue is created by a bot account, teachers will have to subscribe to issues proactively

My suggestion is to go with the simplest approach: create them from the assignment.creator. I personally log into GitHub Classroom using a different account than my personal one specifically so I have full control over the notifications (both in GitHub and in my email filter settings) independent of my personal account notifications. The students are required to set the assignee field when they open a PR which obviates the need for me to proactively subscribe to things. I think it's totally reasonable for Classroom to take this simple approach.

Is there value / need to have the same issue numbers across all the repositories

For my use case, only the relative order of issues matters (which can and should be preserved). The issue numbers do not have to match across student repos because we refer to the issues exclusively by their titles when discussing them.

I think this is a common use case. I'd love to hear from other folks about how they would use a feature like this. Our biggest challenge with Classroom is coming up with generalized solutions so that teachers have flexibility in how they use the tool.

Makes sense. Still, I don't think the feature I'm suggesting is implicitly narrow/ungeneralized or that it limits flexibility in how Classroom could be used. I could be missing something, though.

This seems tangentially related to #502, in that you might want to share new code with the students as they work through the assignments.

I agree that the two may coincide, but I definitely believe they are two independent features: you can have either one without the other.

Great, thanks for getting started. I'd opening a pull request sooner rather than later, even if it's still work in progress. That way you can get feedback on the approach your taking. It's helpful to include screenshots or gifs of what you're changing to give people an idea of the experience.

OK, I opened a PR here: #555.

This feature request is essentially looking for a way to write a script for the student to work through on GitHub.

I don't completely understand that statement. Can you clarify?

@johndbritton
Copy link
Contributor

write a script for the student to work through on GitHub.

What I mean is that the starter code repository would lay out the whole student journey in terms of issues for the student to resolve on the project. I meant script like a play not like a program. 😄

@johndbritton
Copy link
Contributor

Still, this (and (2)) could be useful for others, but I don't think it means implementing (1) first would be a bad idea.

I agree. This feature can definitely stand on it's own. I was thinking that on demand issue creation would be an easier first thing to implement. Not sure where there is more demand amongst other users.

@johndbritton
Copy link
Contributor

Thanks for opening #555, I've left a bunch of feedback over there.

@obcode
Copy link

obcode commented Jun 13, 2017

I would like to see (1) and (2) implemented with higher priority in (1).

@nwoodthorpe
Copy link
Contributor

Duplicate of #846

Closing all of these repo initialization issues so we can keep everything in one issue. This is something we're working on, but having 10 different issues for similar problems is making things a bit disorganized.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
No open projects
General stuff
Feature Requests
Development

No branches or pull requests

6 participants