Mission/ Vision:
At Apache Fineract, our mission is to build, maintain and enhance a cloud-ready core banking system for robust, scalable, and secure operations of financial institutions.
We believe in financial services for everyone, including and especially for the unbanked and underbanked.
We primarily build the backend system, the headless application.
Priorities
- Make it easier and more maintainable for outside "users" (implementers) to extend the system rather than fork the code
- We value both the ability to "build on top of" in an external system way and "build capabilities within"
- For the "Build on Top Of", we need more attention to API documentation and recommended approaches
- For the "build capabilities within" we introduced in Release 1.8 the Custom_Module concept which needs additional documentation and also improvements in the direction of Liquibase migrations (for out of bounds modules)
- Enhance and improve Quality and Security
- We observe that security is also a function of well-executed approaches
- We will continue to improve on Pull Request reviews and work to ensure good contributions that meet the necessary standards
- For security, we will fix certain design areas (to be discussed on Security List)
- We will consider and use a Fineract Improvement Proposal (FIP) concept for process
- Build for stability, maintainability, and scalability.
- we are especially noting that the Loan Module needs refactoring to improve maintainability
- refactoring will also be aimed at improving stability (and make it easier to find the bugs) and as a side effect will improve performance
- the lack of consistent refactoring is also a problem and we prioritize a wider implementation of the same coding patterns across all modules to ensure stability of the project as well as maintainability
- Make the project more approachable
- This starts with the right sort of documentation
- We assume that people come with either a "developer need" (need to understand how to deploy, how to do dev on top of, how to understand a specific pattern ) or a "business need" (what are the capabilities)
- We have a number of documentation efforts including the ASCII doc (not well linked to) and the Swagger API documentation (too manual for now) and we need a high level effort here
HIGH LEVEL ROADMAP
Q4 2022 | Q1 2023 | Q2 2023 | Q3 2023 | Q4 2023 | Q1 2024 and BEYOND |
---|---|---|---|---|---|
SprintBatch Event Framework | SpringBatch COB Event Framework | Upgrade to SpringBoot 3.0 | |||
Tenant improvements | Tenant improvements Scalability Checks | ||||
Self_Service out, refactor as service | |||||
Improvements to Batch processing | |||||
improvements (e.g. Data table access) | Removing cruft , initial refactoring of loan class | Refactoring Loan Module Payment Accounts (and related payment tranx) | Revolving Line of Credit | Treasury Management module | |
Documentation on wiki redone to point to Ascii doc | Improvements to Swagger API auto generation | Business and user documentation |
High Level Proposed areas of development (all are possible, only some are going to be acted upon)
The above roadmap shows the high level areas of development. Q4 work is retrospective.
- Existing work ongoing on Scalability, Batch processing, Event generation - improvement coming and also will need more attention
- Making progress on the Loan Module , cleaning it up, paying down "code debt", making it more maintainable and enhance performance by streamlining the code
- Creating high quality standards for new commits so that we avoid new code debt especially in this area (i.e. stop digging the hole)
- Fineract Improvement Proposal (FIP)
- Documentation of the project
- Using automated tools (ASCII doc) that exist in the git next to the code (DONE)
- Deprecate much of the wiki pages - highlight the ASCII docs
- Create flow of wiki that suites the two audiences (business vs developer)
- Need wiki pages for Capabilities documentation (as a kind of updated "user doc")
- Need API documentation auto generated
- Need liquid base change script improvements for not-known liquibase change sets based on new custom modules ( in their own namespaces) , some kind of "orchestration" concept that outside groups have to... maybe better documentation
- DSLQuery or JOOQ for enhancing security
- CAMPT.052 for ISO compatible batch concept, refactoring "note field" i.e. a JSON representation of the transaction set
- SpringBoot major release 3.0 (JDK release process -like ) / they currrently only support 2.6 and 2.7 and we are on 2.7 / so we are close to end of life
- Reporting module
- Fixes for POSTGRES implementations (existing queries in code base and uncovered by tests) - coming as a fix
- Completing features across the board (events applied to outside of loan module)
- Payment Accounts (scalable, avoid optimistic locking, throughput, refactor of balance calc )
- Command processing service - implementing retry mechanism in case of optimistic locking problems (multiple transactions on the same account/ improved implementation)
- Message Queues and response mechanisms
- Refactor and Remove all security framework and place instead with outside OpenPolicy notes / at idea stage **See notes
- Extension points for the Customer model, i.e. support external KYC providers and external third party systems
- Data export capabilities to external data lakes (might be mostly documentation)
- Security model enhancement by proposing a deployment architecture behind appropriate firewalls and API gateways (documentation)
- Isolate "Self Service APIs" to prevent inadvertent use
- Generic revolving line of credit (as a plug in or in a new way that enhances extensibility of the architecture) , maybe a new microservice?
- Better extension points for Full Treasury management system (APIs and new funds movement configuration)
- Better documentation and perhaps a micro service that performs upgrade from version A to version Z
- Payment Accounts (limited "current account" functionality, strip out interest and other features of savings component and create as a new concept). aka "wallet accounts"
- Merchant account feature?: Down payment on a "Purchase Event" , introducing the idea of a merchant account where full "good funds received" payment is made into account by source of funds being "purchaser" plus "financing source"
Tickets
Link to Epics and Key Jira Tickets that express the high level stuff
COMING
Anti-Roadmap
- Anti-roadmap seeks to avoid feature-creep that muddy the application
- Anti-roadmap in an open source project also provides the "missing" components that vendors can then develop as a deeper solution.
Things we will not prioritize
- UI: The UI is already hosted by Mifos as open source, we will not prioritize a UI on fineract / Fineract remains a headless application , i.e. API driven
- Reports: other than Elastic Reports on Fineract that can be leveraged , or the Mifos reports also open source
- Payment gateway/connector: The PaymentHUB at Mifos already connects to Fineract and is an open source solution, this includes ATM connectors, UPI connector, checks, etc.
- Complex Customer onboarding workflows
- Full KYC/AML/CFT solution
- Full Treasury features
- Teller management features
- Branch cash management and treasury features
- Loan Origination complexity
- Document management
Not considered and therefore no action→ items highlighted on JIRA as potentially useful for consideration in Roadmap 2022.