This would be an excellent tool and I would argue that you’re not forcing anyone to always extend something. IMO, you’re laying out a clear abstract API that, if concretized, can leverage a suite of centrally maintained Krylov solvers.
For those that don’t want to use type extension of a base class, Arpack is still an option.
What would be the other paths one could go in modern fortran to accomplish what you’re doing ?