Discussion

The lack of graphical user interfaces is a common limitation of published computational tools, inhibiting their adoption by a wider scientific community. The importance of user-friendly analysis software in bioinformatics is indicated by the popularity of graphical environments for command-line analysis programs. For example, the commercially licensed Geneious software, which provides common command-line tools in a user-friendly analysis environment, advertises itself as the most cited software in molecular biology and sequence analysis \cite{geneiousa}. Well-known open-source alternatives to Geneious include the UGENE \cite{Okonechnikov2012} desktop application (which has  a fixed set of tools) and web applications like qPortal \cite{Mohr2018} or Galaxy \cite{Afgan2018}.
Since a significant amount of development and maintenance effort for GUI applications is dedicated to its interface (typically 45-50% as estimated by \cite{Myers_1992}), it's understandable why most scientific software omit it. Pline provides a practical solution for the issue by translating simple JSON-based descriptions to fully-functional graphical GUIs. The concept of converting abstract data descriptions to user interfaces has been a subject of decades of research in the field of Model-Based User Interface Development (MBUID). In this approach, conceptual data models, which describe various aspects of an application (e.g. user tasks and UI presentation), are converted through multiple abstraction levels to final user interface \cite{Meixner_2011}. Similar to Pline API, MBUID allows designers to describe user interfaces without worrying about the implementation details. However, in contrast to MBUID tools like  EMUGEN \cite{Brandl_2002} and Mocadix \cite{Vanderdonckt_2019} that are designed to build heterogenous user interfaces for various use cases and environments, Pline has a much narrower scope. It trades the flexibility and complexity of MBUID for automation and ease of use, aiming to make GUI development for CLI programs as effortless as possible.
In essence, Pline is an interface generator that constructs form-based graphical interfaces for command-line programs. Over the years, many tools have been developed that overlap some aspects of Pline’s functionality. Some examples like FormGen \cite{inproceedings} and Dynamic Forms \cite{Girgensohn_1995} are code generators for input forms, \cite{pysimplegui} and Gooey \cite{gooey} aid python developers to add GUIs to their program, while UGUI \cite{applications} links web interfaces to CLI programs. Perhaps the most similar tool to Pline is Javamatic \cite{Phanouriou1997}, which reads  XML-based CLI descriptions to generate GUIs as Java applets. However, development of the tool was discontinued many years ago and it is no longer available for download.
Pline is a modern take on user-interface generators, building on the rapid development of web technologies and addressing some of the limitations in web-based GUI development. As a result, Pline interfaces are compatible with third-party web pages and also work as a standalone desktop application. In addition, Pline is well supported by its homepage \cite{pline}  that contains detailed documentation, tutorial videos and the plugins repository.
In addition, Pline's modular design allows for some of its functionality to be used independently of the CLI. The JSON plugin files, for example, could be used as information for generating human-readable documentation or converted to another format for use in workflow management systems. Also, the extensibility of Pline interface generator allows to use it for drawing form-based web interfaces outside of CLI domain. And since Pline-generated interfaces uses HTTP communication standard, the server module can easily be replaced with e.g. a backend from another website, further facilitating GUI integration. The Pline server module, however, is a lightweight and installation-free implementation of a web server that allows to run Pline interfaces as a standalone desktop application. With some modifications and using frameworks like Electron \cite{electron}, the Pline web application can be converted to a platform-specific native application with the accompanying user convenience and performance benefits.
Although making new Pline plugins does not require programming, manually writing the JSON data fields assumes some technical knowledge and, for larger plugins, can be a tedious task. This can be addressed in a couple of ways:
The converters and a graphical builder tool for making Pline plugins are the subject of future work.

Conclusions

Pline addresses the challenges in development of GUIs for command-line tools with a lightweight framework that utilizes simple data formats, code generation, and modern web technologies. This results in dynamic user interfaces that work cross-platform, including mobile devices. The JSON-based program descriptions allows creating, maintaining and sharing sophisticated interfaces without programming skills. We hope that the lower threshold of building graphical user interfaces earns Pline significant community support, resulting in a wide variety of graphical interfaces available in the online repository and promoting user-friendly software in science.

Availability and requirements

List of abbreviations

Declarations

Ethics approval and consent to participate

Not applicable.

Consent for publication

Not applicable.

Availability of data and materials

The datasets analysed in the example pipeline are available in the Pline repository (http://wasabiapp.org/pline/downloads).

Competing interests

The authors declare that they have no competing interests.

Funding

Not applicable.

Authors’ contributions

AV designed and implemented Pline, example plugins and the example pipeline, and wrote the manuscript. AL supervised the project, designed the example pipeline and was a major contributor in writing the manuscript. All authors read and approved the final manuscript.

Acknowledgements

We thank Alan Medlar for his assistance in the writing process.