As discussed in this blog post, CVX is being moved to a full open source model.
From this point forward, the latest tagged/versioned build of CVX will be available at this GitHub Releases page. On that page you will find links to download cvx.zip
or cvx.tar.gz
. Both contain identical content:
- The full CVX source code
- Pre-compiled MEX files for Linux, Windows, macOS Intel, and macOS Apple Silicon
- Open-source solvers SeDuMi and SDPT3, compiled for the same platforms
- Open-source versions of the solver shims for GLPK, Gurobi and MOSEK.
- HTML and PDF versions of the documentation
Compared to older versions of CVX, these shims do not have:
- Bundled versions of Gurobi or MOSEK solvers. You will have to download and install those yourself, and ensure they are accessible from MATLAB.
- A license engine. Existing CVX academic and professional licenses do not work with these builds. Users must obtain licenses to MOSEK and/or Gurobi from their respective vendors.
- Separate bundles for each platform. Instead,
cvx.zip
andcvx.tgz
contain the MEX files for all platforms.
Astute observers will notice that these bundles also include MEX files for Octave on Windows, Linux, macOS Intel, and macOS Apple Silicon. They have not been verified beyond the cvx_setup
process, and they are currently not supported. I will be unable to provide that support. However, if members of the community wish to submit pull requests that fix Octave-related issues, we can review and approve them.
I hope this delivery process helps to simplify the use of CVX in the modern era. And I also hope that it might encourage community members to offer improvements. Here are some immediate needs I can identify:
- A test suite that can be run on our GitHub CI/CD processes that confirms the correct operation of CVX on a variety of problems—perhaps the example project set is a good first start. The idea is that every time a proposed change is submitted, these tests would be run to ensure that they haven’t been broken by the change.
- Updates to the documentation. The documentation has not been updated to reflect the new open-source status of the project, and therefore it still contains mentions of the licensing system, the built-in versions of Gurobi and MOSEK, and so forth. Pull requests to bring the documentation up to date are appreciated.
- Developer-focused documentation. This wouldn’t necessarily go into the existing docs pages, but rather in GitHub Markdown format in the repo itself.
- A more ambitious project might be to implement a GitHub Pages site for CVX that might replace cvxr.com. I’m not saying we have to do that; I am happy to fund the hosting of cvxr.com indefinitely. But in the spirit of community maintenance, detaching from my domain might be desirable.