7 ms·
Linux Kernel Explorer
- glenneroo 10mo agoLove this! Small bug but when changing files, it doesn't reset to position 0 in the file (at least on Firefox on Win11).
- bobowzki 10mo agoThis is very nice. It would be interesting to see the same for other code bases like emacs and vim.
- udev4096 10mo agoI don't know why you're getting downvoted. It would be wonderful if there was same site for all the big open source projects
- mickael-kerjean 10mo agoemacs is quite approachable because of its self documenting nature. In practice, if you want to drill down on a particular thing, you need to use some of the describe-* commands. For example want to know how emacs save something? 1) find the command it uses with describe-keybinding, you find the command "save-buffer" 2) "describe-command save-buffer" brings you onto the lisp world where it is defined => "files.el" 3) want to know how a variable is define within files.el? "describe-variable buffer-file-name" and now you are in C territory 4) rinse and repeat with some describe-function when needed 5) get lost onto the beauty of emacs which in my opinion is its interactive / self documenting nature which unfortunatly is not more common in all the software we use
- stacktrace 10mo ago> API rate limit exceeded for 106.51.68.199. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.) The GitHub APIs that you are using to list files are getting rate-limited in my case. If somebody else is also facing this issue, just use a VPN or something like Cloudflare Wrap to change your ip - this should fix the issue. P.S If you are the main dev, giving an option to the visitor to sign in using Github or use a caching layer will be really helpful to make this accessible for the new user.
- reverserdev 10mo agoHey! Thank you for catching this issue and reminding me of the super naive implementation I went with. I will improve this! :)
- rbanffy 10mo agoIt’s often better to overlay caching and other tricks on top of naive implementations than making the implementation more complicated.
- foota 10mo ago* until you get caching layers more complicated than the more complicated implementations :) Imo strong implementations can be much simpler and more predictable than caching.
- jtwaleson 10mo agoThis is super cool. Love the little icons in the left and would be nice if they were clickable.
- qweqwe14 10mo agoHow is this different from https://elixir.bootlin.com/linux https://elixir.bootlin.com/linux
- reverserdev 10mo agoThe Elixir cross referencer does not have any special features to help you learn
- oskarkk 10mo agoLook at the content in the right sidebar, this is like an interactive guide to the kernel.
- stacktrace 10mo agoElixir is a great tool for exploring and cross-referencing the Linux codebase but for a new person, Linux can come across as very intimidating and complicated. The above explorer makes it very interesting to explore the codebase. This is kind of like an interactive book on Linux internals, with every topic being referenced through code.
- proc0 10mo agoI don't see all those versions, and for some reasons my fans turned on with the elixir link lol
- w4yai 10mo agoEven if it was the same, how problematic would it be ?
- udev4096 10mo agoIt's a better navigation and overall quicker way to read code
- loeg 10mo agoWell, they're completely different, but other than that they have similar looking names. I think elixir is more useful for the ways I interact with the Linux kernel. This is attempting to be more of a teaching book. The links to function definitions is what makes elixir useful, and this doesn't have those.
- reverserdev 10mo agoThanks for sharing OP! It seems quite some people liked it, so I'll be listening to feedback and see what to do next. :)
- fscaramuzza 10mo agoAm I the only one that can't access the website due to certificate problems with the .dev?
- reverserdev 10mo agoI cannot reproduce. Would you mind sharing a bit more? The certificate is handled by Cloudflare Pages.
- fscaramuzza 10mo agoMy bad, the network I was connected to didn't like the certificate for some reason. Cool project!
- nolist_policy 10mo agoAlso: https://elixir.bootlin.com/linux/v6.17.9/source https://elixir.bootlin.com/linux/v6.17.9/source Elixir works better on mobile despite being around for years.
- reverserdev 10mo agoThanks for the observation about mobile responsiveness, I will improve it!
- formerly_proven 10mo agoElixir also has working tags instead of just looking at a file at a time, so it is much better at the actual exploring part.
- __bjoernd 10mo agoI appreciate the learning guidance.
- reimuwu 10mo agowhen I try to open arch/x86/kernel/entry_64.S. it just says: Failed to load file Failed to fetch file: File: arch/x86/kernel/entry_64.S maybe its a bug?
- rumdz 10mo agoThe path should be arch/x86/entry/entry_64.S
- cepera 10mo agoCan I somehow deploy it locally?
- knuckleheads 10mo agoVery neat. It reminds me a bit of how pages in the Talmud are laid out. From a gentile perspective, it was very interesting to me to see how hundreds (thousands?) of years of commentary are contained within the same page. https://www.reddit.com/r/interestingasfuck/comments/1acgks3/a_layout_of_a_page_in_the_talmud_why_jews_insist/ https://www.reddit.com/r/interestingasfuck/comments/1acgks3/... https://triberuth.wordpress.com/2016/09/23/my-talmud-layout-notes/ https://triberuth.wordpress.com/2016/09/23/my-talmud-layout-... Code isn't linear the same way, and pages don't make as much sense, but that idea of layers of commentary rings out in this Linux Kernel Explorer as well. I very much like the notes on the side!
- guy4261 10mo agoTalmud - the original hypertext (tm) (*maybe, not 100% sure)
- ofrzeta 10mo agosee also Pi, the movie, although it's more about numbers and the Kabbalah :) https://en.wikipedia.org/wiki/Pi_(film) https://en.wikipedia.org/wiki/Pi_(film)
- ezrabrand 10mo agoLong-time HN lurker here! Was excited to see this discussion around my major interests of Talmud, Kabbalah, and tech. There are a lot of misconceptions and mystique surrounding the Talmud. I'd like to take the opportunity to clarify some fundamental aspects, as relates to the discussion here: The famous "Talmud page" (discussed in the links in the parent comment) was set by a Christian printer in the 16th century. It emulated a common layout in medieval Christian manuscripts for Christian primary texts and commentaries [0]. The analogy of the Talmud to a hypertext isn't especially apt, IMO. The Talmud indeed extensively cites Bible and Mishnah, and uses lots of technical terms. In this regard, a better analogy is to legal literature (which is what the Talmud in fact is). While being couched as a (fictional) "conversation"/dialogue between rabbis who lived over the course of ~400 years (100 CE to 500 CE). In fact, Kabbalah (as another commenter mentioned) is a better example of a “hypertext,” since it’s full of recurring symbols that point to different Sefirot and other core concepts. (By way of credentials: I hold an MA in academic Talmud and Kabbalah, write on these subjects in several venues, and have presented at academic workshops. Over the past two years, I’ve also been developing digital-humanities projects related to this work.) References: [0] https://seforimblog.com/2023/06/from-print-to-pixel-digital-editions-of-the-talmud-bavli/ https://seforimblog.com/2023/06/from-print-to-pixel-digital-... [1] https://www.ezrabrand.com/p/beyond-the-mystique-correcting-common https://www.ezrabrand.com/p/beyond-the-mystique-correcting-c...
- oskarkk 10mo agoI love this idea. I like exploring code of interesting projects even if I don't intend to ever work on them, but in complex software I don't know much about it's hard to even find where are the most important basic parts. This allows me to easily find and see how some things in the kernel look like. Found a bug: in the Chapter 2, when I click on "open" next to "mm/" or other dirs, I get an error: " Failed to load file - Invalid file response from GitHub API - File: mm/". I guess it's cause it tries to open the dir as a file, instead of something like pointing at the dir in the dir tree?
- xxdd2ea 10mo agoYes it's good idea and nicely executed. For the same reason I created a couple of projects with the same goal of lowering the barrier to entry to the linux kernel: - an app to follow the UDP packet flow in the linux kernel source code: https://dmkskd.github.io/linux-kernel-network-stack-visualization/ https://dmkskd.github.io/linux-kernel-network-stack-visualiz... - a (hopefully) simple way to play with the linux kernel source code on a mac: https://github.com/dmkskd/linux-kernel-debugging-on-mac https://github.com/dmkskd/linux-kernel-debugging-on-mac Kudos to https://github.com/FlorentRevest https://github.com/FlorentRevest for all his work in the space
- glenneroo 10mo agoI love your UDP packet flow tool, kudos for making that! I've always wondered how packets move through an OS. Also interesting how many gotos I see all over the place, even though everyone says "goto is the devil". Then again maybe this code was written long before that "proverb" came into existence.
- joshlk 10mo agoAsking a silly question… what piece of kernel code do you find the most awe-inspiring or impressive?
- throwaway29303 10mo agoMaybe fs/select.c or the polling machinery.
- suprjami 10mo agoAgree. The VFS is a delight to read. It's a good intro to the kernel pattern of using function pointers to provide a generic API which other functionality can plug into, simply by implementing the appropriate functions. In this case you'll see all the filesystem drivers implement the VFS operations.
- thdhhghgbhy 10mo agoI love this.
- rbanffy 10mo agoI love tools like this. I remember using a similar one (made by Red Hat IIRC) that I used to look inside the sources for the Brazilian voting machine (I was asked to map duplicate files and functionality and simplify the codebase) in 2002. It was a desktop app with a very Motif interface.
- Gormanu 10mo agoYou know, I think this Explorer is exactly the tool many of us lacked. Reading the Linux kernel source always felt daunting — thousands of files, confusing paths, complex structure. This feels like a “map” that helps you orient yourself, see how parts interconnect, how VFS works, how modules tie together. Yeah, sometimes a feature breaks (API limits, errors opening directories), but even so — this is a great way to peek “under the hood,” understand the architecture, and take the first step. Big thanks to the folks behind it.
- tosti 10mo agoI don't get it. I can't pull master, I can't grep, I can't edit and I certainly can't gmake there. What's the use?
- kinow 10mo agoI believe it's a navigation tool, with pointers to important parts of the code. Useful for those that want to learn about the code base but do not know where to get started.
- deleted 10mo ago[deleted]
- deleted 10mo ago[deleted]
- opello 10mo agoIt reminds me of LXR: https://lxr.linux.no/ https://lxr.linux.no/ https://en.wikipedia.org/wiki/LXR_Cross_Referencer https://en.wikipedia.org/wiki/LXR_Cross_Referencer which when I started working with Linux was a great asset. At some point it seems it inspired a reimplementation in Python: https://elixir.bootlin.com/ https://elixir.bootlin.com/ https://github.com/bootlin/elixir https://github.com/bootlin/elixir
- zamadatix 10mo agoNot that I care much if things are written by AI or not, but there has been a large stream of new accounts posting "<generic positive statement about project> <short description of a reason one could use the tool> <yeah x, but y> <token if thanks>" template posts with em dashes and other generically "AI styled" writing hints. My only thought is it's an easy way to get bot accounts past karma thresholds. Whatever the reason, and I'm not writing this to say that you are one such account or not, adopting a near identical commenting approach is probably why a lot of your comments have been struggling.
- maartin0 10mo agoI really like this reactive guide style interface, which maybe could be quite a good project idea like mdBook[1] but also you to insert quizzes/examples alongside static notes [1]: https://github.com/rust-lang/mdBook https://github.com/rust-lang/mdBook
- notachatbot123 10mo agoWere the quiz questions generated by a human or AI?
- bakugo 10mo agoThe very first sentence of the guide is "It's not X—it's Y. It does Z". Safe to assume the entire thing is AI generated.
- reverserdev 10mo agoCan you please elaborate what exactly is the problem with the first sentence? "The kernel isn't a process—it's the system. It serves user processes, reacts to context, and enforces separation and control." This is actually based on "The Kernel in The Mind" by Moon Hee Lee. You are welcome to provide feedback.
- bakugo 10mo agoIs it or is it not AI generated? That's all I said, and you didn't deny it.
- soraminazuki 10mo agoCalm down. You had the answer served on a platter. From "The Kernel in the Mind": > The Kernel Is Not a Process. It Is the System. https://www.linkedin.com/pulse/kernel-mind-moon-hee-lee-miwze/ https://www.linkedin.com/pulse/kernel-mind-moon-hee-lee-miwz... It's X but Y came from elsewhere.
- bakugo 10mo ago> This isn’t a guide to writing kernel code. It’s an effort to understand how the Linux kernel thinks. > not of function calls, but of how the kernel responds > The kernel is not a process but the very foundation > The Linux kernel is not just a set of subsystems—it is a layered system that enforces structure at runtime > This flexibility does not come from runtime detection or dynamic reconfiguration. It comes from structure. > Identity is not discovered at runtime. It is defined before execution begins. > The kernel doesn't view memory as a simple map, but as a responsibility > Memory Is Not a Place. It’s a System. > Memory safety relies on disciplined handoffs, not centralized control or type enforcement. > The Linux kernel goes beyond executing code; it enforces strict control > Kernel execution is not linear code—it’s structured control This legitimately hurts to read. I think I'm going to have an aneurysm if I continue.
- Barry-Perkins 10mo ago[dead]
- kinow 10mo agoThis looks amazing. Took me some time to find the author (https://fabiomaia.eu https://fabiomaia.eu). Will drop a message to ask if it'd be possible to have a similar tool for Python. I find it useful to teach new engineers how to find the source code in the cpython repository, check if the code is Python or C, and understand what the code does (some times the docs are a bit lacking/confusing for newcomers).
- rapfaria 10mo ago> Will drop a message to ask if it'd be possible to have a similar tool for Python. Why not create your own? This is as wild as open-source expectations of a speedy implementation, addressing issues quickly, etc. Folks always want more and more.
- fatbluntbandit 10mo ago[dead]
- dmezzetti 10mo agoVery interesting! I was kind of expecting that this was going to use LLMs / coding agents to explain the kernel as you stepped through it. But this is a nice app.
- reverserdev 10mo agoI am considering more dynamic "tutors", since this rudimentary version got so much attention! :) What do you have in mind when you say "step through" the code? Like follow your scrolling of the source code?
- dmezzetti 10mo agoSomething as simple as an LLM prompt that explains what the file does would go a long way I think.
- w23j 10mo agoThis file from chapter 1 cannot be opened: arch/x86/kernel/entry_64.S ("Failed to load file"). It's also not visible in the directory tree on the left. (Oddly enough another comment mentioned this already and is voted dead. Why?)
- rumdz 10mo agoIt must be a typo. The path should actually be arch/x86/entry/entry_64.S
- stackedinserter 10mo agoWhat kind of guide says "next topic is scheduler" and just points you to sched.h?
- synergy20 10mo agoI must be missing something, we had kernel source browsing online for years, e.g. https://elixir.bootlin.com/linux/v6.17.9/source/fs https://elixir.bootlin.com/linux/v6.17.9/source/fs, this is another one, what extra features it provides. in fact the bootlin one provides some search functions but I did not spot that here. I was expecting some LLM explanation for the code, or dependency graphs etc in the AI era for a new kernel navigator...
- xeonmc 10mo agoYou: “Wow, we are surely in the golden age of AI! I can’t wait to see LLM-guided explanations for the code or a new kernel dependency navigator powered by AI…” The AI Era: “Meh, best I could do is AI rehashes of the same old functionality in a different web framework.”
- vagab0nd 10mo agoApparently it has an integrated guide on the right side of the page, which is "Based on \"The Kernel in The Mind\" by Moon Hee Lee".
- synergy20 10mo agowhich is static and not context-aware for the code of choice?
- wasteofelectron 10mo agoLooks great, looking forward to digging in. I had a similar idea a while back (B.A., before agents) but it seemed too big to take on. Was this able to be realised due to agentic coding?
- algorithm314 10mo agoNo language server in this explorer, so it is less useful.
- low_tech_punk 10mo agoI believe the entire web app was a mod on top of monaco (vscode)? Really great hack!
- Andrew-Tate 10mo ago[dead]
- iamcreasy 10mo ago@reverserdev This is neat. What is the expected use case you have in mind? At first glance - I thought it was guided tour through the kernel code with question for knowledge check.
- leo_e 10mo agoThe value here isn't just indexing; it's narrative. Reading the Linux kernel linearly is impossible because it’s not just code anymore—it’s 30 years of hardware quirks, scheduling theory, and architectural compromises solidified into C. Tools like Elixir tell you where a symbol is defined. Tools like this attempt to answer why it's structured that way. As systems complexity outpaces human working memory, we need more "archaeological" tools that visualize the state machine, not just the text.