Skip to content

Split Mudlet up into libmudlet and a Qt front-end #8030

@vadi2

Description

@vadi2

Description of requested feature:

Mudlet is a Qt Widgets based application, which works great for Linux/macOS/Windows, but not so great for running natively on Android or iPhone, which are popular feature requests.

Akin to how VLC is split into libVLC and various front-ends, split Mudlet out into libmudlet (providing all of core functionality) and a Qt Widget frontend that makes use of all of the core functionality.

Prior to taking this issue up, open a new github issue here and in there, provide (1) plan for how the library/frontend split will work on an architectural level, and (2) a plan for the migration strategy, since once mega PR will not work for this.

Reasons for adding feature:

  1. allowing Mudlet to eventually have a mobile-native version

Expected result of feature

libmudlet may use Qt Core classes (QObject, QTimer, QThread, QSettings, etc.) but must not depend on Qt Widgets, Qt GUI, or any UI-related Qt modules.

Mudlet's functionality pre and post-split should be 100% the same, nothing should be lost in the transition:

  • All existing automated tests must pass, plus:
  • All menu items and dialogs function identically
  • All Lua API functions return identical results
  • All protocol features work (GMCP, MXP, etc.)
  • All file formats (profiles, packages) remain compatible

Performance of the network/text display stack as well as the trigger engine should be comparable as well (no more than 10% lost). Measured in:

  • Text display: X lines/second in main console (can be measured using stressinator)
  • Network: Y MB/s processing throughput (needs to be measured)
  • Memory: no more than 10% increase in base memory usage

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions