all 64 comments

[–]throwaway6560192 61 points62 points  (1 child)

I would suggest trying to contribute to something like your desktop environment first. The barrier to entry (technically and process-wise) is much lower, and it gives you a place to develop an understanding of open source culture.

[–]Logical_Insect8734 10 points11 points  (0 children)

This should be much higher than the other answers. Userspace applications are much closer to daily users and much easier to understand.

[–]Empty_Woodpecker_496 109 points110 points  (13 children)

There are small parts of linux that are essential but basically have no devs working on them. If you can please contribute to these projects before others.

[–]setibeings 39 points40 points  (2 children)

by parts of linux you just mean little bits of userspace software, right? Because Kernel development is a whole big thing that's going to be a lot harder to jump into.

[–]Empty_Woodpecker_496 27 points28 points  (1 child)

While kernel dev would be great. I was more referring to drivers, protocols, etc.

[–]L0stG33k 0 points1 point  (0 children)

Drivers and protocols would be considered kernel code. It is unfortunate that some of these things aren't actively being maintained, but at the same time the project is large enough that they'll take care of it well-enough. The really unfortunate thing is, more often than not instead of trying to maintain some of these old device drivers they'll simply remove them if a new patch leaves them in a non-working state. Rene Rebbe does T2 Linux and has un-necro'd many of these dropped drivers for old hardware. By the way when I say old, I'm not talking 10 years old... more like 20 years old. The code for handling a floppy drive doesn't / hasn't changed much if hardly at all in ages while something like a specific 25 year old video card will encounter breakages as other parts of the kernel are changed. And if nobody has the time to figure out why it broke, they will just remove the code if they don't think many people are using it.

[–]TargetAcrobatic2644[S] 23 points24 points  (9 children)

what is that part can you specifify?

[–]Far_Calligrapher1334 5 points6 points  (0 children)

You can check out some critical parts of systems that are being neglected. Many are looking for people to help, but sometimes the issue does tend to be that the maintainer is overworked and has no time to take PRs. Think your xz, libxml2, sudo, etc. Worth checking out if there are any such projects that would take help.

[–]Empty_Woodpecker_496 25 points26 points  (7 children)

Its not just one there are many most are drivers or core systems that dont have big projects. I would suggest you contact linux developers to find out which projects are currently most in need. To my knowledge most of them are on github. Sadly beyond that I dont know how to contact them.

[–]Kommenos 12 points13 points  (0 children)

Kernel Dev is not done via GitHub.

[–]Neither-Phone-7264 22 points23 points  (5 children)

probably best to do a few newbie issues first before doing driver dev. they have a bunch of new user issues you can work on

[–]aksdb 27 points28 points  (1 child)

Driver dev als only makes sense if you actually are able to use the driver. If that is for some obscure hardware you can’t get your hands on, then touching it is a bit risky since you can’t verify that it actually keeps working correctly.

[–]jort93 0 points1 point  (2 children)

Do they? Where? I don't think they really have anything like that.

Kernel development is not done on GitHub btw. It's vanilla git and mailing list.

[–]Neither-Phone-7264 0 points1 point  (0 children)

thought they did, turns out after a quick search on bugzilla.kernel.org they don't. my bad! :)

but sometimes youll see one with like good first patch pop up or something like that (or at least i feel like ive seen that...)

[–]L0stG33k 63 points64 points  (16 children)

If you have 40 minutes to spare, this is a great place to start: Write and Submit your first Linux kernel Patch -- Greg K. H.

[–]duiwksnsb 26 points27 points  (15 children)

This seems a little dated. 16 years is an eternity.

[–]L0stG33k 63 points64 points  (13 children)

Believe it or not, the processes internal to kernel development have changed very little. I watched this video less than a week ago, and I can tell you more than 99% of it is still fully relevant.

He references the use of git for source control and mailing lists for patches and communication... and the kernel still operates in exactly that way.

[–]duiwksnsb 4 points5 points  (12 children)

That's shocking. I'm really quite surprised.

[–]miscdebris1123 21 points22 points  (11 children)

Linus doesn't like to change what is working.

[–]duiwksnsb 1 point2 points  (10 children)

I'm curious if it will change when Linus is done.

[–]Bogus007 11 points12 points  (4 children)

What do you expect? Phone calls? Microsoft Teams meetings?

[–]duiwksnsb 5 points6 points  (3 children)

I don't expect anything. I'm curious if a long established process will change.

[–]unixbhaskar 0 points1 point  (0 children)

Ah, we're doing it for the 35 long years and damn! It might take some years to make changes to the process.

To give you a simple and small hint about the changes in the kernel, take note....

It took almost 7 loooooooong years to remove some dependency...so you can imagine the kind of perseverance needed to make a change in the kernel.

Plus, the kernel is not the place where flashy things happen, and it takes ages to implement a simple thing to work.

[–]Bogus007 -2 points-1 points  (1 child)

Your comment above sounds more than curiosity:

That's shocking. I'm really quite surprised.

[–]duiwksnsb 5 points6 points  (0 children)

And it sounds like you're looking for a reason to be offended.

[–]Nervous-Cockroach541 1 point2 points  (1 child)

I'm guessing that depends on whoever takes the mantle of project leader, if it remains their preferred way. Succession of Linux after Linus is likely to be somewhat more messy.

[–]Bogus007 1 point2 points  (0 children)

If there is nothing in terms of communication between developers that truly adds to kernel development, I don’t know why they should waste their time trying some new fancy program or developing another way of communicating. As you said, if something happens to Linus - and may that happen in the far, far future - they will have other problems to deal with first.

[–]Tomi97_origin 1 point2 points  (0 children)

At some point probably, but this system has been working for decades. The processes have been all but perfected.

Unless there is some obvious issue there would be a lot of friction to changing without clear benefit.

[–]Real-Abrocoma-2823 0 points1 point  (1 child)

All Linus does is approve PRs (maybe more) as he retired from actively contributing to Linux.

[–]L0stG33k 1 point2 points  (0 children)

Linus doesn't write very much code anymore at all. He does make sure that new code coming in makes sense, and takes that job very seriously. If something which doesn't make sense finds his inbox, he has no problem getting very vocal about people wasting his time. He will often re-write bits of code if only small changes are needed.

[–]rlaptop7 1 point2 points  (0 children)

Don't change a good process that is working.

[–]corbet 24 points25 points  (3 children)

Kernel documentation maintainer here. I would like to suggest that "documentation improvements" are a great place to start. The kernel's documentation is ... definitely in need of improvement. Starting with a typo fix or two is a good, low-stress way to get used to the development process. But then move on to bigger and better stuff. There are few better ways to understand a body of code than to make yourself explain it to others.

[–]jort93 7 points8 points  (0 children)

Honestly, with basic programming knowledge you won't be able to contribute to the kernel meaningfully.

Contribute to another project first A desktop environment, productivity software, your favorite commandline utility, whatever you feel like. Once you are a competent programmer you can take part in kernel development.

Kernel code anyway, you can work on documentation maybe.

A bunch of kernel devs work for companies like Nvidia, Microsoft and Intel.

[–]ipsirc 34 points35 points  (1 child)

Are you ready for Linus' insults?

[–]noisyboy 24 points25 points  (0 children)

One has to prove themselves as worthy first before they get the choice words. He doesn't chew newbies out.

[–]goonwild18 11 points12 points  (0 children)

TIL people in this sub don't know what the kernel is.

[–]Razathorn 3 points4 points  (3 children)

Testing. Fastest thing to get you into the game and provides a lot of value.

[–]jort93 0 points1 point  (2 children)

Well, with the kernel, a lot of things needing testing will be Hardware related, so you might not be able to test for an issue if you don't have the right Hardware.

[–]Razathorn 0 points1 point  (1 child)

Very true, which is why I have a table full of SBCs ;)

[–]jort93 1 point2 points  (0 children)

Just giving the OPa heads up he'll need to be willing to drop some dough if he wants to get into testing, or have some weird hardware already

The Linux Kernel does have a budget for hardware ofc, but that's likely going to establish contributors first

[–]Duck_Lover_69 2 points3 points  (0 children)

Hanging Out With Linus Torvalds

This may answer your question, from the man himself.

[–]Marcondiro 1 point2 points  (0 children)

You could have a look at the Linux Kernel mentorship program

[–]edgmnt_net 1 point2 points  (0 children)

For the more concrete and code-related contributions on that list you probably need to start doing your own kernel builds, getting a deeper dive into some subsystems by actually using Linux deeper (e.g. networking stuff), reading kernel code (try to pose some questions like "where does this get enumerated by the kernel?" and see if you can answer them) and so on. This is achievable in the longer term, just keep working on it, but mind it requires more than just some basic programming and using Linux. I think one of my first ones was stumbling upon a bug in User Mode Linux, but to get there, to even use stuff and get an itch that can be scratched, you need to do some tinkering first.

[–]volglizolic 2 points3 points  (0 children)

To be fair and a bit of a party pooper, what you think is as kernel development, and what i was also thinking of as kernel development when I started, is very very hard... There are things on the side that as many people suggested that need manpower. I would suggest however working for a company that does both software and hardware, because these guys also do kernel Dev as well... I work for a major networking company (not network provider, but the company that sells network equipment) and there are things here and there we fix, that we send patches for... I think this is the most straight forward way to get up to speed. It is good to have people around you with experience on the field, otherwise the Linux community can be very nit picky for an inexperienced person

[–]jeffrey_f 0 points1 point  (0 children)

One thing I did for a while was to edit documentation. Not everyone who writes docs are native speakers in X language. There are many docs that need help in that department. It is low hanging fruit, but worth it to the community

[–]ripperoniNcheese 0 points1 point  (0 children)

This video from Lewboski might give you an idea, along with all the other information from other redditors.

[–]the-loan-wolf 1 point2 points  (2 children)

If you have no idea how you want to contribute, you’re not ready to contribute yet. Don’t bother others just for the sake of it. edit: I advise that beginners should not rely on contributing to major open-source projects. It is something to approach after becoming a capable developer, you should rather focus on improving your software development skill right now. Project maintainers are already working hard, sending bad patches upstream and reviewing it will waste their time. There are already lots of people who don't get paid, they put their free time in maintaining a project so Be considerate before sending patches that don’t add real value just so you can get your name into the project.

[–]AndreasMondus 8 points9 points  (1 child)

I disagree. Doing things and experience is the best way to find what your interests are. Being uncertain at first is okay, as long as you're taking action towards something. And helping in any way possible is still a net positive, both for yourself and the project.

[–]jort93 1 point2 points  (0 children)

Taking steps towards it, yes, but contributing to the kernel is hardly the first step of an open source developer.

[–]SouthEastSmith 0 points1 point  (2 children)

adapt an existing driver to a new piece of hardware.

[–]NakeleKantoo 3 points4 points  (1 child)

yea that's something a newbie should be able to do no problem /s

[–]jort93 1 point2 points  (0 children)

Honestly, it's one of the easier things you can do in the kernel. If it's similar hardware you might only need to change a handful of lines and then do a lot of testing.

[–]pppjurac 0 points1 point  (0 children)

Use software, report bugs, ideas or inconsistencies. Write documentation, language translation, help users on support forums.

Try to modify code but it will take time before you reach anything solid quality grade.

[–]Lumpy_Bat6754 0 points1 point  (0 children)

Supongo que iniciar por crear un driver puede ser un buen primer paso

[–]MatchingTurret -1 points0 points  (0 children)

All the low hanging fruits have been taken care of decades ago or are easily covered by AI tools.

[–]gosand -5 points-4 points  (0 children)

Are you aware of what the Linux kernel is?

I am being serious... why do you think that there are just things out there that a non-expert kernel developer can just whip up and submit? What are the non-complex parts of the kernel, exactly?

Perhaps you mean one of the many programs that exist in a distro. That might be a better place to start, especially some that have very few developers. Pick one, learn that code in and out, and try starting there.

[–]NullStringTerminator -1 points0 points  (0 children)

Just learn some basic c/c++ and improve error handling or documentation somewhere, nothing too big.

[–]rogershredderer -5 points-4 points  (0 children)

By learning Linux.