#summary Plan for Q3-Q4 '10
#labels Contents-Review,Importance-Useful,Phase-Implementation
= Main Improvements, Features and Fixes for Q3-Q4 '10 =

*Under Construction, just a copy of Q1-Q2*

This page lists the different tasks that Melange will focus on during the upcoming months. Note that this list is far from complete in terms of other improvements we might make and that not everything on this list (prio medium or lower) might make it into Melange before the next months are over.

To be added to the list, needs to be made more tangible:
  * Testing, Sverre suggesting getting more time for it. Chong Liu's work should help.

|| *Short Name* || *Description* || *Schelduled* || *Priority* || *Primary Contributors* ||
|| Design UI Prototypes || Design and prototype new UI designs for Melange || 31 August || High || Mario Ferraro ||
|| User Interface Discussion || Discussion and choosing of the new interface || 6 September || High || All ||
|| User Interface Implementation|| Implementation of the new user interface. || TBD || High || ||
||Internal User ID as a reference||Currently, we use email address as user ID, but then if that changes we don't have a correct reference to the user anymore and we have to fix things manually. This means to update current user models in the datastore and changing the current calls to getUserForCurrentAccount to work with the ID|| ||Medium||||
|| JavaScript Refactoring || Refactor Melange JavaScripts to their separate module. || TBD || Medium || Mario Ferraro ||
||Per Org URL for Applying||The current StudentApplication uses the student as scope. This gives non-shareable URL’s for organizations to apply on. Unless changing the datamodel to become based around Orgs becomes viable for GSoC10 (a lot of dependencies with access and accepting/rejecting applications), a good solution would also be to introduce a URL that is not user-dependent but Organization dependent.|| ||Low|| ||
||Use HTTPS protocol for certain pages||This means enabling HTTPS for a certain set of pages such as edit pages for roles. See also Issue 445.|| ||Low|| ||
||Enhance Notifications||This includes posting the complete notification in the email sent to the user and perhaps add the possibility to read them using an RSS feed (NewsFeed framework from James Levy)|| ||Low|| ||
||Add Surveys to the Statistics module||The Statistics modules seems like the perfect place to also handle the statistics that can be gathered from the Surveys collected within Melange.|| 19 July (Depends on design) ||Low|| Daniel Hans ||
||Internationalization||The text in Melange has now become quite stable and we do have a large user base within the Asian community. We should look into the possibility of adding and enabling translations. Research might be required into languages that read from right to left.|| ||Low|| ||
||Display changes in StudentProposals||A StudentProposal usually has multiple iterations. A request from the organizations was to make these changes more visible by somehow displaying the history of a proposal (diffs or complete histories are an idea)||GSoC 2010 ||Very Low|| ||

== GHOP ==
|| *Short Name* || *Description* || *Status* || *Duration* || *Schelduled* || *Priority* || *Primary Contributors* ||
||~~ GHOP Organization Registration ~~|| Check/Fix/Implement the Organization registration for GHOP Organizations, including Org Admin and Mentor invitations. || Complete || 1 week || 14 June || High || Madhusudan ||
||~~ GHOP Task Quota assignment ~~|| Create the page where Program Administrators can see/update the quota for each organization. Does not need to be Task API anymore because the current list can send along the keys, however it does need to scale. || Complete || 2 weeks || 21 June || High || Mario and Madhusudan ||
||~~ GHOP Task creation by org admins ~~|| Allow GHOP Org Admins to create tasks for their own org which can be directly published or stored for later publishing. || Complete || 2 weeks || 5 July || High || Madhusudan ||
||~~ GHOP Task suggestion by mentors, all can edit ~~|| Allow GHOP Mentors to suggest tasks for their organization and let the Org Admin accept/publish the task, both in bulk and on a per-task basis || Complete || 1 week || 12 July || High || Madhusudan ||
||~~ GHOP Task workflow ~~|| Run the current workflow from the point that a task is published till the completion of a Task. Includes, checking access to make sure that a mentor/org admin can't claim a task and someone who has claimed a task or is a Student can't become a Org Admin/Mentor. || Complete || 2 weeks || 13 September || High || Madhusudan ||
||~~ GHOP Task pages ~~|| Besides the per-task page there are a few more important pages to be checked/fixed/implemented. Namely the org home page with a lists of their tasks, a page with all tasks for a single program and a page for listing "My tasks" showing either the ones you have claimed or are mentoring. || Started || 1 week || 20 September|| High || Madhusudan ||
|| GHOP statistics || Page to gather GHOP Statistics, might make use of the work from Mario and Daniel. Most importantly we need to know who completed what amount of tasks on a overall and per-org basis.|| Not started || 2 weeks || 27 September || High || Daniel and Madhusudan ||
|| ~~GHOP Notifications~~ || http://code.google.com/p/soc/issues/detail?id=921 || Complete || 1 week || 27 September || High || Madhusudan ||
|| GHOP Task work upload || Allowing uploads to be made as part of a WorkSubmission || Won't fix for GHOP 2010 || 3 weeks || 21 November || Medium || Madhusudan ||
|| GHOP User Manual || There is a skeleton [http://code.google.com/p/soc/wiki/GHOPUserManual GHOP User Manual in the wiki]. This needs to include all the details and nuances about how to use GHOP module. || Started - Contributions needed || 2 weeks || 4 October || High || Madhusudan and others ||
|| GHOP Testing period || Similar to the GSoC testing period we will run GHOP through its paces publicly during this time. || Not started || 2 weeks || 11 October || High || All ||