DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
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
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.
[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):
- Opt-In Architecture: New logic will be behind a Global Configuration flag. Default remains legacy behavior to ensure 100% backward compatibility.
- Phased Approach: Audit existing m_portfolio_command_source usage and bridge gaps in the Savings module first.
- Testing: Implementation of integration tests simulating network failures/retries.
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.
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)
...
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:
- https://github.com/apache/fory/issues/3279
- https://github.com/apache/fory/issues/3281
- https://fory.apache.org/docs/next/compiler/compiler_guide
- https://github.com/apache/fory/tree/main/compiler
- https://github.com/apache/fory/tree/main/dart
- https://github.com/apache/fory/blob/main/dart/README.md
- https://github.com/apache/fory/tree/main/dart/packages/fory
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
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