Launch HN: Haystack (YC S24) – Code auf einer unendlichen Canvas visualisieren und bearbeiten
(github.com/haystackeditor)- 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 Editorund 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
- Bugs und Feature Requests einreichen
- Unterstützung bei der Validierung eingecheckter Änderungen
- Reviews von Quellcodeänderungen
- Review der Dokumentation, Korrektur von Tippfehlern oder PRs mit neuen Inhalten
- 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
- Fragen auf Discord
- Issue erstellen
- @AkshaySubr42403 folgen und Feedback geben
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
jsonColoring fürJSON, während die Erweiterungjson-language-featuresumfangreiche Sprachunterstützung fürJSONbietet
1 Kommentare
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
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
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
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?“
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
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
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
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
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
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
Die Idee mit subtilen Farbunterschieden oder Tönen ist ebenfalls interessant. Darüber werden wir nachdenken