Thanks for the detailed proposal.

Generally, the Apache Incubator takes existing projects with a pre-existing 
community. We emphasise community over code so it may be feasible to start a 
new project if you have a community.

Do you have a list of people who would be willing to collaborate on this? The 
existing Incubator contributor pool, generally, doesn't act as a pool of people 
who jump onto new projects. There is the concept of a mentor who helps new 
projects to get up and running - more from an admin and setup perspective.

On 2025/03/14 06:26:50 Imre Tabur wrote:
> Dear Apache Incubator Community,
> 
> I would like to start a discussion about an idea to start the 
> development of a new Java library, designed to simplify
> the implementation and setup of custom communication protocols, 
> particularly for networked environments and device
> interactions (e.g., serial ports, proprietary network protocols).
> 
> A library for building and setting up I/O (read/write, send/receive) 
> protocols. Custom, non-standard,
> proprietary, domain-, and vendor-specific protocol implementations, 
> while remaining loosely coupled from the data
> structures (message data structures) being transferred.
> 
> ## Background: Why is this Needed?
> 
> In many projects, developers must work with proprietary or 
> vendor-specific communication I/O protocols that are not
> based on widely supported implementations like HTTP (REST, GraphQL, 
> etc.) for which libraries exist. And the protocol
> needs to be implemented by developers themselves. Shortly: no libraries 
> to take.
> 
> ### Use cases
> 
> * Integrating with (legacy) serial port devices in industrial systems.
> * Implementing vendor-specific communication for IoT gateways or edge 
> devices.
> * Interacting with specialized network or hardware devices in 
> telecommunications or data centers.
> * Developing custom communication protocols for specific use cases, 
> between devices and systems.
> 
> Such protocols often require developers to implement custom solutions 
> from scratch, following detailed technical
> documentation or specifications provided by the (protocol) vendor.
> 
> The problem is that doing it yourself is labor-intensive, requires 
> precision, and is tedious work. The larger the
> specification, the greater the struggle with implementation. It is also 
> quite difficult to recall and follow what was
> done later on. Additionally, there is little reusable code, and 
> identifying parts of the code that can be reused is also
> difficult.
> 
> This project aims to address these issues by providing a reusable 
> library that simplifies working with such
> vendor-specific protocols, reducing development time and ensuring 
> consistency across implementations.
> 
> # Proposed Solution: A Graph-Based Approach to Protocols
> 
> The proposed library simplifies the development of custom client-server 
> (sender-receiver and vice versa) communication
> protocols by representing them as execution graphs.
> 
> In this model:
> 
> * Nodes in the graph represent protocol steps - reading or writing data 
> (receive or send).
> * Edges define the flow of execution between steps, governed by 
> configurable rules and conditions.
> 
> The library provides functionality to build and execute graphs, handle 
> basic I/O operations (and potentially more),
> bind data structures to steps (or with the whole defined graph) to carry 
> over protocol, handle events, and manage a
> callback system.
> 
> **I assume that a graph, even when implemented in (fluent) code, is more 
> readable (repairable/improvable) than a fully
> custom implementation.**
> 
> By abstracting protocol logic into an execution graph, the library 
> minimizes the complexity of handling vendor-specific
> communication requirements and promotes easier maintenance.
> 
> The MVP implementation of the library will focus exclusively on Java to 
> validate the concept and gather community
> feedback before considering broader adoption or porting to other 
> languages like C++ or other.
> 
> # Summary
> 
> To summarize, this project aims to simplify the implementation of 
> non-standard protocols by providing a graph-based
> framework that can handle basic I/O operations on its own through a 
> defined graph. Most of the basic I/O functions are
> handled within the library, compared to a custom-made solution where 
> everything is cross-referenced and tightly coupled.
> 
> The initial focus will be on Java, with the potential for future 
> expansion based on community input.
> 
> The initial base structure, skeleton, and proof of concept (PoC) will be 
> independently developed by me and my team as a
> preliminary effort in our own repository, serving as an example for 
> further development and eventual transition into the
> Apache Incubator.
> 
> # Feedback Request
> 
> The idea is still quite abstract, but I would greatly appreciate your 
> feedback:
> 
> - Do you see value in such a project?
> - Does this project align with ASF's ecosystem and goals?
> - Is it potential ASF software?
> - Are there existing projects or initiatives that we should consider or 
> learn from?
> 
> Looking ahead:
> 
> - Would anyone be interested in collaborating, contributing or providing 
> feedback during development?
> - Would anyone be interested in mentoring?
> 
> If this aligns with your interests or expertise, please share your 
> thoughts, questions, or suggestions.
> 
> Thank you!
> 
> Best regards,
> Imre Tabur
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: general-unsubscr...@incubator.apache.org
> For additional commands, e-mail: general-h...@incubator.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscr...@incubator.apache.org
For additional commands, e-mail: general-h...@incubator.apache.org

Reply via email to