blob: 74b037ac5c6c9eaffa7e575d7dbe30a7c39faf5f [file] [log] [blame]
#summary Design/discussion for GHOP
#labels Importance-Useful,Contents-Review,Phase-Requirements
<wiki:toc max_depth="3" />
= GSoC Project Info =
|| Madhusudan C.S || [ Implementation of Task-based GHOP-like work flow] ||
= Introduction =
Required *background reading* for GHOP, especially Google documents linked from the archives, is the [ GHOP Contest Administrative List].
A few big gotchas:
* *Students cannot set tasks to claimed status*. This must be done by mentors. Perhaps this means we need to add a student accessible tag called "claim requested".
* Students can only claim *_n_ task at a time*, where n is an option configurable by Program Admin in Program Configuration Page.
* We are *not allowed to collect student personal details* like address, etc., until they have completed at least one task.
* Once a task is out there and *claimed, it cannot be deleted* unless the contestant does not submit work for it. It is OK to delete created tasks if no one has claimed them.
These things are what make it legally OK to run GHOP as a contest. GHOP has to be a contest since we are dealing with those under the age of majority. I do not understand why the world has decided it is ok to give money to kids through a contest but not in other fashions. I <3 our lawyers since they understand this so I do not have to do so.
Worth noting: tasks have assigned mentors, but *GHOP is more about pooled mentoring* resources. Any mentor should be able to review any task if they'd like to, but an assigned mentor is the person committing to be the go to person for student questions. No reason not to have more than one mentor per task.
It was a big old pain in the past that we did not track *time estimates* for tasks systematically. Organizations need to set a *time limit* for each task, though it is at their option to extend the amount of time a student can work on a given task if good work is in progress.
For example, if an organization says a task should take two days, then a *clock counting down* from 48 hours should begin counting down as soon as a mentor sets the task to claimed status. It would be awesome if we could email mentors about when a task is due, this is detailed in email notifications below.
*Tasks are not scored, they are either done or not done*. The task states below define different states along the not done to done spectrum.
* There is now a wiki page *[LifeOfaGhopTask]*.
* List of *[ GHOP issues]*, including stories and closed issues.
* List of *[ open GHOP issues]*.
* Madhu: Can we call a few of the org admins/mentors who participated in previous GHOP for a meeting (IRC?), so we can *get their opinions on how to implement the new GHOP framework*, what was wrong last time and stuff (or e-mail)
= Details =
== New general capabilities ==
_Edit hint: New page "New General Capabilities for GHOP" ?_
* Submitting Your Claim for Prizes Online and Submitting Your Parental Consent Form - instead of faxing or sending this forms via email to Program Administrator, student will have ability to upload *scanned document* to their GHOP profile account
* This design decision is much bigger than just accepting prize forms, etc. online. We need to be able to take actual work submissions via Melange, meaning we need folks to be able to upload a document file, or a jpeg file for a logo created, etc.
* Action Item: *LH needs to talk to legal* to make sure that it is OK from Google's perspective to upload patches to this system. It was fine when we were using the issue tracker; would it still be OK using the socghop infrastructure.
* Related issue:
* Related [ roadmap] item: file upload support (avatars, patches, tax forms, etc)
* We can accept files that are *up to 1Mb in Google App Engine*, patches usually are small, documentation too, the only probably we will have is screencast but we will figure it out. Due to GAE limitation we won't be accepting big files.
* More about claiming prizes:
* (Nice to Have) Using GHOP calendar and *Calendar API* mentors, admins, students would get *reminders about important dates* in the program, emails can be send to the program group or/and to users emails (same for GSoC, that way LH has less work and life is good)
* Related [ roadmap] item: meetings organizer (integration with Calendar API)
* We will prioritize work during our meeting. Madhu is keen to do calendar support.
* Mentors and org admins should be able to setup *task update notifications*. Mentors/OAs should be able to add tags to tasks like needs rework or task closed because work was successfully completed. If the task is updated (status changed or comment posted) students, mentors get an email. We already have notification system in place for GSoC but this might need some additional work.
* If we are going to implement sending emails with these notifications, and it would be great if we could, we should figure out how to let folks set email notification rules, e.g. only email me when a task is updated closed/open. It may not be possible to do this in time for GHOP 2009, e.g. perhaps the best we can do would be either you choose to get emails or not get emails. (If you choose to get emails, you accept that you will get a lot of them.)
* Related discussion [UserPreferencesPage] (and also issue 495)
* *Task activity info:* It should be possible to determine how many times a task has been reopened, how many students worked on it by anyone. This should also be easily available when generating reports.
* If a student has requested to claim a task then, the task must be *locked down* so no one else requests it.
* (NTH) Org Admins/Mentors should be able to *bulk upload* tasks from a CSV file.
* (NTH) Org Admins/Mentors should be able to *bulk download* tasks into a CSV file.
* (NTH) *RSS/Atom feeds* for keeping up with the progress of an Organization.
* Org Admins should be able to *bulk accept* tasks - It can be a check box associated with each task in the list, and there should be a button to accept all checked tasks.
Also they must have ability to accept all tasks created by a particular mentor by typing in his name.
* Check boxes for list of filtered tags. User must be able to check all the required tags and subscribe to them.
* (NTH) [ Repeatable Tasks]
== Task Fields ==
* New Tags now in *[TagsInMelange]*
* (Nice to Have) *Progress variable* for each task so that GHOP student can update the value of it during the time he works on the particular task (0%-100%), that will also allow mentor to track progress of students tasks, when task is 100% complete mentor can get email notification to take action on particular student task (Close it)
** For now: This is a nice to have but really not essential and will create more work. If a mentor wants an update, they can set task state tag to ActionNeeded and request a status update. Given how fast these students work, I don't think they'll have time to update statuses before they are finished.
** Madhu: Maybe we can have this field, but not mandatory? But % progress _is_ subjective and varies from student to student....
* Each GHOP tasks should have _public_ *difficulty level*, which can be later helpful in selecting grand prize winners and runner ups (not only amount of tasks counts but also quality of student work, task difficulty and other factors), organization has quick access to overview of what kind of tasks each student did and what's it's total point sum etc., this might be also available only for admins and mentors just in order to make a Grand Prize winners choosing process easier. Closely related to the need for *time estimates* and *time limits* in number of hours after the task is assigned for all tasks. This might tie into the overall concept of *tagging*, but more likely it is a numerical measure of how many hours it is expected to take.
* *Task preparation (privately):* Tasks should have a way to be hidden from the students until an org admin decides they are ready to be published.
== New task related views ==
* There should be a view to see all the tasks on a public page. This is also helpful for publicity. Should be publicly viewable, so public page sounds like better option than dashboard. These tasks can be filtered in following ways:
# Organization.
# Difficulty level.
# Type of Task.
# State of Task.
# Time required for completing it.
# Latest Added.
# Students (LH should get permission from legal team).
Sorting of tasks based on tags should be allowed.
* Program Administrator should have a special view to assign or tune the tasks list *quota per project* at any instant of time when the program is active. Note: An organization administrator should not be able to arbitrarily change their own task quota, as a sponsor is only committing to provide a certain amount of prize money.
* There is no reason not to *display the overall number of tasks* that an organization can set out for contestants publicly. Let's do so.
== Public Tracking of Students==
_All work on these tasks should be public, meaning claiming is public, it is public when review is needed, review comments are public, etc._
* Selecting grand prize winner should be done via public views in the GHOP Melange project showing *student tasks, tasks amount and difficulty level*
* (Required) Anyone should be able to track students progress, *completed tasks, open/reopened tasks, claimed tasks*, there will be special views for that with *filter options* (status of the tasks should be open to public)
== Dashboards ==
=== Program Admin dashboard features ===
* GHOP Melange should have a special configuration page where you can setup dates like : *dates:* when contest begins , when contest ends, what is the age (range) of the students that can participate for example: thirteen (13) years of age or older on November 27, 2007 (this date would be setup in configuration page and once student fill in profile data you can automagically check whether he can participate in contest
* (Drop if time shortage) Program Administrator will have access to special view listing all the GHOP students allowing her to *filter* the ones that didn't send form yet and by selecting them and clicking ‚'Remind' button, Melange would automatically send *reminder email* to all of the selected students.
* Program Administrator should be able to setup *tasks limits* for each participating project (similar to slots for GSoC)
*Timeline _logic_* already created for Summer of Code will be used for GHOP too. However the important dates for a GHOP based program need to be added to the respective TimeLine model. The extra dates are: Contest start, Contest End and "No more Claims" Deadline.
*Q:* Will we register dates with 'timeline', or will we derive a subclass?
=== Mentor/Org-Admin dashboard features ===
* None for this GHOP? It's all in public trackers.
* [For_GHOP_20] Selecting grand prize (this process should be similar to how proposals are rated in GSoC but public)
* [For_GHOP_20] Additionally using special view org admin can *setup number of runner ups* and select them from participating students (this can be later on used to automatically generate list of both grand prize winners and runner ups)
* More explanation of *Automatic Prizes*, which could be part of the dashboard, has been moved to *[For_GHOP_20]*.
Organization will just pick the grand prize winner student and runners ups in the web ui where they already have access to all the students and their tasks. That way we can easily generate a page which shows selected students.
=== Student dashboard features (?) ===
* If task progress variables are used, student needs a way to view and *set task progress*.
* Students must be able to *request to claim a particular task*, *withdraw* and *submit their work* (either as links to their actual work and/or file upload if we get legal consent) and request for review by setting *"!NeedsReview"* for the task.
* Provide students an option to mark the tasks they like, so organizations can get back to them when they have similar tasks or also helps for generating reports and feedbacks for organizations.
== Custom logic ==
* *Push for registration. "No-reg no-shirt" :* Claiming first task doesn't require to have full profile (just Google account), however after first completed tasks, students should also not be able to register for a second GHOP task until they have completed registration (we should send an email reminder). Without registration, there can be no shirt, that should be checked when Melange setups prizes for each student
* *N tasks in progress:* Student cannot work on more than n tasks at a time, which is specified via program configuration page (this was a problem with first edition of GHOP, since we had to find duplicates using python script) - Melange will not allow GHOP student to claim n+1th task while he is still working on previous ones. There will be no need for any additional duplicates check scripts.
* Enforce *task limit* for orgs.
* Informing mentor about completed task. This means that *mentors get a notification (email likely) that a student has submitted work* for a particular task that requires mentor review. Without the task being reviewed and closed (as in, the work for this task meets requirements and you get the prize for completing it), the student cannot go on to the next task. Hence, we want to make sure their work is reviewed quickly to keep them motivated. Perhaps we make this the only student editable tag. Like a tick box for setting a tag that org admins and mentors can see that adds a tag automatically that says "!NeedsReview" See tags section above.
*Human not computer logic*
* GHOP Grand Prize winners are selected based on completed number of tasks, tasks quality, difficulty, student community activity and things like that, so it is not just number of completed tasks. *This is mostly a manual process from examining the sorted list of student results*
*Nice to have*
* *Count of incomplete tasks for a student:* Mentors/org admins should also get information if student claimed some tasks but didn't complete (task was reopened), with the number of that kind of tasks
== Dependencies on GSoC student work ==
* (Nice to have) Any GHOP *[SurveysModule surveys]* should be done via Melange Survey module that would enable to create/edit/delete questions and build surveys from questions.
* (Nice to have) Any additional *[StatisticsModule statistics]* in Melange project should use Google Chart API and Google Visualization API
* (Nice to have) Program Administrator should be able to view all participating projects/organization in special view with simple *statistics on the same page*
[SurveysModule Surveys] are not required to run GHOP, nor are [StatisticsModule statistics], however, both features are highly desirable. Each contributes to making GHOP easier to run by giving more information about how GHOP is progressing. GHOP's requirements may influence some decisions about what order features of these GSoC projects should be tackled in and will help to shape the detailed requirements for these features.
Really, these are all nice to haves for now. *Really nice to have, but NTHs nonetheless*. We need to get core functionality working before we worry about running better reports and asking for feedback, etc. systematically. We need to focus on getting the core functionality running first. However our GSoC students are going to work Surveys and Statistics modules so we will make sure that they are generic enough to be reused for both GSoC and GHOP program types.