blob: 930d4b5339b456175730a1e38e36a32d42385c19 [file] [log] [blame]
#summary Ideas List for GSoC 2011
#labels Importance-Deprecated,Contents-Draft
= Introduction =
_We have been accepted as an organization for GSoC 2011. You're invited to drop by at #melange on !FreeNode to discuss._
== [PossibleMentors Possible Mentors] ==
These are, in order, the most likely or best mentors for this project idea.
== Skills ==
* All developers will need to have experience in, or be willing to learn Python.
* Prior experience with Django or an equivalent framework would be a distinct plus.
* Knowledge of JavaScript (AJAX), and a feeling for web design is big plus as well.
== Difficulty==
'Easy', 'Moderate' or 'Hard'. Hard is not necessarily better! We are risk averse!
== Early Spinoffs ==
We want code that we can actually use, not code that shows great promise. At the half way stage, you MUST have something complete that we can actually use as a 'spin off' of the work. In discussing projects we will try to help you find ways to have spinoffs along the way.
----
= Idea Details =
----
=Better Google Code-in module=
===Description===
Google launched a new program in 2010 to encourage high school students to contribute to open source. The program is called as Google Code-in(GCI). Melange has a GCI module. But from the experience of running GCI for the first time in 2010, we have learned that GCI module can improved in a lot of areas. Some of the areas (including ideas) where GCI can be improved are:
* Queuing system for student claim requests
* Student task claims should be placed in a queue. If the first student withdraws or if the claim is rejected, next student should be advanced in the queue for claim request.
* Mechanism to lock down the student to the task once the claim request is accepted rather than the current mechanism of locking the student as soon as she requests a task.
* Allow one touch subscriptions (see issue 560 in our issue tracker.)
* Use channel APIs for notifications to give unobtrusive on-site live notifications.
* Store task history. There is already a support for storing history. It needs to be reworked a lot and get it to working. We should be able to query on this data.
* Publicly visible statistics for Google Code-in
* Multiple file upload support for tasks
* Upload files asynchronously (there is jQuery plugin for it. It needs to integrated with Melange.)
===Skills===
* Python
* Django
* Appengine
* Basics of jQuery and CSS
===Difficulty===
Moderate
===Mentors ===
* Madhusudan C.S. (madrazr on #Melange)
----
=Google Code-in with new architecture=
===Description===
Melange is undergoing a major rewrite. The views layer is being rewritten. The UI is getting changed. We would like to follow the suite for the GCI module too.
* Port GCI to the new Views architecture.
* Add the dashboard functionality to users.
Just these two things may not be worth a full GSoC project. So students could look at the following things too while writing the proposal.
* Data Seeder for GCI. There is already a data seeder for GSoC which is being integrated with Melange now. This needs to be extended to GCI too.
* Tests for GCI.
===Skills===
* Python
* Django
* Appengine
* Basics of jQuery and CSS
* Basic knowledge of Principles of UX Design
===Difficulty===
Moderate
===Mentors ===
* Madhusudan C.S. (madrazr on #Melange)
* Leo (Chong Liu)
----
=Melange/GSoC Administration Interface=
===Description===
Now that Melange is undergoing a big makeover we are in need of a proper administration backend to make the life of the Open Source Programs Office easier.
During your project you would need to gather requirements from the people who work with Melange at a day-to-day basis and if need be show them your work on a regular basis so that details can be refined. At the end of GSoC we would like to see an interface that allows them to run day-to-day operations such as finding/editing data on participants, editing settings of a program and being able to export a wide range of data.
If you are planning on sending us an application for this project we would like to see a suggestion of how the interface might be integrated in Melange but most importantly how you will approach the requirements elicitation and feedback process.
===Skills===
* Python
* Django
* Appengine
* Basic knowledge of Principles of UX Design
* Requirements gathering
===Difficulty===
Moderate
===Mentors ===
* None known yet.
----
=Integration with external API's=
===Description===
We would like to be able to export lists as well as Melange documents to Google Docs using the Docs APIs. This would involve using OAuth to get an auth token from the user, and then using the Google Data APIs to create a new document of the appropriate type.
Could also include integration with other services, such as the Email and XMMP api.
===Skills===
* Python
* Google APIs
===Difficulty===
Easy
===Mentors ===
* Sverre
* Mario Ferraro
* Daniel Hans
----
=Testing, Code Guru, Code Quality Assurance=
===Description===
Melange is sorely lacking tests, and it's hurting our development speed significantly. What we need is a extensive set of unit tests for our logic and views, as well as functional tests to make sure that all views work as expected. This will require learning the codebase first, so as to know what something should do. Test-based exploring would be most suitable (learning how the codebase by writing tests that confirm that things work a certain way). We want test coverage such that it is possible to refactor a core function without doing any manual testing, and still be fairly certain that everything works as expected. On top of that, we want to be able to start doing TDD, which is a lot easier if there are a lot of tests already. All developers will be asked to include tests with their changes as soon as we start doing TDD, so once the momentum picks up things should get easier.
A lower priority, that can be pursued once we have decent test coverage, is to make sure that all pylint errors are fixed, and that all warnings are fixed or suppressed as appropriate. This way we can require that each commit introduces no new pylint errors, which will ensure some level of code quality.
===Skills===
* Python
* Django
* Testing
===Difficulty===
Moderate, but requires a lot of effort
===Mentors ===
* Leo (Chong Liu)
* Sverre Rabbelier (SRabbelier on #Melange)
----
= Other ideas =
* integrate OpenSocial into Melange
* add functional tests using twill
* Profiling and Caching developer tools
* extend functionality of our buildbot (post commit hooks, pylint integration, application deployment to testing App Engine instance)
* add features that will enable to organize GSoC/GHOP Meetings (creating new events, managing participants, integration with Google Calendar API),
* Melange API allowing any external page to list current status of tasks and tasks list, participating projects etc.
* generating pdfs, docs of student applications
* integrating export functionality of tables, proposals with Google Docs (use Google Docs API)
* upload of student presentations (storage, viewer)
* work on selected issues from Melange Issue Tracker
* Non US students should be able to upload their Tax forms via their Student dashboard page (no more faxing or sending via email)
* Melange should enable admins/host to easily autogenerate CPT letter or letter of acceptance if one is needed/requested by student. This would generate pdf file ready to print based on the data from student profile (including program logo).
* User (Roles) profiles (mentor/admin/student/organization admin/) with profile photo, functionality to share profile information with other GSoCers ) - privacy settings for your profile
* dates that are setup in GHOP and GSoC Melange configuration page can be later automatically put into faq and terms of program in specific places
* Melange survey module should have autosave forms functionality (just like in gmail)
* Google Calendar API support for events planning
* Adding other GSoCers as friends to your profile,
* Sharing profile data with other social network users
* Messaging module allowing to send messages to other users (emails) (Way to improve communication between GSoCers, GHOPers)
* Requesting profile data access
* Better geo location features
* Nice upload of profile photo with crop functionality via JS library.
= Some Rough Notes =
* Did we mention that we have an active IRC channel, #melange?
* Some words for you, to inspire more ideas: *[http://code.google.com/p/soc/wiki/TestingGuidelines Automated Testing]*, *World Domination* (ask), *Access Control Module*, *Profiling*, *Log Analysis*, *[http://code.google.com/p/soc/issues/list?can=2&q=&sort=-id Issue Tracker]*, *[http://code.google.com/p/soc/wiki/AccessControl Security]*, *Optimization(s)*, *Mentor Summit*, *Wiki*.