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:
- Since the plugin JSON is a form of machine-readable program
documentation, it could be converted to/from other similar formats (e.g. CWL \cite{cwl}).
- Instead of writing a Pline plugin from scratch, it could be programmatically translated from e.g. a CWL description file, a CLI program
help text or the Unix man page.
- To make the creation of Pline plugins as simple as possible, the JSON
could be constructed using a graphical web page (that itself could be
made with the help of Pline).
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
- Project name: Pline
- Project home page: http://wasabiapp.org/pline
- Operating systems: Platform independent
- Programming language: JavaScript, Python
- Other requirements: Web browser (Chrome, Safari, Firefox),
Python 2.7+ or 3.0+
- License: MIT
List of abbreviations
- API - Application Programming Interface
- CLI - Command-line Interface
- CSS - Cascading Style Sheets
- GUI - Graphical User Interface
- MBUID - Model-Based User Interface Development
Declarations
Ethics approval and consent to participate
Not applicable.
Consent for publication
Not applicable.
Availability of data and materials
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.