$$ \newcommand{\pmi}{\operatorname{pmi}} \newcommand{\inner}[2]{\langle{#1}, {#2}\rangle} \newcommand{\Pb}{\operatorname{Pr}} \newcommand{\E}{\mathbb{E}} \newcommand{\RR}{\mathbf{R}} \newcommand{\script}[1]{\mathcal{#1}} \newcommand{\Set}[2]{\{{#1} : {#2}\}} \newcommand{\argmin}[2]{\underset{#1}{\operatorname{argmin}} {#2}} \newcommand{\optmin}[3]{ \begin{align*} & \underset{#1}{\text{minimize}} & & #2 \\ & \text{subject to} & & #3 \end{align*} } \newcommand{\optmax}[3]{ \begin{align*} & \underset{#1}{\text{maximize}} & & #2 \\ & \text{subject to} & & #3 \end{align*} } \newcommand{\optfind}[2]{ \begin{align*} & {\text{find}} & & #1 \\ & \text{subject to} & & #2 \end{align*} } $$

**Nut graf**: Grant and Boyd describe a methodology to automatically reduce
nonsmooth convex programs to a form that is accepted by conic solvers. The
methodology requires that programs be specified using the *disciplined convex
programming* ruleset; it converts such programs into an epigraph-like form,
where the objective is affine and the constraints are conic composed with
affine. The implement this methodology in , which passes
the reduced problem to a conic solver in order to obtain a solution to the
original problem. The main contribution of this paper is that its
implementation helps to bridge the "gap between the theory and practice of
convex optimization."

**Commentary**: The pre-1.0 release of CVXPY is tightly coupled to graph
implementations. In CVXPY 1.0, we relax this coupling and introduce a
general purpose re-writing system that can target the practioner's back-end
of choice. In particular, this means that clients will no longer be restricted
to using conic solvers, and indeed they will no longer be necessarily
restricted to disciplined convex optimization or even to convex optimization
proper.