際際滷

際際滷Share a Scribd company logo
Ending Poverty With Software Solving large problems with Open Source software, distributed teams, and Agile methodologies Adam Feuer, Van Mittal-Henkle, Adam Monsen Grameen Foundation Mifos Initiative
Poverty  a large problem Six million children die of hunger every year, 17,000 every day.  2.7 billion people live on less than $2/day  (World Bank poverty definition; 2001 data). 40% of the total world population of 6.8 billion 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 2.7 Billion Poor 4.1 Billion Non-poor
Microfinance is key to ending poverty Financial services for the unbanked  Smooths irregular income flows Provides cushion for emergencies Expands economic activity Vision is to eradicate poverty by helping the poor to help themselves. Yunus: Our grandchildren should have to go to the museum to see what poverty was like. Prof. Muhammad Yunus founded the Grameen Bank in the late 1970s in Bangladesh and successfully scaled profitable microloans to millions of people.  Nobel Peace Price 2006
Lending to women Typically  ~   98% loan repayment (recovery) rate. Microcredit customers are mostly women Group / Solidarity Lending is common, creating a bond among a group of clients. Often only Loans, not Deposit  (Savings) accounts (hesitancy among regulators)
油
油
油
油
Mifos  open source banking software  To reach 2 billion people, you need web-based, scalable software
Basic Stats 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 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
team/tools/code  late 2007 team development in fits and spurts no activity on IRC unsearchable, unmirrored mailing lists tools clunky ci server, manual backups, haphazard system monitoring subversion outages & performance issues (java.net svn) parallel tracking/planning systems (Mingle + Issuezilla) code cumbersome, unmaintainable build w/Ant (unknown jar versions!) didn't know what version of our code our largest customer is using monolithic codebase Mifos only ran in JBoss and was only usable from Internet Explorer insanely slow & cumbersome compile/edit/fix cycle
team/tools/code  Today! team scrum with daily standups, iterations, burndown this slideshow is a remix of one given by a volunteer awesome IRC channel searchable, multi-mirrored mailing lists tools Hudson CI server, tested backups, awesome monitoring via OpenNMS distributed version control (sf.net git) single, powerful issue tracker and planner (JIRA Studio) code predictable, modular build w/Maven (proper dependency management!) codebase divided into modules, API and plugins Mifos runs in any servlet container and is usable from any browser much improved compile/edit/fix cycle (Eclipse WTP) customers running known, tested versions of our code
Distributed, Agile, Awesome documentation on FlossManuals.net (crowdsourced barnraisicalized synergy!) http://en.flossmanuals.net/Mifos/Welcome distributed decision-making http://www.mifos.org/developers/wiki/DeciderViaEmail
Communication Bandwidth As an open source team, how can w e  we communicate most efficiently? The usual suspects:  Mailing List, Wiki, Project Tracking Tools (Bugzilla, Jira), IRC Higher communication bandwidth alternatives: Audio, Video, In Person Higher communication bandwidth has reduced time to convey ideas, reach decisions, build team cohesion (USA, India, Ireland, Australia, Ghana-Africa) Free tools that work for us Audio  skype Video  tokbox
Team = Product Great communication = great team Great team = great product
Mifos Technology Roadmap Legacy micro-finance web application  ->   financial services platform for offering serves to the poor Legacy code was monolithic and used: Hibernate, Struts, JSP Integrated BIRT reporting Lots of custom code: Transactions I18n Security
Mifos Technology Roadmap (Target)
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 mailing lists, participate on IRC Guide implementations on-site Write new or complete existing documentation Translate Mifos UI or documentation 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 can contribute.
Based on a presentation by Mifos volunteer Michael Vorburger http://vorburger.ch
Links http://www.mifos.org http://www.mifos.org/developers   - Developer start page http://www.youtube.com/watch?v=E0OGeRdluyU   Mifos Intro. Video http://www.gfspl.in  - Grameen Koota, Bangalore/India  MFI using Mifos http://www.mifos.org/developers/wiki/MifosVolunteerProjects  - Mifos volunteer projects page http://www.mifos.org/developers/wiki/TestServers  - try Mifos https://ci.mifos.org/hudson  - continuous integration http://ci.mifos.org/schema  - schema diagrams http://www.mifos.org/developers/wiki/MifosVersionControlGuide  - source code http://link.mifos.org/listserv  - mailing lists #mifos on irc.freenode.net &  http://www.mifos.org/developers/listserv/irc-mifos/irc-logs http://twitter.com/mifos  (@mifos)

More Related Content

Ending poverty with software using globally distributed teams to tackle difficult problems presentation

  • 1. Ending Poverty With Software Solving large problems with Open Source software, distributed teams, and Agile methodologies Adam Feuer, Van Mittal-Henkle, Adam Monsen Grameen Foundation Mifos Initiative
  • 2. Poverty a large problem Six million children die of hunger every year, 17,000 every day. 2.7 billion people live on less than $2/day (World Bank poverty definition; 2001 data). 40% of the total world population of 6.8 billion 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 2.7 Billion Poor 4.1 Billion Non-poor
  • 3. Microfinance is key to ending poverty Financial services for the unbanked Smooths irregular income flows Provides cushion for emergencies Expands economic activity Vision is to eradicate poverty by helping the poor to help themselves. Yunus: Our grandchildren should have to go to the museum to see what poverty was like. Prof. Muhammad Yunus founded the Grameen Bank in the late 1970s in Bangladesh and successfully scaled profitable microloans to millions of people. Nobel Peace Price 2006
  • 4. Lending to women Typically ~ 98% loan repayment (recovery) rate. Microcredit customers are mostly women Group / Solidarity Lending is common, creating a bond among a group of clients. Often only Loans, not Deposit (Savings) accounts (hesitancy among regulators)
  • 5.
  • 6.
  • 7.
  • 8.
  • 9. Mifos open source banking software To reach 2 billion people, you need web-based, scalable software
  • 10. Basic Stats 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 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
  • 11. team/tools/code late 2007 team development in fits and spurts no activity on IRC unsearchable, unmirrored mailing lists tools clunky ci server, manual backups, haphazard system monitoring subversion outages & performance issues (java.net svn) parallel tracking/planning systems (Mingle + Issuezilla) code cumbersome, unmaintainable build w/Ant (unknown jar versions!) didn't know what version of our code our largest customer is using monolithic codebase Mifos only ran in JBoss and was only usable from Internet Explorer insanely slow & cumbersome compile/edit/fix cycle
  • 12. team/tools/code Today! team scrum with daily standups, iterations, burndown this slideshow is a remix of one given by a volunteer awesome IRC channel searchable, multi-mirrored mailing lists tools Hudson CI server, tested backups, awesome monitoring via OpenNMS distributed version control (sf.net git) single, powerful issue tracker and planner (JIRA Studio) code predictable, modular build w/Maven (proper dependency management!) codebase divided into modules, API and plugins Mifos runs in any servlet container and is usable from any browser much improved compile/edit/fix cycle (Eclipse WTP) customers running known, tested versions of our code
  • 13. Distributed, Agile, Awesome documentation on FlossManuals.net (crowdsourced barnraisicalized synergy!) http://en.flossmanuals.net/Mifos/Welcome distributed decision-making http://www.mifos.org/developers/wiki/DeciderViaEmail
  • 14. Communication Bandwidth As an open source team, how can w e we communicate most efficiently? The usual suspects: Mailing List, Wiki, Project Tracking Tools (Bugzilla, Jira), IRC Higher communication bandwidth alternatives: Audio, Video, In Person Higher communication bandwidth has reduced time to convey ideas, reach decisions, build team cohesion (USA, India, Ireland, Australia, Ghana-Africa) Free tools that work for us Audio skype Video tokbox
  • 15. Team = Product Great communication = great team Great team = great product
  • 16. Mifos Technology Roadmap Legacy micro-finance web application -> financial services platform for offering serves to the poor Legacy code was monolithic and used: Hibernate, Struts, JSP Integrated BIRT reporting Lots of custom code: Transactions I18n Security
  • 18. 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 mailing lists, participate on IRC Guide implementations on-site Write new or complete existing documentation Translate Mifos UI or documentation 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 can contribute.
  • 19. Based on a presentation by Mifos volunteer Michael Vorburger http://vorburger.ch
  • 20. Links http://www.mifos.org http://www.mifos.org/developers - Developer start page http://www.youtube.com/watch?v=E0OGeRdluyU Mifos Intro. Video http://www.gfspl.in - Grameen Koota, Bangalore/India MFI using Mifos http://www.mifos.org/developers/wiki/MifosVolunteerProjects - Mifos volunteer projects page http://www.mifos.org/developers/wiki/TestServers - try Mifos https://ci.mifos.org/hudson - continuous integration http://ci.mifos.org/schema - schema diagrams http://www.mifos.org/developers/wiki/MifosVersionControlGuide - source code http://link.mifos.org/listserv - mailing lists #mifos on irc.freenode.net & http://www.mifos.org/developers/listserv/irc-mifos/irc-logs http://twitter.com/mifos (@mifos)

Editor's Notes

  1. How it works
  2. Encapsulate each functional area of Mifos as an OSGi bundle (module) that can be built, tested and maintained as an independent unit. Leverage Spring Framework thoughout appication stack Presentation layer can be included in the bundle for a given functional area, or separated out Groovy/Grails could be used Support plugins that extend functionality by leveraging OSGi service registry