The Apache Fineract CN Community Roadmap is a community-driven guidebook to direct actions to ensure the survival and health of Fineract CN while serving the needs and interests of the community. It is subject to change and it is aims at inviting as many Fineracters as possible to make the project successful.
For each section of the road map below, there is some motivation why it has been added and a list of tasks to be completed. Some of these tasks are already on our Jira issue tracker while others are still to be created. Fineracters are well-invited to contribute ideas into this road map.
In phase I, the intent is to have the minimal viable product features while ensuring that the developer infrastructure is there for additional rapid development. That is, the intent is NOT to provide functional equivalency with Fineract1.x but to provide a developer stack that is sufficient to allow for other microservices to be developed and deployed.
Nice to have: solve for license compatibility and eliminate dependencies on Hibernate, MariaDB driver, and embedded MariaDB for component tests
In Phase II, the intent is to enable different "builds". We intend that fineract-CN solves the problem of divergent requirements by enabling combinations of microservices at build time ( at run time ?) that support different types of organizations (in apache parlance "users"). This is vital if the new architecture with its patterns are to prove useful to the community.
In phase III, all of the license issues must be resolved, continuous integration tests must pass, and functionality needs to be complete enough for a single type of institution (user) to have a MVP. This user can be a simple "direct to consumer" mobile banking wallet.
A. Eliminate "Category X" Dependencies
To comply with the Apache Software Foundation's Software License Criteria, the Apache Fineract CN code base needs to eliminate dependencies which have licenses on the Category X list. Hibernate and MariaDB-related software used in Fineract CN have the LGPL License which may lead to the following unexpected outcome which we wouldn't want to deal with.
1.) We include LGPL software in our release.
2.) Our code, including the LGPL dependency is included in proprietary code of CompanyOmega
3.) Some judge somewhere decides that the "firewall" separating our code from the LGPL isn't strong enough to call prevent the viral aspects of LGPL from taking effect.
4.) CompanyOmega's proprietary code is now all open source and they go out of business.
Even though it's not a likely sequence, but because of the size of the negative outcome, we avoid it by not including LGPL (or any other Category X software) in our releases.
B. Enable Local Development
To facilitate local development of Apache Fineract CN, it is important to optimize fineract-cn-demo-server to run on non-expensive non-Unix-like Operating systems with ease. These tasks help us achieve that by testing the initial-setup script to work in a Windows environment and run on non-expensive computers.
C. Optimize Continuous Integration Processes
Our current process of validating Pull Requests is quite cumbersome and our Continuous Integration/Continuous Delivery needs automation. To ensure that our CI/CD process more becomes more efficient and there's seamless merging of Pull Requests, it's important for us to onboard artifactory as well as enable automated testing and checks for adherence to our coding standards when new Pull Requests are submitted.
An Artifactory Into Build Process
Add checks for coding standards to unit tests
Add Java signature checking of API to unit tests
Run build and unit tests automatically when a PR is submitted
Change Other Builds ( libraries and services ) to refer to artifactory
D. Deployment Of Apache Fineract CN
Our community needs a publicly accessible demo server of Apache Fineract CN. For this to happen, we need to containerize the domain microservices of Fineract CN and The Apache Software Foundation needs to provide an Ubuntu VM with sufficient memory upon which to host deploy it. The following tasks (some of which are in progress) help us achieve that;
E. Building Mobile 2.0
G. Adjust Portfolio Service
H. Alternate Web User Interface