Versions Compared

Key

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

...

Contents

...

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

...

Cassandra

[CEP-59] Implementation of In-Band Connection Draining (Graceful Disconnect)

This ticket covers the implementation of the server-side logic and protocol extensions defined in CEP-59: Graceful Disconnect – In-Band Connection Draining for Node Shutdown.

Goal:
Currently, when a Cassandra node shuts down or drains, client connections are often terminated abruptly, leading to failed requests. CEP-59 proposes an "in-band" signal (GRACEFUL_DISCONNECT) to notify clients before the socket is closed, allowing them to stop sending new requests and wait for pending ones to complete.

Proposed Scope (Implementation):

  1. Native Protocol: Add the new GRACEFUL_DISCONNECT event/message type to the Native Protocol (targeted for the next protocol version).
  1. Server-Side (Java):
  • Modify the transport layer (specifically the Netty pipeline) to broadcast the disconnect signal to all active channels during the StorageService.drain() sequence.
  • Implement configurable timeouts to allow clients a grace period before hard closure.
  1. Tooling (cqlsh/Python):
  • Update the Python driver/cqlsh to handle the new signal, ensuring users see a clean message rather than a stack trace during node maintenance.

References:

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

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://

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

...

Support for a Dataframes API

Background

Apache Wayang is a cross-platform data processing framework that lets users write data analytics tasks once and execute them efficiently across diverse execution engines such as Apache Spark, Apache Flink, relational databases, and others. It abstracts heterogeneous backends and can enable efficient hybrid execution across different execution engines.

Currently, Wayang supports dataflow-style APIs in Java, Scala, and Python and an SQL API. However, there is no high-level DataFrame API — a programmatic abstraction widely used in modern data processing ecosystems (e.g., Spark DataFrames, Pandas, R DataFrames) — that lets users express relational transformations over structured datasets in a fluent, tabular style.

A DataFrame API for Wayang would dramatically improve usability for data engineers and scientists, making Wayang accessible to users familiar with DataFrame programming paradigms while preserving its powerful cross-platform optimization capabilities.

Project Goal

Implement a DataFrame API for Apache Wayang that:

  • Represents structured data in a tabular abstraction (rows & columns),
  • Supports common relational and analytical operations (select, filter, join, groupBy, aggregate, etc.),
  • Can compile DataFrame operations into Wayang plans executed across backends transparently,
  • Includes comprehensive documentation and examples.

Outcomes & Impact

By the end of GSoC, Wayang will have its first robust DataFrame API — a major usability milestone that bridges structured analytics with cross-platform execution. This will enhance adoption, unlock new classes of applications, and position Wayang as a friendly high-level programming environment in addition to its optimizer backend strengths.


Difficulty: Medium
Project size: ~350 hours (Large)
Potential mentors:

  • Zoi Kaoudi — zkaoudi (at) apache.org
Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Zoi Kaoudi, mail: zkaoudi (at) apache.org
Project Devs, mail: dev (at) wayang.apache.org

Mahout


Add ZZFeatureMap Encoding for QDP

Backgroud

ZZFeatureMap is the most widely-used data encoding in quantum machine learning. It's the default in Qiskit and PennyLane for quantum kernel methods and variational classifiers.

QDP currently supports amplitude, angle, basis, and IQP encodings. Adding ZZFeatureMap completes our QML encoding suite.

What is ZZFeatureMap?

Maps classical features to quantum states using:
1. Hadamard gates (superposition)
2. RZ gates (single-qubit rotations)
3. ZZ interactions (two-qubit entanglement)
4. Repetition layers for expressivity

Tracked github issue

https://github.com/apache/mahout/issues/1008

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Ryan Huang, mail: hcr (at) apache.org
Project Devs, mail: dev (at) mahout.apache.org

...

Apache Beam Python SDK native streaming transforms

Background


Apache Beam is a unified programming model for user developing data processing pipelines capable running in distributed systems. Apache Beam SDK officially supports Java, Python, and Go. While Java SDK was historically dominant, Python SDK is increasingly popular thanks to Beam ML. Python APIs are crucial for developers. We plan to port highly anticipated basic streaming transforms made convenient for Beam Python developers.

Tasks


1. Python UnboundedSource (https://github.com/apache/beam/issues/19137)


While Splittable DoFn has been introduced as a Beam primitive transform handling IO sources, UnboundedSource arguably remains an easier API for users to author their own IOs. In the Java SDK, UnboundedSource/UnboundedReader has been (re)implemented as a wrapper of Splittable DoFn, we can follow the Java implementation and add it to Python.


Stretch goal: implement a native Python streaming IO based on UnboundedSource.


2. Python Watch Transform (https://github.com/apache/beam/issues/21521)


Currently we have a Watch transform in the Java SDK that is very useful when periodically polling for new input to a pipeline. We would like a parallel transform in Python.


Stretch goal: Update Python FileIO.readContinuously to use watch transform


Deliverables


  • Implementation of Python UnboundedSource: A functional wrapper API for UnboundedSource and UnboundedReader built on Splittable DoFn (a merged pull request to the Apache Beam repo).
  • Implementation of Python Watch Transform: A parallel transform to the Java Watch API for periodic polling (a merged pull request to the Apache Beam repo).
  • Unit and Integration Tests: tests for both features, specifically covering watermarks, checkpointing, and polling termination conditions.
  • User Documentation: Updated SDK guides and Docstrings explaining how to author custom IOs using UnboundedSource and how to use the Watch transform in pipelines.
  • Refactored FileIO.readContinuously (Stretch Goal): A pull request updating FileIO.read_continuously to utilize the new Watch transform logic.

Recommended Skills

  • Proficiency in Python, experience with pytest
  • Java-to-Python Porting: Ability to read and interpret Java source code
  • Version control: Git, development with GitHub
  • nice to have: exposure to streaming data processing tools (e.g. Apache Beam/Flink/Spark, etc)
Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Yi Hu, mail: yhu (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

...

Apache SkyWalking Natural Language to BydbQL

Background

BanyanDB is the native storage engine for Apache SkyWalking, designed specifically for observability data (Traces, Metrics, and Logs). It utilizes its own query language, BydbQL, which is SQL-like but optimized for time-series and observability schemas. While BydbQL is powerful, non-expert users or SREs in high-pressure situations may find it difficult to construct complex queries for specific traces or aggregated metrics.

The goal of this project is to build an Intelligent Query Agent that leverages Large Language Models (LLMs) to translate Natural Language (NL) into valid BydbQL.

Tasks

  • Schema-Aware Prompting: Develop a mechanism to extract BanyanDB metadata (Groups, Streams, Measures, Tag Families) and feed it into the LLM context (RAG - Retrieval-Augmented Generation).
  • N2SQL Implementation: Adapt state-of-the-art "Natural Language to SQL" (NL2SQL) techniques to the specific syntax and constraints of BydbQL.
  • Verification Loop: Integrate the agent with the existing BydbQL parser to validate generated queries before execution.
  • CLI/UI Integration: Implement a "chat" interface or an --ask flag in bydbctl (the BanyanDB CLI tool) to allow users to query data via plain English (e.g., "Show me the top 5 slowest services in the last hour").

Requirements

  • Proficiency in Go (BanyanDB's primary language).
  • Experience with LLM APIs (OpenAI, Gemini, or local models via Ollama) and orchestration frameworks (LangChain, LangGraph).
  • Understanding of Compiler Front-ends (Lexing, Parsing, AST).
Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Hongtao Gao, mail: hanahmily (at) apache.org
Project Devs, mail: dev (at) skywalking.apache.org

IoTDB


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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
    2. Integration code for SOTA time series foundation models.
    3. Extended build configurations (Maven/Poetry/PyInstaller) supporting TPU distributions.
  2. Comprehensive Integration Tests.
    1. Automated test suites for TPU device detection and model execution.
    2. CI pipeline configurations for TPU environments.
  3. 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 2026 - Apache Seata(Incubating)Enhance the Seata framework Golang SDK’s multi-registry support and seata-ctl capability

Project Overview

Title

Enhance Seata-Go Multi-Registry Support and seata-ctl Diagnostic Tool Capability

Abstract

Apache Seata (incubating) is a popular distributed transaction solution for ensuring data consistency in microservice architectures. Seata-Go, as its Go language SDK, is responsible for implementing core TM/RM functionalities in the Go ecosystem.

Currently, Seata-Go lags behind the Java version in terms of registry support richness at the infrastructure layer, and its production-level transaction troubleshooting and operational toolchain (seata-ctl) is still in its early stages. This results in limited options for users in non-Etcd/Raft scenarios and high troubleshooting costs when transaction anomalies occur.

This project aims to align with Seata's infrastructure ecosystem by introducing support for four mainstream registries: Nacos, ZooKeeper, Consul, and Redis to Seata-Go. Additionally, it will significantly enhance seata-ctl's diagnostic capabilities through full-chain environment checks, transaction state insights, and an interactive terminal interface, reducing the operational threshold for distributed transactions.

Detailed Description / Objectives

  • Infrastructure Alignment: Ensure Seata-Go can seamlessly integrate into existing enterprise-level microservice governance systems by implementing adapters for various mainstream registries.
  • Operational Efficiency Improvement: Build a complete diagnostic command set enabling developers to quickly locate network, database, and transaction state anomalies, and simplify operation workflows through an interactive interface.
  • Community Ecosystem Contribution: Produce high-quality design documents and technical blogs to help community users understand Seata-Go's underlying governance logic and operational best practices.

Deliverables

1. Multi-Registry Cluster Support (Priority P0)

  • Mainstream Registry Adapter Implementation:
    • Implement Nacos and ZooKeeper registry adapters with support for service instance subscription, real-time listening, and multi-tenant isolation configuration.
    • Implement Consul and Redis adapters with support for service registration/discovery and heartbeat monitoring mechanisms.
    • Bug fixes for Seata NamingServer Golang SDK.
    • Ensure service registration path formats for all registries are fully compatible with Java version Seata.
  • Configuration and Initialization System Integration:
    • Extend configuration structure to standardize registry-specific configuration parameters.
    • Optimize factory initialization logic to support smooth registry type switching via configuration files.

2. seata-ctl Diagnostic Tool Enhancement (Priority P1)

  • Full-Chain Self-Check Functionality:
    • Implement automated environment checks covering network connectivity verification with the server.
    • Implement database-level health checks including connection availability and validation of transaction core system table structures.
    • Implement configuration file format and required field legality validation.
  • Transaction State Insight Capability:
    • Implement real-time query functionality for active transaction lists.
    • Implement query functionality for resource lock records corresponding to specific transaction identifiers (XID).
    • Support structured output formats (e.g., table, JSON, YAML).
  • Interactive Terminal Interface (TUI):
    • Introduce a visual interactive mode for the tool, simplifying complex command input through interface guidance to enhance operational experience.

3. Testing, Samples, and Community Output (Priority P2)

  • Testing and Validation:
    • Write unit tests and integration tests for each registry adapter to verify node change awareness capabilities.
    • Validate diagnostic tool accuracy across different database dialects.
  • Samples and Documentation:
    • Add complete multi-registry integration examples in seata-go-samples.
    • Write technical articles: "Seata-Go Registry Extension Design and Practice Guide" and "Distributed Transaction Troubleshooting in Practice: Quickly Locating Anomalies with Diagnostic Tools".

Implementation Plan

  • Phase 1: Research and Architecture Design
    • Research existing Seata-Go registry implementations and study Seata NamingServer implementation logic.
    • Design diagnostic tool's interaction logic and command set architecture, ensuring tool extensibility.
  • Phase 2: Registry Adapter Development (P0)
    • Prioritize completion of core functionality implementation and compatibility testing for Nacos and ZooKeeper.
    • Perform bug fixes for Seata NamingServer to optimize its stability in the Go SDK.
    • Integrate Consul and Redis support and unify configuration initialization entry points.
  • Phase 3: Diagnostic Tool and Interactive Interface Development (P1)
    • Develop core logic for environment checks and transaction state queries.
    • Build interactive terminal interface (TUI), encapsulating underlying commands into intuitive visual operations.
  • Phase 4: Testing Validation and Community Promotion (P2)
    • Improve test cases to ensure stability across different registry environments.
    • Complete community technical article output and submit related sample code.

Required Skills

  • Have Go language development experience, familiar with concurrent programming and network communication.
  • Understand service discovery principles, familiar with mainstream registries (e.g., Nacos, ZooKeeper).
  • Understand basic distributed transaction principles, familiar with Seata's interaction architecture (TM/RM/TC).
  • Familiar with command-line tool development, possess good code standards awareness and documentation writing skills.

Benefits to Apache Seata

  • Expand Infrastructure Boundaries: Enable Seata-Go to adapt to more diverse enterprise production environments, eliminating selection barriers.
  • Improve Operational Convenience: Fill the gap in operational diagnostic tools for the Go version, significantly reducing user learning and maintenance costs.
  • Enhance Ecosystem Interoperability: Ensure consistency in governance between Go and Java versions, supporting Seata's unified multi-language ecosystem.

Conclusion

This project addresses Seata-Go's shortcomings in infrastructure adaptation and operational troubleshooting by enhancing multi-registry support and diagnostic tool capabilities. This not only improves Seata-Go's production readiness but also strengthens the Apache Seata community ecosystem through user-friendly interactive tools and comprehensive technical documentation.

Contact Information

  • Mentor Name: TunGuo [tew@apache.org], Apache Seata(incubating) Committer
Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
FinnTew, mail: tew (at) apache.org
Project Devs, mail: dev (at) seata.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

...

Author and Publish New Practical Guides for Apache Grails

Author and Publish New Practical Guides for Apache Grails on https://guides.grails.org (will be moved to grails.apache.org soon)

Background

The Grails Guides provide step-by-step, hands-on tutorials with accompanying GitHub repositories containing initial and complete project states. They cover core topics GORM, testing, security, frontend integrations (Vue.js, React, Angular), Micronaut features, deployment (AWS, Google Cloud, GitHub Actions), and more.

Existing guides are strong in foundational and some advanced areas but have gaps in:

  • Modern frontend setups
  • Broader cloud deployment
  • Current DevOps practices
  • Popular plugins/ecosystem updates

Creating 5-10 high-quality, up-to-date guides would directly enhance this key learning resource, making Grails more approachable and demonstrating current best practices without requiring core framework changes.

Project Goals

  1. Research & Plan Topics: Select 5-10 high-impact guide topics based on community needs (user list discussions, Slack feedback, gaps identified).
  2. Develop Guides: For each:
    • Build a complete, runnable Grails application example.
    • Create initial and complete GitHub repos following the standard template.
    • Write a clear, step-by-step Markdown guide with code snippets, explanations, and best-practice rationale.
  3. Test & Polish: Ensure guides work with the latest stable Grails (e.g., 7.x or 8.x series), include tests where relevant, and follow accessibility/Asciidoc formatting standards.
  4. Submit & Integrate: Open PRs to publish guides update any related docs or grails.org links.
  5. Optional Stretch Goals: Add video walkthroughs (if comfortable), create a "What's New in Recent Guides" summary blog post, or contribute minor improvements to existing guides.

Suggested Guide Topics (prioritize with mentor input):

  • Building Modern Full-Stack Apps with Grails + React/Vite (or Vue/Vite) – Update/extend older profiles with current tooling.
  • Securing Grails APIs with JWT + OAuth2 (modern patterns, perhaps using Micronaut Security).
  • Deploying Grails Apps to the cloud
  • Advanced CI/CD
  • Performance Tuning
  • Using HTMX + Grails for Interactive UIs without Heavy Frontend Frameworks.

Deliverables

  • 5-10 new published guides on https://guides.grails.org (each with its own GitHub repo under grails-guides).
  • Corresponding initial and complete source code repositories.
  • Well-structured Markdown/Asciidoc content with clear sections, screenshots/code blocks, and "Try it Yourself" instructions.
  • PRs reviewed and merged by mentors/community.
  • A short summary report or blog draft for the Grails blog announcing the new guides.
  • Documentation updates if needed (e.g., category additions on the guides index page).

Quantifiable Results for the Apache Community:

  • Fresh, relevant content that attracts and retains new developers.
  • Reduced support burden on mailing lists/Slack by pointing users to modern tutorials.
  • Evergreen educational assets maintained by the community.

Proposed Timeline (12-week program)

  • Community Bonding (May 2026): Join Grails Slack/mailing list, review existing guides, discuss topic priorities with mentors, fork/clone template repo, set up local build.
  • Weeks 1–2: Finalize 3–5 topics, create initial repos, outline guide structures.
  • Weeks 3–6: Implement and document first 2–3 guides (focus on core features, testing).
  • Weeks 7–9: Complete remaining guides, add polish (screenshots, edge-case notes), self-review for clarity.
  • Weeks 10–11: Submit PRs for review, incorporate feedback, test on latest Grails version.
  • Week 12: Final merges, any last tweaks, prepare announcement draft, evaluations.

Required Skills

  • Solid understanding of Grails (create-app, domains, controllers, services, GSP/JSON views).
  • Experience with Groovy/Java and web basics (REST, security concepts).
  • Good technical writing (clear, concise explanations).
  • Git/GitHub proficiency (branching, PRs).
  • Nice-to-have: Familiarity with Asciidoc/Markdown, frontend tools (Vite, npm), or deployment platforms.

Why This Project?

This is a high-reward contribution that directly improves one of Grails' most visible learning resources. It's flexible, scope can adjust based on progress, and allows the student to master Grails while helping others. Similar documentation-focused GSoC projects have succeeded in many Apache projects.

If Grails is accepted for GSoC 2026, this would be an excellent intermediate project. Interested students should contact the Grails dev mailing list or Slack early to discuss topics and secure a mentor. The community welcomes fresh guides to keep the framework vibrant!

 
Difficulty: Medium
Project size: ~350 hour (large)
Potential mentors:
James Fredley

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
James Fredley, mail: jamesfredley (at) apache.org
Project Devs, mail: dev (at) grails.apache.org

Apache Fory


Apache Fory Ruby Serialization

Description:
Apache Fory currently has no Ruby runtime, so Ruby services cannot participate in Fory xlang object exchange. This project implements Ruby xlang serialization with full wire compatibility to existing language runtimes, following the xlang specifications and issue #3379.

Primary references:
1. docs/specification/xlang_serialization_spec.md
2. docs/specification/xlang_implementation_guide.md
3. https://github.com/apache/fory/issues/3379

Scope:
1. Implement xlang binary format in Ruby runtime.
2. Support schema-consistent mode and compatible mode with meta share and TypeDef.
3. Implement registration model for numeric and named user types.
4. Implement deterministic struct serialization rules required by spec.
5. Implement reference tracking and reference flags behavior exactly per protocol.
6. Implement meta string encoding and dedup semantics needed by named types and TypeDef.
7. Provide cross-language interoperability with Java in both encode and decode directions.

Expected outcomes:
1. Ruby runtime package under ruby/ with serializer and deserializer for xlang protocol.
2. Public API centered on Fory entry point with configuration and registration APIs.
3. Core runtime modules for buffer, type resolver, ref resolver, meta string, TypeDef context, and field skipper.
4. Serializer coverage for primitives, temporal types, list, set, map, arrays, structs, and unions.
5. Struct DSL and schema metadata model for deterministic field ordering and stable schema behavior.
6. Compatibility handling for unknown fields and unknown union alternatives via safe skip logic.
7. Documentation for Ruby API usage, registration, schema evolution behavior, and constraints.

Protocol requirements:
1. Little-endian encoding for all multi-byte values.
2. Correct xlang header bitmap handling for null, xlang, and oob flags.
3. Exact reference flags and sequential reference ID assignment.
4. Correct type ID encoding and user type ID handling.
5. Correct namespace and type name metadata behavior for named types.
6. Deterministic struct field ordering exactly aligned with spec.
7. Meta string encoding and per-stream dedup behavior aligned with spec.

Implementation phases:
1. Phase 0: Ruby project skeleton, CI bootstrap, minimal smoke serialization path.
2. Phase 1: Buffer, varint and zigzag utilities, header handling, reference resolver core.
3. Phase 2: Primitive and temporal type support.
4. Phase 3: Collections and arrays support.
5. Phase 4: Type registry and schema-consistent struct serialization.
6. Phase 5: Meta string encoding and dedup.
7. Phase 6: Compatible mode and shared TypeDef.
8. Phase 7: Union and extension type support.
9. Phase 8: Performance hardening and allocation reduction.

Testing and CI requirements:
1. Add Ruby unit tests for protocol primitives, headers, references, and error handling.
2. Add golden vector tests for primitives, string encodings, list/set/map headers, TypeDef, and unions.
3. Add bidirectional interoperability tests:
   - Ruby write to Java read.
   - Java write to Ruby read.
4. Add compatibility tests for schema evolution in compatible mode, including add/remove/reorder and unknown field skipping.
5. Add tests for shared references, circular references, and ref tracking disabled behavior.
6. Add negative tests for invalid varint, unknown type ID, truncated payload, and malformed TypeDef.
7. Integrate Ruby lint and all Ruby xlang tests into CI so regressions fail CI automatically.

Non-goals for initial delivery:
1. Ruby-native non-xlang serialization format.
2. Decimal support.
3. Advanced runtime code generation in first iteration.

Performance expectations:
1. Keep hot serialization and deserialization paths allocation-conscious.
2. Add fast paths for homogeneous collections where safe.
3. Preserve protocol correctness while improving throughput and reducing allocations.

Skills:
Ruby, binary protocol implementation, serialization internals, cross-language compatibility testing, CI integration, performance optimization.

Difficulty:
Hard.

Project size:
Preferred 350 hours.

Potential mentors:
Chaokun Yang, Weipeng Wang.

Source links:
https://github.com/apache/fory/issues/3379
https://github.com/apache/fory/blob/main/docs/specification/xlang_serialization_spec.md
https://github.com/apache/fory/blob/main/docs/specification/xlang_implementation_guide.md
https://github.com/apache/fory/tree/main/rust
https://github.com/apache/fory/tree/main/java

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

...

Apache Fory C++ & Rust gRPC Integration

Description:
Apache Fory can generate high-performance C++ and Rust model code from IDL, but it does not yet provide end-to-end gRPC service binding generation for both languages as one aligned workflow.

This project will add C++ and Rust gRPC code generation in the Fory compiler using Fory serialization instead of protobuf runtime payload types.

C++ generated outputs:

  • service.h for service API abstractions.
  • service.grpc.h for gRPC declarations.
  • service.grpc.cc for gRPC implementations.

Rust generated outputs:

  • service.rs for service API traits/modules.
  • service_grpc.rs for tonic server/client transport bindings.

The implementation should follow Fory compiler conventions and prioritize performance-first, low-overhead runtime behavior.

Expected outcomes:
1. Parse service IR and generate C++ and Rust gRPC outputs from service definitions.
2. Support unary and streaming RPC method generation in both language targets.
3. Generate clear separation between language-level API abstractions and transport bindings.
4. Generate C++ abstract service interfaces and client stubs compatible with gRPC C++.
5. Generate Rust tonic-compatible async server and client wrappers.
6. Implement Fory-based request and response serialization hooks for both C++ and Rust generated bindings.
7. Implement zero-copy deserialization buffer support for inbound gRPC payloads in both languages, with safe fallback when zero-copy cannot be applied.
8. Add golden code generation tests for generated file names and key method signatures in both targets.
9. Add runtime tests for codec round-trip behavior, error handling, and fallback behavior.
10. Add interoperability tests for C++ and Rust generated services, including C++ server with Rust client and Rust server with C++ client.
11. Provide runnable C++ and Rust server/client examples using generated bindings and Fory codec.
12. Update compiler and language documentation for C++/Rust gRPC code generation usage and constraints.

CI requirements:
1. Add C++ and Rust gRPC code generation tests to CI.
2. Add C++ and Rust runtime tests for generated codec and service bindings to CI.
3. CI must fail on generated API signature regressions and serialization compatibility regressions.

Skills:
C++ 17, Rust, gRPC, tonic, compiler and code generation, serialization internals, async Rust, testing, performance optimization.

Difficulty:
Medium to Hard.

Project size:
Preferred 350 hours.

Potential mentors:
Chaokun Yang, Weipeng Wang.

Source links:
https://github.com/apache/fory/issues/3276
https://github.com/apache/fory/issues/3275
https://fory.apache.org/docs/next/compiler/compiler_guide
https://github.com/apache/fory/tree/main/compiler
https://github.com/apache/fory/tree/main/cpp
https://github.com/apache/fory/tree/main/rust
https://fory.apache.org/docs/guide/cpp/
https://fory.apache.org/docs/guide/rust/

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

Apache Fory Go & JavaScript gRPC integration

Description:
Apache Fory can generate high-performance model code for Go and JavaScript/TypeScript from IDL, but end-to-end gRPC service binding generation across these two ecosystems is not yet complete as a unified workflow.
This project will add Go and JavaScript/TypeScript gRPC code generation to the Fory compiler using Fory serialization instead of protobuf runtime payload types.
The implementation should follow Fory compiler conventions, remain dependency-light in runtime layers, and prioritize low-overhead, performance-first behavior.

Potential Outcomes:

1. Parse service IR and generate Go and JavaScript/TypeScript gRPC outputs for unary and streaming methods.
2. Generate Go outputs `_service.go` and `_grpc.go` with ServiceDesc, server interfaces, and client wrappers compatible with grpc-go.
3. Generate JavaScript/TypeScript service interface and gRPC binding outputs compatible with @grpc/grpc-js and existing JS/TS generator layout conventions.
4. Wire request/response payload handling through generated Fory serializer and deserializer functions in both targets.
5. Implement zero-copy deserialization buffer support for inbound gRPC payloads in both Go and JavaScript runtimes, with safe fallback paths when zero-copy cannot be applied.
6. Coordinate with JS/TS type generation so emitted message, enum, and union types are directly usable by generated gRPC stubs.
7. Add golden codegen tests for generated file names and key signatures for both language targets.
8. Add end-to-end interoperability tests between generated Go and JavaScript services, including Go server with JS client and JS server with Go client.
9. Add CI coverage for codegen tests, runtime codec tests, and Go<->JavaScript gRPC interoperability tests.
10. Provide runnable Go and JavaScript/TypeScript server-client examples using generated bindings and Fory codec.
11. Update compiler documentation for Go and JavaScript/TypeScript gRPC code generation usage and constraints.

Skills:
Go, JavaScript/TypeScript, Node.js, gRPC (grpc-go and @grpc/grpc-js), compiler/code generation, serialization internals, testing, performance optimization.

Difficulty:
Medium to Hard
 
Project size:
350 hours

Potential mentors:
Chaokun Yang, Weipeng Wang

Source links:

1. https://github.com/apache/fory/issues/3274
2. https://github.com/apache/fory/issues/3278
3. https://github.com/apache/fory/issues/3280
4. https://fory.apache.org/docs/next/compiler/compiler_guide
5. https://github.com/apache/fory/tree/main/compiler
6. https://github.com/apache/fory/tree/main/go
7. https://github.com/apache/fory/tree/main/javascript
8. https://fory.apache.org/docs/guide/go/

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

Apache 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
: ~350 hour (large)
Potential mentors:
Chaokun Yang, mail: chaokunyang (at) apache.org
Project Devs, mail: dev (at) fory.apache.org

Apache Fory Go & JavaScript gRPC integration

Description:
Apache Fory can generate high-performance model code for Go and JavaScript/TypeScript from IDL, but end-to-end gRPC service binding generation across these two ecosystems is not yet complete as a unified workflow.
This project will add Go and JavaScript/TypeScript gRPC code generation to the Fory compiler using Fory serialization instead of protobuf runtime payload types.
The implementation should follow Fory compiler conventions, remain dependency-light in runtime layers, and prioritize low-overhead, performance-first behavior.

Potential Outcomes:

1. Parse service IR and generate Go and JavaScript/TypeScript gRPC outputs for unary and streaming methods.
2. Generate Go outputs `_service.go` and `_grpc.go` with ServiceDesc, server interfaces, and client wrappers compatible with grpc-go.
3. Generate JavaScript/TypeScript service interface and gRPC binding outputs compatible with @grpc/grpc-js and existing JS/TS generator layout conventions.
4. Wire request/response payload handling through generated Fory serializer and deserializer functions in both targets.
5. Implement zero-copy deserialization buffer support for inbound gRPC payloads in both Go and JavaScript runtimes, with safe fallback paths when zero-copy cannot be applied.
6. Coordinate with JS/TS type generation so emitted message, enum, and union types are directly usable by generated gRPC stubs.
7. Add golden codegen tests for generated file names and key signatures for both language targets.
8. Add end-to-end interoperability tests between generated Go and JavaScript services, including Go server with JS client and JS server with Go client.
9. Add CI coverage for codegen tests, runtime codec tests, and Go<->JavaScript gRPC interoperability tests.
10. Provide runnable Go and JavaScript/TypeScript server-client examples using generated bindings and Fory codec.
11. Update compiler documentation for Go and JavaScript/TypeScript gRPC code generation usage and constraints.

Skills:
Go, JavaScript/TypeScript, Node.js, gRPC (grpc-go and @grpc/grpc-js), compiler/code generation, serialization internals, testing, performance optimization.

Difficulty:
Medium to Hard
 
Project size:
350 hours

Potential mentors:
Chaokun Yang, Weipeng Wang

Source links:

1. https://github.com/apache/fory/issues/3274
2. https://github.com/apache/fory/issues/3278
3. https://github.com/apache/fory/issues/3280
4. https://fory.apache.org/docs/next/compiler/compiler_guide
5. https://github.com/apache/fory/tree/main/compiler
6. https://github.com/apache/fory/tree/main/go
7. https://github.com/apache/fory/tree/main/javascript
8. https://fory.apache.org/docs/guide/go/

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

Apache 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:

Apache Fory Swift Schema IDL Codegen and gRPC Integration

Apache Fory has a mature compiler pipeline for FDL, Protocol Buffers, and FlatBuffers frontends, plus code generators for Java, Python, Go, Rust, and C++. The compiler also already includes service IR parsing and a `--grpc` generation path, but Swift code generation is not yet supported.

This project adds end-to-end Swift support in two layers:

1. Swift schema and model code generation from Fory IR.
2. Swift gRPC generation from service definitions, including transport bindings and a Fory-backed codec.

The implementation should follow existing compiler conventions and prioritize low-overhead, allocation-conscious runtime behavior.

Problem Statement
The repository already contains a Swift runtime (`swift/Sources/Fory`) but lacks compiler-generated Swift model code and Swift gRPC bindings from IDL files. This creates a gap:

  • Swift users cannot use `foryc` to generate model types from `.fdl`, `.proto`, or `.fbs`.
  • Service definitions parsed into compiler IR cannot yet target Swift transport code.
  • There is no official Fory codec integration for grpc-swift.

Why This Project Matters

  • Completes the Swift developer workflow: IDL -> generated models -> generated service APIs -> runnable gRPC client and server.
  • Reuses existing multi-frontend service parsing support in compiler IR.
  • Aligns Swift with other language targets and improves cross-language consistency.
  • Enables high-performance Swift service communication using Fory serialization semantics.

Expected Outcomes

  • Add Swift as a first-class compiler target (`{}lang swift`, `{-}-swift_out`).
  • Generate Swift model code from schema definitions (messages, enums, unions, nested types).
  • Generate `service_grpc.swift` from service definitions.
  • Generate grpc-swift compatible async server and client wrappers.
  • Implement a custom grpc-swift codec backed by Fory serialization and deserialization.
  • Implement inbound zero-copy decode support with a safe copy fallback path.
  • Add golden-style codegen tests for filenames and key generated signatures.
  • Add cross-frontend parity tests for FDL, proto, and fbs service definitions.
  • Provide runnable Swift server and client example(s) using generated code and codec.
  • Document compiler usage, constraints, and integration steps.

Detailed Scope
1) Compiler and CLI Integration

  • Add `SwiftGenerator` under `compiler/fory_compiler/generators/`.
  • Register generator in `compiler/fory_compiler/generators/{}init{}.py`.
  • Extend CLI output mapping and options to support `--swift_out`.
  • Ensure `--lang swift` works with existing recursive import compilation flow.

2) Swift Model Code Generation
Generate Swift for:

  • Enums
  • Messages
  • Unions
  • Nested types
  • Type registration helper APIs

3) Swift Service and gRPC Code Generation
For each schema service:

  • Generate `service.swift` containing service protocol and method shape declarations.
  • Generate `service_grpc.swift` containing grpc-swift server and client transport bindings.

Required RPC support:

  • Unary
  • Client streaming
  • Server streaming
  • Bidirectional streaming

4) Fory Codec for grpc-swift

  • Implement codec encode and decode using Fory Swift runtime.
  • Ensure request and response types map correctly to generated Swift types.
  • Provide clear error mapping for decode and type mismatch failures.

5) Zero-Copy Decode and Fallback

  • Add a zero-copy-friendly decode path for inbound payload handling when safe ownership and lifecycle constraints are satisfied.
  • Add a fallback path that copies payload bytes when zero-copy cannot be safely applied.
  • Ensure behavior is deterministic and memory-safe.

6) Tests

  • Add codegen tests validating generated Swift file names and key signatures.
  • Add service generation tests for all RPC modes.
  • Add cross-frontend equivalence tests for FDL/proto/fbs service definitions.
  • Codec round-trip tests.
  • Error-path tests (invalid payload, type mismatch, unsupported mode).
  • Zero-copy path and fallback path coverage.

7) Examples and Documentation

  • Add runnable Swift gRPC server/client example using generated files.
  • Update `docs/compiler/compiler-guide.md` for Swift codegen options and usage.
  • Update `docs/compiler/generated-code.md` with Swift output layout and generated API shape.
  • Add concise Swift integration documentation for grpc-swift + Fory codec.

Performance and Quality Requirements

  • Keep allocation count low on encode and decode paths.
  • Avoid unnecessary data copies in transport integration.
  • Keep generated code predictable and stable for golden-style testing.
  • Preserve compiler behavior for existing languages and frontends.

Acceptance Criteria
1. `foryc` supports Swift generation through `{}lang swift` and `{-}-swift_out`.
2. Swift model code compiles and integrates with Fory Swift runtime.
3. Service generation outputs `service.swift` and `service_grpc.swift` with correct signatures.
4. Unary, client-streaming, server-streaming, and bidi-streaming methods are correctly generated.
5. Fory-backed grpc-swift codec works for request and response round-trip.
6. Zero-copy decode path exists with tested fallback behavior.
7. Added tests pass and no regressions are introduced in existing compiler suites.
8. Documentation and runnable Swift example are complete and usable.

Skills Required

  • Swift
  • grpc-swift
  • Compiler and code generation
  • Serialization internals
  • Async and streaming APIs
  • Testing and performance profiling

Difficulty
Hard

Project Size
350 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

...

Apache Airflow Contribution & Verification Agent Skills

Background

Apache Airflow’s Breeze environment is the de facto way to reproduce CI, run tests, and verify changes locally. It encapsulates complex tooling (Docker, integrations, static checks, tests, system verification) behind a single, consistent developer interface.

However, modern AI coding tools (e.g. Claude Code, Gemini CLI, GitHub Copilot–style agents) currently treat Airflow’s repo like any generic Python project. They rarely:

  • Understand whether they are running inside or outside Breeze.
  • Choose the correct commands for host vs. container.
  • Follow the same workflows that Airflow contributors actually use (e.g. prek, breeze shell, breeze start-airflow).

We already expose some information through docs (e.g. AGENTS.md), but this mostly inflates the context window rather than giving agents a structured, machine-usable interface to Breeze.

This project aims to bridge that gap by creating an “Airflow Breeze Contribution / Contribution Verification” AI skill (final name TBD) that systematically encodes common contribution workflows and makes them reliably executable and testable by AI agents.

Goal

The overarching goal is to make AI tools:

Breeze-aware: able to detect whether they are running inside or outside Breeze and act accordingly.

In practice, this means that for a typical contributor PR, an AI agent can:

  • Run the right static checks.
  • Run the right subset of tests in Breeze.
  • Spin up Airflow and verify system behavior for a Dag representing the change (nice-to-have).
  • Do all of the above while respecting host/container boundaries.

Additionally, the solution should be consistency-focused, meaning that we want to keep Breeze CLI as the single source of truth for agent skills. This can be achieved by auto-syncing CLI docstrings and behaviors into the AI skill using existing tooling (e.g. prek), ensuring that the skill definitions always reflect the current state of the Breeze CLI.

Core Tasks

1. Environment Awareness & Detection
  • Design and implement a simple, robust mechanism for the agent skills to detect:
    • “Host” vs “inside Breeze container”.
    • Relevant environment variables, markers, or file paths that indicate context.
  • Encode decision logic for when to run:
    • Host-only commands (e.g. breeze shell, breeze start-airflow, git operations).
    • Container-only commands (e.g. pytest, airflow ...).
  • Provide a clear API/contract that AI tools can call to query current context and get recommended commands.

Note: Maybe we need to add some explicit markers, files in the repo, or write a small helper script that can be called to determine context in a reliable way. Or maybe we can rely on existing environment variables or filesystem cues. This is an open design question to explore.

2. Modeling Core Contributor Workflows as Skills

Based on the three scenarios described, define and implement skills that represent common contribution flows:

Scenario 1: Static checks pass

  • Stage changes (git add ...).
  • Run prek.
  • Collect and surface failures in a structured way so that an agent can fix them.

Scenario 2: Unit tests in Breeze

  • Start or attach to a Breeze container with breeze shell or breeze exec.
  • Run pytest with a targeted module/test path (not the whole suite).
  • Then the agent can inspect results and decide on next steps (e.g. fix code, exit Breeze).
3. Syncing with Breeze CLI as Source of Truth (via prek)
  • Investigate existing Breeze CLI docstrings and structure.
  • Define a mapping from Breeze commands (and their docstrings) to skill definitions, paths, and parameters.
  • Implement a prek hook that:
    • Generates or updates the agent skills definition files from Breeze CLI docstrings.
    • Fails when drift is detected (e.g. a command changed but the skill spec was not updated).
  • Integrate these checks into existing static check pipelines so the skills stay in sync automatically.
4. Evaluation & Test Harness
  • Design a testable user scenario or “exam” that simulates a typical contribution workflow (e.g. fixing a simple bug, adding a small feature) to verify that the added skills work as intended.
  • Add unit tests for any additional scripts or helper functions created.
5. Documentation & Developer Guide
  • Add or extend documentation (e.g. AGENTS.md, Breeze docs) to:
    • Describe the new Breeze-aware skills.
    • Show example workflows for human contributors and AI tools.
    • Document how other tools can integrate with the skills (e.g. path to spec file, key commands).

Advanced Tasks (Optional / Stretch Goals)

Scenario: System behavior verification

  • Write a Dag representing the feature/bugfix being contributed (or use an existing one).
  • Run breeze start-airflow (with --integration when needed).
  • Trigger the Dag via CLI (instead of UI) and wait for completion.
  • Inspect logs/status to determine success/failure from the TaskInstance logs.
  • Inspect logs/status from all the component services (scheduler, api-server, triggerer, etc) to determine if there are any underlying issues.
  • The agent can then decide to fix code, fix the Dag, or exit Breeze based on the results.

Expected Outcome

By the end of the project, we expect:

  • A Breeze-aware AI skill that can:
    • Detect host vs. container context.
    • Choose appropriate commands and environment transitions.
  • The AI toolings will be "smart-enough" to handle the core workflows for contributions, including:
    • Static checks with prek.
    • Targeted unit tests in Breeze.
    • Continue iterating based on results (e.g. fix code, fix tests, exit).
  • A sync mechanism (likely using prek) that:
    • Keeps Breeze CLI and the skill definitions in sync.
    • Fails CI when they diverge, ensuring Breeze remains the single source of truth.
  • Initial evaluation “exam(s)” and test harnesses that:
    • Verify that an implementation of the skill behaves correctly on at least the core scenarios.
  • Updated documentation explaining how contributors and AI tools can make use of the new capability.

A successful project will make it much easier for future AI tooling (IDEs, CLIs, bots) to interact with Breeze in a reliable and Airflow-native way, increasing contributor productivity and lowering the barrier to entry.

Recommended Skills

  • Programming & Tooling
    • Solid Python skills (CLI tools, packaging, basic testing).
    • Familiarity with Docker and containerized development environments.
    • Experience with writing or using CLIs and handling subprocesses.
  • Dev Workflow & CI
    • Understanding of typical open source contribution workflows (git, PRs, static checks, unit tests, pre-commit).
    • Exposure to CI systems and concepts of reproducible environments.
  • AI/Agents
    • Interest in or experience with AI coding assistants, Agent Skills, tool-calling, or agent frameworks.
    • Comfort reasoning about what “smart enough” means in terms of concrete, testable behaviors.
  • Airflow/Breeze (Nice to Have)
    • Basic knowledge of Apache Airflow concepts (Dags, tasks, operators).
    • Prior use of Breeze for development or testing is a plus, but not strictly required.

Motivation to work at the intersection of developer experience, tooling, and AI is more important than prior deep expertise in all of these areas.

Mentors

Jason Liu (GitHub: @jason810496), Slack: Zhe-You(Jason) Liu)Jarek Potiuk (GitHub: @potiuk, Slack: Jarek Potiuk)

Learning Materials

Tracked GitHub Issue

https://github.com/apache/airflow/issues/62500

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Zhe You Liu, mail: jasonliu (at) apache.org
Project Devs, mail: dev (at) airflow.apache.org

...