Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

About the Mifos Initiative

About the Mifos Initiative

The Mifos Initiative is a global 501(c)3 fintech non-profit  leveraging the cloud, mobile & open source community to democratize financial services worldwide and digitally transform the world’s 3 billion poor and underbanked. We aim to create a world of 3 Billion Maries where everyone has access to the financial resources needed to create a better life for themselves and their family. Our unprecedented approach unites financial institutions, local technology partners, and volunteer developers to collectively advance open source banking infrastructure to sustainably build impactful innovations in digital financial services.

...

At the heart of our stack is Fineract 1.x, our  composable open source core banking platform that is highly scalable in the cloud and deployable via our reference apps and open APIs.  Coupled with our Mifos web app UI on top of these platforms, We provide a flexible account and wallet management system to enable the delivery of any digital financial service. Next in our stack is our Payment Hub EE which provides a gateway and orchestration engine to connect to real-time payment services and interoperable payment rails like Mojaloop and Mobile Money APIs  APIs  Think of Mifos as the DNA of financial services that can be put together into many expressions and Mojaloop as the connective tissue enabling low-cost payments across any system. On top of these open source rails and accounts are reference customer-facing mobile banking and mobile wallet apps which consume our Open Banking APIs and third party PISP APIs. We provide these open source building blocks of financial inclusion, train and certify a network of partners to build solutions with these building blocks, and support and sustain the collaborative infrastructure and ecosystem for these solutions to be scaled and distributed worldwide. 

...

This project will build off of the 2021 Season of Docs project which consolidated our documentation into one unified portal with separate spaces for developer and user documentation. Throughout 2021 and 2022, the community has placed a renewed focus on the Fineract 1.x codebase with major architecdtural refactorings to enable. In addition

This year's project will focus on updating and drafting documentation to refllect:

  • The new refactored architecture of the Fineract 1.x platform itself including changes such as 
  • Modularity framework - plugin-based approach 
  • The updated reference web app UI built on top of Angular
  • The production-ready payment hub EE
  • Improved deployability
  • Streamlined contribution process with more automated code checks
  • IMprove QA infrastrucxture
  • Optional - Mobile UI library 
  • This project will help provide a unified source of documentation to guide developers and implementers who are building on the stack, deploying it, and contributing to it. It will serve as the foundation of our developer portal which will accelerate innovation of new fintech solutions, ease the onboarding of new partners and contributors, and increase upstream contributions to the project. This consolidated documentation will provide an understanding of the entire landscape of solutions around Mifos and Fineract including the core banking platform and the ancillary web and mobile apps, and integration and API layers on top. It will help developers and implementers understand the two generations of architecture, which use cases each is ideal for and the boundaries of the project for them to build upon. It will help innovators deploy the platform and quickly get engaged so they can envision the experiences they can build,  and help guide new contributors to contribute back to the upstream project according to the Apache Way. 

Currently our documentation is spread out across multiple places including Confluence and Github wikis that we’d like to consolidate or at least link to consistently from one Gitbook for the community. A number of factors have led to this disjointed and fragmented documentation. 

  • The transition of the Mifos X platform to Apache Fineract as an Apache top-level project led to wiki documentation on both Mifos and Apache infrastructure.
  • The rollout of our next generation architecture, Fineract CN, has led to a split between technical, functional and end user documentation for the back and front-end applications for Fineract 1.x and Fineract CN. 
  • The gradual proliferation of more mobile and web apps for staff and customers along with ancillary solutions like payment hub, api gateways, chabots, credit scorecards, etc for both generations have led to confusion and a lack of documentation. 

The more unified we can make our documentation and show how the various components and solutions all fit together via  

With this solid documentation foundation in place, we now need to update our documentation to reflect the major transformation of our project at both an architectural as well as community infrastructure level. In 2022 we are releasing the most substantial evolution to the platform since its initial launch nearly 10 years ago. This major release will be titled Mifos X 3.0 built on top of Fineract 2.0 

Throughout 2021 and 2022, the community has placed a renewed focus on the Fineract 1.x codebase with major architectural refactorings to enable greater scalability and modularity. In addition we have released a redesigned and modernized version of the reference user interface for staff on Angular, our web app. Lastly our payment orchestration engine, Payment Hub EE has achieved production readiness and is now a more integral component of the end to end stack. . In addition to these enhancements at the platform, UI, and orchestration layer, we have significantly improved deployability through containerization, the contribution process through more automated code checks and analysis as well as the QA process through implementation of the Cucumber test framework. 

This year's project will focus on updating and drafting documentation to reflect this next major evolution in our platform and community infrastructure. 

  • The new refactored architecture of the Fineract 1.x platform itself including changes such as improved read/write separation of API calls, migration of database from MySQL to PostgreSQL, migration of ORM from OpenJPA to Eclipselink, introduction of Kafka for reliable event handling framework, transactional idempotency, and integraiton of Spring Batch for improved end of day processing. 
  • The updated reference web app user interface with modern components, material design, and skinnability built on top of Angula. 
  • The production-ready payment hub EE with additional payment connectors, enhanced operational interface, dashboards and visualizations, and notifications module. 
  • Greater deployability through improved containerization, terraform scripts and configurable Helm Charts 
  • Streamlined contribution process with more automated code checks
  • Improved QA infrastructure through Cucumber Test Framework. 
  • Documentation of Mobile UI library and SDK Components (Optional scope) 

The more unified we can make our documentation and show how the various components and solutions all fit together via live APIs and sandbox environments,  the more innovation and upstream contribution we can catalyze. 

Project Scope (35 - 40 man-days) 

The project will consist of a mix or re-organization and consolidation of existing documentation, updates and rewording of existing documentation and the writing of some new sections of content. 

We have several volunteers on the functional and technical side working ongoing updates of documentation. We do not have any technical writer yet identified for this project but they will extend upon existing documentation and the efforts of our developers. 

Reorganization & Consolidation

Documentation exists in multiple places and some of this documentation will be maintained in its current place but this developer portal will centrally link to the most up to date version of documentation. 

  • Design high-level information architecture that links to the various native sources of documentation that will still be maintained as the central source of documentation for that repo, etc (Github readme, confluence wiki, etc) (3 days) 
  • Provide recommendation on how documentation can seamlessly integrate into a developer portal (1 day) 
  • Organize sections and topics in current Gitbook documentation according to the currently proposed outline of project documentation across the various web, mobile apps, and solutions on top of the two generations of architecture. (4 days)
  • Work with volunteers to ensure outdated content is deprecated and no broken links are present in documentation.  (2 days)

Timeline: 10 person-days 

Update Existing Documentation

A wealth of documentation already exists but some of it needs to be elaborated upon, expanded, or updated to reflect more recent technical or functional changes to the software itself, changes to infrastructure or community processes, etc. 

  • Update architectural overview of our second generation Fineract 1.x platform to more accurately reflect monolithic app architecture and succinctly describe its multiple layers and updating the corresponding dependencies for each layer. (3 days)
  • Update architectural overview of our third generation architecture showing a high-level overview of the microservices, the underlying libraries and third party components its built upon and how the overall microservices interact with each other. (4 days) 
  • Updates to the description of each microservice on the wiki/readme to help implementers and contributors understand its purpose in the domain driven design and a functional/technical overview of each microservice. (5 days) 
  • Updates our recently written Swagger/OpenAPI documentation to have similar descriptions of each section as that of our static HTML API documentation.  (2 days) 
  • Update coding standards to reflect current community procedures after recent refactoring of implementation of more run-time static analysis and code quality scanning tools. (1 day) 
  • Update our guide on our contribution process and the Apache Way to more accurately reflect the norms and process for contribution and best practices of upstream development while still maintaining a production-ready version of a downstream solution.  (2 days) 
  • Update installation and  cloud deployment guides to reflect the updated tools and scripts that the community has written to support more of the DevOps advances that have been made around containers and Kubernetes and to reflect current releases and major dependency changes. ( 4 days) 
  • Update FAQs explaining difference between Mifos and Fineract. (2 days) 

Total: 23 person-days 

New Documentation

  • Draft high-level summaries of each project/repository/solution to show how the entire landscape of Mifos/Fineract software is connected to form a set of composable building blocks to create different financial services. (5 days) 
  • Draft an explainer on the new architecture originating from the technical reviews done by the community members to document the pros and cons of the new architecture, design decisions and rationale for the new architecture and which generation of the core platform (Fineract or Fineract CN) is ideal for which functional use case. (5 days) 

Timeline: 10 person-days

Review & Incorporate Feedback

Based on review of the above deliverables by project supervisor and volunteers, technical writer will implement feedback and refine deliverables

Timeline: 7 person-days

Project Total: 50 person-days

Out of Scope

The following items are out of scope for this project: 

...

refining existing documentation written by developers  and writing new documentation. A small portion of the project will focus on ongoing optimization, organization and consolidation of documentation.  

As part of the development process, our developers include a baseline level of technical and functional documentation. The technical writer chosen, will work alongside existing community volunteers to make the existing documentation more robust and draft new documentation where it doesn’t exist. 


Architectural Documentation (10 person days)

Major refactorings have occurred at every layer of the platform architecture - the documentation must reflect the changes and the impact it has upon development, deployment and performance.

  • Refine documentation on the enhanced ability to separate read/write API operations for greater performance (1 day)
  • Refine documentation for migration of database from MySQL to PostgreSQL including the migration from Flyway to Liquibase for database migration scripts (1.5 days) 
  • Refine documentation for tuning and indexing to optimize performance based on PostgreSQL and Eclipselink enhancements. (1 day)
  • Write new documentation on transaction idempotency and business and effective date configuration (1 day)
  • Refine documentation on new reliable event handling framework built on Kafka (2.5 days) 
  • Refine documentation on integration of Spring Batch for parallelization of batch jobs, running smaller chunks of batch jobs, ensuring no transaction conflict between real-time and batch processes including architecture of new framework, how to configure and schedule jobs, etc.  (3 days) 

Functional & Deployment Documentation (12 person days) 

  • Draft new documentation outlining functionality of payment hub, each of its new modules,  and use cases it supports (3 days) 
  • Draft new documentation on how to install, deploy and configure Payment Hub EE (2 days)  
  • Update documentation and screenshots in user manual to reflect design of new web app (2 days) 
  • Update and refine documentation to reflect new DevOps tooling for deployment of the platform and Payment Hub EE including Terraform scripts, Configurable Helm Charts, Kubernetes and Containerization Optimations (3 days)
  • Update critical documentation that is outdated or not clear including installation guide, reporting, SMS gateway configuration, and self-service user creation. (2 days) 

Collaboration Documentation (7 person days) 

  • Draft documentation related to automated code checks, static analysis, and other build-level automation that has been introduced to improve code quality and reduce friction of upstream contribution  (1 day) 
  • Update documentation on upstream contribution process and ensuring that contributors know how to properly configure Github to sync their downstream codebase with upstream project and do development in an upstream-first manner that is aligned with Apache Way  (2 man-days) 
  • Draft documentation for QA/testers on how to write new tests and leverage the Cucumber Test framework  (2 man-days) 
  • Draft documentation for developers on how to write code leveraging new Cucumber test framework for unit testing  (1 man-day)
  • Update FAQs explaining difference between Mifos and Fineract. (1 day) 

Standardize Documentation (5 days) 

For each of our projects we have a wealth of documentation that needs to be organized and arranged according to a standard format/flow:

  • Define standard for existing documentation and ensure each project’s user and technical documentation adheres to that standard format/flow:
    • For end-users - installation, troubleshooting common issues, system specs, tutorials, product overview, quick start guide, domain/topic explainers. (2.5 days)
    • For developers - contributing guidelines, project setup guide, troubleshooting tips, architectural description/overview, release notes/history. (2.5 days) 

Review & Incorporate Feedback & Draft Case Study (3-5 days)

  • Based on review of the above deliverables by project supervisor and volunteers, technical writer will implement feedback and refine deliverables
  • Draft season of docs case study 

Project Total: 35 - 40 person-days

Measuring Project Success 

Through workshops and surveys we continually hear from the community how we need to reduce the friction in the developer experience developer experience. We also have a dearth in qualified senior developers that we hope to scale up through better documentation. 

We would consider the project successful if, after the consolidation and updating of the documentation into a Developer portal:updating documentation to support the launch of Mifos X 3.0: 

  • Number of pull requests and upstream contributions increase by 20%
  • Number of onboarded partners new active contributors increase by 10 over a 3 month period. Number of new volunteers onboarded grows by 10 over a 3 month period 
  • Number of partners making contributions upstream increases by at least 5 additional partners. Number of new solutions developed by ecosystem grows by at least 3 new solutions powered by the APIs 
  • Number of questions on mailing list regarding to how deploy or configure the platform goes down by 20%

...