Tech Overview

Explore the Platform

What is Mifos? 

Mifos is the back-office system driving the operations of a microfinance institution.  Microfinance is a very intensive hands-on process with thousands of tiny transactions occurring daily.  Mifos provides a robust management information system for MFIs to flexibly manage their portfolio, efficiently process their transactions, and generate timely and accurate social and financial reports for funders and management.  Click here to learn how about Mifos is Used.

To help microfinance institutions grow at the lowest cost, our software needs to be lightweight but ready to scale.  Mifos needs to be a platform that easily connects to and plays nicely with the other systems, technologies and payment networks that an MFI is a part of.

Know the Technology Stack:

Mifos Architecture of the FutureMifos is Java-based web application running on top of a MySQL database.  The Mifos Platform has evolved greatly from our Mifos 1.0 release in 2006.  We're rapidly moving to a modular layered architecture with documented APIs and Plugins.  Visit our developer wiki to learn more about our refactoring as we move from our Gazelle to Cheetah architecture. The diagram details the architecture our platform is evolving towards.  Currently we're leveraging the following open source components, if you have experience in any of them, we welcome you to get involved:

  • Reporting and Business Intelligence - MySQL and Pentaho
  • Transactions and Security - Spring
  • UI - Freemarker, JSON

Build from Source

Looking to build Mifos from source? 

Review the Mifos Version Control Guide to learn how to get the source code and understand how our team uses version control to effectively collaborate and communicate code changes with one another.  We recently switched over from SVN to Git.  This version control guide will explain how to:

  • Browse the source and set up Git locally
  • Day to day usage including cloning & pushing changes
  • Creating patches as well as branching and merging the code

See Also

  • Test Servers - Don't want to get your own build running right now?  You can play around with Mifos on a number of different testing instances running stable releases and branches of code with the latest features still under development.
  • Build Environment - Our continuous integration server is run on Hudson.  Full details about the build environment are on the wiki. 
  • Database Development - To better understand the Mifos database, browse the latest schema.  If you plan on developing code which changes the schema, read up on our database development standards. 

Know our Process

We're an Agile team working to rapidly deliver the information technology microfinance institutions need to run their businesses.  As you code on Mifos, aim to practice the following:

  • Write test driven code that follows our coding and database standards
  • Work iteratively by sending in multiple patches rather than committing all at once. 
  • Write clean code and apply good software design.
  • Communicate openly on the mifos-developer mailing list.

Below is an outline of our coding standards, code submission process, and commit privileges process.  The full version of these policies are located on the wiki. 

Coding Standards

Write beautiful code that performs well for our end users.  

Coding standards are an ongoing discussion that we will continue to refine over time. Take into account the following when writing code (our full standards located in the wiki):

  • End user conditions - our user base is microfinance institutions. Write code that performs efficiently - power and connectivity are both intermittent, storage, RAM, & CPU are all very expensive.
  • Java Standards - code should be expressive, simple to read, non-repetitive and consistent. 
  • HTML Standards - focus on straightforward HTML and well-formed XML. Write javascript to W3C DOM. Don't use javascript when HTML or CSS can be used. 

Code Submission Process

The Guide to Submitting Successful Patches

All modifications done to the Mifos repository for fixing a bug or building a new feature must be submitted as a patch.  Below is a snapshot of the process to follow to ensure your patch will get accepted successfully. Follow the full guidelines in our Code Submission Process

  • Developing a Patch:  Write code to our standards that includes and passes all tests that exercise your code. Run a full maven build “mvn clean install” to ensure build succeeds.
  • Generate a patch: Use git format-patch and make sure your patch applies cleanly. 
  • Submit Patch: Email mifos-developer list with subject line [PATCH] and update the issue in issue tracker.

Our code submission process also outlines how to apply, accept, and reject patches.

Commit Privileges Process

How you can become a committer to the codebase

What do you need to do in order to gain privileges to push code into Mifos version control? Our commit privileges process is what you strive towards when working on our project.  Submit enough code and follow these guidelines and you can get active commit privileges.