This is to emphasize importance of information represented as text especially from system level or back-end point of view.
Advantages of text
- Text can always be input / output / transferred by the simplest means (keyboard, printer, SMS, copied & pasted via clipboard, primitive wired communications, etc.).
- Text can be easily processed (searched, compared, filtered, etc.).
- Text is effectively understood by both human and machine (think coding, debugging, logging, reporting, etc.).
In fact, the primary source of information, Internet, is mostly controlled by text protocols and formats which are only visualized in the browser. Binary images, software, audio, video are all wrapped in text.
The more flexibility is required, the more text-based approach is winning. Open source by itself implies lots of text.
CLI (Command Line Interface) vs GUI (Graphical User Interface)
Despite the advent of graphical environments, the use of CLI remains pervasive in back-end.
In UNIX-based systems CLI is primary and GUI is secondary. The inherit advantages of text:
- There is always a straightforward automated way to change behaviour of the system by modification of some text-based files using variety of tools.
- Compare this with necessity of clicking the way through different menus to the required setting. It is impractical to automate.
- Configuration can easily be backed up, restored or tracked by variety of revision control tools.
- Compare this with tracking what is actually changed through GUI.
- CLI can be easily extended through optional switches in-line and in configuration files.
- Compare this with redesigning of GUI and its cluttering. Providing flexibility in CLI comes at less cost than the same flexibility provided by GUI.
- CLI tends to be more stable and backward-compatible.
- Compare this with changes in GUI which require changes in user habits, updating documentation screen-shots, etc.
- Text-based configuration can be searched through to quickly find related information.
- Compare this with inability to search through multitude of dialogues and menus in GUI.
- Text-based configuration requires no special additional software as any text editor provides user interface.
- Compare this with inevitable designing, coding and testing of GUI to provide any additional configuration option. Coding and testing applies to GUI as well, but it is only limited to validation.
- Text-based configuration can be easily demonstrated, exchanged and documented as text snippets or text files.
- Compare this with GUI configuration which requires many words or screen-shots to navigate somebody or provide explanation.
However, everything is presented visually (even text) which makes GUI the most flexible presentation platform. Presenting features (highlighting, hiding, grouping, etc.) are more practical in GUI especially for the initial configuration. Common variations of GUI includes:
- API-specific GUI dependent on system (Windows, Mac, Linux/GNOME, Linux/KDE, etc.).
- TUI (Terminal User Interface) which provides intuitive interface while still remaining simple enough to be used in text-based terminals (useful over the network).
- Web-based GUI provides system-independent graphical presentation inside the browser.
And, of course, this article focuses on system tools. Ergonomics provided by GUI of end-user application software cannot compete with limitations of CLI.
If the complexity of web-based solution is acceptable, web-based GUI provides the most natural integration with text-based back-end processing.
If extensive automation, thorough audit, robustness through simplicity and extensive details are critical throughout the system, CLI tools is the only way to reach everything.
GUI system tools are generally used in primitive cases:
- to configure basic functionality in visually intuitive way;
- to create initial configuration files for subsequent modification;
- to delegate tasks to users with less experience (client software settings).