blob: 4b02b8306787535c5e4dbe7c6e111f2f8484f1ca [file] [log] [blame]
#summary Ideas List for GSoC 2012
#labels Importance-Deprecated
= Introduction =
_We have been selected as a participating organization for GSoC 2012. You're invited to drop by at #melange on !FreeNode to discuss._
We would like our prospective students to propose new project ideas and discuss with Melange developers either here(in comments), #melange or our mailing list melange-soc-dev@googlegroups.com.
Every student is encouraged to clone our <a href="http://code.google.com/p/soc/source/checkout>git repository</a>, solve <a href="http://code.google.com/p/soc/issues/list">issues</a> and submit patches as part of the application process. <a href="http://code.google.com/p/soc/wiki/GettingStarted">Here</a> is our getting started guide.
*ANY ORIGINAL IDEA WOULD BE VERY MUCH APPRECIATED :)*
=Project Ideas=
==Testing, Code Guru, Code Quality Assurance==
===Description===
Melange has some decent tests, but we can do better. 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)
==New invitation/request module==
===Description===
Currently there is a feature to invite new mentors/admins by organization admins. People, who want to become mentors, may also request that role from organizations. The code is not perfect, so we are looking for a student to implement a new module that is better and does not have any limitations the current one have.
The project requires both server and client side work. From the backend perspective, new datastore design is needed. The current code has to be rewritten so that it is much clearer and completely thread-safe. For some current drawbacks you can search for the related issues in our issue tracker.
There are also some new features to be implemented. For example, it should be possible to invite people who do not have user accounts in Melange. They should receive an email which encourages them to create a profile and become a mentor.
Another point is to detect "spammers" who send requests to many organizations which they are not associated with.
Other interesting ideas how to improve the module are of course welcome.
On the client side we need UI that makes it obvious to users how to request a mentor role in the program. It should be also easy for organization admins to invite other users. Two modules, GSoC and GCI, need to be taken into consideration.
The other part of this project is to implement a function which would allow users to switch their roles between mentors and students. Currently, if someone, who wants to be a student, accidentally registers as a mentor, we have to change some fields in the datastore manually. It would be much more convenient for both us and the users, if they could change it on their own.
The first task of an accepted student will be to determine under what circumstances role changes should be allowed. Then new functionality should be implemented.
===Difficulty===
Easy or Moderate
In order to successfully complete the project, the new modules have to be integrated before end of the program.
There is probably not enough work for a returning Melange student, so we would prefer to accept a rookie.
===Mentors===
* Daniel Hans
= 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*.