BT

Ionide : l'IDE atom f# écrit en f#

| par Sergio De Simone Suivre 14 Abonnés , traduit par Stéphane Wojewoda Suivre 11 Abonnés le 14 oct. 2015. Durée de lecture estimée: 6 minutes |

Ionide, basé sur l'Editeur Atom, est un ensemble de packages permettant de fournir un IDE complet, moderne, cross-plateforme et open-source pour les développements en F#.

Ionide est écrit en F# (transpilé vers JavaScript) avec les principales fonctionnalités suivantes :

  • Coloration syntaxique
  • Coloration des erreurs
  • Autocompletion
  • Bulles d'aide
  • Intégration avec F# Interactive qui propose un environnement REPL

Ionide s'intègre aussi avec plusieurs projets créés par la communauté F# pour proposer des fonctionnalités plus avancées comme :

  • La création de projet, en utilisant F# Yeoman Generator qui fournit plusieurs modèles pour les modèles de projet populaire.
  • La gestion de package avec Paket, qui permet d'ajouter, installer, mettre à jour et supprimer des packages et lister les packages non à jour.
  • Cibler les constructions, en utilisant FAKE, qui permet de construire le rendu dans un panneau intégré.

Ionide est disponible sur GitHub et peut être installé sur Linux, OS X, et Windows, en utilisant l'installateur de package d'Atom.

InfoQ a discuté avec le créateur d'Ionide, Krzysztof Cieślak.

InfoQ : Pourriez-vous nous dire ce qui vous a poussé à créer Ionide ?

Tout d'abord, je cherchais à passer un peu de temps sur un sujet open intéressant. La communauté F# est vraiment active en termes de projets open pragmatiques et productifs, et je voulais donc faire quelque chose d'utile pour la communauté que je trouve vraiment sympa et positive et qui fait souvent des choses incroyables. Deuxièmement, je finissais par être ennuyé par Visual Studio. S'il est un très bon IDE pour C# et F# (une fois que vous avez installé l'Extension Power Tools Visual F# - un autre projet open F# très intéressant), il ne correspond pas à tous les usages.

F# est super pour développer des applications plus "légères" et interactives, en utilisant F# REPL - FSI(F# Interactive). Je cherchais une alternative depuis un moment, mais je ne suis ni un utilisateur Vim, ni Emacs (qui ont un bon support F#), et le portage Sublime Text F# n'était pas aussi bon que je le voulais. J'ai donc un jour demandé sur Twitter si quelqu'un serait intéressé par un portage de F# pour Atom, et les retours furent vraiment positifs. Plus important, il y avait une suggestion très intéressante de Tomas Petricek - un des gourous de F# - avec une possibilité de développer le plugin en F# (les plugins d'Atom étant généralement écrits en JavaScript ou CoffeeScript). J'ai donc créé un repository GitHub et commencé à jouer avec l'API Atom et FsAutoComplete (les commandes de backend F# interagissaient avec le service FSharp.Compiler.Service sans accès au framework .Net e.g. Vim & Emacs).

InfoQ : Qu'est-ce que F# Atom propose ?

Je veux proposer une option pour un éditeur cross-plateforme léger pour les développeurs qui ne veulent pas s'appuyer sur Visual Studio ou Xamarin Studio pour tous leurs projets. Un IDE complet n'est pas nécessaire pour le développement F#, et si vous ne vous intéressez qu'au développement F#, il y a plein de fonctionnalités dont vous n'avez pas besoin ni ne voulez. VS avec VFPT et XS ont un portage F# incroyable - bien meilleur en termes de portage des fonctionnalités du langage - mais beaucoup de développeurs préfèrent d'autres outils, en particulier ceux venant de la programmation fonctionnelle. Une chose vraiment bien sur le développement des plugins Atom est sa flexibilité, donc j'ai réussi à construire un portage pour d'autres outils populaires et intéressants utilisés et créés par la communauté - Paket, FAKE et F# yeoman generator.

InfoQ : Quel est le niveau de maturité d'Ionide ?

Ionide est un projet open-source de 6 mois créé par quelques personnes, donc ce n'est vraiment pas ce que l'on peut appeler un produit "mature". Il y a des aspérités, des fonctionnalités pratiques de VS/XS ne sont pas encore là (par exemple, l'auto-editing des fichiers du projet) et quelques-unes ne seront probablement par portées avant longtemps (comme le debug, mais FSI le rend moins important). Le projet Ionide est en fort développement et nous nous efforçons d'ajouter et d'améliorer les fonctionnalités régulièrement et de traiter les problèmes utilisateurs vite. C'est compliqué de dire quand un éditeur est vraiment "prêt pour la production", cela dépend de l'ensemble de fonctionnalités dont vous pensez avoir besoin. Ionide n'en est pas encore à un point où je le recommenderais comme outil de développement F# pour des applications commerciales, mais c'est vraiment un super éditeur pour prototyper, écrire des scripts ou expérimenter REPL. Très franchement, ouvrir VS ou XS juste pour créer un nouveau projet est ridicule. Personnellement, je l'utilise au travail - mais je suis partial.

InfoQ : Auriez-vous quelques détails sur la feuille de route ?

Nous n'avons pas établi de feuille de route pour le projet, mais il y a quelques fonctionnalités sur lesquelles nous nous concentrons - dans les jours à venir nous prévoyons de lancer le panneau Ionide-WebPreview qui ajoutera la prévisualisation directement dans l'éditeur Atom qui pourra être utilisé avec d'autres outils comme FsReveal, FsLab, Suave, ou juste pour des développements web plus classiques (en fait, ce n'est pas très lié à la technologie F#). Après cela, les fonctionnalités suivantes sur lesquelles je prévoie de travailler sont un module de tests. Jared Hester, l'un des principaux contributeurs, travaille sur une fonctionnalité similaire à l'autocomplétion pour les glyphes unicode. Le code source de F# est l'UTF–8 et nous savons qu'il y a des individus du monde académique/recherche qui aimeraient des moyens plus faciles d'écrire des fonctions comme let inline Σ (xs:#seq<'a>) :'a = xs |> Seq.reduce (+). Il travaille plus généralement sur le rapprochement des fonctionnalités Ionide avec VS et XS.

InfoQ : Atom est surnommé "l'éditeur de texte hackable". Pourriez-vous nous en dire un peu plus sur le hack d'Atom ? Sur quelles fonctionnalités d'Atom vous appuyez-vous ? Comment cela vous a-t-il simplifié la vie ?

Je vous confirme qu'Atom est vraiment "l'éditeur de texte hackable" - il présente une très bonne API pour les plugins et beaucoup d'options de customisation simple pour les utilisateurs. C'est une application Node.js, donc les développeurs ont accès à la plupart des modules Node.js (et les développeurs de plugins n'ont pas à réinventer la roue). Et même lorsque l'API ne supporte pas certaines fonctionnalités dont vous avez besoin, c'est juste du HTML et du JS, donc le développeur peut presque toujours trouver un moyen de s'en sortir.

Mon expérience avec Atom est un peu différente des autres - comme je le disais, je n'utilise ni JS ni CoffeeScript, mais F# et le transpilant en JavaScript avec FunScript. Grâce à cela, je me suis appuyé sur les nombreux avantages d'un langage de programmation fonctionnelle très puissant (code succint, excellente abstraction de la modélisation de données, recherche de pattern, inférence des types, etc.) avec une superbe API, avec le potentiel pour une totale liberté d'ajustement de l'éditeur et l'ajout de nouvelles fonctionnalités, contrairement au développement de plugins/extensions pour VS ou XS où vous avez l'impression de vous battre contre le SDK de l'IDE pour chaque fonctionnalité. De plus, l'usage de F# facilite la contribution au projet (les développeurs F# étant les plus intéressés aux outils F# ;) ). Un dernier facteur important est que l'équipe Atom est vraiment top pour le support - elle itère et fixe les bugs très vite, souvent avec plus d'une mise à jour quotidienne d'Atom, avec des participants très actifs sur le channel Slack ou sur la partie problème de GitHub.

Evaluer cet article

Pertinence
Style

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Se connecter à InfoQ pour interagir sur ce qui vous importe le plus.


Récupérer votre mot de passe

Follow

Suivre vos sujets et éditeurs favoris

Bref aperçu des points saillants de l'industrie et sur le site.

Like

More signal, less noise

Créez votre propre flux en choisissant les sujets que vous souhaitez lire et les éditeurs dont vous désirez suivre les nouvelles.

Notifications

Restez à jour

Paramétrez vos notifications et ne ratez pas le contenu qui vous importe

BT