Wideboard: Render _all_ of Linux's source code in a browser tab via WebGL
github.com
github.com
This isn't intended to be a real text editor prototype, just a demonstration of how much text you can push through a modern GPU if your shaders are reasonably efficient. The original PoC could handle ~800 megs of text at 60 fps on the integrated GPU of a 2012 Macbook Pro, this one has been tested with 1.2 gigs of text on a 3080ti, where it uses only a few percent of the GPU's capacity and nearly zero CPU.
And yes, I know there's no syntax highlighting or kerning or vector font support in Wideboard - that's not the point, and those features could be added without majorly affecting performance.
My hope is that this will spark a bit of discussion about text rendering and IDE design. How would our programming habits change if we could view our entire codebase - even an enormous one - in a single view ala Google Maps? I don't currently have the spare time to investigate something as sizable as an IDE project, but I'm curious to see what other folks come up with.
-Austin
It would be neat to see each line or line-chunk as flashes that happen across every file in the Linux kernel since the first commit, all at once.
I think there was also a visualization for Minecraft source that used graphs to show the evolution of that code.
You can record app execution, and then play it back thread and line and by line to see each line executing in time. It’s kinda fun to see millions of lines flash and highlight and move at 60fps and seeing implicit relationships between executing files and high level functional flows
One way is to use a 3D approach to the visualization problem [1]. Primitive has some videos out showing this in practice and its still very much work in progress.
Text rendering in XR is such a neglected backwater of the UI shell although some projects like TrokiaJS are making progress. Will definitely look at your GLSL with someone more skilled in the art - thanks for sharing.
Your own project looks like a great experiment with Apple ecosystem and while I hope they join on to standards based WebXR it will be good to see this new development environment they are rumored to release this summer.
I had not seen TapKit before so thats a great thing to be aware of thanks & it reminds me of a project called Lexting that was floated for a while using freespace inputs and still some demos on Youtube.
Good luck with your prototyping!
I sometimes think about the untapped potentials of interface design or code editors in a zoomable mode like this where files, text, folders or whatever is laid out on a huge map.
This seems to mirror the way we naturally understand and traverse space. Ah "this text file is this big", "this file is to the right of this file", this project has this tree structure, has these relations to other files, this is the lifecycle of this application, this variable jumps from this to this file etc.
I feel like visualisation in 2d and 3d space in general is has not been explored enough.
It’s runnable if you’re in macOS.
a11y is another topic with that kind of rendering, though…
But it would be harder to write, and add geometric relations between windows that might not be so useful.
And you can run a “modern” (1999) recreation: https://en.m.wikipedia.org/wiki/File_System_Visualizer
Seeing all that text on one screen really puts the size of GPU memory in perspective in a way that texture data doesn’t.
It reminds me of the following demo: https://wdobbie.com/pdf/ from this post: https://wdobbie.com/post/gpu-text-rendering-with-vector-text...
Some tips for others (when trying with your own repo): - you need to rename any index.html files and clear the browser cache otherwise it skips that folder - change the value at wb-librarian.js:98 (this.screenCursorY) to a value that better matches the size of your code base
At $WORKPLACE I'm unfortunately required to use Visual Studio because the project won't work with anything else, and there's some specific file types (I think it's the ASAX files) that make VS hang for several seconds, where the code is literally uneditable (can't scroll, there's no syntax highlighting, and more weird stuff I'm surely forgetting).
On a bad day, those files don't even get line numbers because the whole left-side gutter is missing, and I'm not even joking.
I'm already looking to change jobs for one where the project isn't that horribly tied to a specific IDE.
I hope the above shows that indeed, GPU is where it’s at!
If it ran at 60fps on a 2012 Macbook pro, I have to say I'm very surprised by how poorly it scales
That being said, does anybody know how much GPU RAM does it actually require? Would 6GB suffice?