-
Notifications
You must be signed in to change notification settings - Fork 18
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
Using teams in RAMP #505
Comments
Thanks @rth! Lot's of thoughts, not very structured yet.
It's an exciting design problem :). |
Some comments since it seems that we'll have the green light soon for the permanent Huawei RAMP site:
|
if you have the engineering ressources to do this no objection
… |
OK, that would work, and that already what's happening in some parts of the code except that we don't have a good user <-> teams mapping. Assuming that Terms and Conditions of Use specify that they contribute code to the team/RAMP and it's not considered private information. I guess it's the same on Github, one can remove ones account but comments and code contributions will not be removed.
+1 and it would be indeed the simplest migration wise.
Yes, this would require more thoughts. The easiest would be IMO just allow individuals to create teams no do an hierarchy of teams (while still keeping their 1 person team there for other events). Also in practical terms suppose there is a team of 3 and another team of 3, it would seem surprising to me that a single member can merge those two teams without asking anything from other team members (and without possibility to go back). Users would then be contributing on behalf of the team without having given their consent to be part of that team which is not ideal. It would easier of each participants just asks to join a team and existing team to approve I think.
Well but if it's an individual teams it might have submissions in other events, and/or user might want to do submissions in the future so it's not that straightforward. Might be better to keep the individual teams around.
This could probably be an event option. |
We are forming EventTeams, so the team composition is only for the particulat event. They can reuse the same team name and composition for another event, but this will not be reflected in the DB (those are two different EventTeams). Here is an initial protocol pls comment. An eligible User will be able to sign up to an Event. Once signed up, he/she will automatically form an EventTeam containing himself/herself only. Teams can merge and leave the Eventas long as they haven’t made a Submission. Team mergers will need to be approved by all the members of the merging EventTeams. Once an EventTeam makes a Submission, it becomes immutable (no merge, joining, or leaving it). Eligibility will be decided based on student status, year of graduation and the country of the school the student belongs to. |
I have been looking into this and here is the proposed team mechanism that minimizes changes to the DB schema, DB migrations and the current submission workflow is below. UX
Now under the team management the user can either create a new team, or accept invitation to a different team.
Note: in the end it's a somewhat different approach that in #505 (comment) because if team mergers are allowed it's not trivial how to decide,
The current workflow is more similar to how invites to private Github repos work, which should be familiar to users. DB schemaWe keep the current DB schema, where in particular following tables exist,
We add,
This approach minimizes changes to the DB. The alternative, that could be done in a second iteration could be to merge EventTeam and Team tables into 1, where a team is only associated to an event at the DB level. However that would mean, removing 1 person teams, which means,
|
Perfect, thanks @rth , I like it even more than my proposal :). I think it's ok to keep the one-person team as special case even in long term since it's likely that the Saclay challenges will not use the team feature (config?). @agramfort ? I'll try to think about edge cases to cover all the possibilities, but it seems to me that this is bulletproof. |
if @rth does it with migration tests on a staging server before making a release and updating the ramp.studio web site I am happy :) |
Thanks for the feedback! Yes, that works. We should anyway first make a 0.18.0 release with the current version of master. This could be included in the next release after that 0.19.0 |
This is an issue to start the discussion on what would be necessary to use teams in RAMP, following a discussion with @kegl .
Having teams would be also quite useful for teaching, where students are often working in pairs.
Current situation
A short overview, I might have missed something, if so please comment.
Users sign up and are approved individually. They get allocated to teams with just them automatically. Then this 1 person team, requests to join an event, makes submissions and is displayed in the leaderboard.
Generally teams support is partially implemented, and because so far 1 person team is more or less the same as a user, team and users can sometimes be used interchangeably across the API.
DB wise, we have following tables,
I couldn't find a table mapping users to teams. There is something called
initiator_id
,acceptor_id
in theteams
table but that would be enough for teams of 2 at most.Option 1
If we wanted to make it work with minimal changes. We could,
Drawbacks
Backward compatibility
Option 2
That I find conceptually easier, but that might require some (possibly repetitive) changes: all actions on RAMP are made by users not teams, including even sign-up, submissions etc.
Once in the event, users can create a team that's valid only for the current event. It impacts only how submissions are labeled on the leaderboard. There is an option to switch between individual and team view on the leaderboard. If a user deletes their account their submission are removed, which might impact the best score of the team they were in.
Drawbacks
N
users thanN/<team_size>
teams.Backward compatibility
event_teams
toevent_users
, etc.Still I feel option 2 would be preferable, aside from the DB migration, I find that it's easier and there are fewer things that could go wrong.
The text was updated successfully, but these errors were encountered: