External textual DSLs
Some definitions:
-
DSL: domain-specific language; a language (programming language, markup language, …) specialized to a particular purpose.
-
External DSL: A DSL that can be interpreted by a standalone program. Compare to internal/embedded DSL, which is implemented in a host programming language.
-
External textual DSL: An external DSL that is purely textual, usually UTF-8 or ASCII.
In other words, external textual DSLs are human-editable, yet computer-readable structured textual file formats.
Analysis
Advantages of external textual DSLs:
-
Eliminates vendor lock-in: The information is stored in plaintext, and can thus be moved into a different system.
-
Is readable without interpreter: For a human to understand the stored information, an interpreter is not required (and perhaps not even useful). This facilitates reviews.
-
Forces transparency: It is difficult to hide information in external textual DSLs. This also facilitates reviews.
-
Enables collaboration using existing tools: External textual DSLs can use any good-old version control system (VCS).
Disadvantages of external textual DSLs:
-
No real-time collaboration: We are in the age of online real-time collaborative editing tools (e.g. Google Docs, Notion, Airtable). Such tools are tough to build for external textual DSLs. Such a tool that allows data manipulation would need to allow manual textual edits to be incorporated correctly, without loss of data. For example, an editor should not throw reformat already-formatted code, nor should it throw away comments.
-
Limited asynchronous collaboration: As mentioned earlier, External textual DSLs can use any VCS, but that does not guarantee good collaboration. Merge conflicts and other semantic conflicts are still possible.
-
Potentially user-unfriendly: A good GUI guides users to enter or manipulate data in a complete and correct way. Linters can provide correctness and completeness checks for external textual DSLs, but they won’t ever be as user-friendly as a good GUI.
Formats
See List of external textual DSLs.
See also
For prose, Embedded plaintext metadata formats can be useful. Also see Lightweight markup languages are inadequate for technical writing.