Skip to content

[REFACTOR] Rename jplatform-jcurses-ui → platform-java-terminal-ui #320

@sfloess

Description

@sfloess

Problem

Module jplatform-jcurses-ui is misnamed - it doesn't use jcurses, it uses Lanterna.

Current State

Module name: jplatform-jcurses-ui
Actual library: Lanterna 3.1.5 (not jcurses!)

pom.xml:

<dependency>
    <groupId>com.googlecode.lanterna</groupId>
    <artifactId>lanterna</artifactId>
    <version>3.1.5</version>
</dependency>

Why This Happened

Historical guess:

  1. Module created as jplatform-jcurses-ui (planned to use jcurses)
  2. Developer discovered jcurses is unmaintained (last commit 2010)
  3. Switched to Lanterna (smart choice!)
  4. Forgot to rename the module (oops!)

Why Lanterna is Better

jcurses (NOT used):

  • ❌ Unmaintained (last update ~2010)
  • ❌ JNI bindings to native ncurses
  • ❌ Requires native libraries
  • ❌ Poor cross-platform support

Lanterna (ACTUALLY used):

  • ✅ Modern, maintained Java library
  • ✅ Pure Java (no JNI)
  • ✅ Cross-platform (Windows, Linux, macOS)
  • ✅ Rich feature set (windows, components, mouse support)

The switch was correct! Just need to update the name.

Proposed Change

Current name: jplatform-jcurses-ui
Proposed name: platform-java-terminal-ui

Alternative: platform-java-lanterna-ui

Recommendation: platform-java-terminal-ui (library-agnostic, future-proof)

Impact

Low impact - Internal module name only:

  • Module directory rename
  • POM artifact ID change
  • References in parent POM
  • Documentation updates

No code changes - Just renaming, no logic changes

Implementation

Step 1: Rename Directory

git mv jplatform-jcurses-ui platform-java-terminal-ui

Step 2: Update pom.xml

<!-- Before -->
<artifactId>jplatform-jcurses-ui</artifactId>
<name>jplatform-jcurses-ui</name>

<!-- After -->
<artifactId>platform-java-terminal-ui</artifactId>
<name>platform-java-terminal-ui</name>

Step 3: Update Parent POM

<!-- Before -->
<module>jplatform-jcurses-ui</module>

<!-- After -->
<module>platform-java-terminal-ui</module>

Step 4: Update References

  • README.md
  • Documentation
  • CHANGELOG.md
  • Any guides mentioning the module

Step 5: Test Build

mvn clean install

Step 6: Update CHANGELOG

## [Unreleased]
### Changed
- Renamed `jplatform-jcurses-ui``platform-java-terminal-ui` to reflect actual library (Lanterna, not jcurses)

Benefits

Accuracy:

  • ✅ Name reflects actual technology (Lanterna)
  • ✅ No confusion about jcurses

Consistency:

  • ✅ Matches other module naming (platform-java-*)
  • ✅ Aligns with JPlatform → platform-java renaming

Future-proof:

  • ✅ Library-agnostic name
  • ✅ Can swap libraries without renaming

Risks

Breaking changes: Minimal

  • Internal module name only
  • No public API changes
  • No user-facing changes

Dependencies: None

  • No other modules depend on this artifact ID
  • Terminal UI is optional feature

Related

  • Recent JPlatform → platform-java renaming
  • VirtOS uses dialog/whiptail (different, correct choice)
  • TUI technology decision documentation

Priority

P3 (Low) - Accuracy and clarity, not functional

Acceptance Criteria

  • Module renamed: jplatform-jcurses-ui → platform-java-terminal-ui
  • pom.xml updated
  • Parent POM updated
  • Documentation updated
  • Build succeeds (mvn clean install)
  • No broken references

Estimated Effort

Time: 1-2 hours
Complexity: Low (rename + documentation)


Recommendation: Rename to platform-java-terminal-ui for accuracy and consistency.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions