Open-source project
OpenSees/OpenSees avatar
OpenSees/OpenSees

OpenSees: the source repository behind the structural analysis framework

OpenSees Source Code Repository

843 stars829 forksC++NOASSERTION

At a glance

What is it?
The OpenSees repository holds every revision since Version 2.3.2, with three build routes, a growing examples tree and a policy of forks and pull requests. The documentation now lives somewhere else.
Who is it for?
OpenSees suits structural engineers and researchers who need to modify the framework itself, run its example scripts, or ship a custom build, and it suits them better than the binary distributions for anything touching the solver internals. It does not suit someone who only wants to run a Tcl script, and it does not suit a workflow that expects the project to answer modelling questions in its issue tracker, since the README says those get closed.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 25, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Every revision since Version 2.3.2, and nothing older

The OpenSees repository is described in one sentence as containing all revisions of the source code since Version 2.3.2. Anything older is not here, and the README says older revisions can be made available on request. That boundary is worth remembering before you try to check out a tag from the pre-2.3.2 era and find it missing. The project itself is a structural analysis and earthquake engineering framework, and this repository is the C++ implementation behind it, with the source under SRC/ and the interpreter, model builder and library layers built from there. The root also holds EXAMPLES/ with dozens of separate example sets, from a one-off Example1 directory to large structure models, reliability studies and solver benchmarks.

The Docker route builds from source on Ubuntu 20.04 with Conan

The Dockerfile at the root of the repository builds the whole thing inside a container and installs the result under /usr/local/bin. It starts from a pinned base image and clones a specific release:

text
FROM ubuntu:20.04

WORKDIR /opensees

ARG versionOpenSees=v3.7.0

The dependency step installs cmake, gcc, g++, gfortran, liblapack-dev, git and python3-pip, then pins Conan to an exact release before cloning a specific HDF5 branch and configuring it under /usr/local/hdf5. The build itself clones the requested OpenSees branch and drives Conan and CMake:

text
    && git clone -b $versionOpenSees --single-branch https://github.com/OpenSees/OpenSees.git \
    && cd OpenSees \
    && mkdir build \
    && cd build \
    && conan install .. --build missing \
    && cmake .. \
    && cmake --build . --config Release \
    && cmake --install . \

Two details carry consequences. The ARG defaults to v3.7.0, so an unmodified build gives you that version rather than the newest one. And the container still targets Ubuntu 20.04 with conan==1.60.1, which is an older toolchain pairing than a fresh system would use.

The legacy Makefile path builds only the libraries

Alongside CMake sits the older build system, and it is not a dead branch. The top level Makefile pulls in Makefile.def, and the README comment at the top of that file tells you to edit it to match your archiver, compiler and options, with sample definitions in the MAKES directory. Once that file is right, the targets are simple. The default target builds the libraries needed to use the framework, the lib target builds just those libraries, and the OpenSees target builds only the interpreter. The Makefile also copies the built Tcl pieces into the user's home directory under bin and lib, which is how the interpreter finds its Tcl library. The practical difference between the two routes is scope: the Makefile route is aimed at producing libraries you embed, while the CMake and Conan route produces a configured install with the interpreter and its shared libraries.

Fork first, because the project accepts pull requests only

The contribution policy is stated unusually plainly. The README says that if you plan to collaborate with OpenSees or use it as your base code, you are strongly encouraged to fork the repository to your own account and work there, and that nobody will be allowed to write to this repository. Only pull requests are considered. That is a hard constraint for anyone planning to maintain a private patch series, since upstream is not a place to commit to. The policy sits alongside a second rule aimed at keeping the tracker usable: issues about modelling questions will be closed, and those questions are meant for the OpenSees message board or the OpenSees Facebook group. Bug reports, as the Makefile header shows, are still directed to a maintainer address, [email protected].

Documentation and build instructions have moved out of the repository

The README no longer describes how to use the software. It states that the documentation is being moved to a parallel GitHub repository, OpenSees/OpenSeesDocumentation, and that the documentation in its present form can be read in the browser at the OpenSees.github.io/OpenSeesDocumentation address. Build instructions for Windows, Linux and Mac point to a page under the same site. So the repository itself is now a code repository in the strict sense, with the prose that used to sit alongside it relocated. For a reader evaluating the project, that split has a practical effect: the source, the examples and the tests are all in this repository, while every explanation of how to use them lives in another one, and a link that worked years ago now points at a different path.

Version 3.8.0 shipped in 2026, and the copyright file is separate

The repository is not archived and the last push was on 2026-10-16, so work continues on the master branch. Released versions move on their own schedule: v3.8.0 was published on 2026-02-18, v3.7.1 on 2025-01-20, and v3.7.0 on 2024-07-30. Licence terms for this code are not a standard open source licence. The repository is listed with a custom licence that GitHub cannot classify, and the root contains a COPYRIGHT file rather than the usual LICENSE file, so redistribution terms have to be read there rather than assumed from the licence field. The same caution applies to the bundled examples, whose own directory listing shows a separate README, and to the submodules configuration, since the presence of a .gitmodules file means some dependencies arrive as separate repositories.

Editorial conclusion

OpenSees suits structural engineers and researchers who need to modify the framework itself, run its example scripts, or ship a custom build, and it suits them better than the binary distributions for anything touching the solver internals. It does not suit someone who only wants to run a Tcl script, and it does not suit a workflow that expects the project to answer modelling questions in its issue tracker, since the README says those get closed. Before building, confirm your platform against the documented build instructions, since the Docker route still pins Ubuntu 20.04 and a conan version of 1.60.1.

Frequently asked questions

How do I build OpenSees from source?

The README points to the documented build instructions for Windows, Linux and Mac at opensees.github.io/OpenSeesDocumentation/developer/build.html. The repository also ships a Dockerfile that clones the source, runs conan install, cmake and cmake --build, and installs the result.

Can I push my changes directly to the OpenSees repository?

No. The README states that nobody will be allowed to write to the repository and that only pull requests are considered, so you are expected to fork it to your own account and work there.

Where is the OpenSees documentation hosted now?

The documentation is being moved to a parallel repository, OpenSees/OpenSeesDocumentation, and can be read in the browser at OpenSees.github.io/OpenSeesDocumentation.

What licence applies to the OpenSees source code?

The project is listed with a custom licence that GitHub cannot classify, and the root of the repository holds a COPYRIGHT file rather than a standard LICENSE file, so the terms have to be read in that file.

Where can I ask OpenSees modelling questions?

The README says issues about modelling questions will be closed and points to the OpenSees message board at opensees.berkeley.edu/community and the OpenSees Facebook group instead.

Official sources

  1. Issues
  2. OpenSees/OpenSees on GitHub
  3. README
  4. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/opensees-opensees.svg)](https://hysenlabs.com/projects/opensees-opensees)

Was this useful?