The quantum computing industry provides public access to superconducting qubit systems through open-source quantum computing frameworks such as Qiskit. Compilation techniques play a critical role in leveraging these small scale, noisy devices by driving down error rates in program execution. The compiler backend decomposes quantum operations into microwave pulses which aim to realize the desired quantum operations with the highest fidelity possible. We introduce OpenPulse, a pulse-level programming component of Qiskit, that hands over analog control of quantum computing systems to the user. Using OpenPulse, the user can specify the exact time dynamics of a program by scheduling arbitrary waveforms on control system resources, and can recover the time dynamics of the measured output. This is sufficient to allow the user to freely characterize, verify and validate the quantum system, and to explore gate optimization and error mitigation techniques to enhance system performance. OpenPulse enables the community to collectively push the field onwards towards practical computation.