I summarized my reasons for switching to Vispy in my GSoC 2018 proposal. Here is the relevant excerpt:
p5 relies on pyglet for most of rendering and handling window events. However, Pyglet lacks support for directly working with modern OpenGL […]. [T]his also introduced strange errors that are responsible for most of the cross-platform issues. One goal of this project will be to remove the dependence on pyglet completely (and hence, make the code cleaner) and instead move the backend to VisPy. This has the following advantages:
VisPy is able to work with multiple windowing frameworks (PyQT, PySide, GLFW, etc). This will allow us to make the main windowing code framework independent and will allow us to specify the framework based on the system we are on. Thus giving us better cross-platform support.
VisPy works with modern OpenGL and p5 was already using some code from the VisPy project to workaround the lack of good OpenGL support in pyglet.
VisPy is designed to work with NumPy and many of p5’s internal primitives already use NumPy arrays.
VisPy will make it possible to extend p5 in new ways — for instance, with Jupyter Notebooks.