Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: added Mifos X on "Enterprise Stack" - IBM WebSphere and Oracle WebLogic tests & documentation

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

...

MentorsJames Dailey
Overview & Objectives

Pay-as-you-go mobile phones have revolutionized access to telecom, the same can be done with solar energy access. Off-grid installations of PVC panels and batteries can be pared with a mobile payment mechanism to allow clients to purchase power "as they use it". This functionality will allow organizations to become involved with 3rd party providers of solar systems.

Description
  1. Create a pre-paid account mechanism as an account type or account option in Mifos (perhaps extending existing classes), zero fees.
  2. Create a new API for consuming pre-paid account balances.  
  3. Create a simple external model that mimics consumption by a household on a daily basis - imagined as a set of data received from solar panel (watts used, time of day, volts present).  
  4. Load up pre-paid account by account transfer in P2P interface (my phone to your account) or via trusted agent - i.e. trusted agent receives cash and loads account on Mifos.
Helpful Skills SQL, Java, Javascript, Git, Web Services
Impact

Providers of pay-as-you-go solar can use MIFOS for their operations. MFIs can become such providers.

Other ResourcesMobile project on MifosX

...

Mentors Nayan Ambali
Overview & Objectives

At present MIfos X platform is shipped with Community-App (SPA) as default UI, but initial load time of the application high. And for users on narrow bandwidth internet it takes a considerable amount of time to load the app.

Instead of loading the app every time, we can convert the Community-App into a Chrome App and user can download them once and install it ion the machine, and it can used as thick client.

Description

Community-App is completely developed on top of JavaScript, CSS and HTML. And Chrome apps are also written in same stack. Using grunt we should be able to repackage Community-App(SPA) into Community-App(Chrome App)

Helpful SkillsJavascript, AngularJS, Grunt
Impact

Users with slow internet connectivity can use this app (Installed on the machine) instead of loading Community-App (SPA) on the browser. Users will also have a continually updated app. This will also allow MFIs to potentially use Chromebooks as field-based devices for their branches.

Other Resources  http://developer.chrome.com/apps/angular_framework.html

...

Mentors 
Overview & Objectives

This project would seek to create one unified ID/login and profile for community members similar to the OpenMRS ID. It would achieve the following two primary objectives:

  1. One unified profile and identity for community members in which they can share with the community who they are and also build reputation and recognition. This ability to discover and self-identify with other community members is difficult when we have so many different tools and profiles to maintain.
  2. Single Sign On for our various collaboration and community infrastructure tools listed below.

 

Description
  1. Identifying a single sign-on authentication protocol that ties together authentication of our various community collaboration tools: 1) Atlassian Studio - JIRA, Confluence, JIRA Agile, 2) Social Q&A - AnswerHub 3) Mailing Lists - Mailman (administered through SourceForge 4) Source Code Version Control - GitHub 5) Continuous Integration - Jenkins 6) General Community Website (mifos.org) - Wordpress 7) Partner Directory
    1. This could be built out independently, tie into some OpenID protocol, or leverage one of our existing tools for this authentication - Atlassian Studio/Crowd or AnswerHub or another common OpenID protocol. 
  2. Design and implement a dashboard to handle the creation of this unified ID
  3. Design and create a common profile tied to this ID with basic information and photos that is searchable by the community.

Design a profile

Extra Credit:

Helpful Skills 
Impact

Impact is two-fold:

  • Common unified profile and identity can help to grow collaboration and participation in the community. By being able to simply share who you are or discover who's in your community, we can deepen the bonds of community which motivates each member to participate more often and invest personally in the health of the community. Building reputation and recognizing efforts of each type of community member (users, partners, volunteers, etc) in a tangible way also helps to increase participation.
  • Single sign-on will it make much easier for community members to collaborate and communicate. Right now there is often a high barrier to signing up for the various tools - SSO will make that process easier but also encourage others to more regularly be involved.

 

Other Resources

Make Mifos X DB-Agnostic - Flexible configuration

...

allowing other databases, incl. tests & doc on Oracle

MentorsAnuruddha Premalal
Overview & Objectives

Initial version of Mifos X was not designed to be database agnostic. Goal of this project is to make it so, and test this out in practice by running it locally on Oracle, make sure our test suite runs against Oracle as well as mysql, and well documenting how this can be set up by end-user clients, if they wish to go for this deployment.

Description

To make this possible, all business logic has to be concentrated in the middle tier with the database being as dumb as possible. This means the platform does not rely on any database specific stored procedures or on the database to generate unique keys.

Description

And also application heavily use prepared statements (Spring jdbctemplate) for retrieving data and need to make sure all these queries use full JOIN syntax, and bracket the JOINs so that each join is between a single table and bracketed expression.

Helpful SkillsSQL, Java
Impact

MFI with large client base can use the application with Oracle or any other commercial databases.

Other Resources

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

...

MentorsAnuruddha Premalal (plus Michael Vorburger, as needed)
Overview & Objectives

Primary objective of this project is to build a standalone installer for MifosX platform. Standalone installer is a great way to evaluate and explore MifosX platform quickly. We want:

  • Possibility of Mifos self-contained demo package
  • Simple / easy launch of integration/acceptance testing, without requiring an external DB
  • Development without manual MySQL installation
Description

Standalone installer will consist of an embeded apache server and a DB. It should also ship with the latest mifosx build war file which should automatically deployed
on to the embedded server at the installation time.

1. Develop the installer as an executable jar format so that it will support many platforms with JRE.
2. Provides a simplified installation option with an embedded data base and a server.
3. Develop GUI and command line base installation modes.

GUI MODE OPTIONS
================

Tomcat Port This is the port at which to run tomcat.
MySQL Port This is the port at which to run mysql
File > Quit This menu item stops tomcat and mysql and then closes the application.
File > Launch Browser This menu item opens the MifosX login page for the current web application context.
File > Clear Output This clears the output log in a user interface text area. But does not clear the log file which will written on the file system.
Start This button runs tomcat, which will automatically start the mysql database engine if it was not already running. For the embedded mysql, the first connection automatically starts the mysql engine.
Stop This button stops tomcat and then also stops the mysql database engine, without closing the application.

COMMAND LINE OPTIONS
====================

-mysqlport Use to override the mysql port in the runtime properties file.
-tomcatport Use to override the tomcat port in the runtime properties file.
-start Use to start the server.
-stop Use to stop the server.
-browser Use to launch a new browser instance.

This sub-project would port / apply our MIFOS-5157 Installer-free simple launcher from classic Mifos to Mifos X, and then look at how to extend such a package to run without any existing external database as planned in MIFOS-4926 (which MIFOS-5157 doesn't cover). The first thought that comes to mind is to achieve this with a pure-Java in-memory database such as H2 or Derby. However, in order to avoid maintaining & supporting 2 different databases for Mifos, we'd like to base this on https://github.com/vorburger/MariaDB4j. While we are at it, we should also replace the classic GPL mysql driver by the LGPL MariaDB Client Library.

Helpful Skills SQL, Java, Javascript, Git, Web Services, Big Data (Hadoop, Hive)
Impact

For many microfinance institutions who lack technical skills, installing Mifos X is a burden that prevents them from using this software to more efficiently serve the poor. Often they get lost in the installation process when having to separately install java, their web server, MySQL, and then deploy Mifos. A self-contained package acting as a simple one-step installer for Mifos would help make the software more accessible to more organizations and allow for MFI to more easily test the software and see the immense value it provides.

Other Resources

https://wiki.openmrs.org/display/docs/OpenMRS+Standalone
https://github.com/openmrs/openmrs-standalone
https://github.com/openmrs/openmrs-standalone/tree/master/src/main/config

See Linux Installers wiki page

Mifos X on "Enterprise Stack" - IBM WebSphere and Oracle WebLogic tests & documentation

Mentors?
Overview & Objectives

Mifos X today is typically used on Tomcat (with Jetty known to work). For a certain class of users, testing it on "Enterprise Stack" application servers (meaning IBM WebSphere and Oracle WebLogic) is desirable - this project would properly test Mifos X on these configurations, make any adaptations to the code which may be required, and produce easy to follow documentation or even small tools helping future users how to go about this.

Description

This project could be combined with and taken up by the same candidate as the Enterprise database project.

Helpful Skills

Java, Application Server configuration, WAS classloading crap tricks, documentation writing.

Use Cargo, Arquillian etc. for automated testing against WAS & WLS containers?

ImpactEnable Mifos X to be considered by users wanting it to run (only) on an Enterprise stack

 

Other Resources

Vendor pages

Mifos X SDK

MentorsMichael Vorburger & ? (I'd need functional assistance...)
Overview & Objectives

The Mifos X platform as of today is a well structure but monolithic code base - one Git repo, one build, one WAR. This has worked out well for us, but as we grow, it could be interesting to introduce a proper SDK and plug-in concept, allowing contributors to build individual JARs that can be dropped into a certain directory of Mifos X to augment the core platform on well defined extension points and hooks. These modules would be loaded at run-time, not require rebuilding Mifos X, and would remain compatible when a customer upgrades their core platform version.

We currently see the SDK as something more relevant to the Java back-end, so in this project you would likely work less on our AngularJS UI (barring some configuration UI for the plug-ins probably); but if you do have any ideas how to make the front-end more modular and extensible as well, we would love to hear from you.

Description

This project will have three axis/phases: 1. platform infrastructure framework kind of work, based on a very simple or fictitious example extension; 2. identifying the functionally which could require / be sensible to extend in Mifos X, extracting clear and documented Java APIs from it, and then make changes to existing functional platform services to make them extensible by plug-ins; 3. well document this - such plugins will only be written if it's easy and clear how to do this. Note that the more technical part 1. should only take about 1/4 of your project, the focus will have to be putting the "theory" from 1. into "practice" in phases 2. & 3.

Helpful SkillsJava, modularity, API design, dynamic class loading, OSGi-like concepts (without any plans to actually move Mifos X to running on an OSGi kernel; it's unnecessary complexity, for this)
ImpactDevelopers from partnering organisations would be able to more easily extend the core Mifos X by extension code running in-process the platform (as opposed to REST-based
Other Resources

Many other Java-based platform have such mechanism, and you would be expected to draw at least conceptual, if not outright technical inspiration (re-using code, if feasible) from things like the Eclipse Plug-In architecture (or similar non-OSGi based ones in other IDEs), research if Spring itself or some extension from someone has anything useful for this (think like Guice Multibindings plus ServiceLoader API as discussed on this StackOverflow, or this blog, or these Mycila Guice Extensions; but without going all the way to OSGi-based Spring DM / Dynamic Modules; again, overkill, here), get inspiration from drop-in add-on modules extension capabilities in enterprise software such as e.g. Atlassian plug-in framework, and learn how e.g. our friends at OpenMRS do this (see OpenMRS SDK doc and OpenMRS project).

...