|
1 | 1 | --- |
2 | 2 | working-groups: |
| 3 | + - title: "Quarkus Terminal" |
| 4 | + board-url: "https://github.com/orgs/quarkusio/projects/77" |
| 5 | + short-description: | |
| 6 | + 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. |
| 7 | + readme: | |
| 8 | + <h2>The Problem</h2> |
| 9 | + <p>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.</p> |
| 10 | + <p>Quarkus dev mode itself is quite a fancy TUI but its not easy to do similar in Quarkus applications in a consistent way.</p> |
| 11 | + <p>We currently have terminal-related functionality scattered across multiple libraries with overlapping concerns and inconsistent trade-offs:</p> |
| 12 | + <ul> |
| 13 | + <li>Æsh and JLine both ship "complete" stacks (readline, parsing, rendering, history, completion) and pull in more than many consumers need. There is no shared minimal console/ANSI primitive that higher-level libraries can depend on without inheriting a full stack.</li> |
| 14 | + <li>Dev mode and dev shell UX could be significantly richer with a proper TUI layer, but we have no sanctioned approach for devmode nor extension for building TUIs in Quarkus applications.</li> |
| 15 | + <li>The CLI story is split between Æsh (strong on readline/interactive shells) and picocli (strong on argument parsing), with no clear guidance on when to use which, and no shared story around native-image friendliness, startup time, and reflection config.</li> |
| 16 | + <li>The startup phase itself is murky for terminal-heavy apps: there is no clean pattern for CLI argument parsing to interact with Quarkus' config system (exposing picocli options as config sources, reaching <code>quarkus.application.version</code> from <code>@Command</code> annotations, 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.</li> |
| 17 | + </ul> |
| 18 | + <p>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.</p> |
| 19 | + <h2>The Proposed Solution</h2> |
| 20 | + <p>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.</p> |
| 21 | + <ol> |
| 22 | + <li> |
| 23 | + <p><strong>ansi/terminal</strong> — 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.</p> |
| 24 | + </li> |
| 25 | + <li> |
| 26 | + <p><strong>TUI</strong> 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.</p> |
| 27 | + </li> |
| 28 | + <li> |
| 29 | + <p><strong>CLI</strong> 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.</p> |
| 30 | + </li> |
| 31 | + <li> |
| 32 | + <p><strong>Startup & lifecycle</strong> define clean patterns for terminal-first Quarkus applications: how CLI argument parsing interacts with the Quarkus config system (so flags, env, and <code>application.properties</code> compose predictably), and how TUI/full-screen modes coexist with dev mode, the main thread, and Quarkus' startup/shutdown lifecycle without fighting each other.</p> |
| 33 | + </li> |
| 34 | + </ol> |
| 35 | + <h2>Definition of Done</h2> |
| 36 | + <ul> |
| 37 | + <li>A documented direction for the ansi/terminal layer — whether that means a new library, a consolidation, or a decision that the status quo plus minor changes is sufficient.</li> |
| 38 | + <li>DevShell - Integrated use of TamboUI (or similar) into Quarkus dev mode and/or dev shell in a visible, demoable way.</li> |
| 39 | + <li>A path for building TamboUI based Quarkus applications with hotreload and native image, delivered as an extension.</li> |
| 40 | + <li>Updated CLI story: Æsh extension direction clarified, optional picocli improvements landed (startup, native, reflection), and a documented decision on a third alternative.</li> |
| 41 | + <li>Documented patterns and supporting code for CLI-args-vs-config integration and TUI-vs-dev-mode lifecycle coexistence.</li> |
| 42 | + <li>ADRs covering the key design decisions across all four tracks.</li> |
| 43 | + <li>Documentation on quarkus.io, plus at least one blog post and one demo/video.</li> |
| 44 | + </ul> |
| 45 | + <h2>Scope of Work</h2> |
| 46 | + <p><strong>In scope:</strong></p> |
| 47 | + <ul> |
| 48 | + <li>Exploration and design of the ansi/terminal layer.</li> |
| 49 | + <li>TamboUI-based exploration of TUI in dev mode / dev shell, and a Quarkus extension enabling application TUIs.</li> |
| 50 | + <li>Æsh extension direction and alignment.</li> |
| 51 | + <li>Picocli optimizations (native image, startup, reflection config).</li> |
| 52 | + <li>Evaluation of a potential lighter CLI alternative.</li> |
| 53 | + <li>Integration of CLI argument parsing with the Quarkus config system.</li> |
| 54 | + <li>Lifecycle patterns for full-screen TUI applications, including dev mode coexistence and main-thread handling.</li> |
| 55 | + <li>Native image support across the tracks.</li> |
| 56 | + <li>Documentation, ADRs, samples.</li> |
| 57 | + </ul> |
| 58 | + <p><strong>Out of scope:</strong></p> |
| 59 | + <ul> |
| 60 | + <li>Rewriting Æsh or JLine internals beyond what the tracks require.</li> |
| 61 | + <li>GUI or web-based dev UI work (covered by other efforts).</li> |
| 62 | + <li>Shell scripting languages or REPL language design.</li> |
| 63 | + <li>Replacing picocli or Æsh as user-facing choices — both remain supported.</li> |
| 64 | + </ul> |
| 65 | + <h2>Organizing the Work</h2> |
| 66 | + <h3>Communication and Transparency</h3> |
| 67 | + <ul> |
| 68 | + <li>Coordination via a dedicated GitHub Project spanning the relevant repositories.</li> |
| 69 | + <li>Discussion in GitHub Discussions on <code>quarkusio/quarkus</code> for cross-cutting topics; implementation issues on the individual repos.</li> |
| 70 | + <li>Work will land across Quarkus core (dev mode, dev shell, lifecycle), Quarkiverse (TUI extension, Æsh extension, picocli extension), and potentially standalone repositories depending on where the ansi/terminal exploration lands.</li> |
| 71 | + </ul> |
| 72 | + <h3>Potential Outcomes & Deliverables</h3> |
| 73 | + <ul> |
| 74 | + <li>A direction (and, where warranted, code) for the ansi/terminal layer.</li> |
| 75 | + <li>TamboUI-powered Quarkus dev mode / dev shell enhancements.</li> |
| 76 | + <li>A Quarkiverse extension for building TUIs.</li> |
| 77 | + <li>Updated Æsh extension.</li> |
| 78 | + <li>Picocli extension improvements (startup, native, reflection).</li> |
| 79 | + <li>Documented and supported patterns for CLI args ↔ Quarkus config, and for TUI lifecycle coexistence with dev mode.</li> |
| 80 | + <li>ADRs across the tracks.</li> |
| 81 | + <li>Blog post + demo/video.</li> |
| 82 | + </ul> |
| 83 | + <ul> |
| 84 | + <li>Point of contact: @maxandersen</li> |
| 85 | + <li>Proposal: https://github.com/quarkusio/quarkus/discussions/53667</li> |
| 86 | + <li>Discussion: <a href="https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20-.20Quarkus.20Terminal/with/587817394">Zulip</a></li> |
| 87 | + </ul> |
| 88 | + status: on track |
| 89 | + lts: false |
| 90 | + completed: false |
| 91 | + last-activity: 2026-06-02 |
| 92 | + last-update-date: 2026-05-26 |
| 93 | + last-update: | |
| 94 | + The Quarkus Terminal team is looking into new CLI parsing options, exploring a switch from picocli to aesh. We're also checking out a Tamboui extension that integrates with the Quarkus lifecycle for hotreload capabilities. |
| 95 | + |
| 96 | + (This status update was automatically generated using AI.) |
| 97 | + point-of-contact: "@maxandersen" |
| 98 | + proposal: https://github.com/quarkusio/quarkus/discussions/53667 |
| 99 | + discussion: https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20-.20Quarkus.20Terminal/with/587817394 |
3 | 100 | - title: "Quarkus 4" |
4 | 101 | board-url: "https://github.com/orgs/quarkusio/projects/51" |
5 | 102 | short-description: | |
@@ -372,103 +469,6 @@ working-groups: |
372 | 469 | point-of-contact: "@phillip-kruger" |
373 | 470 | proposal: https://github.com/quarkusio/quarkus/discussions/53093#discussioncomment-16271096 |
374 | 471 | discussion: https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/wg-dev-star/with/581636141 |
375 | | - - title: "Quarkus Terminal" |
376 | | - board-url: "https://github.com/orgs/quarkusio/projects/77" |
377 | | - short-description: | |
378 | | - 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. |
379 | | - readme: | |
380 | | - <h2>The Problem</h2> |
381 | | - <p>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.</p> |
382 | | - <p>Quarkus dev mode itself is quite a fancy TUI but its not easy to do similar in Quarkus applications in a consistent way.</p> |
383 | | - <p>We currently have terminal-related functionality scattered across multiple libraries with overlapping concerns and inconsistent trade-offs:</p> |
384 | | - <ul> |
385 | | - <li>Æsh and JLine both ship "complete" stacks (readline, parsing, rendering, history, completion) and pull in more than many consumers need. There is no shared minimal console/ANSI primitive that higher-level libraries can depend on without inheriting a full stack.</li> |
386 | | - <li>Dev mode and dev shell UX could be significantly richer with a proper TUI layer, but we have no sanctioned approach for devmode nor extension for building TUIs in Quarkus applications.</li> |
387 | | - <li>The CLI story is split between Æsh (strong on readline/interactive shells) and picocli (strong on argument parsing), with no clear guidance on when to use which, and no shared story around native-image friendliness, startup time, and reflection config.</li> |
388 | | - <li>The startup phase itself is murky for terminal-heavy apps: there is no clean pattern for CLI argument parsing to interact with Quarkus' config system (exposing picocli options as config sources, reaching <code>quarkus.application.version</code> from <code>@Command</code> annotations, 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.</li> |
389 | | - </ul> |
390 | | - <p>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.</p> |
391 | | - <h2>The Proposed Solution</h2> |
392 | | - <p>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.</p> |
393 | | - <ol> |
394 | | - <li> |
395 | | - <p><strong>ansi/terminal</strong> — 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.</p> |
396 | | - </li> |
397 | | - <li> |
398 | | - <p><strong>TUI</strong> 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.</p> |
399 | | - </li> |
400 | | - <li> |
401 | | - <p><strong>CLI</strong> 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.</p> |
402 | | - </li> |
403 | | - <li> |
404 | | - <p><strong>Startup & lifecycle</strong> define clean patterns for terminal-first Quarkus applications: how CLI argument parsing interacts with the Quarkus config system (so flags, env, and <code>application.properties</code> compose predictably), and how TUI/full-screen modes coexist with dev mode, the main thread, and Quarkus' startup/shutdown lifecycle without fighting each other.</p> |
405 | | - </li> |
406 | | - </ol> |
407 | | - <h2>Definition of Done</h2> |
408 | | - <ul> |
409 | | - <li>A documented direction for the ansi/terminal layer — whether that means a new library, a consolidation, or a decision that the status quo plus minor changes is sufficient.</li> |
410 | | - <li>DevShell - Integrated use of TamboUI (or similar) into Quarkus dev mode and/or dev shell in a visible, demoable way.</li> |
411 | | - <li>A path for building TamboUI based Quarkus applications with hotreload and native image, delivered as an extension.</li> |
412 | | - <li>Updated CLI story: Æsh extension direction clarified, optional picocli improvements landed (startup, native, reflection), and a documented decision on a third alternative.</li> |
413 | | - <li>Documented patterns and supporting code for CLI-args-vs-config integration and TUI-vs-dev-mode lifecycle coexistence.</li> |
414 | | - <li>ADRs covering the key design decisions across all four tracks.</li> |
415 | | - <li>Documentation on quarkus.io, plus at least one blog post and one demo/video.</li> |
416 | | - </ul> |
417 | | - <h2>Scope of Work</h2> |
418 | | - <p><strong>In scope:</strong></p> |
419 | | - <ul> |
420 | | - <li>Exploration and design of the ansi/terminal layer.</li> |
421 | | - <li>TamboUI-based exploration of TUI in dev mode / dev shell, and a Quarkus extension enabling application TUIs.</li> |
422 | | - <li>Æsh extension direction and alignment.</li> |
423 | | - <li>Picocli optimizations (native image, startup, reflection config).</li> |
424 | | - <li>Evaluation of a potential lighter CLI alternative.</li> |
425 | | - <li>Integration of CLI argument parsing with the Quarkus config system.</li> |
426 | | - <li>Lifecycle patterns for full-screen TUI applications, including dev mode coexistence and main-thread handling.</li> |
427 | | - <li>Native image support across the tracks.</li> |
428 | | - <li>Documentation, ADRs, samples.</li> |
429 | | - </ul> |
430 | | - <p><strong>Out of scope:</strong></p> |
431 | | - <ul> |
432 | | - <li>Rewriting Æsh or JLine internals beyond what the tracks require.</li> |
433 | | - <li>GUI or web-based dev UI work (covered by other efforts).</li> |
434 | | - <li>Shell scripting languages or REPL language design.</li> |
435 | | - <li>Replacing picocli or Æsh as user-facing choices — both remain supported.</li> |
436 | | - </ul> |
437 | | - <h2>Organizing the Work</h2> |
438 | | - <h3>Communication and Transparency</h3> |
439 | | - <ul> |
440 | | - <li>Coordination via a dedicated GitHub Project spanning the relevant repositories.</li> |
441 | | - <li>Discussion in GitHub Discussions on <code>quarkusio/quarkus</code> for cross-cutting topics; implementation issues on the individual repos.</li> |
442 | | - <li>Work will land across Quarkus core (dev mode, dev shell, lifecycle), Quarkiverse (TUI extension, Æsh extension, picocli extension), and potentially standalone repositories depending on where the ansi/terminal exploration lands.</li> |
443 | | - </ul> |
444 | | - <h3>Potential Outcomes & Deliverables</h3> |
445 | | - <ul> |
446 | | - <li>A direction (and, where warranted, code) for the ansi/terminal layer.</li> |
447 | | - <li>TamboUI-powered Quarkus dev mode / dev shell enhancements.</li> |
448 | | - <li>A Quarkiverse extension for building TUIs.</li> |
449 | | - <li>Updated Æsh extension.</li> |
450 | | - <li>Picocli extension improvements (startup, native, reflection).</li> |
451 | | - <li>Documented and supported patterns for CLI args ↔ Quarkus config, and for TUI lifecycle coexistence with dev mode.</li> |
452 | | - <li>ADRs across the tracks.</li> |
453 | | - <li>Blog post + demo/video.</li> |
454 | | - </ul> |
455 | | - <ul> |
456 | | - <li>Point of contact: @maxandersen</li> |
457 | | - <li>Proposal: https://github.com/quarkusio/quarkus/discussions/53667</li> |
458 | | - <li>Discussion: <a href="https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20-.20Quarkus.20Terminal/with/587817394">Zulip</a></li> |
459 | | - </ul> |
460 | | - status: on track |
461 | | - lts: false |
462 | | - completed: false |
463 | | - last-activity: 2026-06-02 |
464 | | - last-update-date: 2026-05-26 |
465 | | - last-update: | |
466 | | - The Quarkus Terminal team is looking into new CLI parsing options, exploring a switch from picocli to aesh. We're also checking out a Tamboui extension that integrates with the Quarkus lifecycle for hotreload capabilities. |
467 | | - |
468 | | - (This status update was automatically generated using AI.) |
469 | | - point-of-contact: "@maxandersen" |
470 | | - proposal: https://github.com/quarkusio/quarkus/discussions/53667 |
471 | | - discussion: https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20-.20Quarkus.20Terminal/with/587817394 |
472 | 472 | - title: "Quarkus 3.15 LTS" |
473 | 473 | board-url: "https://github.com/orgs/quarkusio/projects/28" |
474 | 474 | short-description: | |
|
0 commit comments