An important note about the future of CVX
[Summary: we are transitioning CVX to a fully open-source model that we hope will allow it to remain available and usable for the foreseeable future.]
The first publicly available version of CVX on MATLAB was released in 2005—19 years ago. Stephen Boyd and I, Michael Grant, could not have predicted at the time how popular this tool would become, 19 years on. Despite my extended absence from academia, I still receive over 1500 citations per year according to Google Scholar. And we are particularly proud that CVX was selected to receive the Beale Orchard-Hayes Prize for Excellence in Computational Mathematical Programming in 2012. The CVX Forum continues to be an active source of support for CVX users, thanks to key contributions from volunteers.
For the last 9 years, I (Michael) have been a member of Anaconda, Inc.—a company focused on the use of the Python language and ecosystem to advance the state of data science, machine learning, and AI. It has been an ideal company for someone with my skill set, and I have served in a variety of technical, management, and leadership roles. While I joined the company with full permission to continue supporting CVX, my obligations to the company—and to provide for my family!—necessarily took precedence. It has been clear for some time that I am unable to offer the level of support that a user of CVX might reasonably expect.
For that reason, I am moving CVX to a fully open-source model. Most of CVX has always been open-source, of course; but the support for commercial solvers such as Gurobi and MOSEK utilize a closed-source license management system of my own design, enabling CVX Research, Inc. to realize a modest revenue stream from commercial use of CVX. Effective immediately, CVX is free to use for all purposes, academic or commercial, even when paired with commercial solvers.
Over the coming 2-3 months, we will be migrating the primary hosting, maintenance, and distribution of CVX to GitHub. In fact, that work has already begun. When complete:
- The primary source for downloads of CVX will utilize GitHub’s Releases mechanism.
- Using GitHub Actions automation workflows, MEX files for all major desktop platforms—Windows, Linux, macOS Intel, and macOS Apple Silicon—will be built and included in the release bundles.
- The solver support for MOSEK and Gurobi will be made open source, with all license management removed. The first step towards this work is in this pull request. As this work is verified, it will be merged into the main branch and included in the official CVX releases.
- The CVX web site will be updated to fully reflect the new state of the software. The download page, for instance, will be updated to point to the GitHub Releases page, and the Licensing pages will be appropriately deprecated.
- We will be seeking assistance from key members of the community to build a proper continuous integration (CI) workflow for the GitHub repository—specifically, a regression test suite that ensures that any proposed changes to the CVX code base do not break existing functionality.
- The 3.0 beta code will be added to the public repository. This version never achieved a proper level of stability before work on it ceased, so short of community adoption and completion, it is not likely to be promoted to full release status, but community support could potentially change this.
It is our hope that once this transition to a full open-source distribution is complete, we can identify a core group of contributors who can field bug reports and implement improvements as needed. It is clear that CVX does not require significant ongoing improvements to remain useful to the convex optimization community! Nevertheless, the ability to make small corrections and improvements would undoubtedly be useful.
I hope that these changes prove to benefit the CVX community at large. To close, I’d like to offer my sincere gratitude to some key members of that community.
- To Mark Stone—by far the most prolific contributor to the CVX Forum. Thank you for your tireless support for the CVX user base, even if most of that time is spent breaking the bad news to people that their models are not, in fact, convex 🙂
- To Michał Adamaszek and Wenuyan Wang (王文渊) for providing the first support for CVX on Apple Silicon macOS. I do hope they are relieved by its official adoption into this new release structure!
- To Erling Andersen, for his contributions to the CVX Forum, but also for continuing to develop, maintain, and sustain MOSEK, without a doubt the best available solver for nonlinear convex optimization, both with and without CVX.
- To all of the CVX Forum members who seek to help others: Mark, Erling, Michał, Jack, Jifan, Shuzhen, Dipak, Kagana, Royi, and many others.
- To Mathworks for implementing my request to add Apple Silicon support to their GitHub Actions runners. It would have been much more difficult for me to complete this transition without it.
And of course, thank you to all of the users of CVX who have found it useful enough to them to offer their personal thanks to us, and to cite us in their published work!