You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 18 Next »

This page is auto-generated! Please do NOT edit it, all changes will be lost on next update

Contents

APISIX

JSON Schema to Form UI for APISIX Dashboard

APISIX plugins ship JSON Schema definitions for their configuration. If APISIX Dashboard can render plugin configuration forms directly from JSON Schema, developer experience improves significantly and reduces manual UI maintenance.

Goals (Deliverables)
Must-have:

  • A reusable SchemaForm (or equivalent) that renders basic types: string/number/integer/boolean/object/array.
  • enum support (Select/Radio etc), defaults, required fields, basic constraints (min/max, pattern, etc) where feasible.
  • Support at least the key complex patterns used by APISIX plugin schemas:
    • oneOf (select one option and render corresponding fields)
    • dependencies / conditional fields
    • (Stretch) anyOf if present in target schemas
  • Validation pipeline: validate form values against schema (AJV) and show errors in UI consistently.
  • Documentation + developer guide: how to add/extend schema-to-widget mapping.
  • Tests (unit + minimal integration) to prevent regressions for schema parsing and conditional rendering.
Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Yuan Bao, mail: baoyuan (at) apache.org
Project Devs, mail: dev (at) apisix.apache.org

Apache AsterixDB

NL2SQL++ assistant

This project aims to develop a modular, extensible NL2SQL component for AsterixDB that translates natural language prompts into executable SQL++ queries. The system will leverage recent advances in Large Language Models (LLMs) to enable users to express complex analytical questions without writing formal queries. It will follow best practices by exposing an OpenAPI-based interface that connects to external LLMs through frameworks such as LangChain4j while remaining model-agnostic. The component will also support locally-hosted LLMs to reduce operating costs and maintain privacy.

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Suryaa Charan, mail: suryaacharan (at) apache.org
Project Devs, mail:

LLM Agent Protocols/Memory

This feature adds agent compatibility to AsterixDB by implementing standard agent protocols and agentic memory capabilities. It involves implementing two emerging standards: the Model Context Protocol (MCP) for tool exposure and structured capability discovery, and the Agent-to-Agent (A2A) protocol for multi-agent coordination. MCP will allow AsterixDB to describe its capabilities, datasets, functions, and safe operations to AI agents. The project also utilizes AsterixDB to provide persistent agentic memory that tracks an agent's query sessions, enabling agents to recall and build on previous interactions.

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Suryaa Charan, mail: suryaacharan (at) apache.org
Project Devs, mail:

Backup/restore utility for AsterixDB

In order to backup and restore a database, one common pattern is to use a tool that takes the current state of the database and generates a set of DDL statements which, when executed, will create the existing state of the database. Currently this is not possible in AsterixDB for DDL statements- you would have to remember which ones you issued to create Types, Datasets, and so on. Therefore having a tool that can take the current state of the Metadata dataverse and craft a set of DDL statements that would create that state, and then for each dataset dump its contents into an INSERT statement, would be a great addition.

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Ian Maxon, mail: imaxon (at) apache.org
Project Devs, mail:

In-browser packaging of AsterixDB

AsterixDB since its inception has always been a distributed system. This has historically led to some friction for new users who simply want to try out the system to get a sense of the language and features. It simply isn't necessary for them to deploy the system as it would be for handling large amounts of data, however the deployment and packaging has to assume someone wants to do this. Therefore it has always been a balance between configurability and simplicity.

With the advancement of WASM and Javascript in general, there now exist versions of other databases, which were previously only run locally, which are adapted and targeted to a WASM or JS environment. This lets the user simply open a browser and get a fully-functioning instance of a real database like they would if it was installed locally or on a server somewhere. Given that AsterixDB is written purely in Java, it should in principle be possible to run AsterixDB on a JVM which can target WASM as an architecture, with WASI or some other platform. Having something similar for AsterixDB would be an amazing tool to help further the adoption of AsterixDB, and SQL++ in general.

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Ian Maxon, mail: imaxon (at) apache.org
Project Devs, mail:

Top K Nearest Queries Support

AsterixDB currently lacks native support for Top-K-Nearest queries, which return the K tuples whose attribute values are closest to a given reference value or point. Examples include: the five employees whose salaries are closest to the CEO's salary or the five buildings closest to the White House. This project involves designing and implementing efficient Top-K-Nearest query processing within AsterixDB's execution engine (Hyracks), including optimizer support to avoid full scans and to leverage existing indexes where possible. The implementation should integrate cleanly with SQL++.

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Suryaa Charan, mail: suryaacharan (at) apache.org
Project Devs, mail:

Apache Fineract

Loan Origination POC

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 

LOAN ORIGINATION CONTEXT 

Fineract has some loan origination functionality but it is not robust enough for many operations.  Several vendors, working with Fineract have created new Loan Origination plug ins.  

There is also a major enhancement underway that would build out a full Loan Origination flow by supporting the backend needs of data storage for such LOS.   See ticket https://issues.apache.org/jira/browse/FINERACT-2418 .  

The GSOC student would be expected to propose something as a POC (proof of concept) that would either - use the developed Fienract backend solution, or build a new component outside of Fineract to create the flows that would demonstrate the LOS functionality.  

That is, this is a moving target, and we would need different proposals from prospective candidates to explore the area of Loan Origination.  This may require expertise in risk assessment, loan origination models and business acumen.  There will not be much more explanation that this available.  The student would be expected to be a self starter.  

The mentor for this would need to be an expert at risk modeling, understand Loan Origination, and support a conceptual basis that may involve some things internal to Fineract and some processing elements outside of Fineract.  Please comment below if you are an existing Fineract contributor with this expertise.  

To try to illustrate:   one possible GSOC Proposal archtype we could accept would be a survey of Loan Origination Models, their strengths and weaknesses and to identify commonalities for the community to focus on.  This would thus be a Requirements exercise and may help identify future roadmap concepts.  In this case, the code to be developed may just expose a few APIs into different screen flows.  Thus, perhaps FIGMA flows (or similar) connecting to a set of APIs on the backend. 

If those new LOS APIs are existing in June 2026 (ticket 2418 resolved), then those APIs are to be used.  if they are NOT there in Fineract, then the student would be requested to create a fork and to implement the POC outside of the main Dev branch.  

I welcome additions to this write up.  jdailey  


Difficulty: Minor
Project size: ~350 hour (large)
Potential mentors:
James Dailey, mail: jdailey (at) apache.org
Project Devs, mail: dev (at) fineract.apache.org

Front end application MVP (POC)

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 

Build a simple self-service front end that talks to the Self-Service API

We need a new, user-friendly front end app that connects to our Backend for Front end (Self-Service API component) This will be the “customer portal” experience where users can log in, see their accounts, and check recent activity. It should be straightforward, easy to use, and a good reference example for others to build on.  

Functionality needed would include:  

  • Login
  • Check balances
  • Transfer between accounts owned by the same customer.  
  • Submit application for a new loan 

Testing end to end required. 
Solid UI design 
Modern app framework 
Documentation 

Difficulty: Minor
Project size: ~350 hour (large)
Potential mentors:
James Dailey, mail: jdailey (at) apache.org
Project Devs, mail: dev (at) fineract.apache.org

Create a new backend for front end component POC

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 

Build a Self-Service API Component that Connects to Apache Fineract

When the project removed self-service APIs in 2025, it did so understanding that we would need an outside component to make that connection as part of an overall solution. 

This project is to create - as a Proof of Concept (POC) - a new dedicated Self-Service API component or service that integration with Fineract backend.  It will need to expose APIs to consumer facing applications for typical activities like viewing account balances, transaction initiation, loan application, etc.  

The idea is for GSOC candidates to propose a design and build the POC. 

Minimal criteria include testing, authentication methodology, documentation.  

Not included in this GSOC would be the end consumer APP, although that may be undertaken by another project and coordination would be needed. 

Difficulty: Minor
Project size: ~350 hour (large)
Potential mentors:
James Dailey, mail: jdailey (at) apache.org
Project Devs, mail: dev (at) fineract.apache.org

BI connector and demonstration

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 

The idea is to create a connector and a demonstration of analytics that would consume and organize data from Fineract.  

For example, create a way to pull data out of Fineract and make it easy to use in common analytics  such as Power BI or Tableau or, better yet, an open source variant.   The data should probably go to a Data Warehouse.  

Start by proposing and exploring different options and write up the pros and cons.  

Create a demonstration project that takes into account security, levels of access, and security of PII data if it exists. 

Difficulty: Minor
Project size: ~350 hour (large)
Potential mentors:
James Dailey, mail: jdailey (at) apache.org
Project Devs, mail: dev (at) fineract.apache.org

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

Apache NuttX

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

Micro-ROS integration on NuttX

Micro-ROS (https://micro.ros.org) is a ROS2 support to Microcontrollers. Initially the project was developed over NuttX by Bosch and other EU organizations. Later on they added support to FreeRTOS and Zephyr. After that NuttX support started ageing and we didn't get anyone working to fix it (with few exceptions like Roberto Bucher work to test it with pysimCoder).

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

Add X11 graphic support on NuttX using NanoX

NanoX/Microwindows is a small graphic library what allow Unix/Linux X11 application to run on embedded systems that cannot support X-Server because it is too big. Add it to NuttX will allow many applications to be ported to NuttX. More importantly: it will allow FLTK 1.3 run on NuttX and that could big Dillo web browser.

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

Dropbear port to NuttX

NuttX doesn't have a SSH Client/Server support yet.

Supporting a SSH server will open doors to let NuttX boards in the fields to be access remotely for maintenance

Adding support to SSH client will let low cost boards powered by NuttX and LVGL to become a remote console control for more advanced Linux server. 

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

Wireguard port to NuttX

Wireguard is a light VPN solution for Linux and microcontrollers.

Porting wireguard for NuttX will allow remote and secure access to NuttX devices.


Projects to be used as reference:

https://github.com/ciniml/WireGuard-ESP32-Arduino

https://github.com/smartalock/wireguard-lwip

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

TinyGL support on NuttX

TinyGL is a small 3D graphical library created by Fabrice Bellard (same creator of QEMU) designed for embedded system. Currently NuttX RTOS doesn´t have a 3D library and this could enable people to add more 3D programs on NuttX.

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

Add multi-user support for NuttX

Currently NuttX only support a single user. Also there is no file mode and file owner support.

In fact file mode is already defined in some places in the fs/ but it is not used.

This feature will make NuttX even yet more Unix/Linux-like.

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

NXBoot algorithm extension for two partitions

Currently NuttX bootloader NXBoot requires three partitions to function properly. This is a trade of between better update speed and higher external memory capacity requirements.

The algorithm isn't suited for devices with small or even none external memory. A different algorithm that uses just two partitions (primary which runs the image) and update (where the update is uploaded) could be used for devices that use only internal memory. It would result in slower update process, but save memory space.

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Michal Lenc, mail: michallenc (at) apache.org
Project Devs, mail: dev (at) nuttx.apache.org

Analog (ADC/DAC) interfaces unification and better API

The issue was discussed and is tracked in a GitHub issue https://github.com/apache/nuttx/issues/16916

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Michal Lenc, mail: michallenc (at) apache.org
Project Devs, mail: dev (at) nuttx.apache.org

Add support to ESP Hosted on NuttX

ESP Hosted is a firmware that allows ESP32xx modules shared WiFi and BLE with the host OS, like Linux, RTOS or even some baremetal MCU.

Add ESP Hosted support on NuttX will allow any platform supported by NuttX to WiFi and/or BLE from ESP32xx modules.

More info: https://github.com/espressif/esp-hosted

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

IoTDB

Implement Trino-IoTDB Plugin to enable OLAP on time-series data

Background

Apache IoTDB (Internet of Things Database) is a high-performance, open-source time-series database optimized for data management and analysis in IoT scenarios. Trino (formerly PrestoSQL) is a fast distributed SQL query engine designed for running interactive analytic queries against data sources of all sizes.
Currently, while IoTDB provides strong capabilities for writing and querying time-series data, integrating it with the broader big data ecosystem for complex OLAP (Online Analytical Processing) remains a demand. A dedicated Trino connector for IoTDB will allow users to query IoTDB data using standard SQL via Trino and perform federated queries with other data sources (like Hive, MySQL, or Iceberg).

Goal

The goal of this project is to implement a trino-iotdb connector plugin based on the Trino SPI (Service Provider Interface). This connector will enable Trino to read data directly from IoTDB, supporting schema mapping, data projection, and predicate pushdown or maybe aggregate pushdown.
 

Core Tasks(Mandatory)

  1. Project Scaffolding: Set up the Maven project structure for the trino-iotdb plugin and integrate the IoTDB JDBC API.

  2. Metadata Implementation: Implement ConnectorMetadata to map IoTDB’s Table Mode (relational view) to Trino’s relational metadata model:


    1. Map IoTDB databases to Trino Schemas.

    2. Map IoTDB Tables to Trino Tables.

    3. Map IoTDB Data Type to Trino Data Type.
  3. Column Pruning (Projection Pushdown): Ensure the connector strictly fetches only the requested columns (measurements) from IoTDB, avoiding SELECT * overhead.

  4. Predicate Pushdown: Implement optimization rules to push down SQL filters (especially time range filters and value filters) to the IoTDB engine to minimize data transfer.

  5. Limit & Offset Pushdown: Map Trino’s LIMIT and OFFSET clauses to IoTDB’s native query pagination to prevent fetching excessive data during preview or pagination queries.

  6. Integration Testing: Provide Docker-based integration tests to verify correctness using Trino's testing framework.


Advanced Tasks (Optional)

  • Aggregation Pushdown: Implement the applyAggregation method in the connector SPI.


    • Goal: Map Trino’s aggregate functions (e.g., COUNT, AVG, SUM, MIN, MAX) directly to IoTDB’s native aggregation queries.

    • Benefit: Instead of fetching raw data to Trino for calculation, the connector leverages IoTDB's pre-calculated statistics or downsampling capabilities, significantly reducing network overhead and latency.


Deliverables


  • A fully functional trino-iotdb connector source code.(a pull request to Trino Repo)

  • Comprehensive integration tests covering data types and query patterns.

  • User documentation explaining how to configure and use the connector.

Recommended Skills

  • Java: Proficiency in Java programming (Trino and IoTDB are both Java-based).

  • Database Internals: Basic understanding of SQL execution, schema design, and database connectors.

  • Maven: Experience with Java build systems.

  • Nice to have: Familiarity with Trino SPI or IoTDB Session API.


Learning Material

 
Difficulty: medium
Mentor: Yuan Tian (Apache IoTDB PMC Member) (jackietien@apache.org)
 

Difficulty: Major
Project size: ~175 hour (medium)
Potential mentors:
Yuan Tian, mail: jackietien (at) apache.org
Project Devs, mail: dev (at) iotdb.apache.org

Compatible with TPU & integrate SOTA time series foundation models for IoTDB-AINode

Background

Apache IoTDB is a high-performance, IoT-native time-series database designed to manage massive volumes of time-series data generated by industrial IoT devices. It addresses challenges including high ingestion rates, complex out-of-order data handling, and real-time analytical requirements. IoTDB-AINode represents an endogenous node type in the IoTDB ecosystem, extending the database with native machine learning capabilities. IoTDB-AINode enables seamless integration of time series machine learning algorithms directly within the database engine, allowing users to register, manage, and execute inference tasks using simple SQL statements (e.g., CREATE MODEL, SELECT * FROM FORECAST(...)). This architecture eliminates costly data migration to external ML platforms, accelerates processing pipelines, and enhances data security by keeping computations close to the data. Currently, AINode includes built-in time series foundation models such as the Timer and Chronos for time series forecasting task.
Tensor Processing Units (TPUs) are Google-developed AI accelerators specifically designed for neural network computations. Offering high-throughput matrix operations and energy efficiency, TPUs provide a compelling alternative to GPUs for deploying large foundation models. PyTorch/XLA enables PyTorch models to leverage TPU hardware through the XLA (Accelerated Linear Algebra) compiler, supporting both single-device and distributed training scenarios.
Time Series Foundation Models have emerged as powerful tools for temporal analysis. These models demonstrate superior performance across diverse domains—from industrial sensor data to financial forecasting—making them ideal candidates for integration into IoTDB's analytical pipeline.

Goal

This project aims to enhance IoTDB-AINode with TPU hardware acceleration capabilities and integrate cutting-edge time series foundation models into the database's model inference pipeline. Specifically, the project will: *
Enable IoTDB-AINode to recognize and leverage Google TPU devices for model deployment and inference.

  • Adapt the AINode packaging and compilation workflow (Maven/Java and Poetry/Python) to support TPU-specific releases.
  • Survey and integrate 1-2 SOTA time series foundation models (e.g., TimesFM) into AINode's SQL-accessible model registry.
  • Establish comprehensive CI pipelines for TPU environments to ensure long-term maintainability.

The ultimate outcome will empower IoTDB users to execute high-performance time series analysis on TPU hardware using state-of-the-art foundation models through simple SQL interfaces, significantly enhancing the database's analytical capabilities for industrial AI applications.

Core Tasks(Mandatory)

  1. TPU Adaptation. Implement TPU device recognition and tensor management within the AINode Python runtime. This involves:
    1. Integrating PyTorch/XLA (torch_xla) to detect available TPU devices during AINode initialization.
    2. Implementing device abstraction layers to handle model loading and tensor operations on TPU hardware.
    3. Ensuring automatic fallback mechanisms to CPU/GPU when TPU is unavailable.
  1. Packaging for TPU Version. Extend the existing build infrastructure to support TPU-enabled distributions:
    1. Update Poetry configuration to manage PyTorch/XLA and TPU-specific Python dependencies.
    2. Create automated packaging scripts that bundle XLA compilers and TPU runtime libraries.
    3. Ensure the TPU version can be deployed directly in Google Cloud TPU environments and on-premise TPU pods without manual dependency resolution.
  1. Model Survey. Conduct a comprehensive technical survey of SOTA time series foundation models available at project commencement. The deliverable will be a technical document analyzing each model's architecture, input requirements, computational complexity, zero-shot capabilities, and suitability for IoTDB's SQL-based inference pipeline. The survey will conclude with a justified selection of 1–2 models for integration based on deployability, inference latency, licensing, and compatibility with IoTDB’s SQL-based workflow.
  1. Model Integration. Integrate 1-2 selected foundation models into IoTDB-AINode's model inference framework:
    1. Implement model wrappers conforming to AINode's model registration interface.
    2. Adapt models to process IoTDB's time series data format.
    3. Ensure compatibility with AINode's inference pipeline, supporting SQL syntax such as SELECT * FROM FORECAST(...).
    4. Support both built-in model usage and custom model registration for integrated architectures.
  1. Integration Testing & CI. Establish robust testing infrastructure for TPU functionality:
    1. Design and implement integration tests covering device detection, model loading, tensor operations, and end-to-end inference workflows.
    2. Build TPU-specific CI environments using Google Cloud TPUs or TPU simulators.

Advanced Tasks (Optional)

  • Distributed Large Model Deployment. As an optional stretch goal, this task explores distributed deployment of large time series foundation models across multiple TPU devices. This involves:
    • Enabling distributed inference where large models are partitioned across TPU pods.
    • Developing SQL extensions to specify distributed compute resources (e.g., LOAD MODEL ... TO DEVICES ...).
    • Optimizing communication patterns between DataNodes and AINode for high-throughput industrial scenarios involving thousands of time series streams.

Deliverables

  1. Fully Functional Source Code.
    1. Pull requests to Apache IoTDB repository containing TPU adaptation modules.
    1. Integration code for SOTA time series foundation models.
    2. Extended build configurations (Maven/Poetry/PyInstaller) supporting TPU distributions.
  1. Comprehensive Integration Tests.
    1. Automated test suites for TPU device detection and model execution.
    2. CI pipeline configurations for TPU environments.
  1. User Documentation.
    1. Deployment guide for TPU-enabled AINode (e.g. Google Cloud TPU).
    2. SQL reference extensions for new model types and TPU-specific configuration options.
    3. Tutorial documentation demonstrating time series analysis workflows using the integrated foundation models.

Recommended Skills

  • Python >= 3.11. Including asynchronous programming and ML pipeline development.
  • Poetry & PyInstaller. Experience with Python dependency management and executable packaging.
  • PyTorch. Known about the PyTorch/XLA integration for TPU support.
  • Java & Maven. Knowledge of multi-module Java projects, build profiles, and dependency management.

Learning Material

 
Difficulty: medium
Mentor: Yongzao Dan (Apache IoTDB PMC Member) (yongzao@apache.org)

Difficulty: Major
Project size: ~175 hour (medium)
Potential mentors:
Yongzao Dan, mail: yongzao (at) apache.org
Project Devs, mail: dev (at) iotdb.apache.org

[GSoC] Flink connector for IoTDB 2.X Table Mode

Background

Apache IoTDB is an open-source IoT-native time-series database designed for high-performance storage, ingestion, and analysis of massive time-series data from IoT devices. It supports deep integration with big data ecosystems like Apache Hadoop, Spark, and Flink, enabling seamless data processing workflows. IoTDB traditionally uses a tree-based data model for organizing time-series data hierarchically (e.g., root.group.device.sensor), which is efficient for device-centric IoT scenarios.
Starting with IoTDB 2.0, a dual-mode SQL architecture was introduced, adding a table mode alongside the tree mode. The table mode allows users to manage time-series data using SQL-like table structures, where each table represents a device type, with columns for timestamps, tags, and fields (e.g., measurements like temperature or humidity). This mode enhances flexibility for data analysis, supports standard SQL queries, and improves interoperability with relational tools. It is particularly useful for scenarios involving heterogeneous devices or advanced analytics, as it supports table-level schema management and retention-related configurations (e.g., TTL).
Apache Flink is a powerful stream and batch processing framework for real-time data analytics. IoTDB already provides a Flink connector (flink-iotdb-connector) for reading from and writing to IoTDB using the tree mode, including IoTDBSource for data ingestion and IoTDBSink for output. There is also a Flink SQL connector (flink-sql-iotdb-connector) for SQL-based interactions and change data capture (CDC). However, these connectors primarily target the tree mode and lack full support for the table mode's features, such as table-specific metadata handling, SQL table mappings in Flink Table API, and optimized read/write operations for table-structured data. As a result, Flink users cannot natively treat IoTDB table-mode data as first-class tables in Flink SQL or the Table API. This gap limits the ability to leverage Flink's processing capabilities with IoTDB's modern table mode, especially in real-time IoT applications like predictive maintenance or anomaly detection.
This project aims to bridge this gap by developing a dedicated Flink connector for IoTDB's 2.X table mode, enabling efficient, real-time integration between Flink and IoTDB tables.

Goal

The primary goal is to create a robust, production-ready Flink connector that supports reading from and writing to IoTDB tables using the 2.X table mode. This will allow Flink users to process IoT time-series data stored in table format, perform transformations, aggregations, and joins in real-time, and sink results back into IoTDB tables. The connector should align with Flink's DataStream and Table APIs, support fault tolerance, and handle table-specific features like tags, fields, and TTL. Ultimately, this will enhance IoTDB's ecosystem integration, making it easier for developers to build scalable IoT data pipelines.
 

Core Tasks (Mandatory)

  1. Research and Design: Analyze the existing flink-iotdb-connector and flink-sql-iotdb-connector to identify limitations with the table mode. Design the connector architecture, including schema and type mappings between Flink Table/RowData and IoTDB table-mode concepts (e.g., time column, tags, and fields). Define APIs for source and sink functions compatible with Flink 1.18+.

  2. Implement IoTDB Table Source: Develop a Flink source connector (e.g., IoTDBTableSource) that reads data from IoTDB tables. Support filtering by time ranges, tags, and fields using IoTDB's SQL interface. Ensure it handles schema inference and dynamic table changes.

  3. Implement IoTDB Table Sink: Create a Flink sink connector (e.g., IoTDBTableSink) for writing processed data back to IoTDB tables. Support batch and streaming modes, automatic schema creation (if enabled in IoTDB), and error handling for constraints like TTL or data types.

  4. Testing and Documentation: Write unit and integration tests using Flink's testing utilities and IoTDB test clusters. Document usage examples, configuration options, and deployment guides in the IoTDB repository.

  5. Community Contributions: Submit pull requests to upstream repositories for any required changes, and create example Flink jobs demonstrating the use cases.


Advanced Tasks (Optional)

  • Performance Optimization: Implement optimizations like parallel reading/writing.

  • Benchmarking and Comparison: Develop benchmarks comparing the new connector's performance with the existing tree-mode connector, focusing on throughput, latency, and resource usage in IoT scenarios.


Deliverables


  • Source code for the Flink connector for IoTDB table mode, including Maven artifacts (e.g., flink-iotdb-table-connector).

  • Comprehensive documentation, including API references, setup guides, and usage examples integrated into the IoTDB website.

  • Test suites covering core functionality, edge cases, and integration with Flink.

  • A demo application showcasing a complete Flink pipeline reading from/writing to IoTDB tables.

  • Optimization reports, benchmarks, and any upstream PRs.


Recommended Skills

  • Programming Language: Proficiency in Java, as both Flink and IoTDB are primarily Java-based projects.

  • Database Knowledge: Understanding of SQL and fundamental database concepts. Knowledge of time-series data is a plus.

  • System Integration: Interest or experience in connecting different systems and understanding data flows.

  • Learning and Communication: Ability to quickly understand the codebases of two open-source projects and willingness to actively collaborate with community mentors and members.

Learning Material

 
Difficulty: medium
Mentor: Haonan Hou (Apache IoTDB PMC member) (haonan@apache.org)
 

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Haonan Hou, mail: haonan (at) apache.org
Project Devs, mail: dev (at) iotdb.apache.org

Beam

Apache Beam Add Kafka Streams Runner

Sketch a working skeleton of portable Kafka Streams Runner for Apache Beam. The runner should be able to run basic portable pipelines and be a baseline implementation for further development, feature additions and performance optimization.

A more detailed design document shall be attached to the github tracking issue.

Difficulty: Major
Project size: ~175 hour (medium)
Potential mentors:
Jan Lukavský, mail: janl (at) apache.org
Project Devs, mail: dev (at) beam.apache.org

DolphinScheduler

Apache DolphinScheduler Embedding the AlertServer into the API Server

Apache DolphinScheduler

Apache DolphinScheduler is a distributed and extensible workflow scheduler platform with powerful DAG visual interfaces, dedicated to solving complex job dependencies in the data pipeline and providing various types of jobs available out of box.

Website: https://dolphinscheduler.apache.org/en-us/index.html

GitHub: https://github.com/apache/dolphinscheduler

Linked GitHub Issue: https://github.com/apache/dolphinscheduler/issues/8975


Background

Currently, DolphinScheduler requires a separate alert-server to handle workflow and task alerts. Although the alert-server is lightweight, maintaining and deploying it separately adds operational complexity.

We aim to remove the standalone alert-server and embed its alerting functionality directly into the API server.

Task

Integrate the alert-server functionality into the API server so that it can handle workflow and task alerts natively.

Deliverables

  • Remove the standalone alert-server.
  • Enable the API server to handle all alerting tasks.
  • Add Integration test case.

Recommended Skills

  • Proficiency in Java.
  • Familiarity with microservice, e.g. spring-boot.
  • Familiarity with DolphinScheduler’s architecture and alerting mechanisms is a plus.

Mentors


Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Wenjun Ruan, mail: wenjun (at) apache.org
Project Devs, mail: dev (at) dolphinscheduler.apache.org
  • No labels