Fish shell design principles
These design principles are a good read. Not necessarily directly applicable to most types of software, but the spirit and direction of thought is broadly relevant across many types of software.
The ﬁsh design has three high level goals. These are:
- Everything that can be done in other shell languages should be possible to do in ﬁsh, though ﬁsh may rely on external commands in doing so.
- Fish should be user friendly, but not at the expense of expressiveness. Most tradeoffs between power and ease of use can be avoided with careful design.
- Whenever possible without breaking the above goals, ﬁsh should follow the Posix syntax.
To achieve these high-level goals, the ﬁsh design relies on a number of more speciﬁc design principles. These are presented below, together with a rationale and a few examples for each.