Mifos: Ending Poverty One Line of Code at a Time (Jazoon 2010)
1. Ending Poverty One Line
of Code at a Time
Mifos - the Grameen Foundation's
Java-based Microfinance application
Michael Vorburger
Odyssey Financial Technologies
#170
2. $ ls presentation/
> About Speaker
> Intro / Step back
> What's Microfinance?
> What's Mifos?
> You?
2
3. $ whoami
> Day job as Development Manager for the Design Studio
product at Odyssey Financial Technologies, a leading
financial technology company for the Private Banking,
Private Wealth Management and Asset Management
industries, with over 200 financial institutions in more than
30 countries as clients.
> Trivia: Jazoon 2007 speaker (“Pragmatic Model Driven Development (MDD)
using openArchitectureWare”), co-author of “Core Java Data Objects” book;
Android and Twitter addict! ;-)
> Mifos volunteer; so far mostly infra, some minor patches.
(No official affiliation with the Grameen Foundation)
> Lives & works in Lausanne, Switzerland.
3
4. $ ls /dev
Java Tomcat HTTP HTML CSS Struts XML Hibernate ORM JPA
Eclipse JDK JS MySQL Reporting Open Source PDF Security
Testing Spring Git Maven SSL Apache Hudson Subversion
Performance BIRT
> All of you here know about this good stuff – but what do YOU use these
technologies FOR?
> For the next 20', let's together look at why, how and towards what goal
project Mifos uses all of the above...
4
5. printf(“Hello World”)
> Six million children die of hunger
every year, 17,000 every day.
> About 2.7 billion people live on less
than $2/day (World Bank poverty
definition; 2001 data).
> At a total world population of 6.8
billion - that’s 40% ...
> http://en.wikipedia.org/wiki/Poverty#Absolute_poverty
> http://en.wikipedia.org/wiki/Theories_of_poverty#Poverty_as_restriction_of_opportunities
> http://en.wikipedia.org/wiki/Extreme_poverty
> http://adamfeuer.com/2010/02/27/scaling-microfinance/ 5
6. $ man Microfinance & Microcredit
> Microfinance provides financial services to > Women form the huge majority
very low-income clients who lack access to of microcredit customers.
traditional formal banking services.
– “Banking for the poor”
> Group / Solidarity Lending is
common, creating a bond
> Prof. Muhammad Yunus founded the among a group of clients.
Grameen Bank in the late 1970s in
Bangladesh and successfully scaled
profitable microcredits to millions of people. > Typically ~ 98% loan repayment
– Nobel Peace Price 2006 (recovery) rate.
> The Vision is to eradicate poverty by
empowering the poor to help themselves.
> Often only Loans, not Deposit
– Yunus: “Our grandchildren should have (Savings) accounts (hesitancy
to go to the museum to see what
poverty was like.” among regulators)
6
7. $ what MFI Users Clients
> A Microfinance Institution (MFI) lends the money to their Clients
– Typically “small” amounts ~ $100-ish
– MFIs range from small non-profit organizations to large commercial
banks, with 90% of the available money going to the 130 largest MFIs.
> Loan Officers meet clients typically (bi)weekly to collect repayments. They
often travel by riding bikes or motorbikes to the MFI's clients in the field.
– MFI is normally urban, while clients are both urban (shopkeepers, service
providers, artisans and street vendors) and rural (e.g. small farmers)
> Mifos is the software used at the Microfinance Institution headquarter and/or
Field Office. The Loan Officers are the “users” of the Mifos application in the
technical sense.
7
10. $ man GrameenFoundation
> Grameen Foundation USA "was founded
to help microfinance practitioners and
spread the Grameen philosophy
worldwide (…) to enable the poor to
create a world without poverty”.
– Progress Out of Poverty Index™
– Bankers without Borders®
(Volunteers)
> Grameen Technology Center:
> MFI financing, helping with growth;
provides loan guarantees for 50+ MFIs – Mobile Financial Services
in 22 countries, link to capital markets – Mobile Health
> Replicate successes elsewhere – Village Phone
– AppLab
– Mifos! 10
11. $ man Mifos (MIcroFinance Open Source)
> Technology remains one of the major barriers inhibiting the
expansion of microfinance globally. Many MFIs are reluctant to
invest their limited resources in technology.
> To help microfinance scale to reach the hundreds of millions in
need, Mifos transforms technology from a barrier into an
accelerator for microfinance.
11
12. fstat(“/dev/mifos”)
> http://sourceforge.net/projects/mifos/ registered 2004-11-19
> Initial release (and some early publicity) in 2006
> Winner of JavaOne 2009 Duke's Choice Award
for Best Java Technology for the Open Source Community
> Google Summer of Code (2009 & 2010) student volunteer programs
> Today
– About 214 database tables
according to SchemaSpy job on http://ci.mifos.org/schema/head/latest/
– About 120'000 Lines of Code (NCSS, Non Commenting Source Statements)
according to Sonar report on http://ci.mifos.org:9000/project/index/1
> Very active mailing list, bug tracker, and IRC channel
12
13. $ arch --today
> Classical (2005-ish) Java web app non-EJB architecture!
– “MySQL / Hibernate / Struts / JSP”
> Eclipse BIRT used for some reporting
> Layering dependencies direction
not yet perfectly clean; somewhat
“heterogeneous” when you look
at the code... (as many in-house
applications are as well!)
– Changing technical ownership
– Elements of future architecture
being incrementally added (e.g.
Spring already, sometimes..)
– Functional Focus
13
14. $ arch --future
> This is a “Future Architecture”
diagram from a year ago...
– Spring Core for IoC used now
– Templating via Freemarker started
– Spring MVC not really used
– OSGi transition not made
14
15. $ cat Breakpad (Challenges)
> “Concrete lessons learned, and challenges,
from the various deployments world-wide” :
> Better reporting (“Business Intelligence”)
– Going from tech. BIRT engine integration
to 15 std reports on a DW (Talend / Kettle
ETL) for BI
> The Cloud! SaaS / PaaS (AKA Hosting)
– For small MFIs
– Early Amazon EC2 hosted service offering
> Integration & data migration tools and services
– For large MFIs, with existing systems
> Offline & Mobile 15
16. # ifdown eth0 (Mifos Offline)
> Re. Internet connectivity:
– Head or branch office is typically in a Internet-connected urban environment
– Typically the Loan Officers in the field “interface” the clients to the MFI, paper-based
and manual updating of MFI's MIS in head or branch office (“collection sheet” feature)
> Making this process more efficient and less error prone is of interest... technical solution
could be based on (from various recurring posts on the mailing list) :
– Saved HTML v5 offlineable “application” (formerly Google Gears), for laptop or mobile
– Simply an excel sheet import?! (carrying around any laptop, even fairly old)
– Java ME (J2ME) Application (widely available phones; or fancy Android/... smartphone)
– Mobile web UI accessed via data plan enabled phones (availability?)
– SMS gateway-based integration?
> Such a project needs primarily needs “functional” analysis, and local understanding of the
real user need, and then the actual “technical” solution...
16
17. # ifup wlan0
Mifos Mobile integrations
> If the clients (the ultimate borrowers) could be
brought “closer” to the MFIs, this would decrease
the hassle of banking for clients, and dramatically
decrease costs for MFIs, since each loan officer
can handle more clients / less loan officers would
be needed.
> Emerging “Mobile banking” is an interesting
natural fit for Microfinance... seach the web
e.g. for M-PESA to learn more
(http://en.wikipedia.org/wiki/M-Pesa)
> Mifos is doing a first such integration,
with M-PESA
17
18. # nmap Mifos (Deployments)
> Mifos is in production in Microfinance institutions in...
– India:
Grameen Koota, headquartered in Bangalore (500,000 clients)
ASOMI – Assam, India (33,000 clients)
Adhikar - (83,000 clients)
– Tunisia: ENDA, Tunis (120,000 clients)
– Philippines: SECDEP, Iloilo (8,000 clients)
– Kenya:
Jitegemea Credit Scheme, Nairobi (6,000 clients)
KEEF – Nairobi (M-PESA integration) (13,000 clients)
– smaller ones also in Senegal and Ghana; and more than a dozen
additional active deployments in progress in: India, Philippines, Kenya,
Nepal, Mexico, Mozambique, Lebanon.
> More than 750'000+ clients accounts managed in Mifos deployments!
18
19. # nmap Mifos (Deployments)
Open Source MIS Initiative Current Release – Mifos 1.5 Mifos Cloud
launched by Grameen Mifos customers Launched in 2009
Foundation in Nov 2006 serving 750,000+ globally
ASOMI
Assam, India
Adhikar
33,000
Orissa, clients
ENDA India
Tunis, Tunisia
Mifos 120,000 82,000 Grameen
HQ clients clients Koota
SEM Fund
Bangalore,
Senegal Al Majmoua India
Beirut, 500,000 SECDEP
1,000 Lebanon Clients
clients 20,000 iloilo, PH
Clients 8,000
Jitegemea clients
KEEF
Nairobi,
Nairobi, Kenya
Mifos Customers Kenya
13,500
6,000 clients
Regional Mifos Presence
clients
In-progress deployments
21. $ talk you@mifos.org – Get Involved!
> Join the global collaborative Mifos community and united effort to build and
extend this platform that fuels innovation from the bottom up and empowers the
poor to ascend out of poverty. There are many ways to get involved:
– Build acceptance tests
– Find & fix bugs (look around JIRA for open issues you could have a go at)
– Answer questions on users mailing lists
– Guide implementations on-site
– Write new or complete existing documentation
– Localize by translating documentation or Mifos UI using Pootle
– Localize by building local region-specific reports
> Get on the mailing and/or IRC and say Hello!
People will point you to how and where you could contribute...
21
22. Acknowledgments
> This presentation was prepared based on some material from, in
collaboration with and reviewed by the grameenfoundation.org's
– Edward Cable
– Adam Feuer
– Adam Monsen
– Van Mittal-Henkle
– Jeff Brewster
– Emily Tucker
> Thank you!
22
30. Documentation
> Look, there is even
real end-user
documentation! ;)
30
31. Mifos Arch.
> Internal services
coming along nicely;
logical next step is
remotely exposing a
service façade... via
WSDL/SOAP and/or
REST API
> Grails (Groovy) or
Spring Roo being
thought about for a
possible front-end
re-make...
> Sexier UI via jQuery
(with GWT?)
mentionned...
> Sounds
familiar??
31
32. Mifos in the Cloud
> Particularly small MFIs generally don't have the
people and other resources to run an enterprise
application on their own premises by themselves, or
host it themselves. Having the the application hosted,
with managed backups, monitoring, software
upgrades, etc., is what MFIs want - and reduces the
friction of getting it up and running.
> A “click-and-go solution” on the cloud helps a lot and
is quite feasible. Mifos already has an early Amazon
EC2 hosted service offering, and small MFIs can just
do data entry to get their data into Mifos.
> Lacking key functional features for this is integrated
accounting, being worked on for several regions
(accounting solutions vary by country).
32
33. Mifos Business Intelligence (Reporting), Data Warehouse
> Functionally very important! A typically less
“sexy” topic for many Java developers, but
essential piece of the solution for MFIs to
run their business.
> Complete end-to-end business intelligence
system coming soon; will be built using
open source tools...
> Based on data warehouse architecture
> ETL system - for keeping the data
warehouse up to date, using probably
Talend and/or Kettle ETL tools
> Reporting server with capability to serve
HTML, PDF, XML, CSV, or other report
formats
> Goal: 12-15 good standard reports
33
34. About Mifos (MIcroFinance Open Source)
> Microfinance has proven its power to alleviate global poverty by harnessing and
unleashing the entrepreneurial spirit of the poor.
> Technology remains one of the major barriers inhibiting the expansion of
microfinance globally. Many MFIs are reluctant to invest their limited
resources in technology.
> To help microfinance scale to reach the hundreds of millions in need, Mifos
transforms technology from a barrier into an accelerator for microfinance.
> Mifos is an open source technology platform for the microfinance industry. At its
core is an enterprise-level web-based management information system (MIS) which
gives MFIs a cost-effective, flexible system providing the key functionality needed to
deliver the entire operations of effective financial services to the poor: loan portfolio
and client management, transaction processing, and real-time business and social
insight.
> Using Mifos, MFIs are able to grow more efficiently and extend more in-depth
financial services through greater transparency, better agility, and broader visibility
into their impact on the poor.
34