{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "This is more a bookmark post that a real post." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Prompt by recent discussion on the IPyton mailing list and on twitter, I think we miss a place to rassemble informations on how to build a kernel regardless of the language and a place to reference thoses implementation.\n", "\n", "You shoudl probably at some point read [this blog post from IHaskell creator](http://andrew.gibiansky.com/blog/ipython/ipython-kernels/) to know more about architecture. But really at some point what you will need is example and advices. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Do not assume others get it right" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Even if other kernel are working, this does not meen they got things right. Even IPyhton kernel had things wrong in some places.\n", "Things can be wrong iin implementation but also in the way we though of things. In bothe case tell us and/or the author." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Start simple" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " 2. start IPython with `--debug` flag it will print all exchanges messages.\n", " 1. set `c.Session.key=''` at start not to sign messages.\n", " \n", " \n", "You do not need either to have all the protocol implemented at first, things like completion request can be added later." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Contribute Back" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As soon as you find something which not clear or mising in the doc, please send a Pull Request, or open an Issue." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## We have a test suite" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can probably run it against your kernel, it will give you an idea of your progress, and tell you what need to be done.\n", "\n", "TODO: write on how to run the test again another kernel." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Things become obsolete" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This article is probably already obsolete, and things like [my node kernel](http://nbviewer.ipython.org/gist/Carreau/4279371/node-kernel.ipynb) don't even work because IPython has changed after I wrote it. Technically the kernel shoudl still work, but the instruction to make it run are wrong now. Try to focus on active project when searching for examples." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "IPython (Python 3)", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3" }, "signature": "sha256:c7179feec7e486291dbe73fdeafb4cd3f7d21774e44d292d88b0aec1fdac0132" }, "nbformat": 4, "nbformat_minor": 0 }