SoC 2009 Ideas
Mifos and the Google Summer of Code 2009
Welcome potential Mifos Summer of Code participants! The following is a list of Mifos projects for students to work on. Attack poverty and complex technical challenges simultaneously!
Wondering what Mifos is? Start here
Guidelines
Expectations
Students working on Mifos will be expected to:
- use the mifos-developer mailing list
- use the IRC channel (please announce yourself, and feel free to share details like: who you are, your IRC nickname, why you're in school, what timezone you're in, why you're interested in Mifos)
- provide patches
- follow the Mifos coding standards
- document their work
- write and speak fluent English
Prerequisite Skills
Helpful skills include:
- Java, SQL (especially MySQL), HQL (Hibernate Query Language)
- HTML, CSS, JavaScript
- Eclipse IDE, Ant, Maven, JUnit, TestNG, Freemarker, Subversion, Selenium
Please also see the list of suggested tools for development with Mifos.
Hints
- Do some searches before asking, please. We are very excited for you to join us, but we need to know that you're willing to put in the time and effort required to do your part.
- Not sure if you are qualified? Download the code and run tests. Instructions for doing so are available on this wiki.
- Drop by the IRC channel or email the mifos-developer mailing list with your questions and project ideas.
- Install Skype for (generally infrequent) video calls.
Mentoring
Mifos folks are constantly working remotely (mainly using Skype), especially in supporting remote contributors. We often do video calls and desktop sharing If possible, we'd love to meet you in person! Specific mentors for each project are listed below with their locations.
Mifos business logic and data flow is quite complex. Due to tight integration necessary with Mifos developers, we are currently considering taking on only 2 or 3 students.
Project Ideas
Improve unit test suite
Mentor: Adam Monsen Minneapolis, Minnesota
Details:
Many issues exist with the current Mifos unit test suite. A student choosing this project will be encouraged to implement as many improvements as possible, thereby:
- Increasing developer productivity * A fast test suite leaves more time for the developer to write code
- Reducing the chance of introducing bugs * A fast test suite will be run more often so bugs will be caught sooner and the chance of an untested change being committed and breaking the build will be reduced
- Make identifying and fixing problems more efficient * Eliminating test dependencies will mean that only those tests actually affected by a problem will fail and can be immediately compared to help identify a problem (rather than only the first failure yielding useful information)
Tasks:
- decrease the runtime of unit tests; target speed increase should be tenfold
- eliminate useless or redundant unit tests
- eliminate test order dependencies
- in LatestTestAfterCheckpoint, consider structural "SQL diffs" rather than text-based
Advanced unit test suite improvements
Mentor: Adam Monsen Minneapolis, Minnesota
Details:
A number of business objects include transaction management code in their methods which makes it difficult or impossible to test them independently of the database. This project is intended for a student capable of advanced Java and database development.
Tasks:
- remove database transaction code from business objects and move it to a service layer
- create Repository (DAO) interfaces for accessing objects of a given type and when needed use these interfaces in the business objects. By using these interfaces, the interface could be implemented by an in memory test stub for unit testing rather than hitting the database)
- separate out functionality that can be tested by a unit test rather than an integration test and try to rewrite as many test cases as possible as unit tests that operate on POJO business objects and don't touch the database.
Automated Acceptance Tests
Mentor: Jeff Brewster (Unlicensed) Seattle, WA
Details:
Building Acceptance Tests Project
Your Suggestions
Is there another project you're interested in that is not mentioned here? Suggest it on the Mifos developer mailing list See the following pages for ideas: Mifos Volunteer Projects, Architecture Plans, Tech TODOs. It would be helpful to cover the following in your suggestion:
- overview (bullet points) of what you expect to get done this summer
- your specific qualifications for work suggested, if any
News
- 24-MAR-2009 Data Migration Tool project removed. We need to come up with more explicit requirements, and won't have these requirements ready for the Google Summer of Code 2009. Update sent to developer mailing list.
- 23-MAR-2009 Application process open. Please look for updates on the "mifos-developer" mailing list, subject line containing "GSoC".