Google Summer of Code 2012 Ideas

Unfortunately Mifos was not selected to participate in Summer of Code for 2012. We still plan on engaging with students to take on these projects so stay tuned for more details!

 

Get Stoked - End Poverty. One Line of Code at a Time.

This is the third year that Mifos will be participating in Google Summer of Code. Over the years, we've brought on someamazing contributors who are joining in our movement to fight poverty through open source software.  We want you to be part of our mission of creating a world of 3 Billion Maries.  

What is Mifos

When is the GSoC?

Watch how Mifos technology is helping end world poverty

Guidelines

Expectations

Students working on Mifos will be expected to:

Prerequisite Skills

Basics

  • Quick learner
  • Troubleshooting Wizard
  • Passion for writing beautiful code
  • Excellent communication skills
  • Knowledge of developer tools
    • such as: a text editor, source control, how to build software
    • experience with specific tools will also help, such as: Eclipse IDE, Git, Maven

Mifos includes wide variety of technologies, we do not expect a student to be expert on all of these. But it will be helpful if you have some experience in some of these.

Helpful skills: (specific technology requirements vary with project chosen)

  • MySQL, Hibernate, Spring, Struts
  • JSP/JSTL, HTML/XHTML, CSS, JavaScript
  • JUnit, TestNG, Selenium

Please also see the list of suggested tools for development with Mifos.

Hints

  • When you need help, ask for help! 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. When you do ask, ask well.
  • Not sure if you are qualified? Download and build the code, then run the Web application. Instructions for doing so are available on this wiki.
  • Email the mifos-developer mailing list with your questions and project ideas.
  • Install Skype for (generally infrequent) video calls. You'll need a headset for Skype, too.

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 will be listed below.

Mentor

Project

Location

Time Zone


 

India

IST (GMT +5:30)


 

Switzerland

CET (GMT +1:00)


 

Ghana

GMT


 

Poland

CET (GMT +1:00)


 

India

IST (GMT +5:30)

Project Ideas

This idea list is not final yet. More projects could be added or removed.

Next MVC - Spring MVC 3.1, Freemarker 

Mentor: UdaiU (Unlicensed)

Mifos UI and MVC is quite old and has lot of scope for improvement, we want to make MVC layer more productive by using Spring MVC with Freemarker Templates(FTL).

In simple words, we want to keep same work flow and design but improve code (or rewrite) using new frameworks like Spring/FTL and Jquery.

Objectives

  • Replace Struts 1.2.x Action/ActionForm with Spring/FTL
  • Improve existing FTL macro and Spring Controllers and establish a clear pattern for others.
  • Improve i18n and L10n support.
  • Use JQuery data ajax calls to REST API and widgets like date calendar.

HINT: Learn Spring MVC and JQuery, start playing with Mifos code using Workspace 2.0, try running Mifos. (https://github.com/ugupta/mifos-dev)

Identify problems related to project, start asking good questions on developer mailing list, start creating a plan.

Improve i18n and L10n support in Mifos

Mentor: UdaiU (Unlicensed)

Mifos supports multiple languages, there is lot of scope for improvement to make it easier to add changes, Translate Mifos will give you more idea how it works.

In simple words, we want to make it easier for people to add new translations in Mifos, most importantly remove redundancy.

Objectives

  • Find and remove duplicate properties
  • Remove Lookup tables

HINT: Learn more about i18n and L10n support, start playing with Mifos code using Workspace 2.0, try running Mifos. (https://github.com/ugupta/mifos-dev)

Identify problems related to project, start asking good questions on developer mailing list, start creating a plan.

Collateral Management System

Mentor: Vishwas Babu A J

Add Collateral Management abilities to Mifos (functional spec to be attached)

Objectives

  • Add features for defining Collateral Types and associating default values against collaterals
  • Add features for attaching Collaterals to Loan Products, capturing various properties of collaterals, calculate maximum permissible loan amounts etc

Helpful Skills : HTML, JSP/JSTL,Spring MVC, Spring, Hibernate, JUnit

Business Analytics (OLAP)

Mentor: KojoG
Extend the Mifos Business Intelligence data warehouse to create OLAP cubes. This will allow managers to perform ad hoc slicing and dicing of their data 
to answer important questions about their operations.

Objectives

  • Create a Mondrian schema
  • Improve ETL scripts along the way

Helpful Skills Database Management Systems, MDX, SQL,

See:

Saiku Analytics Demo - demo.analytical-labs.com
Wikipedia OLAP Article - http://en.wikipedia.org/wiki/Olap
Introduction to OLAP - http://www.db-class.org/course/video/preview_list
Gentle Introduction to MDX - http://www.iccube.com/support/documentation/mdx_tutorial/gentle_introduction.html

Convert Mifos acceptance tests to Webdriver and optimize for better performance.

Possible mentor: Michael Vorburger

Mifos uses Selenium for automated UI acceptance tests.  Currently all tests are running with Selenium RC.  While we've done some work to move towards Selenium 2.0, but more work is possible to make the tests actually optimized to use features of Selenium 2.0 (Webdriver).

More information:

developer list discussions: http://tinyurl.com/47726vr | http://tinyurl.com/4sjaetc | http://tinyurl.com/4gzpyb9

Selenium 2.0: http://seleniumhq.org/docs/03_webdriver.html

Do some reading on these threads, run the existing acceptance tests, come up with a proposal of what improvements can be made to speed up development and testing by optimizing these tests.

Mifos 2.x with Embedded Database

Possible Mentor: Michael Vorburger

Mifos uses MySQL 5.1 as its primary database.

We want to achieve :

  • Simple / easy launch of integration/acceptance testing, without requiring an external DB (ideally in an automatically created RAM Disk...)
  • Development without manual MySQL installation
  • Possibility of Mifos self-contained demo package

The first thought that comes to mind is to achieve this with a pure-Java in-memory database such as H2. However, in order to avoid maintaining & supporting 2 different databases for Mifos, basing this on https://github.com/vorburger/MariaDB4j would be interesting.

Do some Googling, Search Mifos JIRA, mailing list for more information. Identify some small problems related to this project and submit patch (if possible), Come up with a good plan and start a discussion on developer mailing list.

Mifos has abstraction from underlying database using:

  • Hibernate as ORM (must have good experience with Hibernate)
  • Liquibase as Database refactoring tool
  • DbUnit as test dataset maintenance

XBRL Reporting Integration

Mentor: TBD

XBRL is gradually being adopted as the reporting and data standard for microfinance.  This project would involve building out the reports to generate in the necessary XBRL-compliant format as well as an external client needed to map the data in Mifos to the proper XBRL taxonomy.  MIX Market is leading adoption of XBRL as a data standard. By having one common reporting format, MFIs can save substantial time in generating end of period reporting to funders, regulators, associations, etc. 

Objectives

  • Generate necessary XBRL format reports corresponding to MIX taxonomy
  • Create external client needed to map data to this taxonomy. 

Helpful Skills: HTML, XML,  SQL, Pentaho

More Information: 

Discussion on XBRL on Mailing List regarding Mix Pilot Program for XBRL

Previous Work on XBRL format reports: [http://mifosforge.jira.com/browse/MIFOSBI-15|] | [http://mifosforge.jira.com/browse/MIFOSBI-43|]

Client Scoring Modules

Mentor: TBD

MFIs using Mifos often want to implement a credit scoring/client prospecting analysis tool to help automate the onboarding process for new clients by creating quantifiable measures to assess credit worthinesss. More and more MFIs are moving towards individual lending models where this scoring will be of greater need. Using our Question Groups module and our Mifos Business Intelligence Suite on Pentaho, they can set up questions and define parameters/scores to assess these questions.  

Objectives: 

  • Based on user requirements, develop algorithms and scoring parameters in Pentaho to create this scoring module. 

See:

Context-Sensitive Help in Mifos Application

Mentor: TBD

Currently the Mifos application lacks any built-in help functionalities (tooltips, hyperlinks) etc.  This project would involved adding in context-sensitive help that links to various sections of our user manual on FLOSS Manuals

Objectives: 

  • Throughout Mifos application, add tooltips/hyperlinks that link to relevant sections in Mifos user manual.

Add/Improve import functionality

Mentor: Jakub Sławiński (Unlicensed)

The current Mifos version supports only importing of the Client data (that allows to create new clients in the system) and transactions (payments/disbursals/withdrawals/etc.). Many MFIs have requested to extend import functionality to allow importing Loans/Savings data (to create new accounts in the system). Moreover, It would be great to have the possibility to bulk modify existing clients/accounts via import functionality (currently you can only add new client entries). This feature will be very useful during data migration from the legacy MIS, which is an Achilles heel of the Mifos currently.

Objectives

  • Add the possibility to import new Loans data.
  • Add the possibility to import new Savings data.
  • Extend import functionality to allow to modify existing entities.

HINT: Configure your development environment, try to run Mifos, look at the existing import Client data code.

Identify problems related to project, start asking good questions on developer mailing list, start creating a plan.

Improve Admin configuration possibilities

Mentor: Jakub Sławiński (Unlicensed)

Currently Mifos can be customized by changing values in the configuration files like:

  • applicationConfiguration.custom.properties
  • mifosBeanConfig.custom.xml
  • mifosChartOfAccounts.custom.xml

When you change something in these files, you have to restart Mifos in order to see these changes in the application. Moreover, only part of these settings is visible in the UI. This makes Mifos hard to manage remotely and very cumbersome if we want to customize it. The possibility to modify configuration via UI will be very convenient. Moroever, it will help in providing hosted Mifos service, because it will eliminate the need to modify something in the filesystem.

Objectives

  • Add/improve the functionality of displaying all Mifos configuration values.
  • Add the possibility to modify configuration values via UI.
  • Add the possibility to import/export configuration values via UI.

HINT: Configure your development environment, try to run Mifos, look at the code related to Mifos configuration.

Identify problems related to project, start asking good questions on developer mailing list, start creating a plan.

Custom Fantastic Mifos Project

Is there something missing from this ideas list that you want to do? Let us know! Send your project proposal(s) to the developer mailing list.

Timeline

Official GSoC 2012 timeline

See also