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:
- 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
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:
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:
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: