Problem
RDMP has traditionally been a Windows desktop app with an additional command line interface.
The user interface is built using winforms and shims that provide fake windows services from ~2003.
There has been requests for the RDMP GUI to work on Linux environments - this is not possible with the current desktop application.
Additionally, RDMP requests a very specific set of conditions to run out the box, unless you provide specific additional configuration via cli flags.
The above problems have made RDMP largely impossible to install and use in environments that are not within HIC. With the increased interest for an RDMP like solution from external customers we should investigate how to make RDMP more deployable and usable.
Solution Requirements
Both UI and CLI should be usable in Windows/Linux/Mac environments
Ideally Dockerizable
James F Proposed Solution
It is worth noting that RDMP current has a Core project that handles all the underlying logic with CLI and UI projects for handling the interfacing with this Core.
I propose that we replace the current RDMP.UI with an API and a new RDMP.UI that interfaces with RDMP.Core via this API
This will allow us to dockerize RDMP and have both an API and a UI available as services
Additionally, this API will allow for future development of federated RDMPs ( with the addition of some authentication on the API, likely LDAP).
This setup does require the UI to be written in a technology that is suitable for the web. It should be noted that a desktop version should be created, likely and Electron app or similar.
Suggested Technologies
Project | Technology | Notes |
---|---|---|
RDMP.Core | No Change | |
RDMP.Cli | No Change | |
RDMP.API | .Net Server with Swagger | Demo Available |
RDMP.UI | To be Discussed | React Demo available |
While the API is fairly straightforward, RDMP.UI should be discussed as it has a number of requirements:
Is usable in the browser and in a desktop format (likely Electron, but open for discussion)
Is a single page app(SPA) as desktop apps typically require this
Is runnable in non-windows environments
My initial proposal is a React based UI, but this is purely because it does SPA very well and I have a number of years experience with it.
Why This solution
Building a solution that is dockerizable allows RDMP to be easily deployed in existing environments.
It also allows us to construct training images that are pre-canned with data and scenarios for training purposes.
The API provides RDMP greater extensibility with other tools, so that the API can be used rather than specific integrations for each external tool ( A problem we have within Edris currently).
Providing the RDMP via both the desktop and browser again improves the usability for however the user wishes to install & use RDMP.
Risks
It’s a large undertaking, and will likely take most of 2024 to get to a usable state (note not 100% feature complete)
Questions
Is there a better alternative?
If we do use this approach, is there a more appropriate UI toolset?
0 Comments