diff --git a/docs/source/development/how_ipython_works.rst b/docs/source/development/how_ipython_works.rst
index c2856f3..8617891 100644
--- a/docs/source/development/how_ipython_works.rst
+++ b/docs/source/development/how_ipython_works.rst
@@ -1,4 +1,4 @@
-How IPython Works
+How IPython works
=================
Terminal IPython
@@ -23,7 +23,7 @@ All the other interfaces—the Notebook, the Qt console, ``ipython console`` in
the terminal, and third party interfaces—use the IPython Kernel. This is a
separate process which is responsible for running user code, and things like
computing possible completions. Frontends communicate with it using JSON
-messages sent over ZeroMQ sockets; the protocol they use is described in
+messages sent over `ZeroMQ `_ sockets; the protocol they use is described in
:doc:`messaging`.
The core execution machinery for the kernel is shared with terminal IPython:
@@ -47,6 +47,13 @@ the target language:
.. image:: figs/other_kernels.png
+Wrapper kernels are easier to write quickly for languages that have good Python
+wrappers, like `Oct2Py `_ for Octave, or
+languages where it's impractical to implement the communications machinery, like
+`bash_kernel `_. Native kernels are
+likely to be better maintained by the community using them, like
+`IJulia `_ or `IHaskell `_.
+
.. seealso::
:doc:`kernels`