My First Contribution to Linux
Posted3 months agoActive3 months ago
vkoskiv.comTechstoryHigh profile
supportivepositive
Debate
5/100
Linux Kernel DevelopmentOpen-Source ContributionsHardware Support
Key topics
Linux Kernel Development
Open-Source Contributions
Hardware Support
The author shares their experience of contributing to the Linux kernel by adding support for extra buttons on their old laptop, sparking enthusiasm and encouragement among commenters to contribute to open-source projects.
Snapshot generated from the HN discussion
Discussion Activity
Very active discussionFirst comment
40m
Peak period
65
Day 4
Avg / period
14
Comment distribution84 data points
Loading chart...
Based on 84 loaded comments
Key moments
- 01Story posted
Oct 6, 2025 at 8:31 AM EDT
3 months ago
Step 01 - 02First comment
Oct 6, 2025 at 9:11 AM EDT
40m after posting
Step 02 - 03Peak activity
65 comments in Day 4
Hottest window of the conversation
Step 03 - 04Latest activity
Oct 20, 2025 at 10:55 AM EDT
3 months ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
ID: 45490652Type: storyLast synced: 11/22/2025, 11:47:55 PM
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
Seeing your name in the Linux changelog must be awesome!
Years ago when I was a teenager I had a couple patches accepted for ksnake and gedit.
Certainly not as prestigious as a patch to Linux, but still the idea of code I'd written running on millions of PCs around the world felt amazing.
Contributing to the kernel is definitely on my list of things to eventually do.
0: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1019716
You know, back when I confused "hash function" with "encryption" and whatnot.
All it takes is just to check that the commit shows up in upstream projects such as Linux and anyone can see the code, the reviews and the authors email in the AUTHORS file which verify that this contribution / patch is indeed from the author who committed that change.
This is a very old form of social proof which saves lots time and makes Leetcode redundant. (Which can now be completely cheated with LLMs.)
Except, this tests for a wide range of tasks related to a typical SWE role: programming proficiency, reasoning through rigorous code-review, clean code, open-source and testing.
Given that Leetcode and Hackerrank tests can be cheated / beaten with LLMs, it not only has been gamed to death, but it tests for nothing that is related to the role.
> but imagine the lkml if every Bay Area wannabe company started soft-requiring this as a screen!
Then this saves time and the proof is on the interviewee to show high quality functional open source changes to high profile projects like the Linux kernel for example and the bar is set high on purpose.
Imagine if hundreds of candidates have "interview cheating" software installed, just to pass the coding interview. Both the interviewer and the interviewee lose.
At the cost of the maintainer's time being your first round interview.
https://news.ycombinator.com/item?id=24643894
You would not be looking for "contributions" that have "edited README" or "fixed typo" in them, which these are examples of non-functional changes.
It is SWEs that have evidence of significant functional changes throughout a high profile open-source project (like Linux, Chromium) with extensive code-reviews and / or have core-contributor roles which is the bar that should be set.
Exquisite write-up and OP's simple writing has a motivating ring to it, and I'm now on the local used marketplace looking for pieces of tech like this :-)
Maybe you won't find an issue as simple as fixing a button, though.
Every laptop I've used with linux has had a few non-functioning buttons and keys. I think you underestimate the widespread issue.
Making a physical button work requires bloatware in your understanding?
> I'm happy not to have the pavlovian training that may some day cause me to click one of these things on someone's windows machine.
Do you know what you're trying to say here? I do not.
Some of the issue here is the keys themselves have almost no standardization, even across models. Hell, possibly in the same model sometimes. Some backend windows driver captures these signals via a 50 mile long series of if statements that make grown men weep when viewed. This later can mean your totally working fix for the kernel doesn't actually work on a 1/3rd of that fleet of laptops.
And very handy
~~
I looked it up, the Human Interface Devices usage "Consumer Control" code assigned to "Application Launch - Calculator" is 0x0C0192 or 0x192
This keypress is sent as a scancode/keycode, not an ASCII character. On Windows, this opens calc.exe by default, but you can change which app opens in response to the calculator key by editing the media key mappings in the Registry
The linked article is discussing play/pause buttons as well as a "mode-switch" button that allows the play/pause button to have a second function. I do not understand how any of these regular functions become bloatware in your estimation.
> Some of the issue here is the keys themselves have almost no standardization, even across models.
There is actually widespread standardization, which is why many important keys work by default. Laptops sometimes have buttons to disable the internal wifi or adjust the keyboard brightness. These keys are less universal, but still hard to categorize as bloatware.
> ome backend windows driver captures these signals via a 50 mile long series of if statements that make grown men weep when viewed.
I don't know any grown men who would weep when viewing this. I'm confused that you do not like a simple solution (if statements, which a computer has zero problems following precisely even if it is complex to you) nor the complex solution ("bloatware")
> This later can mean your totally working fix for the kernel doesn't actually work on a 1/3rd of that fleet of laptops.
Most devices used in fleets are well-supported in linux after a few years, specifically because of users like the linked article who spend time making buttons worked when pressed.
On windows many of these laptop buttons were added like the Yahoo browser bar to specifically work with bloatware that might go on to make a meaningful action for non malicious software as well as what it is really for.
I prefer not to be in the habit of pressing footguns given that I might occasionally be placed in front of a consumers windows laptop that no one cleaned.
If you're this anxious about security, you might not want to be anywhere near a Windows machine.
I think if they're honestly not being hyperbolic, they should find a less technical career or hobby. If you're afraid of flying, don't join the Air Force.
(Not a new issue... here's the problem on an R60) https://unix.stackexchange.com/questions/475968/thinkpad-vol...
E14 Gen4 https://forum.manjaro.org/t/thinkpad-e14-gen4-special-keys-m...
E14 Gen2 issues https://unix.stackexchange.com/questions/609942/thinkpad-spe...
T510 issues https://bbs.archlinux.org/viewtopic.php?id=268269
Fn Volume Control Keys Not Working https://forums.linuxmint.com/viewtopic.php?t=412947
It just takes a cursory glance of search results to see that your ThinkPad experience is not everyone's.
https://docs.kernel.org/next/wmi/driver-development-guide.ht...
postmarketOS in particular has a really good devices page [1] showing missing feature support at a glance, as well as guides for porting to new devices [2] and porting features from an outdated vendor-provided Linux fork to the upstream kernel [3].
[1] https://wiki.postmarketos.org/wiki/Devices [2] https://wiki.postmarketos.org/wiki/Porting_to_a_new_device [3] https://wiki.postmarketos.org/wiki/Mainlining
I would prefer a sort of dual-boot or just a simple ability to run linux in "android phones"
Like, if we were to build a linux phone somehow hacking it through a raspberry pi or the alikes, they would be so much more costly and subpar.
Android phones have whole globalization working on it and the only reason why they don't work is lack of drivers support/software side, something which can be worked on.
I think if society rewards something like PostMarketOS more/make it easier to install it, then things can be so great as well.
I know I can run a terminal inside android but till now it was only possible through qemu which had its issues...
https://www.androidauthority.com/android-linux-terminal-app-...
I am not sure but I have never really appreciated having linux run inside a vm, I'd much rather run something like waydroid in a postmarketOS phone than linux inside android in an ideal world technically speaking from strictly performance but we don't live in one and installing waydroid on postmarketos or even installing postmarketos can be a very huge issue whereas installing linux on android can be a single step with termux or userLand.
Currently only do that on one of my older devices, would love to do it on my main device but when I bought it I was in a hurry to get it going and did not have time to unlock the bootloader. Unlocking the bootloader now means having to factory default the device but I simply have too much important stuff set up that it's not worth it. Apparently there's also no great way to backup all partitions of the Android device which I find to be quite strange.
And the pmos wiki is severely lacking IMHO.
By the way, delving into obscure and hardware-specific kernel code, sometimes yields quite interesting generally-applicable problems. For example, @dougg3 did an (excellent!) series of articles about his work on bringing mainline kernel support to "Chumby 8", a somewhat obscure, but historically significant piece of hardware, and as a side-quest he stumbled into this:
https://www.downtowndougbrown.com/2024/04/why-is-my-cpu-usag...
...which is applicable to quite a few other machines.
[0]: https://www.getzola.org/ [1]: https://github.com/micahkepe/radion
;-)
Just kidding, very cool to see a blow by blow of landing a Linux patch. I felt similar excitement landing a mere emacs patch.
I'm sure if I went to the source tree and asked people for a low-hanging-fruit task someone would be kind enough to guide me to get started, but it's still kind of overwhelming to a point where I've just avoided it.
I should probably should stop coming up with excuses and just do it, as I would like to do a lot more with filesystems and having an understanding of the kernel would probably help with that.
I've never done either, so I'm not bragging or anything
It was, he submitted it, and that one character fix got him into the contributors file .. we were all highly amused, because that particular boss didn't program much, but found the bug during testing and it was, nevertheless, a huge win for him .. ;)
EDIT: it was a 2-character fix. ;)
https://lkml.iu.edu/2103.2/08109.html
(W., if you read this, I still love telling the story of how you found this bug..)
All over the desk.
Broken link points here and shows no commits: https://github.com/torvalds/linux/commits?author=vkoskiv&sin...
If I correct the date range to include the maintainer commit date (May 15th), the commit shows up: https://github.com/torvalds/linux/commits?author=vkoskiv&sin...
Also strange that if I only filter on author[1], nothing shows up. Though I suspect that dataset might only be updated periodically.
[0]: https://docs.github.com/en/account-and-profile/reference/pro...
[1]: https://github.com/torvalds/linux/commits?author=vkoskiv
I also got my first and so far only kernel patch submitted years ago:
On my MacBook Pro 2010 with GeForce 320M running any OpenGL application, even glxgears, would crash because it ran out of memory. So I dug into nouveau drm code and found out that some memory related function was using wrong code path for that GPU.
It took some time to figure out how to submit a patch but it felt nice after I got it accepted.
I didn't even know about those patch sanity-checking scripts back then, they look useful for potential future patches!
I too went on this adventure with my laptop. Sadly I hit a wall while reverse engineering the ACPI stuff. With no logs, error messages or tools on the Windows side to intercept the ACPI events, I was at a loss but eventually gave up. Massive respect for managing it with your own laptop!!
I did manage to reverse engineer the keyboard's LEDs and drive them from user space! Studied the kernel to make a contribution but decided not to do so when I saw comments saying it is better to keep functionality in user space if at all possible.
Did you try to use any AI tools during their process?
At the bottom, there is a timeline, and I noticed this entry with a LWN link:
https://lwn.net/Articles/1020203/ ... which leads to a LKML link: https://lwn.net/ml/all/aBj_SEgFTXfrPVuj@lappy/The new version of this tool (AUTOSEL) looks very interesting!
embedding technology to provide significantly more accurate recommendations.[1] https://github.com/llvm/llvm-project/pull/154914
4 more comments available on Hacker News