#summary Plan for Q3-Q4 '10
#labels Contents-Draft
= 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* || *Schelduled* || *Priority* || *Primary Contributors* ||
||~~ GHOP Organization Registration ~~|| Check/Fix/Implement the Organization registration for GHOP Organizations, including Org Admin and Mentor invitations. || 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. || 21 June || High || 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. || 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 || 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, allowing uploads to be made as part of a WorkSubmission, 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. || 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. || 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.|| 27 September || High || Madhusudan ||
|| GHOP Testing period || Similar to the GSoC testing period we will run GHOP through its paces publicly during this time. || 11 October || High || All ||