Clean up Trilinos dependencies using subpackages to reduce and better control dependencies
Created by: bartlettroscoe
CC: @trilinos/framework
Description:
Currently Trilinos has a very course-grained set of dependencies based on fat top-level packages that don't follow Software Engineering Packaging Principles. This has several bad consequences:
-
Changing an upstream packages triggers a lot of downstream package enables that really should not be (e.g. see #1395 (closed) and #1406 (closed))
-
When users enable these fat packages with optional dependencies enabled, they get a lot of upstream code built that they typically don't need.
The solution to this problem is to better partition many of these fat top-level Trilinos packages into TriBITS subpackages and then more carefully define dependencies between subpackages. On example is having dowstream packages depend on "Teuchos" of "TeuchosCore", "TeuchosComm", "TeuchosParameterList", etc. (e.g., see #1263 (closed)).