4 points par GN⁺ 2024-09-18 | 1 commentaires | Partager sur WhatsApp
  • Void était un fork de VS Code conçu pour utiliser des agents IA dans une base de code, visualiser les modifications sous forme de checkpoints et importer des modèles locaux ou n’importe quel hôte, mais le projet est désormais deprecated et n’accepte plus de contributions
  • Le projet reste open source, et les développeurs qui souhaitent forker VS Code peuvent s’appuyer sur la logique et la structure de Void
  • Le README présente comme références l’intégration React + Tailwind, les GitHub Actions pour le packaging, la signature et les mises à jour automatiques, le code des providers IA implémenté en interne, ainsi que l’architecture de gestion d’IPC et de conformité CSP
  • Void indique envoyer les messages directement au provider sans conserver les données, et prend en charge une syntaxe de réponse comme l’autocomplete (FIM), les balises <thinking> et les balises d’outils
  • Plutôt que de développer de nouvelles versions, le projet soutient désormais le fork et la réutilisation via des ressources comme Void Forks, les anciennes Releases, le Codebase Guide, HOW_TO_CONTRIBUTE et void-builder

État du projet

  • Void est deprecated et n’accepte plus de contributions
  • L’équipe remercie la communauté pour ses contributions de code et son soutien, et précise que Void reste open source
  • Le projet indique qu’il demeure une bonne référence pour les développeurs souhaitant forker VS Code

Téléchargement et ressources pour les forks

Éléments à reprendre pour implémenter un fork de VS Code

  • Void monte React + Tailwind
    • Cela n’est pas possible dans VS Code standard, donc le pipeline de build a été étendu pour compiler React et gérer le scope de Tailwind
    • Le scope Tailwind utilise scope
  • Il est possible de copier les GitHub Actions pour packager, signer et mettre à jour automatiquement Void
    • Le pipeline de build de VS Code étant privé, cela est généralement très difficile
  • Le code des providers IA a été implémenté entièrement from scratch
    • Il prend en charge l’autocomplete (FIM) et des réponses personnalisées
    • Il expose une syntaxe commune pour les balises <thinking>, les balises d’outils, etc.
    • Son architecture peut servir de référence pour l’usage d’IPC et le respect de la CSP
  • L’édition de fichiers repose sur des services personnalisés
    • EditCodeService peut afficher des diff jusqu’au niveau du token pendant le streaming du code
    • VoidModelService modifie les fichiers en arrière-plan et synchronise les fichiers de l’OS avec les buffers de texte
  • La liste complète des dépôts qui composent Void est disponible dans repos

Description des fonctionnalités de Void

  • Void permet d’utiliser des agents IA dans une base de code
  • Il permet d’enregistrer et de visualiser les modifications sous forme de checkpoints
  • Il permet d’importer en local n’importe quel modèle ou hôte
  • Il indique envoyer les messages directement au provider sans conserver les données des utilisateurs
  • Ce dépôt contient l’intégralité du code source de l’application Void Desktop

Liens de référence et support

1 commentaires

 
GN⁺ 2024-09-18
Avis de Hacker News
  • Récemment, en essayant de refactorer une application en utilisant VSCode comme une plateforme, je me suis bien brûlé les ailes à cause de choix de conception d’UI qui n’étaient ni faciles à contourner ni faciles à maintenir
    La marketplace d’extensions fermée de MS n’a pas aidé non plus pour des objectifs open source
    À la place, j’ai découvert Theia(https://theia-ide.org) sur HN, et comme c’est détenu par une fondation, avec une marketplace open source et la possibilité de tout modifier, cela semblait beaucoup mieux correspondre à des objectifs open source
    En théorie, c’est aussi compatible avec l’API d’extensions de VSCode, donc je recommande d’envisager Theia pour cette application aussi

    • À noter que les extensions peuvent être publiées sur OpenVSX
      Beaucoup de projets commencent à le faire ces temps-ci, pas tous, mais un bon nombre
    • Je me demande si Theia a un lien avec Eclipse, l’IDE Java historique
      Ou si la mention d’« eclipse » n’est qu’une collision de noms malheureuse
    • Si Theia est construit sur Monaco, je me demande si une transition en un clic, par exemple, serait possible
      L’éditeur Monaco fait théoriquement partie du dépôt vscode, et le « workbench » qui contient les paramètres/la configuration est une couche au-dessus
  • J’aimerais bien lire un article expliquant clairement pourquoi des outils comme Cursor ou Void ont choisi de créer un nouvel éditeur plutôt qu’une extension d’éditeur existant (extension VSCode, plugin JetBrains)
    Je me demande si c’est à cause de limites techniques de l’API d’extensions, ou parce qu’il est plus facile de marketer un nouvel éditeur qu’une extension
    Pour un particulier ou une petite entreprise, l’adoption peut être facile, mais dans une grande organisation qui a déjà intégré ses IDE existants à beaucoup de choses, demander de basculer vers un autre IDE semble difficile

    • D’après la réponse de l’équipe Cursor, une extension VSCode a une capacité très limitée à contrôler l’UI de l’éditeur
      Les fonctionnalités Command-K et Copilot++ sont impossibles sous forme d’extension, et il en va de même pour beaucoup des fonctionnalités qu’ils veulent créer à l’avenir
      https://forum.cursor.com/t/why-not-a-plugin/2448/2
    • Bonne question
      Les extensions sont souvent boguées, ou difficiles à intégrer de façon naturelle, selon moi. Par exemple, avec Copilot la sélection saute, et Codeium ou d’autres extensions open source ont des limites similaires
      Beaucoup d’extensions utilisent un menu déroulant de choix rapides pour saisir les prompts utilisateur, ce qui paraît peu naturel
      Pour éviter ces problèmes, il est important de posséder directement l’IDE, comme Cursor, et je pense que c’est aussi ce qui explique sa popularité
      Il est vrai que l’adoption d’un IDE est difficile. En construisant sur une base déjà populaire, on peut mieux toucher une petite base d’utilisateurs, et à long terme, j’aimerais aussi convaincre les grandes entreprises grâce à la confidentialité et à la centralisation de bonnes fonctionnalités d’IA
    • Cody est implémenté exactement de cette façon, comme une extension, et il est compétitif face à Cursor
      Je n’ai pas encore trouvé de raison d’utiliser Cursor en acceptant l’inconvénient d’un « fork »
      Cela dit, ces temps-ci, je suis surtout passé à Aider
      Quelqu’un d’autre a mentionné la monétisation, et c’est peut-être la vraie raison
  • C’est une bonne chose que la concurrence augmente, mais, au risque de paraître un peu impoli, la plupart des forks logiciels disparaissent
    J’aimerais qu’on me convainque de l’intérêt d’utiliser cela plutôt que Continue + Claude-dev, qui sont des extensions open source fonctionnant dans VSCode de base ou VSCodium
    Il a été dit que « Microsoft a aussi rendu sa marketplace d’extensions privée », mais Open VSX Registry existe

    • Je me demande si tu utilises des modèles locaux avec Continue
  • Ce qui a été construit jusque-là mérite des félicitations, et on dirait que la partie intéressante commence maintenant
    Il existe pas mal d’extensions offrant de l’autocomplétion par tabulation façon snippets, ainsi que des éditeurs IA, mais à ma connaissance, seul Cursor a vraiment bien implémenté le workflow d’autocorrection en « tab-tab-tab-tab » sans regarder tout le fichier
    C’est probablement une combinaison de hacks Monaco/VSCode et d’un modèle entraîné maison, donc pas un grand modèle de langage prêt à l’emploi ; je me demande si c’est cela qui est visé quand il est question de « toutes les fonctionnalités clés de Cursor », ou si l’attention porte sur autre chose
    Cursor arrivait plutôt bien à « importer » les extensions déjà téléchargées dans le profil VSCode local, mais rencontrait parfois des difficultés à utiliser l’API de marketplace pour la recherche d’extensions
    Comme point de départ, mieux vaut probablement se contenter d’une approche de ce genre, et puisqu’il s’agit de faire face à Microsoft, il faut aussi prêter attention à des choses comme les directives de marque
    Il vaut mieux éviter de dire publiquement que l’on « hacke » les API Microsoft. Même si cela paraît mineur, cela peut devenir un problème en cas de succès
    Si l’objectif est aussi de recruter des contributeurs, il faut beaucoup mieux organiser le workflow GitHub et la CI
    Pour l’instant, l’historique des commits consiste surtout en modifications de documentation poussées directement sur la branche main sans revue ni vérification, et le seul commit initial avec des contrôles semble simplement avoir désactivé les vérifications Monaco après leur échec
    Pour faire grandir le projet ou attirer le niveau de contributeurs nécessaire, il faut établir une base de tests et mettre beaucoup plus d’ordre

    • C’est aussi la seule raison pour laquelle j’utilise Cursor
      L’autocomplétion est tellement bonne, et pour le refactoring, c’est presque magique
      Après avoir utilisé Cursor tout un mois, j’ai réessayé VSCode, et en comparaison Copilot était vraiment médiocre
      J’aimerais continuer à utiliser Cursor, mais je ne veux pas payer deux abonnements à Claude. Cursor utilise Claude en interne, et je préfère Claude Sonnet à ChatGPT
    • Une fonctionnalité très utile dans Cursor est apply
      Elle fusionne automatiquement le code généré par l’IA avec mon code, et je n’ai plus qu’à approuver ou refuser
      Cette fonctionnalité semble aussi utiliser une IA custom, ne fonctionne pas en apportant ma propre clé API, et nécessite un abonnement
  • C’est une bonne chose qu’il y ait davantage de concurrence dans le domaine des « éditeurs IA », mais je me demande pourquoi ils ne le font pas sous forme d’extension VSCode
    Le côté extension semble bien plus accessible
    Je me demande s’il existe des limites dans l’API des extensions qui rendent l’implémentation difficile

    • Probablement parce que les extensions sont difficiles à monétiser, et qu’il est aussi difficile de justifier de grosses valorisations de VC
      Void est soutenu par HN
    • D’accord. Même s’il n’est pas parfait, VSCode dispose d’un écosystème assez riche
      Il faut continuer à suivre les écarts entre le fork et le produit d’origine, et je ne veux pas avoir à gérer, dans mon flux de travail, des fonctionnalités manquantes ou des extensions qui cassent pendant ce processus
      Cursor offre une expérience assez soignée, mais au final je suis revenu à VSCode et j’utilise continue.dev. C’est beaucoup plus brut, mais l’interface fonctionne suffisamment bien
    • Bonne question, et il est vrai qu’une extension est plus facile d’accès
      Cela dit, avec une simple extension, il n’y a pas de bon moyen de créer l’UI native que nous voulons
      Par exemple, afficher l’avant/après d’une modification est essentiel, mais dans une extension cela ne donne pas une impression naturelle
      Des extensions comme Codeium utilisent la méthode la plus simple, qui consiste à écrire directement dans le fichier quelque chose comme <<<<<<< DIFF >>>>>>>>, ce qui casse la coloration syntaxique
      D’autres extensions, comme Copilot, ont beaucoup de bugs
      Pour l’instant, Void est construit au-dessus d’une extension, mais nous modifions et greffons aussi certaines parties de l’IDE afin de créer une expérience utilisateur plus native
    • Beaucoup de gens préfèrent JetBrains à VSC
      Par exemple, mon éditeur IA favori pour l’instant est Zed.dev, et il permet de configurer très facilement plusieurs keymaps, y compris celles de JetBrains
      https://zed.dev/
    • Je ne sais pas trop, mais actuellement continue est vraiment mauvais
      Il casse tout mon environnement VSCode, y compris les raccourcis Vim
  • Je ne sais pas s’il faut vraiment « posséder » tout l’éditeur pour faire ça
    Rien que maintenir la synchronisation avec l’upstream représente une charge énorme, et je ne vois pas ce qu’on y gagne
    Comme d’autres l’ont dit, il existe aussi des registres alternatifs, et il est plus simple de guider l’utilisateur pour installer un plugin indépendant que de lui faire télécharger et installer tout un éditeur
    Je me demande s’il ne suffirait pas de créer sa propre extension Copilot et de la connecter à une instance ollama
    N’est-ce pas ce que fait Continue ? https://marketplace.visualstudio.com/items?itemName=Continue...

  • Est-ce encore à un stade si précoce qu’on ne peut même pas le télécharger ? Je ne comprends pas pourquoi il faudrait rejoindre un serveur Discord pour un éditeur de code
    Je me demande quel est le plan quand VS Code intégrera toutes ces fonctionnalités

    • Le code est ici : https://github.com/voideditor/void/tree/main/extensions/void
      Mais pour l’instant, c’est vraiment très basique. C’est proche d’une implémentation minimale qui appelle un grand modèle de langage depuis un panneau latéral et crée une vue pour appliquer/refuser les différences
      À ce stade, c’est presque un projet de week-end
    • C’est peut-être justement l’idée
      Le jeu consiste peut-être à voir qui sera racheté par Microsoft et finira par faire partie de VS Code
  • Il y a aussi PearAI. Ils le présentent comme un « éditeur de code IA open source fork de VSCode et de Continue »
    Cet espace devient de plus en plus encombré : cursor.sh, continue.dev, double.bot, supermaven, codium.ai, PearAI, et maintenant Void
    https://github.com/trypear/pearai-app

    • Si vous avez essayé les autres, j’aimerais savoir précisément ce qui ne vous a pas plu
      Je suis l’un des créateurs de https://double.bot
  • J’aimerais que quelqu’un fork Omnivim2 pour mieux concurrencer VS Code
    D’après ce que je comprends, cet éditeur ressemble à VS Code, mais il est compilé en natif et prend en charge les plugins VS Code
    Malheureusement, le projet semble abandonné, et il est écrit en ReasonML
    J’en ai assez que les outils de développement soient construits autour du navigateur web
    Dans les années 90 et 2000, on avait des applications entièrement natives qui n’avaient pas besoin d’être aussi complexes qu’aujourd’hui
    J’ajouterais qu’il fonctionne en interne sur la base de Vim, ce qui est plutôt un point fort à mes yeux
    https://github.com/onivim/oni2

  • On dirait un doublon d’un autre post Show HN publié par le même utilisateur il y a 4 jours
    https://news.ycombinator.com/item?id=41523197

    • Quelques reposts sont acceptables si le post n’a pas encore reçu suffisamment d’attention
      C’est aussi indiqué dans la FAQ : https://news.ycombinator.com/newsfaq.html#reposts
    • Nous avions fait un lancement plus modeste il y a quelques jours, mais à partir des retours, nous avons pas mal modifié la page de contribution GitHub, le site web et le logo
      On essaie simplement de lancer rapidement
    • Ils ont lancé deux fois ? Dans un secteur aussi concurrentiel, il faut lancer autant que possible
    • C’est considéré comme une pratique tout à fait appropriée