Happy to answer any questions (I worked on Cirq).
There are already lots of great open source frameworks and languages (qiskit, pyquil, q#, among many others). A few things we've tried to do which we think are important for near term algorithms: * Data structures (Circuit, Moment, Operation) with nice control on building and optimizing circuits. Supports device specific constraints. * Qubits tied to a variety of spatial layouts. * Timing control through the Schedule data structure. * Runtime values supplied to circuits parameterized by symbols. One of the few classical operations supported by current hardware.