my-definition-of-good-software.md (1749B)
1 # My Definition of Good Software 2 3 ## Obvious Attributes of Good Software 4 5 These are attributes of good software that I deem so obvious they needn't be discussed any further. 6 7 - Distributed under a Free license 8 - Free from malware, as described by the FSF [1] 9 10 ## Less Obvious Attributes 11 12 1. Written in C, assembly, a functional programming language, or POSIX shell 13 14 Software written in C can be good because C is a performant language that has compilers for most operating systems and architectures. Moreover, C compilers are simple to make which allows for ease of distribution of C code across new operating systems and architectures. 15 16 Software written in functional programming languages can be good because functional languages provide assurances about the software. Functional languages enforce no side effects and immutability. While this can slow down software, it gives useful guarantees about its correctness. 17 18 Software written in POSIX shell can be good because, similar to C, it is highly portable, and there are cases where using scripting languages can make sense. 19 20 2. Minimal Dependencies 21 22 Software with more dependencies is more brittle. It often relies on the continued development of other projects, often when not entirely necessary. 23 24 There is no expectation for software to be entirely self contained, but lots of consideration should be given prior to adding dependencies to software. 25 26 3. Easy Patching 27 28 DSLs suck. Patching the software should be easy and done in the language the program was written in. This allows for users to transfer their understanding of languages to the tools they use without having to learn idiosyncratic syntax for config files. 29 30 ## Citations 31 32 [1] - https://www.gnu.org/proprietary/proprietary.html