14 points par GN⁺ 2024-01-14 | 1 commentaires | Partager sur WhatsApp
  • Un notebook pour expérimenter rapidement avec des données et des modèles
  • Exécution par cellule, calcul et mise à jour automatiques
  • Toujours réexécutable, sans état caché
  • Enregistré sous forme de fichier Python, donc compatible avec Git
  • Possibilité de transformer les notebooks en pipelines ou de les déployer comme applications web interactives

Environnement de programmation réactif

  • marimo garantit la cohérence entre le code du notebook, les sorties et l’état du programme.
  • Lorsqu’une cellule est exécutée, marimo met automatiquement à jour les cellules qui référencent ses variables, ce qui évite les erreurs liées à la réexécution manuelle des cellules.
  • Lorsqu’une cellule est supprimée, marimo retire ces variables de la mémoire du programme afin d’éliminer tout état caché.
  • Les notebooks s’exécutent dans un ordre déterministe fondé sur les références de variables, sans dépendre de la position des cellules dans la page.
  • Lorsqu’on interagit avec des éléments d’interface comme des curseurs, des menus déroulants ou des transformateurs de DataFrame, les cellules qui utilisent ces valeurs sont automatiquement relancées avec les valeurs les plus récentes.
  • marimo analyse statiquement le code afin de n’exécuter que les cellules nécessaires, ce qui améliore les performances.
  • marimo inclut diverses fonctionnalités pratiques comme GitHub Copilot, le formatage de code Black, l’export HTML, l’autocomplétion rapide, une extension VS Code, etc.

Démarrage rapide

  • Installation : installez marimo dans le terminal avec pip install marimo ou conda install -c conda-forge marimo.
  • Création d’un notebook : créez un notebook vide avec marimo editor et modifiez un notebook nommé avec marimo edit your_notebook.py.
  • Exécution de l’application : lancez marimo run your_notebook.py pour exécuter le notebook comme application web. Cette application est déployée sur le cloud marimo.
  • Exécution comme script : lancez python your_notebook.py pour exécuter un notebook marimo comme script.
  • Conversion automatique de notebooks Jupyter : utilisez la CLI pour convertir automatiquement des notebooks Jupyter en notebooks marimo.
  • Tutoriels : lancez marimo tutorial --help pour afficher la liste de tous les tutoriels.

En savoir plus

  • marimo est facile à prendre en main pour les débutants et offre de nombreuses fonctionnalités aux utilisateurs avancés.
  • Par exemple, vous pouvez découvrir l’outil de visualisation d’embeddings créé avec marimo (vidéo).
  • Vous trouverez davantage d’informations dans la documentation, le dossier examples/ et la galerie.

Inspiration

  • marimo réinvente les notebooks Python comme des programmes Python reproductibles, interactifs et partageables.
  • Avec la conviction que les outils que l’on utilise façonnent notre manière de penser, le projet espère offrir un meilleur environnement de programmation à la communauté Python.
  • Le projet s’inspire de nombreuses sources et initiatives, notamment Pluto.jl, ObservableHQ et les essais de Bret Victor.
  • marimo fait partie d’un mouvement plus large autour de la programmation réactive par flux de données, où des idées de programmation fonctionnelle, déclarative et réactive améliorent divers outils comme IPyflow, streamlit, TensorFlow, PyTorch, JAX et React.

L’avis de GN⁺

  • marimo est un notebook Python réactif innovant qui cherche à dépasser les limites d’outils existants comme les notebooks Jupyter, en facilitant l’expérimentation sur les données et les modèles, la confiance dans la justesse du notebook, ainsi que la mise en production sous forme de pipeline ou d’application web interactive.
  • Cet outil met l’accent sur la cohérence du code et la reproductibilité, tout en simplifiant les interactions avec les éléments d’interface utilisateur afin d’améliorer l’expérience de programmation.
  • marimo facilite la collaboration et le partage dans les domaines de la science des données, de la recherche et de l’éducation, et propose une plateforme qui favorise les interactions entre utilisateurs ainsi que le partage des connaissances grâce à la construction d’une communauté.

1 commentaires

 
GN⁺ 2024-01-14
Avis sur Hacker News
  • En tant qu'utilisateur de Jupyter et d'Observable, je ressentais le manque de réactivité des cellules dans Observable, et je pense que ce problème est bien résolu ici. J'aime le fait que le format de fichier de Marimo soit en Python, et la licence Apache 2 me plaît aussi. J'ai été impressionné par la découverte de la fonctionnalité GitHub Copilot.

    • Utilisateur de Jupyter et d'Observable, il réagit positivement à Marimo, qui résout bien le problème de réactivité des cellules, et apprécie particulièrement le format de fichier en Python, la licence Apache 2 et la fonctionnalité GitHub Copilot.
  • En travaillant avec des collaborateurs utilisant Jupyter Notebook, la configuration de l'environnement et l'état caché de Jupyter ont posé problème. Ce projet essaie de résoudre le second point, mais au prix de la flexibilité. Si l'on privilégie la reproductibilité, cela peut être un compromis acceptable. requirements.txt est la solution standard à un autre problème, mais son utilisation est fastidieuse.

    • Il souligne les problèmes de configuration d'environnement et d'état caché dans Jupyter Notebook, tout en notant que ce projet tente de résoudre le second au risque de perdre en flexibilité. Il trouve l'usage de requirements.txt contraignant et espère une meilleure solution.
  • Je suis heureux qu'enfin quelqu'un s'attaque à ce sujet. Il existe bien une extension VSCode, mais c'est dommage qu'elle ouvre une vue navigateur complète au lieu d'utiliser l'interface de notebook native de VSCode. Il partage aussi ses réflexions sur la gestion des packages et le déploiement de code en production.

    • Il exprime à la fois son enthousiasme et sa déception concernant l'extension VSCode, tout en soulignant l'importance de la gestion des packages et du déploiement du code, et indique vouloir contribuer au projet.
  • J'ai quelques questions sur la plateforme : qu'en est-il des widgets interactifs, et pourriez-vous expliquer les dépendances et les interactions avec l'écosystème Jupyter ?

    • Il s'interroge sur le support des widgets interactifs et sur la relation avec l'écosystème Jupyter, tout en montrant son intérêt pour porter ses propres widgets sur la plateforme.
  • Je pense que l'extension Jupytext est sous-estimée. Elle résout les problèmes d'interaction de Jupyter avec git ainsi que certaines pratiques de programmation qui compliquent l'écriture de fichiers de bibliothèque. J'attends des mises à jour réactives de ce nouveau projet qu'elles soient utiles aux débutants comme aux projets complexes.

    • Il insiste sur l'utilité de l'extension Jupytext et s'attend à ce que les mises à jour réactives du nouveau projet aident les débutants en programmation comme les projets complexes.
  • La liste des dépendances est courte et, en dehors de tornado, elle n'entraîne pas beaucoup de dépendances supplémentaires lourdes. Cela semble être un projet très utile et très élégant.

    • Il estime que la liste des dépendances du projet reste concise et peu contraignante en dehors de tornado, et salue son utilité ainsi que sa qualité.
  • Marimo me semble excellent. Je me demande s'il est envisagé d'ajouter le support de mermaid.js dans le markdown.

    • Réaction très positive à Marimo, avec une question sur la possibilité d'ajouter le support de mermaid.js dans le markdown.
  • Je suis fan d'Akshay et de Myles, les créateurs de Marimo, et je pense que l'arrivée d'un concurrent à Jupyter aura un effet bénéfique sur l'écosystème des outils scientifiques.

    • Il soutient Marimo et ses créateurs, et espère que cette concurrence apportera des changements positifs à l'écosystème des outils scientifiques.
  • Je pense que Quarto résout beaucoup des problèmes de Jupyter mentionnés dans ce fil. Même le NIH recommande l'utilisation de Quarto et propose des formations à ce sujet.

    • Il affirme que Quarto peut résoudre plusieurs problèmes de Jupyter et partage le fait que le NIH en recommande l'usage et propose des formations.
  • Définir plusieurs fois la même variable est une erreur. La raison est évidente. Mais si la variable n'est utilisée que dans la cellule où elle apparaît pour la première fois, la réutilisation du nom devrait être possible.

    • Il souligne que la redéfinition de variables est une erreur, mais estime que la réutilisation d'un nom devrait être autorisée sous certaines conditions.