blob: 77e13b600fa2158ce273e7c15203dd2282680289 [file] [log] [blame]
#summary Ideas List for GSoC 2012
#labels Importance-Useful,Contents-Skeleton,Featured
= Introduction =
_We will be applying as an organization for GSoC 2012. 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 =
----
=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 ===
* Still need to be confirmed, left this idea here as an example *
* Leo (Chong Liu)
* Sverre Rabbelier (SRabbelier on #Melange)
----
= Other ideas =
* 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)
* work on selected issues from Melange Issue Tracker
* 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).
* Messaging module allowing to send messages to other users (emails) (Way to improve communication between GSoCers, GHOPers)
= 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*.