PETSc/TAO: How to Create, Maintain, and Modernize a Numerica