The Trilinos project is a community of developers, users and user-developers focused on collaborative creation of algorithms and enabling technologies within an object-oriented software framework for the solution of large-scale, complex multi-physics engineering and scientific problems on new and emerging high-performance computing (HPC) architectures. Trilinos is composed of packages addressing various computational needs of engineering and scientific simulations, including basic linear algebra, utilities for finite-element analysis, suite of common services, partitioning and load balancing, eigensolvers, linear solvers, preconditioners, automatic differentiation, discretization utilities, nonlinear/transient/optimization solvers, and a collection of interfaces and adapters.
Statement on Alignment with High Performance Software Foundation's Mission
Trilinos's Philosophy – "The Trilinos project was established to address two important needs: (1) bringing teams of library developers together in order to leverage commonalities and produce compatible software components, formally called packages and (2) to amortize the cost and efforts associated with more formal software engineering requirements. With a modest level of coordination and without unduly compromising package team autonomy, Trilinos project members could leverage each other’s efforts, consolidate commonly needed tools, make packages compatible, and define a common set of software engineering tools and processes." -- Heroux and Willenbring, "A new overview of the Trilinos project", Scientific Programming 20 (2012) 83–88.
From its inception in 2001, Trilinos has been a federated system of software packages dedicated to continuous improvement, providing essential capabilities for applications within the High Performance Computing (HPC) community. This community comprises over 140 current members with over 500 contributors from government laboratories and academia institutions across more than 10 countries. As an early exemplar of a "team of teams", Trilinos has consistently embraced open-source principles such as collaboration, community engagement, innovation, accessibility, interoperability, quality, reliability, and sustainability. Moving forward Trilinos will remain committed to these principles, fostering broader adoption within the HPC community across a diverse set of platforms and architectures.
Stokhos: BSD-3-Clause (Nvidia: Apache License, Version 2.0)
Stratimikos: BSD-3-Clause
Teko: BSD-3-Clause
Tempus: BSD-3-Clause
Teuchos: BSD-3-Clause (LAPACK: BSD License)
Thyra: BSD-3-Clause (GNU GLOBAL: GNU General Public License (GPL))
Tpetra: BSD-3-Clause
TrilinosCouplings: BSD-3-Clause
Triutils: BSD-3-Clause
Xpetra: BSD-3-Clause
Zoltan: BSD-3-Clause
Zoltan2: BSD-3-Clause (Sphynx - BSD-3-Clause)
Depending on the package:
Required dependencies:
Boost: Boost Software License 1.0
CDT: Mozilla Public License (MPL) 2.0
LAPACK: BSD License
Matio: BSD 2-Clause "Simplified" License
Netcdf: NetCDF license
X11: MIT License
Optional dependencies:
Vendor toolchains (CUDA, ROCm, AMD with various licenses)
ADIOS2: Apache License 2.0
ARPREC: BSD-3-Clause
AmgX: NVIDIA Software License
ArrayFireCPU: BSD License
Avatar: Apache License 2.0
BLACS: BSD License
BinUtils: GNU General Public License (GPL)
Boost: Boost Software License 1.0
CAMAL: Apache License 2.0
CASK: MIT License
CGNS: CGNS License (derived from LGPL)
CSparse: GNU General Public License (GPL)
Catalyst2: Commercial?
Cereal: BSD License
Cholmod: GNU Lesser General Public License (LGPL)
Clp: Common Public License Version 1.0
Cusp: MIT License
DLlib: Boost Software License - Version 1.0
DataWarp: Cray?
Eigen: Mozilla Public License 2.0
ExodusII: BSD License
Faodel: MIT License
GLPK: GNU General Public License (GPL)
HDF5: BSD License
HIPS: MIT License
HWLOC: BSD License
HYPRE: MIT license and the Apache License (Version 2.0)
LAPACK: BSD License
Lemon: GNU Lesser General Public License (LGPL)
MAGMASparse: BSD License
MATLAB: Proprietary License (MathWorks)
MATLABLib: Proprietary License (MathWorks)
METIS: Apache License Version 2.0
MF: Common Public License Version 1.0
MKL: Proprietary License (Intel)
MUMPS: MIT License
Nemesis: BSD License
OVIS: BSD License
OpenNURBS: GNU General Public License v2.0
Oski: BSD License
PAPI: MIT License
PARDISO: Proprietary License
PARDISO_MKL: Proprietary License (Intel)
PETSC: BSD License
PaToH: Apache License Version 2.0
ParMETIS: Apache License Version 2.0
Pnetcdf: NetCDF license
Pthread: (various vendor licenses)
PuLP: Solderpad Hardware License
QD: MIT License
QT: GNU General Public License (GPL) or Commercial License
QTHREAD: GNU General Public License (GPL) or Commercial License
SARMA: BSD License
SCALAPACK: BSD License
SPARSKIT: Commercial?
STRUMPACK: BSD License
Scotch: CeCILL-C free/libre software license
SuperLU: BSD License
SuperLUDist: BSD License
SuperLUMT: BSD License
TAUCS: TAUCS License
TBB: Apache License 2.0
Thrust: Apache License 2.0
TopoManager: Apache License 2.0
UMFPACK: GNU General Public License (GPL)
VTune: Proprietary License (Intel)
Valgrind: GNU General Public License (GPL)
ViennaCL: ViennaCL-1.7.1
Zlib: zlib License
mlpack: BSD License
pebbl: BSD License
qpOASES: GNU Lesser General Public License (LGPL)
quadmath: GNU General Public License (GPL)
y12m: NetCDF license
yamlcpp: MIT License
Required dependencies for tests:
MPI implementations (e.g., OpenMPI [BSD])
Netcdf: NetCDF license
Optional dependencies for tests:
Vendor toolchains (CUDA, ROCm, AMD with various licenses)
ADIC: MIT License
ADOLC: Eclipse Public License -v 1.0
Cholmod: GNU Lesser General Public License (LGPL)
HDF5: BSD License
HYPRE: MIT license and the Apache License (Version 2.0)
LAPACK: BSD License
METIS: Apache License Version 2.0
MKL: Proprietary License (Intel)
MPI implementations (e.g., OpenMPI [BSD])
OVIS: BSD License
PETSC: BSD License
PaToH: Apache License Version 2.0
ParMETIS: Apache License Version 2.0
Pthread: (various vendor licenses)
PuLP: Solderpad Hardware License
QD: MIT License
QTHREAD: GNU General Public License (GPL) or Commercial License
SARMA: BSD License
SPARSKIT: Commercial?
Scotch: CeCILL-C free/libre software license
SuperLU: BSD License
TopoManager: Apache License 2.0
yamlcpp: MIT License
Please describe your release methodology and mechanics
The HEAD on Trilinos's master branch is a fully tested and "ready for use" commit, and can be used for any release. We tag releases using Semantic versioning approximately every three months with GitHub (three minor releases and one annual major release). Pull Requests (PRs) can be labelled to be included in the release notes.
The release process is completed using the "Trilinos Release Checklist", which briefly includes creation of a branch for release, update the version numbering, setup the release PR testing, tag the release, announce the release to the Trilinos community, and add release to the Trilinos Spack package.py.
Trilinos's CI requires Pull Request (PR) and Master Merge (MM) testing prior to being committed to the develop and master branches respectively. This testing encompasses a variety of builds (e.g., compilers, MPI, release, debug, C++ standard, platforms, UVM, parallel/serial, static/shared, numerical types, and many other optional flags) and tests (e.g., individual package tests and Trilinos infrastructure tests). Pull Requests (PRs) are merged to the develop branch upon passing this testing. On a weekly basis the develop branch is merged to the master branch after passing the MM testing, which includes additional builds. Additionally, Nightly builds provides testing that are expensive and/or under development for PR and MM testing (e.g., new platforms, compilers, C++ standards).
Trilinos reports its OpenSSF Scorecard, and run CodeQL on a limited number of packages but it is expanding.
Auditing:
As part of funding from the Department of Energy (DOE), Trilinos is required to complete an audit (ISO 9001 certified) of its software quality every 3 years. Trilinos has been part of this auditing process since 2008, and covers various aspects of software development (e.g., project management, software engineering, software verification, and training).
Please list the project's leadership team
The Technical Steering Committee (TSC) has two groups:
Operational Leadership maintains CI/CD processes and develops software to meet application needs. The current members are:
Curtis Ober (SNL) (Trilinos Product Owner) -- GitHub handle: ccober6
Sam Browne (SNL) (DevOps Lead) -- GitHub handle: sebrowne
Roger Pawlowski (SNL) (Core Area Lead) -- GitHub handle: rppawlo
Christian Glusa (SNL) (Solvers Area Lead) -- GitHub handle: cgcgcg
Mauro Perego (SNL) (Discretization and Analysis Area Lead) -- GitHub handle: mperego
Strategic Leadership primarily defines and develops Trilinos strategic research directions to support future application needs. The current members are:
Package Owners lead the package team in performing research and development, and coordinating with other Trilinos packages.
Please list the project members with access to commit to the mainline of the project
PRs can be created by any Trilinos developer or contributor, but PR Testing can only be initiated by Pretest-Inspectors who review and approved the PR. Membership to the Pretest-Inspectors GitHub team is controlled by the Trilinos Leadership.
Trilinos has a very open policy on who is included in the Pretest-Inspectors team (currently 81 members) and usually includes leadership, package leads and developers. Currently though it is limited to Sandians due to security concerns related to initiating computing sources. It is hoped that this restriction will be removed in the near future.
Please describe the project's decision-making process
Given Trilinos's two-level federated model, package teams independently make decisions regarding the research, development, and implementation of their package's software and processes. These teams are expected to adhere to the accepted processes and norms of the open-source community, including those established by the Linux Foundation, HPSF, and Trilinos itself.
Decisions within package teams are typically reached through developer consensus, with co-team members engaging in discussions, reviews, and approvals via the pull request (PR) process. However, decisions related to package interoperability, compatibility, and common software engineering tools and processes (CI/CD) are managed by the Trilinos Leadership (i.e., TSC), and this often involves package leads due to their expertise and the impact on their respective packages.
Additionally, the Trilinos Leadership is responsible for reviewing applications for new packages and their inclusion in Trilinos. The Trilinos Leadership also formulates policies to encourage package teams to enhance software quality, sustainability, and security.
Discussion topics and decisions are presented and discussed by the Trilinos Leadership regularly (~ 3 weeks) at Trilinos Developers Meetings and at the annual Trilinos Users/Developer Group (TUG) Meeting.
What is the maturity level of your project?
We expect to join at the “Established” stage. Currently, we do not meet the requirement that no more than 50% of our leadership team come from the same institution for “Core” membership.
Trilinos packages have their own maturity level and growth rate. However, a majority of the packages meet all the criteria of the Established Stage, and many of the Core Stage.
Acceptance Criteria:
Sandbox Stage:
[x] Meet all requirements to be a Linux Foundation project
[x] Have 2 TAC sponsors to champion the project & provide mentorship as needed
[x] Submit a proposal for membership and present it at a meeting of the TAC
[x] Have a charter document with an intellectual property policy that leverages open licenses, including, in the case of contributions of code, the use of one or more licenses approved as “open” by the Open Source Initiative. The staff of the High Performance Software Foundation can assist projects in preparing a technical charter following the High Performance Software Foundation’s standard template.
[x] Have a code of conduct (part of default governance for LF – there is a template)
[x] Upon acceptance, projects must list their status prominently on their website/README
Established Stage:
[x] Document that it is being used successfully in production by at least three independent end users which, in the TAC’s judgment, are of adequate quality and scope.
[x] Demonstrate development processes (e.g., use of pull requests, code review, testing, CI) that lower barriers to contribution and ensure software quality necessary for increased adoption.
[x] Demonstrate a substantial ongoing flow of commits and merged contributions.
[ ] Since these metrics can vary significantly depending on the type, scope, and size of a project, the TAC has final judgment over the level of activity that is adequate to meet these criteria.
[ ] Receive a 2/3 majority vote of the TAC to move to the Established Stage.
Core Stage:
[ ] Have a defined governing body of at least 4 or more members (owners and core maintainers), of which no more than 1/2 of whom are affiliated with the same employer. No single institution may control a voting majority of the governing body.
[x] Have a documented and publicly accessible description of the project's governance, decision-making, and release processes.
[x] Have a healthy number of committers from at least two organizations. A committer is defined as someone with the commit bit; i.e., someone who can accept contributions to some or all of the project.
[x] Explicitly defined security reporting and incident mitigation processes, as appropriate to the security risks of the project.
[x] Explicitly defined project governance and committer process.
[x] Provide evidence of widespread adoption in the HPC ecosystem or in some important component thereof.
[ ] Receive a 2/3 majority vote from the TAC to move to Core stage. Projects can move directly from Sandbox to Core if they can demonstrate sufficient maturity and have met all requirements.
Emeritus Stage:
[ ] 2/3 vote of the TAC.
[ ] Approval from project ownership.
Please list the project's official communication channels
Please describe any existing financial sponsorships
All Trilinos leadership, package leaders and developers are financed by their respective institutions. Currently, many contributors receive funding from the Department of Energy (DOE). This support is subject to annual renewal. However, given that many DOE-supported applications rely on Trilinos for their capabilities, it is likely that this support will continue for the foreseeable future.
Please describe the project's infrastructure needs or requests
Trilinos is very interested in CI support, particularly on external platforms of various architectures.
Trilinos is also interested in broadening its annual user meeting to the larger HPC community, possibly with other HPSF projects.
Trilinos would also be interested in refreshing its website.
Project Proposal
Name of Project: Trilinos
Project Description
The Trilinos project is a community of developers, users and user-developers focused on collaborative creation of algorithms and enabling technologies within an object-oriented software framework for the solution of large-scale, complex multi-physics engineering and scientific problems on new and emerging high-performance computing (HPC) architectures. Trilinos is composed of packages addressing various computational needs of engineering and scientific simulations, including basic linear algebra, utilities for finite-element analysis, suite of common services, partitioning and load balancing, eigensolvers, linear solvers, preconditioners, automatic differentiation, discretization utilities, nonlinear/transient/optimization solvers, and a collection of interfaces and adapters.
Trilinos's Philosophy – "The Trilinos project was established to address two important needs: (1) bringing teams of library developers together in order to leverage commonalities and produce compatible software components, formally called packages and (2) to amortize the cost and efforts associated with more formal software engineering requirements. With a modest level of coordination and without unduly compromising package team autonomy, Trilinos project members could leverage each other’s efforts, consolidate commonly needed tools, make packages compatible, and define a common set of software engineering tools and processes." -- Heroux and Willenbring, "A new overview of the Trilinos project", Scientific Programming 20 (2012) 83–88.
From its inception in 2001, Trilinos has been a federated system of software packages dedicated to continuous improvement, providing essential capabilities for applications within the High Performance Computing (HPC) community. This community comprises over 140 current members with over 500 contributors from government laboratories and academia institutions across more than 10 countries. As an early exemplar of a "team of teams", Trilinos has consistently embraced open-source principles such as collaboration, community engagement, innovation, accessibility, interoperability, quality, reliability, and sustainability. Moving forward Trilinos will remain committed to these principles, fostering broader adoption within the HPC community across a diverse set of platforms and architectures.
https://trilinos.org/ https://github.com/trilinos
Code of Conduct
Trilinos Technical Charter Trilinos Governance
Todd Gamblin (@tgamblin) and Christian Trott (@crtrott)
GitHub
GitHub
Please list all external dependencies and their license
Please describe your release methodology and mechanics
Please describe Software Quality efforts (CI, security, auditing)
Please list the project's leadership team
Please list the project members with access to commit to the mainline of the project
Please describe the project's decision-making process
What is the maturity level of your project?
Please list the project's official communication channels
Please list the project's social media accounts
Trilinos-Official - YouTube
All Trilinos leadership, package leaders and developers are financed by their respective institutions. Currently, many contributors receive funding from the Department of Energy (DOE). This support is subject to annual renewal. However, given that many DOE-supported applications rely on Trilinos for their capabilities, it is likely that this support will continue for the foreseeable future.
Please describe the project's infrastructure needs or requests