The beautiful world of Gizmodic Software design
What is Gizmodic Design?
Gizmodic Design describes any software that:
- is written with scope intentionally heavily limited to the core purpose
- limits mandatory external dependencies to the absolute minimum
- follows at least the following guidelines adjacent to the UNIX philosophy:
- Make each program achieve one core purpose, and do that well.
- Programs should work together as a net of smaller projects, as opposed to a monolith.
- is extensible (every part that could realistically be accessible from within a scripting API should be)
- and does not depend on domain-specific/novel languages, instead opting for battle-tested languages like Lua or Shellscript or a simple IPC protocol instead
In general, if you can write gizmos (any extensions, plugins, modules, ...) and it seems fairly minimal, you can expect the program to likely be considered gizmodic. If a program is very monolithic or heavyweight, it is nearly guaranteed to be antigizmodic.
What are some gizmodic programs?
There is a lot of gizmodic software out there. Great examples include:
- Emacs
- NeoVim
- AwesomeWM
- MPV
- OpenRC
- ConnMan
- i3
- tmux
- ZSH