Versions Compared

Key

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

...

Contents

...

fineract-client-feign usage for integration tests

Note:  GSOC applicants - this is a "draft concept".   Do not work on your proposal until we kick off the process at Fineract for evaluating.  We may significantly edit this concept or create new ones to replace it.  

No one should work on this specific ticket unless assigned - the GSOC candidate we choose will be assigned this ticket.  

For more information, you should be reviewing emails on this subject and following the Wiki pages. 
https://lists.apache.org/list.html?dev@fineract.apache.org
https://cwiki.apache.org/confluence/display/FINERACT/GSOC+Program+at+Fineract 


"Moving away from RestAssured (low-level) API calls in integration tests and rather use fineract-client-feign would be a great improvement" 

Summary (with some assist from chatgpt for clarity) 

Apache Fineract has a large set of REST APIs and many integration tests currently call those APIs using RestAssured(low-level HTTP requests). This ticket is to help modernize the tests by switching them to use fineract-client-feign, which is Fineract’s higher-level API client. 

Goal

Create a simple migration approach and then migrate a small set of integration tests from RestAssured to fineract-client-feign.

Why we’re doing this

  • Makes tests easier to read and maintain (less raw HTTP code).
  • Encourages consistent API usage across tests.
  • Reduces duplicated request-building logic (headers, base URLs, auth, etc.).

Scope of Work

1) Create a short migration plan

Write a short note (in the Jira ticket comments or a small doc) that answers:

  • Where are the current RestAssured-based integration tests located?
  • What’s the recommended pattern for using fineract-client-feign in tests?
  • What should be migrated first (start small)?

2) Pick a small “starter set” of tests

Identify 2–5 integration tests that:

  • Are simple (e.g., create/read/update a resource)
  • Don’t involve complicated multi-step workflows
  • Run reliably in CI

3) Implement the migration for the starter set

For each selected test:

  • Replace RestAssured calls with fineract-client-feign client calls
  • Keep the same assertions (same expected behavior)
  • Ensure the tests still pass locally and in CI

4) Document the new pattern

Add a short README note or comments in the test code showing:

  • How to initialize/configure the Feign client for tests
  • How auth/session is handled
  • A small “before vs after” explanation (1 paragraph is enough)

Acceptance Criteria

  • A brief migration plan is written and linked in the ticket.
  • At least 2 integration tests have been converted to use fineract-client-feign.
  • All tests pass (locally and/or in CI).
  • A short note exists explaining how to write future integration tests using fineract-client-feign.

Notes / Hints for a beginner

  • Start by converting just one very small test to learn the pattern.
  • Keep changes small and easy to review (one test per commit is ideal).
  • If something is unclear (e.g., how auth is set up), add a comment in the ticket describing what you found.

Out of Scope (for this ticket)

  • Migrating all integration tests across the repo
  • Refactoring production API code
  • Changing API behavior—this is only a test client swap
Difficulty: Minor
Project size: ~350 hour (large)
Potential mentors:
James Dailey, mail: jdailey (at) apache.org
Project Devs, mail: dev (at) fineract.apache.org

Add DPG Badge to Fineract website and README

As requested by James Dailey on the mailing list, add the Digital Public Goods (DPG) badge to the project website and the main repository README following the DPG Alliance usage guidelines.

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Ambika, mail: ambikasony (at) apache.org
Project Devs, mail: dev (at) fineract.apache.org

[GSoC 2026] [POC] Standardize and Harden Transaction Idempotency for Savings and Loans

Goal: Standardize idempotency enforcement to prevent replay attacks in core financial modules. Implementation Strategy (Addressing James Dailey's feedback):

  1. Opt-In Architecture: New logic will be behind a Global Configuration flag. Default remains legacy behavior to ensure 100% backward compatibility.
  1. Phased Approach: Audit existing m_portfolio_command_source usage and bridge gaps in the Savings module first.
  1. Testing: Implementation of integration tests simulating network failures/retries.
Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
saifulhuq, mail: saifulhuq (at) apache.org
Project Devs, mail: dev (at) fineract.apache.org

Add DPG Badge to Fineract website and README

As requested by James Dailey on the mailing list, add the Digital Public Goods (DPG) badge to the project website and the main repository README following the DPG Alliance usage guidelines.

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Ambika, mail: ambikasony (at) apache.org
Project Devs, mail: dev (at) fineract.apache.org

Apache NuttX

Apache NuttX

Create a NuttX Distribution with Dynamic Create a NuttX Distribution with Dynamic Binary (ELF) Loading

NuttX is very Unix/Linux-like RTOS for microcontrollers and it supports dynamic loading of binaries and libraries. It makes perfect sense to have the possibilities to create a NuttX Distros similar to what exists for Linux.

In fact there is already a proposal here: https://github.com/apache/nuttx/issues/17351

Goals:

1) Test ELF Loading in the current NuttX mainline
2) Create an application that will be downloaded and updated the existing version on the board
3) Add Library support on NuttX/NuttX-Apps (use Android Makefile Library building as reference)
 

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Alan Carvalho de Assis, mail: acassis (at) apache.org
Project Devs, mail: dev (at) nuttx.apache.org

...

Apache Fory Implement Fory Dart gRPC integration

Description

Apache Fory does not yet generate Dart gRPC service bindings.

This project will add Dart gRPC code generation to the Fory compiler. For each service definition, the compiler should generate Dart service interfaces and gRPC transport bindings that follow the existing Dart generator layout and use a Fory codec instead of protobuf runtime payload types.

The implementation must keep the Fory runtime free of gRPC dependencies. Any required gRPC glue should be emitted as generated helper code. Runtime behavior should remain low-overhead and allocation-conscious.

Potential Outcomes

  • Generate Dart service interface and gRPC binding outputs from service definitions, aligned with current Dart generator conventions.
  • Generate Dart gRPC server and client stubs for unary and streaming RPCs using Dart gRPC APIs.
  • Wire request/response handling through generated Fory serializer and deserializer functions.
  • Implement zero-copy deserialization buffer support for inbound gRPC payloads, with a safe fallback path when zero-copy cannot be applied.
  • Coordinate with Dart type generation so emitted message, enum, and union types are directly usable by generated gRPC stubs.
  • Add golden codegen tests for generated file names and key signatures.
  • Provide a runnable Dart server/client example using generated bindings and the Fory codec.
  • Update compiler documentation for Dart gRPC code generation usage and constraints.

Skills:Dart, gRPC (`grpc`), compiler/code generation, serialization internals, async programming, testing, performance optimization.

Difficulty: Medium
Project size:175 hours
Potential mentors:Chaokun Yang, Weipeng Wang
Source links:

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Chaokun Yang, mail: chaokunyang (at) apache.org
Project Devs, mail: dev (at) fory.apache.org

CloudStack

[GSoC] [CloudStack] Improve CloudMonkey user experience by enhancing autocompletion

Summary

Currently a lot of API parameters do not get auto-completed as cloudmonkey isn't able to deduce the probable values for those parameters based on the list APIs heuristics. A lot of these parameters are enums on CloudStack end and by finding a way to expose these and consume them on cloudmonkey side, we could improve the usability of the CLI greatly.

Benefits to CloudStack

  • Improved end user experience when using CLI
  • Reduce incorrect inputs

Deliverables

  • Expose enums and all other relevant information that can be used to enhance auto-completion of parameters on CloudStack end -
    • May require framework level changes and changes to APIs
  • Consume these exposed details on Cloudmonkey end

Dependent projects

https://github.com/apache/cloudstack-cloudmonkey/

Ref CloudStack Issue: https://github.com/apache/cloudstack/issues/10442

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Pearl Dsilva, mail: pearl11594 (at) apache.org
Project Devs, mail: dev (at) cloudstack.apache.org

Spark

SPIP Client-Side Metadata Caching for Spark Connect

This SPIP proposes adding a client-side schema cache for Spark Connect DataFrames.

Currently, every call to df.columns or df.schema triggers a synchronous gRPC analysis request to the server. While these are local and near-instant in Spark Classic, in Connect they average 277 ms on standard cloud setups (like AWS t3.medium). This makes iterative work extremely slow; we've measured a 13-second lag for 50 metadata calls in a typical ETL pipeline.

This delay is forcing developers to use a "Shadow Schema" pattern, where they manually track column names in local lists to avoid the RPC overhead. Since Spark DataFrames are immutable, we can fix this by caching the resolved schema on the client after the first request. Our POC shows this reduces the 13-second lag to about 250 ms (a 51× speedup) without breaking the core Spark Connect model.
 
I have followed the official SPIP template for the detailed breakdown below.

SIP

 https://docs.google.com/document/d/1xTvL5YWnHu1jfXvjlKk2KeSv8JJC08dsD7mdbjjo9YE/edit?tab=t.0

Benchmark - https://docs.google.com/document/d/1ebX8CtTHN3Yf3AWxg7uttzaylxBLhEv-T94svhZg_uE/edit?tab=t.0


Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
vaquar khan, mail: vaquar.khan@gmail.com (at) apache.org
Project Devs, mail: