LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Software (https://www.linuxquestions.org/questions/linux-software-2/)
-   -   How can I start helping with open source? (https://www.linuxquestions.org/questions/linux-software-2/how-can-i-start-helping-with-open-source-4175542322/)

Rebekah 05-11-2015 09:33 PM

How can I start helping with open source?
 
I want to start helping out on open-source projects, because I think the culture is really cool and because I want to strengthen my programming skills.

I've been groveling through GitHub, looking for a project to start with, but I've been having trouble. According to something ESR wrote at one point that I read, I should be looking for projects that are just a couple hundred lines or so. I don't even know how to tell how big they are, though. They all look so intricate.

I have basic programming skills and a partial understanding of OO principles. I've programmed in Java, C#, and Python. (And, well, VB (because of school), but that won't do me much good here.) I've played around a bit with C and plan on learning more.

If I need to be fluent in a language before I start tinkering, I can become so... but I'm getting tired of learning from textbooks. I have excellent textbooks at my disposal but they're rather boring if you don't do much with the skills.

If someone could tell me how to find a project to work with, it'd be much appreciated. Individual project suggestions are appreciated too but not generally what I'm looking for.

I do have a GitHub account, and I have Git installed.

frankbell 05-11-2015 09:43 PM

There are all kinds of things you can do.

Of course, you can code. Also, many projects desperately need persons to help write documentation. You can run testing distros and file bug reports.

A web search for "how to help with open source" will turn up many useful links.

I suspect the most important thing is to pick one or two worthwhile projects and focus on them, so your efforts are concentrated and focused, not scatter-shot.

Me, I've decided that trying to help persons via LQ is the best way I can contribute, because, as a trainer, explaining stuff is what I do best. Plus, LQ was good to me, so I want to return the favor as best I can.

Rebekah 05-11-2015 10:03 PM

Eh, I should have taken more care in selecting my title...

Let me rephrase this question:
How do I find a project to start working on that's small and simple enough to be workable by my fledgling programming skills?

I've already done that Google search and read those articles. I'm asking a more specific question--I guess about GitHub in particular.

I know I want to code in particular, because that helps me as well.

Thanks for your reply anyway, though!

rtmistler 05-12-2015 06:49 AM

I've always found that while I learn better by doing, I also learn better by either instructing or doing "under the gun". Which is to say "instructing" where you're responsible to be correct, provide a guideline to the students, and be capable to answer their extended questions. "Under the gun" means either I have a class where I have assignments or I have a job where I have work to accomplish.

I did a quick search and I think the lion's share of search results you'll see are a bunch of people asking this very same question. So you'll likely end up benefiting to some small degree by reviewing those questions and associated answers; however you'll put in a lot more effort to view it all than maybe what it's worth.

EVERYTHING in Linux is open source. Maybe start with the binary commands and don't do something intentionally helpful, just do something new. For instance, the LS command. Or the FIND command. Or the GREP command. Or the CD, PWD commands. Get the source for those standard binaries and "add a feature" which the command doesn't currently perform.

And start by just being able to compile one of those projects. Make one line of change and verify that your one line of change compiles and actually makes a difference, such as you added a log entry when the function is called. Then go on to make some more complex edits.

Note that many of these commands are moderately simple. Even if one isn't so simple in size of scope, if you download the project and build it, that's the first thing. Then find the main() function and see about enhancing it's capability to parse additional arguments, thus adding your newly proposed argument. For instance, say it doesn't have a "-d" switch or something similar, then add that capability. Verify you got it parse-able, and then decide what you might do with having added your new command switch. Like I say, this does not have to be immediately helpful, but it will get you started.

You don't have to contribute your result right away, or ever. And whatever added feature you do doesn't have to be really useful. But what you'll get is experience with the open source development of those items. Once you gain some of this experience you can explore things of higher complexity and maybe determine on your own what contributions you could make which would enhance things for someone else.

j_me 05-12-2015 07:40 AM

You need to take the initiative. As you know anyone can contribute as long as you abide by the licence that program was released under.
So find a program that's lacking a feature pull the source file from github, fix it and fork it.
Quote:

How do I find a project to start working on that's small and simple enough to be workable by my fledgling programming skills?
How long is a piece of string. What maybe simple to you maybe rocket science to someone else.

sundialsvcs 05-12-2015 07:51 AM

Find a project which interests you, and contact the people who are responsible for maintaining it. Realize that you are making a commitment that is commensurate to "a real job," but one that you might never get paid for.

Don't be surprised if the owners of the project assign you to "sweep the floors and empty the dust-bins." (Don't be surprised if they do nothing more than that for a long time.) People who express an interest in open-source projects are usually wall-flowers who don't stick around. Show that you are different. Be patient.

You'll be asked to help shoot-down bugs. That's a way to become familiar with the code: a good way. You'll be asked to write documentation: not only does documentation "never get written, otherwise," but it's another good way to become familiar with the code.

Eventually, you might "write a 'patch.'" (Congratulations.) But you will not be able to "push" that patch to the project's repository. Instead, you must make a "'pull' request," asking the owners of the project to 'pull' your patch from your repository, review your changes, and consider whether they will allow your patch to become part of their product. (Congratulations again, when they do.)

One thing that's an eye-opener for many people is that "open-source software projects are usually far more disciplined than what you get away with encounter at $WORK." It is a good discipline, however.

You can set your own level of commitment to an open-source project, but, whatever level of commitment you choose to and are able to set, [u]keep/u] your promises. Respect deadlines. Do professional work and write source-code that is indistinguishable in style and format from all the other source-code that is already part of the project. Start small.

fatmac 05-12-2015 08:59 AM

Although it is not Linux, Haiku are crying out for coding help, (C++ I think), it might give you more satisfaction to work with them.
http://haiku-os.org/ https://www.haiku-os.org/forum
(You don't have to give up on Linux, but there are other open source projects.)


All times are GMT -5. The time now is 05:20 PM.