 from the top of Schweitzer Mountain. Sandpoint, Idaho.Hello everyone. So I’m new to Linux, operating systems, and the like. I know a bit of programming (Java and a hint of others), so I was wondering how and where I should start contributing. But instead of asking you guys where I should start, can you guys tell me your story on how you started developing? It would give me an idea on how I should set up my roadmap. Thanks!
I switched to Linux almost out of necessity. I had a year-old eMachines laptop that had serious overheating issues, kept corrupting everything, and hosed my well-riced install of Windows XP.
I ended up using Linux because it was pretty much the only thing that would boot using a newfangled piece of tech called a “LiveCD” pioneered by Knoppix. Within a few months, I was already more productive on Linux than I was on Windows. Almost nothing worked automagically on Linux at that time, so having a working system meant you had to configure all of the parts, so you really got to know what you were working with.
This enabled me to start running a homelab, and I was serving my own websites from my office over a DSL line a few months after I switched. I told some geeky friends about it, and they got jealous of the control I had (full root!) when they were paying for shared hosting. A handful of them kicked me some money for server space and I ended up running a very small webhosting business while still in college.
Doing that kinda stuff ended up becoming my career and one of my biggest passions, and I became a decent programmer out of the necessity of being a good sysadmin.
My suggestion for getting started? Ignore your roadmap and chase a passion project. Generally, it’s a good idea to start small, but it’s really important that you start with something you actually use. Some small open source projects have a single developer, and is only used by a few hundred people, tops. It’s entirely possible that you’re the most qualified person on the planet to fix the bugs that piss you off (by virtue of being aware they exist).
Seeing improvement in a piece of software keeps you motivated, and the biggest skills you’ll develop aren’t coding skills but collaboration skills. Any idiot can learn to code (and many do), but learning to work with someone else to get improvements added in is a rare and valuable skill.
Thanks imhigh.today and tkoham for the responses!
tkoham: hmmm… i might try that “BS homework/test thing” ;).
I’ll definitely have to take an easier approach then haha. For sometime I’ve been trying to bake a new os into my android phone (Samsung Galaxy s3… so yeah not maintained by devs anymore)… really frustrating to find generalized beginner resources. I guess I’ll start by making a silly program then XD. Thxs for your help again!
And definitely start small. You can’t go from zero to kernel developer in one go. Trying something too complicated first will just mean you’re floundering around getting nowhere without any sort of payoff, get discouraged and give up. Hence the hello world thing for every language. You need something only a little more complex than hello world.
Find something that you’re doing repeatedly or something that is easy to screw up by human error, and figure out how to automate it via some sort of script. This is unfortunately one of the problems getting started now. Most of the basic, easy beginner problems are done.
Once you’ve figured out how to do it in a scripting language, maybe look into doing it via a proper compiler language like C or whatever.
Not for speed necessarily, but to learn a new language with a familiar problem.
Me? I started modifying/writing code (in C) for a MUD (adding/changing skills, classes, etc.) back in the day (during university), after i’d already done programming in high school (in Pascal) after messing around with programming in BASIC as a 6-10 year old kid.
That’s also how i originally got involved in Linux - to host a copy of it at home.
TLDR: Don’t try and run before you can walk. You need to chalk up some successes for yourself to keep motivated. So aim low to start with.
I don’t develop for Linux, its a tool for me rather, to use for programming, computer diagnostics or entertainment.
Hmmm, well for me learning code is boring as hell. I wanna play with the legos and I’m being given duplos.  And years ago I needed some code done to make my school’s machines run better. Tried to dev an windows xp because its what I had, and that was a failure. So found linux, found out tools weren’t 100+ from tardsoft, and I could get to work.
As far as being a linux user thats just how I started. Very soon after I realized windows was gone and this linux thing was all I had. I had ubuntu 9.04 or 9.06.  And gnome would crash constantly. So I looked up ‘linux for pentium m’ because I had a pentium m laptop, learned about PAE vs non-PAE kernels, found a thing called YLMF, and ran that fol about 2 years. I loved that os. It was shitty and chinese, and I couldn’t install anything from the repo’s or appstole, but it ran great, had an office suite built in, I figured out how to break packages and force install apps, installed an rpm once on that (it was a debian system don’t ask me how idk either but its possible), learned about makefiles and stopped furking with that, then my hp nc6000 died. Those mobo had hollible heat issues. By thattime I was working IT for the high school long enough I could take machines home.
Took home my first thinkpad in 2010. An IBM 600X. It couldn’t run YLMF, sadly, at least not well. Couldn’t run XP either it’d just crash. But it could run xubuntu 10.10! So I ran that till I accidentally killed my hald dlive 6 months later, then I was back on ylmf for another year tillI got an hp NW8000. The end all be all pentium m laptop.  Could handle video streams better than the 600x too (because it didn’t run at 650mhz). And the rest of it kinda tumbles into distro hopping.
 Some gentoo thing. Couldn’t figure that out and I found netrunner. Then I found arch. THEN Ifound a Netrunner branch BASED ON ARRH and the excitement just kinda turbospooled from then on.
That was 2013 or 2014 by that point with netrunner and I knew enough to know about the different driver stacks, how they interract with the kernel, how much oy a pain in the dick pulseaudio was and that I hated upstream because of pulseaudio… you get the picture.
Now I’d say I’m pretty plaficient in using linux 10 years later having oy used windows once in a while and even then not knowing what the hell I was doing with it. I now know more in linux than I’ll ewer know in windows and I’ll probably never be able to use it again. It either breaks or fails to do basic tasks I need to do. Not worth the hassle to me.
If you want to contribute to Linux, learn Python 3 and C. That’s what most of the system is written in.
If you want to contribute to various DEs, you have a few options. JavaScript for Gnome and Cinnamon (don’t quote me on that, going from memory), C++ will help with some others like KDE.
If you’re asking about how to contribute to various projects on Linux or creating your own, do what makes you happy. If your work solves a problem or increases efficiency and productivity do it. If your work increases compatibility in some way, you will be a Godsend.
I say do what makes you happy because there will be a ton of naysayers and negative people putting you down no matter what you do. The community is the worst in that respect. They don’t want tools that work, they want things unnecessarily difficult and complex to keep casual and business users out.
There are a great deal of people opposed to this mentality, but you will rarely see them on the reddits or Linux forums because they’re busy working, collaborating, and contributing to making things better.
This is not meant as discouragement or to talk you out of it, just giving you the warning that so many need when starting out.
can you guys tell me your story on how you started developing?
Computer Science degree. I had no interest in programming before that.  I was planning on just going deeper into systems administration. Still am, in some respects.
In my third year something clicked and it started vibing with me. I don’t appreciate how most software courses are taught, online and offline, but I had a couple of professors make up for it. The way I learned Python really tainted the language as a whole for me. I still hate working with it for the most part.
My first Linux contribution was on a version of CentOS 7 KVM that wouldn’t install an Ubuntu 64 bit server. This was before I knew about commits, VCS, and contributing in general