Ok sorry, I think I'm begging to understand what you're getting at -- I agree that a SIP-less default PyQt4 import better conforms to the principle of least surprise, and for that reason might be better than explicitly loading v1 in qt_for_kernel.

My hangup was that I don't think this really going to increase compatibility with user code (especially pre-existing applications that are plugging in IPython functionality for the first time). I think any code which relies on IPython to pick a default is liable to then happen to use Qt in an incompatible way. Fortunately, the easy fix is for user code to actively manage Qt imports. IPython will then cooperate if it can, or (if the user wants PyQt4v1 and tries to use frontend IPython code), will stop short of a segfault.

Anyways, it sounds like the fix is to change the `QT_API_PYQTv1` requests in qt_for_kernel to a new `QT_API_PYQT_DEFAULT`, and to modify `load_qt` accordingly.