2 Punkte von GN⁺ 2024-09-27 | 1 Kommentare | Auf WhatsApp teilen
  • Haystack Editor ist ein Produkt, das die Einfachheit eines Code-Editors mit einer Canvas-UI kombiniert, um Code auf einen Blick verständlicher zu machen, und wird in diesem Repository gemeinsam mit der Community entwickelt
  • Das Repository veröffentlicht nicht nur Code und Issues, sondern auch die Roadmap; der Quellcode wird unter der PolyForm Strict License 1.0.0 bereitgestellt
  • Die Produktdistribution basiert auf dem Repository und enthält bestimmte Anpassungen; sie wird unter separaten Nutzungsbedingungen bereitgestellt
  • Funktionsbeispiele sind Canvas Workspaces, Explorer View, Keyboard Navigation und Generate Function; enthalten sind umfassende Unterstützung für Codebearbeitung, Navigation und Verständnis, leichtgewichtiges Debugging, ein Erweiterungsmodell und schlanke Integrationen mit bestehenden Tools
  • Haystack wird wöchentlich mit neuen Funktionen und Bugfixes aktualisiert und steht für Windows, macOS und Linux zum Download bereit

Rolle des Haystack-Editor-Repositorys

  • Dieses Repository ist der Ort, an dem Haystack Software gemeinsam mit der Community das Produkt Haystack Editor entwickelt
  • Neben Code und Issue-Arbeit ist auch die Roadmap öffentlich
  • Der Quellcode wird unter der PolyForm Strict License 1.0.0 bereitgestellt

Produkt Haystack Editor

  • Haystack Editor ist die Distribution des Repositorys Haystack Editor und enthält bestimmte Anpassungen
  • Die Distribution wird unter separaten Nutzungsbedingungen veröffentlicht
  • Das Produkt kombiniert die Einfachheit eines Code-Editors mit einer Canvas-UI, um Code auf einen Blick verständlicher zu machen
  • Der Unterstützungsumfang umfasst Folgendes
    • umfassende Codebearbeitung
    • Code-Navigation
    • Unterstützung beim Verstehen von Code
    • leichtgewichtiges Debugging
    • ein umfangreiches Erweiterungsmodell
    • schlanke Integration mit bestehenden Tools
  • Haystack wird wöchentlich mit neuen Funktionen und Bugfixes aktualisiert
  • Downloads für Windows, macOS und Linux sind auf der Haystack-Website verfügbar

Funktionsvorschau

  • Bietet die Funktion Canvas Workspaces
  • Bietet die Funktion Explorer View
  • Bietet die Funktion Keyboard Navigation
  • Bietet die Funktion Generate Function

Wege für Beiträge und Feedback

  • Es gibt mehrere Möglichkeiten, sich am Projekt zu beteiligen
  • Wer direkt zur Codebasis beitragen möchte, sollte die Dokumentation How to Contribute lesen
    • aus dem Quellcode bauen und ausführen
    • Entwicklungsworkflow einschließlich Debugging und Ausführen von Tests
    • PRs einreichen
    • Issues finden, an denen man arbeiten kann
  • Feedback-Kanäle sind

Verwandte Projekte und gebündelte Erweiterungen

  • Mehrere Kernkomponenten und Erweiterungen von Haystack liegen in separaten Repositorys auf GitHub
  • Beispiele sind der node debug adapter und der mono debug adapter, die in jeweils separaten Repositorys liegen
  • Ein weiteres Beispiel ist das Pixi repository
  • Haystack enthält mehrere integrierte Erweiterungen im Ordner extensions
    • Enthalten sind Grammatiken und Snippets für mehrere Sprachen
    • Erweiterungen, die umfangreiche Sprachunterstützung wie Code Completion oder Go to Definition bieten, verwenden das Suffix language-features
    • Beispielsweise bietet die Erweiterung json Coloring für JSON, während die Erweiterung json-language-features umfangreiche Sprachunterstützung für JSON bietet

1 Kommentare

 
GN⁺ 2024-09-27
Hacker-News-Kommentare
  • Diese Idee ist seit Jahrzehnten großartig. Ich hoffe, dass Haystack wie viele frühere Versuche erfolgreich wird, und die frühe Umsetzung wirkt vielversprechend
    Allerdings dürfte es viele Hürden geben, etwa dass es schwer ist, Caller/Callees zu erfassen oder dass Entwickler unterschiedliche UX-Vorlieben haben. Ich habe immer gedacht, dass so etwas in viel größeren Räumen als auf einem 2D-Bildschirm noch stärker wäre, zum Beispiel in einer Umgebung mit einem VR-Headset

    • Die Idee einer Haystack-VR-Welt gefällt mir wirklich. Schade, dass VR-Software aus biologischen Gründen so instabil ist, aber ich glaube, dass das irgendwann die Zukunft sein wird
  • Sehr cool. Ich habe mir vorgestellt, wie die gesamte Codebasis einer Organisation so kartiert wird und über mehrere Frameworks und Sprachen hinweg sichtbar ist
    Ich weiß nicht, ob ich es im Video übersehen habe oder ob es noch nicht möglich ist, aber das direkte Verbinden von Knoten wäre zu viel Handarbeit, daher wäre ein einfacher Bot schön, den man im Repository-Ordner ausführt, um die Visualisierung automatisch zu erzeugen. Zur Beobachtungsliste hinzugefügt
    Ich würde auf große Unternehmensorganisationen oder IT-Gruppen von Kommunalverwaltungen zielen, die gerade eine digitale Transformation durchführen oder planen. Sie müssen zwischen Legacy- und neuer Arbeit den Weg finden und den Sinnzusammenhang verstehen
    Wenn es gut läuft, könnte Salesforce innerhalb eines Jahres anklopfen. Das passt auch ziemlich gut zu ihrer Vision und ihrem Produktportfolio

    • Das im Video gezeigte Konzept gefällt mir. Ich würde aber gern sehen, dass es größer ist, mehr Fenster hat und alles miteinander verbunden ist
      Ob das dann wirklich praktikabel ist, weiß ich nicht, aber auszuprobieren wäre es sicher spannend. Es wirkt wie ein UML-Diagramm für die gesamte Codebasis mit Tausenden von Pfeilen
      Dann könnte man einem Kollegen sagen, dass die zu ändernde Datei irgendwo rechts oben liegt, und man könnte Git-Diffs auch visuell sehen, also in die hier und da geänderten Bereiche hineinzoomen
    • Wenn man Dateien oder Symbolen folgt, werden Verbindungen automatisch hinzugefügt. Ich bin nicht sicher, ob genau das gemeint war, aber wir wollen dem Nutzer anhand natürlicher Sprachabfragen einen „Flow“ liefern
      Zum Beispiel bei Fragen wie: „Was passiert ab dem Moment, in dem ich mit der Maus auf den Subscribe-Button klicke, bis hin zum Backend?“
    • Es wäre interessant, wenn man sogar API-Aufrufe zu verschiedenen Services „verbinden“ könnte
  • Ich frage mich, ob dieses Projekt von Light Table inspiriert wurde
    Als Feature-Wunsch würde ich gern sehen, dass die Visualisierung über 2D hinaus erweitert wird. Wirklich komplexe Systeme sind meist ausgefeilte Graphen, im besten Fall ein Wollknäuel, und ich habe die Erfahrung gemacht, dass eine rein flache 2D-Visualisierung dafür nicht ausreicht
    Schön wäre etwas wie eine Visualisierung aus konzentrischen Sphären, bei der außen Grenz-Services und innen Kern-/Domain-Services liegen

    • Viele Leute haben Light Table erwähnt, aber ich habe erst nach dem Launch davon erfahren
      Interessant, dass du von einer stärker 3D-artigen Ansicht sprichst. Ich habe diese Idee schon durchdacht, aber es ist wirklich schwer, sie so umzusetzen, dass Nutzer sie verstehen können. Sie ist aber definitiv Teil der Zukunftsvision
      Bearbeitung: Meine Vermutung zu Light Table war falsch, daher habe ich sie entfernt
    • Ich hoffe, du kennst nicht nur Light Table aus den 2010ern, sondern auch Oberon aus den späten 1980ern. Oberon hatte ebenfalls die Möglichkeit, Code auf einer grenzenlosen Canvas zu platzieren
  • Etwas off-topic, aber gibt es einen repräsentativen, brauchbaren Open-Source-Infinite-Canvas? Ich baue ein Kartenspiel und brauche eine Multiplayer-Infinite-Canvas. Ich würde mich über Empfehlungen freuen

  • Wäre es eine VSCode-Erweiterung, hätte ich es wahrscheinlich ausprobiert. Ich würde es gern testen, aber derzeit lebe ich praktisch in Cursor

    • Scheint ein wachsendes Problem zu sein
  • Ich frage mich, warum man es nicht als Erweiterung bauen kann. Die Idee ist wirklich gut, und ich kann sie mir perfekt als Reiter im Editorbereich vorstellen
    Dann könnte man auch mehrere Haystack-Tabs haben, was Kontextwechsel viel einfacher machen würde. Selbst wenn es auf VSCode basiert, ist es ein wenig schade, noch eine weitere IDE installieren zu müssen. Ich wünsche euch trotzdem weiterhin viel Erfolg

    • Eine VS-Code-Erweiterung ist ziemlich eingeschränkt. Man kann zwar den Renderer eines Editor-Tabs austauschen, aber mehrere Elemente innerhalb einer benutzerdefinierten Oberfläche so zu behandeln, als wären sie Editor-Tabs erster Klasse in der gesamten Umgebung und im Erweiterungs-Ökosystem, ist faktisch sehr schwierig. Solange man nicht zurückfällt, ist ein Fork eine vernünftige Entscheidung
    • Ich verstehe die Frustration. Wie ich in einem anderen Kommentar sagte, ist es ziemlich schwierig, Haystack als Erweiterung wirklich gut umzusetzen, aber wir planen letztlich auch, diesen Weg zu erkunden
    • Wenn Erweiterungen Einschränkungen haben, wäre ein brauchbarer Workaround vielleicht eine Umschaltfunktion für die Canvas-Ansicht. Man würde wahrscheinlich zwischen Canvas und der Standardansicht von VSCode wechseln wollen, und wenn das innerhalb von Haystack möglich wäre, müsste man nicht beide installiert haben
  • Das erinnert mich an die Kansas-Umgebung der Programmiersprache Self. Es gibt ein Video von Sun aus dem Jahr 1995
    https://www.youtube.com/watch?v=Ox5P7QyL774
    Nach diesem Video wurden noch interessantere Suchfunktionen hinzugefügt

  • Wirklich gut. Beim Betrachten großer Codebasen ist mein Vorgehen fast identisch, nur viel sauberer und ordentlicher
    Normalerweise habe ich fünf oder sechs Terminals offen, die auf verschiedene Quelldateien zeigen, und versuche, mir im Kopf eine Karte zu bauen. Irgendwann bekommt man zwar ein Gefühl dafür, aber es ist ein mühsamer Prozess; so ein Tool würde enorm helfen. Jetzt fehlt nur noch die Kombination mit einem Ultrawide-Monitor

  • Das scheint hilfreich zu sein, weil man weniger im Kopf behalten muss, aber die aktuelle UI ist noch viel zu mauslastig. Es wäre gut, Shortcuts einzubauen und die Fenster ähnlich wie beim Window-Manager dwm „kacheln“ zu lassen, damit man die Größe nicht manuell anpassen muss

    • Wir arbeiten tatsächlich daran, die Canvas so weit wie möglich per Tastatur navigierbar zu machen. Rechts unten gibt es einen Button „Keybindings and Help“ mit einer Liste der Tastenkürzel
      Was das manuelle Anpassen der Größe betrifft, experimentieren wir mit Tiling innerhalb des Viewports. Wenn du uns sagen kannst, was dich zum Anpassen der Größe veranlasst, können wir das vielleicht beheben
  • Das wirkt wie ein praktischer Ansatz, bei dem Entwickler Code im zweidimensionalen Raum ausbreiten und abbilden. Das ähnelt der Methode der Orte[1], bei der Entwickler Codefragmente und Verbindungen räumlich differenziert codieren, um Erinnerung und Verständnis zu stärken
    Deshalb würde ich mutig vorschlagen, eine Option für Hintergrundmuster hinzuzufügen, die nicht stören, aber ein wenig Information liefern. Ich habe kein konkretes Muster im Sinn, aber wenn der Hintergrund etwa eine Weltkarte wäre, könnten Nutzer sich die Position dessen, was sie suchen, schneller merken und auch ihre eigene Position schneller erfassen
    In derselben Denkrichtung könnte man auch erwägen, dass Nutzer Randfarben für Tabs selbst definieren oder jedem Tab unterschiedliches Rauschen hinzufügen können. Das Rauschen könnte abhängig von Zoomstufe und Entfernung vom Mittelpunkt des Viewports verblassen
    https://en.wikipedia.org/wiki/Method_of_loci

    • Wir planen, eine Minimap hinzuzufügen, damit Nutzer sich besser orientieren können
      Die Idee mit subtilen Farbunterschieden oder Tönen ist ebenfalls interessant. Darüber werden wir nachdenken