URL: https://linuxfr.org/news/sortie-d-ipython-en-version-3-0 Title: Sortie d’IPython en version 3.0 Authors: mbussonn palm123, BAud, Benoît Sibaud, Nicolas Casanova, Nÿco, Snark, Ytterbium, Jiehong et esdeem Date: 2015年02月14日T01:11:29+01:00 License: CC By-SA Tags: nbviewer, ipython, python et jupyter Score: 35 Pour ceux qui ne connaissent pas IPython, je vous propose de consulter les [dépêches précédentes](https://linuxfr.org/news/sortie-d-ipython-en-version-2-0) car, même si à l'origine il s'agissait uniquement d'une console évoluée pour Python, l'envergure des possibilités a bien changé. Pour rappel : _IPython est une console alternative principalement tournée vers l’exploration interactive des données. [...] Au‐delà d’une simple console Python, elle est aussi agnostique au niveau du langage en offrant une console Qt, un notebook Web (interface Web riche) et l’architecture pour y écrire dans son dialecte préféré._ Pour ceux qui préfèrent une version des nouvelles fonctionnalités dans la langue de Shakespeare, je vous suggère de lire les [notes de version en anglais](http://ipython.org/ipython-doc/3/whatsnew/version3.html). Je vais me contenter de faire une traduction libre dans la langue de Molière, ainsi que de digresser sur d'autres sujets voisins. Merci à tous les contributeurs à cette dépêche qui ont corrigé toutes mes fautes, anglicismes et autre erreurs qui font saigner les yeux etc. Merci palm123, eggman, BAud, Jiehong, Nÿco, Snark, Ytterbium et Nicolas Casanova. ---- [Site officiel](http://ipython.org) [Site officiel de Jupyter (nouveau nom)](http://jupyter.org/) [Sortie-d'IPython en version 2.0](https://linuxfr.org/news/sortie-d-ipython-en-version-2-0) [Tester 3.0 maintenant dans votre navigateur](https://try.jupyter.org/) [Notes de version](http://ipython.org/ipython-doc/3/whatsnew/version3.html) [Annonce sur la liste de diffusion](http://mail.scipy.org/pipermail/ipython-dev/2015-February/016009.html) [IPython sur PyPI](https://pypi.python.org/pypi/ipython) ---- # En quelques mots Le lecteur de LinuxFr.org étant friand de temps libre et n'étant pas habitué au roman de plus de 150 caractères, à cause de la plateforme sociale de gazouillement, un résumé s'impose : - Presque un an de travail. - Beaucoup de changements sous le capot - Nouveau design de l'interface - Peu de nouvelles fonctionnalités dans le cœur, mais malgré tout : - sélecteur de noyau dans l'interface - complétion Latex vers Unicode - nouveaux formats de _Notebook_ - terminal dans le navigateur - éditeur de texte - Nouveautés externes: - Multi-utilisateur - Au revoir IPython, on renomme une grande partie du projet. - NbGrader pour noter ses élèves - Intégration avec Google Drive - Essayez-le maintenant dans votre navigateur avec Python, R & Julia : [try.jupyter.org](https://try.jupyter.org) # Récapitulatif Pour cette version 3.0 de IPython, nous avons eu plus de 150 contributeurs et près de 6000 commits, sur une durée d’un peu moins d’un an. La prise en charge de langages autres que python s'est beaucoup améliorée et, en particulier, il est maintenant possible de changer de noyau à la volée sans redémarrer le serveur web et configurer un nouveau profil. ![sélecteur de noyal](http://ipython.org/ipython-doc/3/_images/kernel_selector_screenshot.png) ## Éditeur de texte Suite à une demande de plus en plus forte d'héberger ses serveurs dans les nuages, la possibilité d'éditer des fichiers texte a été incorporée. Grâce à [CodeMirror](http://codemirror.net/) vous pouvez maintenant directement éditer des fichier `.py`, `.jl` , `.js` et tout autre fichier texte à partir de votre navigateur. Cet éditeur gère même des modes d'édition Vim, Emacs et Sublime Text afin de faire plaisir à la majorité des barbus qui utiliseraient cette interface web. Bien sûr cet éditeur ne vaut pas un bon vieux [ed](http://en.wikipedia.org/wiki/Ed_(text_editor)) sur un [VT100](http://en.wikipedia.org/wiki/VT100), mais dépanne quand même. ## Terminal Bien sûr comme tout (bon) codeur a besoin de son terminal, il est possible d'avoir un émulateur de terminal complètement écrit en JavaScript pour utiliser son gestionnaire de versions ou son installeur de paquet favoris. Alors c'est utilisable, mais faut pas compter sur les standards web pour prendre en compte les claviers non QWERTY. Ainsi on peut dire au revoir à tout caractère qui aurait besoin de recourir à la touche ALT or ALT-GR. Sur mon AZERTY donc, pas de [pipe](https://fr.wikipedia.org/wiki/Tube_%28shell%29). On remercie aussi les concepteurs de polices de caractères, en particulier le créateur de "[[Consolas]]", pour qui une police monospace n'est monospace que pour les caractères ASCII. Ce serait trop facile sinon. Ainsi une fonte en caractère **gras** -- même monospace -- , n'est pas la même fonte qu'en normal, ou _italique_, et n'a donc pas la même largeur. Les logiciels utilisant `curses` ou équivalent (type aptitude of midnight commander) sont donc partiellement cassés. ## LaTeX Petite addition, mais pas des moindres, pour les scientifiques. Il est possible de taper les caractères Unicode en utilisant la notation LaTeX si le noyau le permet. On doit cette amélioration aux développeurs de [Julia](https://github.com/JuliaLang/julia/pull/6911) principalement. `F\vec` vous donnera un joli vecteur F, ou `\alpha\dot` si vous préférez les dérivées de lettres grecques. ![Completions LaTex Unicode](http://ipython.org/ipython-doc/3/_images/unicode_completion.png) Le web étant, encore une fois, un monde merveilleux plein de [licornes roses dansant sur des arc-en-ciels](https://www.youtube.com/watch?v=qRC4Vk6kisY), un navigateur ayant pas mal de part de marché combine les signes diacritiques avec le caractère suivant au lieu du précédent, donc ce n'est pas toujours utilisable... ## Format de Notebook Le format de Notebook a été simplifié et uniformisé, ce qui devrait faciliter la manipulation et génération par des bibliothèques ou programmes tiers. Le format est aussi décrit par un schéma JSON, donc plus de surprise pour l'interopérabilité, le schéma sert de référence. De même le protocole de communication [ZMQ](http://zeromq.org/) ou [websocket](http://fr.wikipedia.org/wiki/WebSocket) devrait être plus cohérent et avoir moins de cas particuliers à traiter. Une fois n'est pas coutume, les changements ont été rétroportés sur IPython version 2.4 qui sera donc capable de lire les Notebooks générés par son grand frère. ## Design Le design du Notebook a été plus travaillé que dans les précédentes versions. [Adrienne Wan Tulok](http://adriennewantulok.com/) a même été engagée à temps partiel et s'est même essayée au jeu des _Pull Request_ sur GitHub, ce qui n'a pas été un grand succès. Néanmoins nous sommes contents du travail de design effectué et recommencerons l'expérience. # Tout ça pour ça ? Bon, finalement, en un an de travail, ça fait peu de choses visibles pour l'utilisateur final ! Elles sont où les nouvelles fonctionnalités ? Et bien, majoritairement elles sont au niveau des API et dans des projets externes. IPython est maintenant capable de parler avec pas moins de [33 noyaux](https://github.com/ipython/ipython/wiki/IPython-kernels-for-other-languages), et pas forcément des moins impressionnants. Nous avons en particulier eu la surprise de voir Facebook relâcher un noyau LuaJit. Il est aussi en particulier possible d'écrire un noyau basé sur Python en [moins de 80 lignes](https://github.com/Carreau/mochi-kernel/blob/master/mochikernel/mochikernel.py). Ceci est en partie dû à l'amélioration et la simplification du protocole qui, à chaque version, devient un peu moins spécifique à Python. Certains n'hésitent pas à écrire des noyaux bash, qui affichent [des images](http://jeroenjanssens.com/2015/02/19/ibash-notebook.html), et [font de l'analyse de donnée](http://nbviewer.ipython.org/github/jeroenjanssens/jeroenjanssens.github.io/blob/master/Data%20Science%20at%20the%20Command%20Line%20-%20When%20is%20Fashion%20Week%20in%20New%20York%3F.ipynb) avec. ## IPython est mort, longue vie à IPython Le fait qu’IPython soit polyglotte est peut-être un bon côté, mais le projet tel qu'il est aujourd'hui commence à devenir une usine à gaz. Le terme Python dans le nom est aussi problématique pour la communication. Beaucoup de personnes se demandent pourquoi installer IPython si le but est d'écrire en Haskell ou en Perl ! Pour des raisons légales aussi : en effet IPython est trop proche de Python et la PSF ([Python Software Foundation](https://www.python.org/psf/)) serait dans le droit, et serait probablement même obligée, de demander de changer de nom dans le cas où une majorité du code ne serait pas en Python. C'est pour cela qu'une grande partie du code de IPython va être renommé pour devenir Jupyter. Le programmeur attentif remarquera même que le terme et logo s'invitent déjà dans beaucoup d'endroits dans cette nouvelle version : ![Jupyter Logo](https://raw.githubusercontent.com/ipython/ipython/master/IPython/html/static/base/images/logo.png) ## Jupyter Jupyter est donc l'endroit qui regroupe et accueille volontiers tout projet en rapport avec Jupyter/IPython, sans avoir de spécificité pour un langage en particulier. On retrouvera, ici, la majorité des nouvelles fonctionnalités. ## JupyterHub [JupyterHub](https://github.com/jupyter/jupyterhub) fait partie des premiers projets créés sous cette organisation et se charge d'établir des fonctionnalités multi-utilisateurs. Le public visé est plutôt la petite structure disposant d'une équipe informatique que l'utilisateur lambda. Avec JupyterHub, vous pouvez vous connecter et avoir accès à vos Notebooks, sans exposer une centaine de ports au monde entier. ## Tempnb De JupyterHub s'est dérivé [tempnb](https://tmpnb.org/), qui est maintenant gracieusement hébergé par [Rackspace](http://developer.rackspace.com). Il s'agit d'un service qui déploie des serveurs temporaires sous Docker sur lequel vous pouvez vous amuser pendant quelques heures. Les conteneurs n'ont pas accès au réseau cependant, donc pas de spam ou de minage de bitcoin. Durant les périodes de test, tmpnb était déployé sur des machines relativement puissantes allant jusqu'au demi-Teraoctet de mémoire vive, et plus de stockage SSD que je ne pensais pouvoir voir dans un serveur physique. Vous pouvez aller vous amuser à l'adresse suivante : [try.jupyter.org](https://try.jupyter.org/). Il y a Python, Julia et R, plus quelques bibliothèques d'installées. Si vous voulez aidez un peu l'open source, envoyer un _Tweet_ de remerciement à `@jessenoller`,`@rgbkrk`,`@smashwilson ` and `@rackspace`, cela les aidera à convaincre les dirigeants de donner plus de ressources à l'open source ([cliquez ici](http://twitter.com/home?status=Thanks%20to%20@rgbkrk,%20@smashwilson,%20@jessenoller%20and%20@Rackspace%20for%20supporting%20%23IPython%20and%20Open%20Source%20!) pour un _tweet_ pré-remplis). N'hésitez pas non plus à contacter [Rackspace developpeur](https://developer.rackspace.com) si vous avez un projet open source qui a besoin de machines ! ## NbGrader Bien que ce ne soit pas le but principal des Notebooks, ceux-ci sont semblerait-il de plus en plus utilisés dans l'enseignement. On trouve en particulier de plus en plus de [cours en ligne](http://nbviewer.ipython.org/github/numerical-mooc/numerical-mooc/blob/master/lessons/03_wave/03_01_conservationLaw.ipynb) qui [utilisent](http://lorenabarba.com/blog/announcing-aeropython/) des [Notebooks](https://www.coursera.org/course/scicomp). [Jess Hamrick](https://github.com/jhamrick) et [Brian Granger](https://github.com/ellisonbg) ont pris l'initiative de faire leur enseignement en utilisant les Notebooks et d'auto-noter à l'aide de [NbGrader](https://github.com/jupyter/nbgrader). L'enseignant crée les Notebooks avec énoncés, solutions, et points assignés à chaque question. Chaque Notebook peut alors être exporté en version étudiants, qui les complètent et les renvoient. À l'aide de tests unitaires les points sont assignés à l'élève. Quant aux questions ouvertes, un export vers Google Forms permet au correcteur de noter tout en gardant l'anonymat de l'étudiant, puis d'exporter un fichier de notes vers une base de données. Lors de la soumission, les élèves peuvent aussi être prévenus des questions auxquelles ils ne peuvent avoir tous les points. Ceci permet de fortement diminuer la charge de travail du correcteur, qui du coup peut passer plus de temps avec chaque étudiant. Il est aussi envisagé d'intégrer ceci avec une plateforme d'aide en ligne qui permettrait à l'étudiant de directement poster un lien vers la question problématique au lieu de copier/coller des morceaux de code. L'utilisation de ce système est en test à l'Université de Berkeley, et à L'Université Polytechnique de l'État de Californie. La combinaison JupyterHub, Nbgrader, IPython 3 avec Authentification intégrée avec GitHub est utilisée pour la distribution des sujets aux élèves, ainsi que la soumission de leurs solutions. Le tout étant hébergé pendant la période de test chez Rackspace. ## Jupyter drive Le web étant de plus en plus collaboratif, la demande de pouvoir partager et travailler à plusieurs sur un Notebook est croissante. Ceux qui ont suivi l'actualité Python ont probablement vu l'annonce de Google qui a créé [coLaboratory](http://youtu.be/bITvUUyvUAY?t=18m6s) : une version du Notebook basée sur Google Drive avec collaboration en temps réel. Google étant Google, l'avenir du projet était plus qu'incertain. Qui plus est, il s'agissait d'une ré-implémentation complète de l'interface, difficile à maintenir sur le long terme. L'idée est donc venue d'intégrer les fonctionnalité de coLaboratory directement dans IPython sous forme d'extensions, de manière propre et maintenable. C'est ce qu'est [Jupyter Drive](https://github.com/jupyter/jupyter-drive). L'extension ne prend pas encore en compte, pour l'instant, les commentaires et la synchronisation en temps réel, mais permet déjà d'accéder à ses fichiers sur Google drive. Pour ma part je suis maintenant à l'Université de Berkeley grâce à une généreuse donation de Google à cette même université. Je vais travailler jusqu'en novembre prochain sur l'intégration de l'API "real-time" de Google au sein de Jupyter Drive et, si le temps le permet, fournir une alternative open-source du côté serveur. # Divers ## O'reilly Suite à une discussion avec des développeurs de la plateforme d'édition [Atlas d'O'reilly](https://atlas.oreilly.com/), on a eu le plaisir de voir un prototype qui utilisait l'architecture de Jupyter pour rendre les exemple de codes de leurs ouvrages exécutable. Si le projet est continué en interne, la possibilité d'exécuter le code ne serait-elle donnée qu'aux auteurs, ou O'Reilly fera-t-il des e-books interactifs, le futur nous le dira. ## La Pomme Le nouveau terrain de jeux du nouveau langage de la Pomme (Apple Swift Playground) ressemble de plus en plus au Notebook d'après les descriptions de [leur blog](https://developer.apple.com/swift/blog/?id=24). Bonne ou mauvaise chose, je ne sais pas. ## Applications natives Certains doctorants allemands ont du temps à perdre, et ont fait des applications OSX "native", sous le nom [Kronos Notebook](http://www.kronosnotebook.com/) qui empaquette le Notebook avec [le noyau python](http://www.kronosnotebook.com/), ou le [noyau haskell](http://www.kronosnotebook.com/static/html/haskell.html). Je n'ai pas testé mais l'utilisation de [NWJS](http://nwjs.io/) (ex node-webkit) devrait permettre de s'abstraire un peu plus des limitations imposées par les navigateurs (peu de raccourcis claviers, et d'accès aux ressources locales). # Le mot de la fin ? Durant les semaines qui suivront la publication de IPython 3.0, le dépôt va être découpé en un grand nombre de plus petits projets. Ceci devrait permettre un cycle de publication de chaque projet bien plus rapide et, on l'espère, favoriser les contributions. Chaque projet étant bien plus petit, il sera aussi beaucoup plus facile d'avoir une influence sur la direction prise et, qui sait, de se voir donner les droits de commit sur le dépôt principal. Renommer une partie du projet permet aussi de montrer que Python n'est pas le seul langage. Avec [une trentaine](https://github.com/ipython/ipython/wiki/IPython-kernels-for-other-languages) de langages compatibles, on espère voir participer des internautes de tous horizons, capables d'apporter un point de vue programmation fonctionnelle, ou bien structure de données immutable. On serait aussi heureux de savoir si les utilisateurs désireraient une interface traduite. Merci donc à tous les utilisateurs, contributeurs, et lecteurs, ce fût un plaisir, tout du moins pour moi, de travailler sur ce projet, et j'espère que ça continuera ainsi longtemps.

AltStyle によって変換されたページ (->オリジナル) /