2 points par GN⁺ 2024-09-27 | 1 commentaires | Partager sur WhatsApp
  • Haystack Editor est un produit qui combine la simplicité d’un éditeur de code avec une interface de type canevas afin de rendre le code plus facile à comprendre d’un seul coup d’œil, et ce dépôt est développé avec la communauté
  • Le dépôt publie non seulement le code et les issues, mais aussi la feuille de route, et le code source est fourni sous PolyForm Strict License 1.0.0
  • La distribution du produit est basée sur le dépôt avec certaines personnalisations spécifiques ajoutées, et elle est fournie sous des conditions d’utilisation distinctes
  • Parmi les exemples de fonctionnalités figurent Canvas Workspaces, Explorer View, Keyboard Navigation et Generate Function, avec une prise en charge complète de l’édition, de l’exploration et de la compréhension du code, ainsi qu’un débogage léger, un modèle d’extension riche et une intégration légère avec les outils existants
  • Haystack est mis à jour chaque semaine avec de nouvelles fonctionnalités et des corrections de bugs, et peut être téléchargé pour Windows, macOS et Linux

Rôle du dépôt Haystack Editor

  • Ce dépôt est l’espace dans lequel Haystack Software développe le produit Haystack Editor avec la communauté
  • Il publie non seulement le code et le travail sur les issues, mais aussi la roadmap
  • Le code source est fourni sous PolyForm Strict License 1.0.0

Produit Haystack Editor

  • Haystack Editor est la distribution du dépôt Haystack Editor, avec certaines personnalisations spécifiques incluses
  • La distribution est publiée sous des terms of service distincts
  • Le produit combine la simplicité d’un éditeur de code avec une interface de type canevas afin de rendre le code plus facile à comprendre d’un seul coup d’œil
  • Le périmètre de prise en charge comprend
    • une édition de code complète
    • l’exploration du code
    • l’aide à la compréhension du code
    • un débogage léger
    • un modèle d’extension riche
    • une intégration légère avec les outils existants
  • Haystack est mis à jour chaque semaine avec de nouvelles fonctionnalités et des corrections de bugs
  • Les téléchargements pour Windows, macOS et Linux sont disponibles sur le site web de Haystack

Aperçu des fonctionnalités

  • Fournit la fonctionnalité Canvas Workspaces
  • Fournit la fonctionnalité Explorer View
  • Fournit la fonctionnalité Keyboard Navigation
  • Fournit la fonctionnalité Generate Function

Contribution et canaux de retour

Projets liés et extensions intégrées

  • Plusieurs composants et extensions clés de Haystack se trouvent dans des dépôts GitHub distincts
  • Par exemple, le node debug adapter et le mono debug adapter sont dans des dépôts séparés
  • Un autre exemple est le dépôt Pixi
  • Haystack inclut plusieurs extensions intégrées dans le dossier extensions
    • elles comprennent des syntaxes et des snippets pour plusieurs langages
    • les extensions qui fournissent une prise en charge riche du langage, comme l’autocomplétion du code ou Go to Definition, utilisent le suffixe language-features
    • par exemple, l’extension json fournit la coloration JSON, tandis que l’extension json-language-features fournit une prise en charge riche du langage pour JSON

1 commentaires

 
GN⁺ 2024-09-27
Avis sur Hacker News
  • Cette idée est excellente depuis des décennies. J’espère que Haystack réussira là où beaucoup de tentatives précédentes ont échoué, et la première exécution semble prometteuse.
    Cela dit, il risque d’y avoir beaucoup d’obstacles, comme la difficulté à comprendre les appelants/appelés, ou des préférences d’UX qui varient selon les développeurs. J’ai toujours pensé que cela pourrait devenir plus puissant dans un espace beaucoup plus vaste qu’un écran 2D, par exemple dans un environnement comme un casque VR.

    • J’aime beaucoup l’idée d’un monde Haystack en VR. C’est dommage que les logiciels VR soient dans un état instable à cause de facteurs biologiques, mais je crois qu’un jour ce sera l’avenir.
  • Très chouette. J’ai imaginé tout le codebase d’une organisation cartographié de cette façon, visible à travers plusieurs frameworks et langages.
    Je ne sais pas si je l’ai manqué dans la vidéo ou si ce n’est pas encore possible, mais connecter les nœuds à la main demande trop de travail ; ce serait bien d’avoir un petit bot capable de s’exécuter dans un dossier de dépôt et d’automatiser la visualisation. Ajouté à ma liste de suivi.
    À votre place, je viserais les grandes entreprises ou les groupes IT de collectivités locales en cours de transformation numérique, ou qui la planifient. Ils doivent s’orienter et donner du sens entre le legacy et les nouveaux travaux.
    Si tout se passe bien, Salesforce pourrait venir frapper à votre porte d’ici un an. Cela semble assez bien correspondre à leur vision et à leur gamme de produits.

    • J’aime le concept vu dans la vidéo. Mais j’aimerais voir quelque chose de plus grand, avec plus de fenêtres, toutes reliées entre elles.
      Je ne sais pas si ce serait réellement utilisable dans cet état, mais ce serait amusant à essayer. Un peu comme un diagramme UML représentant tout le codebase, avec des milliers de flèches.
      On pourrait alors dire à un collègue que le fichier à modifier se trouve quelque part en haut à droite, et les diffs Git seraient aussi visibles visuellement, ce qui permettrait de zoomer sur les changements disséminés un peu partout.
    • Quand on navigue vers un fichier ou un symbole, les connexions sont ajoutées automatiquement. Je ne sais pas si c’est exactement ce que vous vouliez dire, mais nous essayons de fournir à l’utilisateur un « flux » à partir de requêtes en langage naturel.
      Par exemple, traiter des questions comme : « Que se passe-t-il depuis le moment où l’on clique avec la souris sur le bouton d’abonnement jusqu’au backend ? »
    • Ce serait intéressant s’il était possible de « relier » aussi les appels API vers différents services.
  • Je me demande si ce projet a été inspiré par Light Table.
    Comme demande de fonctionnalité, j’aimerais que la visualisation aille au-delà de la 2D. Les systèmes vraiment complexes ressemblent généralement à des graphes élaborés — ou, pour le dire gentiment, à des pelotes de fil — et j’ai souvent constaté qu’une visualisation limitée à un plan 2D ne suffisait pas.
    Ce serait bien d’avoir quelque chose comme une visualisation en sphères concentriques, avec les services de bordure sur les couches externes et les services cœur/domaine sur les couches internes.

    • Beaucoup de gens ont mentionné Light Table, mais je ne l’ai découvert qu’après le lancement.
      C’est intéressant que vous parliez d’une vue plus proche de la 3D. Nous avons envisagé cette idée, mais il est vraiment difficile de la réaliser correctement d’une manière compréhensible pour les utilisateurs. Cela dit, elle fait clairement partie de notre vision à long terme.
      Modification : j’ai supprimé la supposition à propos de Light Table, car elle n’était pas exacte.
    • Au-delà de Light Table dans les années 2010, j’espère que vous connaissez aussi Oberon, de la fin des années 1980. Oberon permettait également de placer du code sur un canevas sans limites.
  • Question un peu à côté, mais existe-t-il un canevas infini open source vraiment utilisable ? Je développe un jeu de cartes et j’ai besoin d’un canevas infini multijoueur. Je serais preneur de recommandations.

  • Si c’était une extension VSCode, je l’aurais probablement essayé. J’ai envie de l’utiliser, mais en ce moment je vis dans Cursor.

    • Cela ressemble à un problème qui prend de plus en plus d’ampleur.
  • Je me demande pourquoi cela ne peut pas être fait sous forme d’extension. L’idée est vraiment bonne, et je peux parfaitement l’imaginer dans un onglet de la zone d’édition.
    Cela permettrait aussi d’avoir plusieurs onglets Haystack, ce qui rendrait le changement de contexte beaucoup plus facile. Même si c’est basé sur VSCode, devoir installer un autre IDE est un peu dommage. Cela dit, continuez comme ça.

    • Les extensions VS Code sont assez limitées. On peut changer le renderer d’un onglet d’éditeur, mais faire en sorte que plusieurs éléments au sein d’une interface personnalisée soient traités comme des onglets d’éditeur de première classe par tout l’environnement et l’écosystème d’extensions est pratiquement difficile. Tant que le fork ne prend pas de retard, c’est un choix raisonnable.
    • Je comprends cette frustration. Comme indiqué dans un autre commentaire, il est assez difficile de faire de Haystack une extension suffisamment bonne, mais nous prévoyons tout de même d’explorer cette voie à terme.
    • Si les extensions ont des limites, une bonne solution de contournement serait peut-être une fonction permettant d’activer et désactiver la vue canevas. On voudra probablement passer du canevas à la vue VSCode standard ; si c’est possible dans Haystack, il n’est pas nécessaire d’installer les deux.
  • Cela me rappelle l’environnement Kansas du langage de programmation Self. Il existe une vidéo créée par Sun en 1995.
    https://www.youtube.com/watch?v=Ox5P7QyL774
    Des fonctionnalités de recherche plus intéressantes ont été ajoutées après cette vidéo.

  • Vraiment bien. C’est presque exactement le même processus que celui que j’utilise quand je regarde un gros codebase, mais en beaucoup plus propre et organisé.
    D’habitude, j’ouvre cinq ou six terminaux pointant vers différents fichiers source et j’essaie de construire une carte dans ma tête. Je finis par m’y retrouver, mais c’est laborieux ; un outil comme celui-ci aiderait énormément. Il ne reste plus qu’à le combiner avec un écran ultrawide.

  • Cela semble utile parce que cela réduit ce qu’il faut garder en tête, mais l’UI actuelle dépend beaucoup trop de la souris. Ce serait bien d’ajouter des raccourcis clavier et de faire en sorte que les fenêtres soient « tuilées » comme dans le gestionnaire de fenêtres dwm, sans avoir à ajuster leur taille manuellement.

    • Nous essayons justement de faire en sorte que le canevas puisse être exploré autant que possible au clavier. La liste des raccourcis se trouve dans le bouton “Keybindings and Help” en bas à droite.
      Pour le redimensionnement manuel, nous expérimentons le tiling dans le viewport. Si vous pouvez nous dire ce qui vous pousse à redimensionner, nous pourrions sans doute corriger cela.
  • Cela ressemble à une approche pratique pour permettre aux développeurs de déployer et cartographier largement du code dans un espace bidimensionnel. C’est similaire à la méthode des loci[1] : le développeur encode spatialement des morceaux de code et leurs connexions de façon élaborée, ce qui renforce la mémoire et améliore aussi la compréhension.
    Je me permets donc de suggérer l’ajout d’options de motifs d’arrière-plan qui apportent un peu d’information sans distraire. Je n’ai pas de motif précis en tête, mais si l’arrière-plan était une carte du monde, les utilisateurs pourraient se souvenir plus vite de l’emplacement recherché et comprendre plus rapidement où ils se trouvent.
    Dans le même esprit, il pourrait être intéressant de permettre à l’utilisateur de définir la couleur des bordures des onglets, ou d’ajouter un bruit différent à chaque onglet. Ce bruit pourrait s’estomper selon le niveau de zoom et la distance par rapport au centre du viewport.
    https://en.wikipedia.org/wiki/Method_of_loci

    • Nous prévoyons d’ajouter une minimap pour aider les utilisateurs à s’orienter.
      L’idée d’utiliser de subtiles différences de couleur ou des sons est aussi intéressante. Nous allons y réfléchir.