Docker open source software packages applications and all their dependencies into LXC virtual containers that run on any Linux distribution.
The Docker command line interface (CLI) makes it a building-block tool that can virtually eliminate "dependency hell." Docker may do for application packaging what Git has done for source code management.
Unlike GUI-only software, any Linux CLI application can easily be controlled and presented by a GUI (graphical user interface). No doubt, numerous GUIs will soon appear and integration with IDE's like Geany and Eclipse are about as complicated as throwing together a salad.
A CLI command and its arguments (parameters) are just a string of printable ASCII text, so they constitute an ad-hoc "meta-language command." One that can be combined, Lego-blocks-like, with any combination of other CLI programs in infinite ways.
Docker provides an extremely lightweight, but extremely powerful (dare I say, "elegant"?) framework for packaging and distributing software. It allows building on existing containers while keeping different versions isolated, and do it all with a single command supporting a host of options.
Docker will definitely be part of my development future.