Skip to content

Latest commit

 

History

History
37 lines (24 loc) · 2.4 KB

File metadata and controls

37 lines (24 loc) · 2.4 KB

Modian Common

License

modian-common is the core infrastructure and protocol SDK for the Modian IME (Input Method Editor) ecosystem. It is a set of pure, modern C++ and CMake-based foundational component libraries.

Vision

When building a cross-platform, high-performance modern input method, we physically isolate the complex "business brain" (Inkstone) from the "system UI/hooks" (Brush). modian-common was born to enable these isolated components to collaborate seamlessly and with ultra-low latency.

Our ultimate goals are:

  1. Building a Cross-Boundary Consensus: Providing a unified Inter-Process Communication (IPC) mechanism, protocol definitions, and logging infrastructure across the entire ecosystem.
  2. Frictionless Integration: Serving as an SDK for the third-party developer ecosystem. In the future, developers can simply include this library to easily build customized plugins for Modian.
  3. Zero-Intrusion Clean Architecture: Strictly adhering to the Dependency Inversion Principle (DIP). Highly modularized to completely decouple core business logic from OS-specific APIs.

Architecture

This repository strictly follows Clean Architecture principles and is divided into the following core layers (CMake targets):

  • Core (modian::common::core::*) The pure domain layer. Contains zero-dependency pure virtual interfaces (e.g., iasync_ipc_server) and core data structures (Protocol Structs).
  • Service (modian::common::service::*) The protocol processing layer. Responsible for converting between underlying data and core domain models (e.g., JSON serialization and deserialization).
  • Infra (modian::common::infra::*) The infrastructure implementation layer. Embraces OS-specific APIs and heavy third-party libraries (e.g., Windows Named Pipe IPC implementations, Spdlog wrappers, and charset utilities).
  • Test Infra (modian::common::test_infra::*) Provides unified mocks and testing scaffolds for the entire ecosystem.

Getting Started

This library natively supports CMake's FetchContent, allowing for extremely smooth integration into your C++ projects.

(Detailed API documentation and code examples will be added upon the official 1.0 release.)

License

This project is licensed under the Apache License 2.0.