blob: 7d0dec2c5c44edd96377792ae40f9668d2a8b529 [file] [log] [blame]
#summary Ideas List for GSoC 2013
#labels Importance-Useful,Featured
*Melange* is the software that powers Google Summer of Code. If improving the way that Google Summer of Code is run as your Google Summer of Code project sounds attractively recursive, please read on!
= Ideas! =
We welcome your ideas, whatever they might be for Melange - but here are a few of our own for what we think might be good student summer projects:
== Developer Workflow Improvements ==
In the last year Melange has gotten serious about mature software development practices, but our work in this area is far from complete. A project oriented around developer workflow would involve removing derived assets from source control, making derivation of those derived assets part of our build process, and running static analysis tools such as lint and documentation extraction over our source code.
*Relevant Skills:* Python, <a href="http://www.buildout.org/">Buildout</a>
*Probable Mentor:* Nathaniel Manista
== Integration of Summer of Code's "Connections" subsystem with Code-in. ==
Melange recently gained a "Connections" subsystem for building relationships between participants, but Connections is only integrated with Summer of Code, one of the two programs that Melange powers. Empowering Code-in with Connections would be a suitable student effort.
*Relevant Skills:* Python, HTML
*Probable Mentor:* _undecided_
== Javascript Tests ==
Melange has a great deal of Javascript code that needs to be extracted from templates and other hiding holes, refined, and tested.
We already have a testing architecture in place (using Testem, Jasmine, PhantomJS) but we need to start writing tests.
*Relevant Skills:* Javascript
*Probable Mentor:* Mario Ferraro (Merio on #melange)
*Links to relevant threads in the mailing list*: <a href="https://groups.google.com/d/topic/melange-soc-dev/FtVJXiqLmOA/discussion">Thread 1</a>
== Javascript List Enhancements ==
Our current lists are always asynchronous and load some time after the page on which they are displayed is loaded. They should be enhanced to be able to be included in the page and viewed statically when as the server deems appropriate. This work would cover both client and server domains and would make use of Javascript, Python, HTML and CSS.
*Relevant Skills:* Javascript, Python, HTML and CSS
*Probable Mentor:* Mario Ferraro (Merio on #melange)
*Links to relevant threads in the mailing list*: <a href="https://groups.google.com/d/topic/melange-soc-dev/l5CdVZ7ammw/discussion">Thread 1</a>
== Functional Tests Focusing on Behavior-Driven Development ==
Following last few years' successful GSoC projects on testing, our focus is mainly on behavior-driven development (BDD) this year. Although Melange is already a relatively mature project, such a technique is still useful to us. First, the biggest obstacles for writing tests is the drudgery taken to write one, so people just don't bother to do so, though they clearly know the importance of testing. The xunit testing framework pioneered by Kent Beck and Erich Gamma has made writing tests much easier. BDD, in my opinion, is another step to reduce the barrier by allowing people to write test cases in a natural language like manner. Second, the natural language like syntax also opens the door for non programmers to write test cases. In the context of Melange, they may include program hosts and other users. Last but not least, when a user requests a new feature, they can use the Domain-specific language (DSL) to describe their needs more accurately, which will also serve as a contract/test cases for development. Thus, it is only needed to be written once but can be used in multiple stages of the project life cycle and also a win-win for both users and developers.
The purpose of this project is to build a good infrastructure on BDD for Melange including defining customised DSL and to write test cases for existing functions/features. Pyccuracy is the recommended framework thanks to its good integration with Selenium and out-of-box DSL for web testing. We are, however, also open to other alternatives, such as Behave and Lettuce. In addition, other proposals on testing are also welcome.
To get started with Melange, you may find the following wikis useful:
https://code.google.com/p/soc/wiki/GettingStarted
https://code.google.com/p/soc/wiki/2013DeveloperDoc
https://code.google.com/p/soc/wiki/PythonStyleGuide
To get started with Melange testing, you may find the following wikis useful:
https://code.google.com/p/soc/wiki/GettingStartedOnTesting
https://code.google.com/p/soc/wiki/TestingGuidelines
To make you become familiar with the Melange code base and demonstrate your ability and enthusiasm, you are recommended to read our issue tracker, find a couple of ones you are interested, and then try to tackle them. Alternatively, you can also write some functional tests for Melange.
https://code.google.com/p/soc/issues/list
The code of Melange are structured in the following way:
* The main code is in app/soc.
* The tests are in tests.
* Unit tests are organized in the way similar to the main code.
* The test utils are tests/*_utils.py
* The existing functional testing infrastructures and tests written by Syed are in the functional_testing branch.
If you have questions not answered here or other wiki pages, please feel free to ask on the mailing list melange-soc-dev@googlegroups.com.
*Relevant Skills:* Python, BDD, Selenium
*Probable Mentor:* Chong Liu (Leo)
*Links to relevant threads in the mailing list*: <a href="https://groups.google.com/d/topic/melange-soc-dev/XHGiLUxBlkM/discussion">Thread 1</a>
== Enhanced Registration Workflow ==
Registering for Melange is too hard and requires too much developer and administrator intervention. This user experience can be greatly smoothed!
*Relevant Skills:* Python, HTML, CSS
*Probable Mentor:* _undecided_
== Messaging System ==
Melange has a need to proxy messages between participants (because Code-in participants are minors who may not be able to reveal their email addresses). Melange should be able to mediate communication between all program participants regardless of constraints about physical location and email availability.
This project has a few stages:
# design data model to store messages
# define logic to send messages
# add all necessary views to send/read/(reply to?) messages
# support email notifications for messages
Please note that the scope of the project is not just a feature which allows user A to send a message to user B. It should be able to deal with difference groups. Each user, depending on their role should be able to send messages to different groups. For example, an Organization Administrator may want to send a message to: all the mentors for their organization, all the students who submitted a proposal to their organization, all the students who work on a project to their organization, etc.
On the other hand, it is important to be able to determine, for each user, what messages are interesting/sent to her. Proper data model design is crucial for this project and there is no much point in moving on to the next step until all arisen questions have been answered.
*Relevant Skills:* Python, App Engine
*Probable Mentor:* Daniel Hans
= Orientation =
We would like our prospective students to propose new project ideas and discuss with Melange developers either here (in comments), #melange on freenode.net, or via 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.