Working Group Proposal - Quarkus Terminal #53667
maxandersen
started this conversation in
Design Discussions
Replies: 1 comment
-
|
Board created: WG - Quarkus Terminal (view) |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
WG - Quarkus Terminal
Objective:
The main objective of this working group is to establish a cohesive foundation for terminal-based experiences in Quarkus.
Spanning console I/O, TUIs, CLI parsing, and startup/lifecycle integration**. Enable Quarkus itself and applications built on it to have a consistent, lightweight stack to build on.
The Problem
Quarkus early start was focus most on web applications and microservices. Over the years we enabled things like command mode and CLI parsing (mainly using Picocli) but its been more a organic adaption than a clean and extendable setup.
Quarkus dev mode itself is quite a fancy TUI but its not easy to do similar in Quarkus applications in a consistent way.
We currently have terminal-related functionality scattered across multiple libraries with overlapping concerns and inconsistent trade-offs:
quarkus.application.versionfrom@Commandannotations, etc.), and TUI-style full-screen applications conflict with dev mode and main-thread assumptions in ways that are not well defined, dev mode partially captures keystrokes destined for the application being a concrete example.The net effect is duplicated effort, inconsistent behavior across Quarkus-adjacent tooling, missed opportunities in dev mode, and friction for anyone trying to build a terminal-first Quarkus application.
The Proposed Solution
Organize the work into four coordinated tracks under a single working group. The tracks are related but the shape of the shared substrate/results (if any) is an open design question which this working group will try solve.
ansi/terminal — explore how to best provide minimal console primitives (terminal detection, ANSI handling, raw/cooked mode, resize, input events, color/style). Whether this is a new library, a refactor of what exists, or a thin facade over JLine/Æsh is itself part of the work.
TUI Use TamboUI as a vehicle to explore TUI integration in dev mode and dev shell, and enable application developers to build TUIs in Quarkus. TamboUI is the starting point for exploration, not a predetermined final choice; the track should surface what a good Quarkus TUI story looks like regardless of which library ultimately backs it.
CLI clarify and improve the two main CLI paths: an Æsh extension focused on interactive/readline use cases, and picocli optimizations focused on argument parsing, startup, and native image. Evaluate what can be done for startup impact.
Startup & lifecycle define clean patterns for terminal-first Quarkus applications: how CLI argument parsing interacts with the Quarkus config system (so flags, env, and
application.propertiescompose predictably), and how TUI/full-screen modes coexist with dev mode, the main thread, and Quarkus' startup/shutdown lifecycle without fighting each other.Definition of Done
Scope of Work
In scope:
Out of scope:
Organizing the Work
1. Communication and Transparency
quarkusio/quarkusfor cross-cutting topics; implementation issues on the individual repos.2. Point of Contact
3. Expected Timeline
Potential Outcomes & Deliverables
Interested participants
Existing issues
A non-exhaustive starting set, grouped by track. Worth another sweep (especially
area/picocli,area/devmode,area/clilabels) before board creation.Beta Was this translation helpful? Give feedback.
All reactions