In spite of outward appearances, many of the partial differential equations used in contemporary fluid dynamics, and the methods used to solve them, contain enough similarities that one may consider their implementation under a very general framework. In this talk, I describe an equation-agnostic apparatus that incorporates a wide range of possible solving schemes, accurate pseudo-spectral spatial representations, and the expressive python language. Flexibility is a requirement, not an afterthought. From a user perspective, setting up a new science problem entails (i) choosing a spectral basis for the domain; (ii) defining variables and parameters; (iii) symbolically entering equations; (iv) making a choice of solver; (v) defining on-the-fly analysis tasks; (vi) running the code. Dedalus runs efficiently on computing platforms ranging from laptops to large-scale supercomputers. In addition, Dedalus is a community development project. We encourage users to contribute functionality and adaptations. Thus far, Dedalus has primarily been used to study problems arising in astrophysical and geophysical fluid dynamics, but there exist many more potential applications. In the talk, I will describe the basic architecture and algorithms. I will also discuss some of the novel scientific applications that Dedalus is making possible.