<p>Before contributing to an open source project it can be useful to become familiar with the tools and concepts involved in version control systems.</p>

<ol>
<li><p>Write some code that is unfinished with some deliberate mistakes and share it with your students on GitHub</p></li>
<li><p>Get your students to clone / download your code, find and fix the bugs then talk about the problems with having so many different versions of the same code in the classroom.</p></li>
<li><p>Get your students to fork your code into their own repositories and commit their own changes.</p></li>
<li><p>Discuss code and commenting conventions and why they're necessary (e.g. <a href="https://www.python.org/dev/peps/pep-0008/" rel="noreferrer">PEP8</a>)</p></li>
<li><p>Get your students to go back and recommit their code in line with the conventions discussed</p></li>
<li><p>Ask your students to issue a pull request on your code so that their changes can be contributed to the original resource.</p></li>
</ol>

<p>Once they've been through that process in a safe and controlled environment they'll be much more confident joining in with an open source project. It can be intimidating jumping in for the first time, no matter how friendly and supportive the contributors are.</p>

<p>You might also want to look at <a href="https://classroom.github.com/" rel="noreferrer">GitHub Classroom</a> which automates the process of creating, sharing and collecting programming assignments from students.</p>

CC BY-SA 3.0
2017-06-27T15:10:20.347Z
2017-06-27T15:10:20.347Z
pddring
<p>GitHub has <code>good-first-issue</code> and <code>help-wanted</code> labels that indicate issues that would be particularly good for novices. More info:</p>

<ul>
<li><a href="https://github.com/collections/choosing-projects" rel="nofollow noreferrer">How to choose (and contribute to) your first open source project</a></li>
<li><a href="https://help.github.com/articles/helping-new-contributors-find-your-project-with-labels/" rel="nofollow noreferrer">Helping new contributors find your project with labels</a></li>
<li><a href="https://github.com/showcases/great-for-new-contributors" rel="nofollow noreferrer">Great for new contributors</a></li>
<li><a href="https://help.github.com/articles/finding-open-source-projects-on-github/" rel="nofollow noreferrer">Finding open source projects on GitHub</a></li>
</ul>

<p><a href="https://github.com/search?l=&amp;q=state%3Aopen+label%3Ahelp-wanted&amp;ref=advsearch&amp;type=Issues&amp;utf8=%E2%9C%93" rel="nofollow noreferrer">Here</a> is a link to a search page that lists every open issue with the <code>help-wanted</code> label. <a href="https://github.com/search?q=label%3Agood-first-issue+state%3Aopen&amp;type=Issues&amp;ref=advsearch&amp;l=&amp;l=" rel="nofollow noreferrer">Here</a> is one for the <code>good-first-issue</code> label. You can further refine these lists to focus on a specific language or look for keywords that you're interested in.</p>

<p>Another way you might approach this is to find an open-source project that's maintained by something you already use. For example, did you know that <a href="https://github.com/spotify" rel="nofollow noreferrer">Spotify</a> and <a href="https://github.com/Netflix" rel="nofollow noreferrer">Netflix</a> both have GitHub accounts with a bunch of repos?</p>

<p>Finally, keep in mind that there is no such thing as too small of a contribution. Found a typo in the documentation? Cool, make a pull request that corrects it! Have a feature request or bug report? File an issue for it! Then start commenting on other people's issues. Maybe start looking into the code if you find one that sounds manageable.</p>

CC BY-SA 4.0
2017-07-22T00:35:33.253Z
2018-06-01T21:09:43.877Z
2018-06-01T21:09:43.877Z
Kevin Workman
<p>There's some upfront work before you can contribute to an open source project. First, you have to find one. There are tons of open source software projects on <a href="https://github.com/" rel="nofollow noreferrer">GitHub</a>. Another source is the <a href="https://www.apache.org/foundation/getinvolved.html" rel="nofollow noreferrer">Apache Software Foundation</a>. Keep in mind that the complexity of the software and the students' skill sets will play factor in finding a match. Next, you need to learn <em>how</em> to contribute. To contribute on GitHub, you need a good understanding of the GitHub website and of course <a href="https://git-scm.com/" rel="nofollow noreferrer">Git itself</a>. In GitHub, you typically fork the repo that you want to contribute to, make the changes to your forked version, create a <em>pull request</em> to the original owner, discuss the changes with the owner, make more changes, repeat. When ready, the owner accepts the pull request and the contribution is official. This process alone can be intimidating to a new programmer. One easy way to contribute to open source is to fix errors in documentation (e.g., a README.md file). The Apache Software Foundation offers different ways for people to contribute too, not just coding. Once you have some experience, you can make more substantial contributions. </p>

CC BY-SA 3.0
2017-06-28T21:20:44.130Z
Welcome to Computer Science Educators!
Ellen Spertus
CC BY-SA 3.0
2017-06-28T20:50:24.267Z
2017-06-28T20:50:24.267Z
Edwin Torres
<p>The OpenHatch wiki has <a href="http://wiki.openhatch.org/Open_Source_Comes_to_Campus/Curriculum/Finding_a_Project" rel="nofollow noreferrer">an excellent article on finding an Open Source project</a>. I summarize their recommended process here:</p>

<h2>Step 1: Brainstorming Projects</h2>

<p>Make a list of potential projects by doing some searches inspired by the following:</p>

<ul>
<li>What open source software do you use? Consider that software and related projects.</li>
<li>Is there a project whose goals you find compelling? For instance, humanitarian projects or projects relating to a hobby or field of interest.</li>
<li>Are there any people you know who work on open source projects? Maybe you can join them. </li>
<li>Check out curated lists, like the <a href="https://summerofcode.withgoogle.com/organizations/" rel="nofollow noreferrer">Google Summer of Code mentoring projects</a>.</li>
</ul>

<h2>Step 2: Researching Projects</h2>

<p>Now look up key information about each potential project:</p>

<ul>
<li>website url </li>
<li>source repository url </li>
<li>mailing list </li>
<li>IRC channel</li>
<li>contributor guide </li>
<li>installation guide</li>
</ul>

<h2>Step 3: Evaluating Projects</h2>

<p>Use that information to evaluate the project:</p>

<p><strong><em>Is this project active?</em></strong></p>

<ul>
<li>When was the last issue reported?  </li>
<li>When was the last commit?</li>
</ul>

<p><strong><em>How responsive are the maintainers?</em></strong></p>

<ul>
<li>How long does it take a maintainer to respond to an issue?</li>
<li>Is the maintainer giving feedback on pull requests and helping people submit appropriate requests?</li>
</ul>

<p><strong><em>Is the community welcoming?</em></strong></p>

<ul>
<li>Read through their mailing list archives, or lurk on their IRC channel to see how newcomers are treated. </li>
<li>When people have questions, are they answered patiently or ignored? </li>
<li>Check out a Code of Conduct, if the project is large enough. </li>
</ul>

<h2>Step 4: Contacting Projects</h2>

<p>At this point you probably have a favorite project or two.</p>

<p><strong><em>Say hello on the IRC channel</em></strong></p>

<p>Tell them you're new to the community and interested in contributing. You can ask:</p>

<ul>
<li>What do they like about the project? How long have they been involved?</li>
<li>Are there any issues that people are especially keen to see being worked on?</li>
<li>Is there anything particularly complicated or difficult that might be an obstacle to contributing? How would they suggest dealing with that?</li>
</ul>

<p><strong><em>Find an issue you might want to tackle or a bug to reproduce</em></strong></p>

<p>Read through the project's issue tracker. If you find an issue you'd like to work on, leave a comment on the thread saying you'd like to do so.</p>

<p>You can also leave a comment on the tracker about reproducing a bug. Make sure to include relevant information about the version of the project you're using, the system you're on, and other potential factors.</p>

<p>A final word from OpenHatch:</p>

<blockquote>
  <p>A quick note: you might wonder why we asked you to find multiple
  projects. The truth is that finding a good open source project is a
  lot like dating or finding a job. It often doesn't work out on the
  first try. That doesn't mean you're a bad contributor or that the
  project is a bad project - it may just be a bad fit, or bad timing. So
  keep an open mind, and keep trying projects until you find one that
  you really enjoy contributing to.</p>
</blockquote>

CC BY-SA 3.0
2017-07-24T20:32:32.903Z
2017-07-24T20:32:32.903Z
nova
<p>Another possibility, assuming that you can find someone with more experience to mentor you, is to explore organizations in your town/city. There are many public and service organizations that do good work but may be a bit overcome by technology. If you explore possibilities with one or two of them you might be able too come up with a project of suitable scope that will help them do some good. In my town, for example, we have an agency dedicated to helping people through difficulties, financial and otherwise. Any funds they obtain (grants, donations) are dedicated to the work they do, not their own infrastructure. </p>

<p>With a mentor, you could start your own project and make it open source. Elsewhere here you asked a question about projects for a CS Club. This might be a possibility for such a group. </p>

<p>Managing your own project yourselves, however, is a lot of work. You will need a mentor, perhaps someone who can give you initial credibility. It could be one of your teachers, but it could also be someone at a local computing firm. Explore the possibilities. </p>

<p>Acknowledgement. Ward Cunningham (<a href="http://www.c2.com" rel="nofollow noreferrer">http://www.c2.com</a>) once suggested something like this. He was focused on tax supported public utilities (local water companies, say) that have unmet computing needs and little expertise. They also pay a lot for their IT needs that could be better spent on their main goals. </p>

CC BY-SA 3.0
2017-06-26T12:00:15.747Z
2017-06-26T12:19:25.810Z
2017-06-26T12:19:25.810Z
Buffy
<p>Depending on what you are trying to teach, Java has a very extensive and comprehensive open source community, and one way to introduce students to this is to come up with a technology "stack" which will probably be made up of 5-10 different open source technologies.  You could either start from scratch and introduce one open source technology after another to build up a full working application, or start with a partial project and add new technologies to it.</p>

<p>A typical stack is a database such as MySQL, an application lawyer such as Spring, and a front end / HTML technology such as Angular.  This kind of application might be more accessible to students because they'd be writing a web application that they can view in their browser.</p>

CC BY-SA 3.0
2017-06-26T14:41:38.870Z
2017-06-26T14:41:38.870Z
Uncle Long Hair
<p>I would start by ensuring that you have a system with a good command line: Such as Gnu/Linux (A implementation of Unix, with freedom). It is also Free Software. While using it you may discover some piece of software, that you would like to improve.</p>

<p>You could do what I did at Uni. We were asked to re-implement the basic Unix tools: cat, ls, grep, etc, this is good practice, and a good place to start. It will also help you learn about what Unix can already do. (What can be a 3 month project on windows, can sometimes be a single line of shell code in Unix.)</p>

CC BY-SA 4.0
2018-06-02T11:03:24.293Z
2018-06-02T11:03:24.293Z
ctrl-alt-delor
<p>You might want to look at these two sites, which are specifically designed for getting students involved in open source projects:</p>

<p><a href="http://teachingopensource.org/" rel="nofollow noreferrer">http://teachingopensource.org/</a></p>

<p><a href="http://foss2serve.org" rel="nofollow noreferrer">http://foss2serve.org</a></p>

CC BY-SA 3.0
2017-07-01T11:37:43.800Z
Hi, Dave. Thanks for contributing and welcome to [cseducators.se]! Right now, this is a bit of an *answer stub*. Would you mind editing your answer here and including just a little bit more information about those two links?
Ben I.
CC BY-SA 3.0
2017-07-01T11:45:41.517Z
Link answers are very useful, but they can be far more useful if you include  *in your answer* what, precisely, those links have which answers the question.
ItamarG3
CC BY-SA 4.0
2018-07-06T12:17:40.073Z
It's also nice to have a description of what is at the link in case a 404 pops up in the future. That way, even if the link doesn't work, other users can look for something similar based on the description.
JustBlossom
CC BY-SA 3.0
2017-07-01T11:28:50.573Z
2017-07-01T11:28:50.573Z
Dave Musicant
<p>Since you specifically mention high-schoolers getting started with open source, i have to recommend the <a href="https://developers.google.com/open-source/gci/" rel="noreferrer">Google Code-In</a>. I participated all 4 years as a high-schooler and really learned a lot about open source.</p>

<p>The contest essentially has a dozen or so open-source organizations provide "bite-size" tasks. Each task is mentored, so the students have someone specific to ask questions of. There are both coding tasks and non-coding tasks (documentation, QA, outreach).</p>

<p>The contest itself lasts for only a month and a half (December-January), but the hope is that people get into it and stick around with the open-source projects they contributed to. Many of the grand prize winners do exactly that. See, for example, <a href="https://opensource.googleblog.com/2015/04/google-code-in-2014-wrap-up-with-drupal.html" rel="noreferrer">this blog post</a> by one of the 2014 winners. You can also read <a href="http://scikcd.blogspot.co.il/2016/01/thoughts-on-google-code-in-2015.html" rel="noreferrer">my blog post</a>, though i didn't win.</p>

<p>For university students, there is the <a href="https://developers.google.com/open-source/gsoc/" rel="noreferrer">Google Summer Of Code</a>, which is a similar idea with a rather different format. You must apply to be accepted, and do a single large task, and get paid a stipend.</p>

CC BY-SA 3.0
2017-06-26T08:31:13.570Z
I just visited the Code-In site and it looks great. Does anyone know of something similar for university students?
Brett Becker
CC BY-SA 3.0
2017-06-26T08:40:05.143Z
@BrettBecker Google Summer Of Code. Added a bit of info to the post.
Scimonster
CC BY-SA 3.0
2017-06-25T21:16:06.040Z
2017-06-26T08:43:07.613Z
2017-06-26T08:43:07.613Z
Scimonster
<p>How can I best get students started with an open source project that they would be interested in and welcomed to? I'd prefer that the project is focused on building a piece of software, perhaps a command line based one. My students are high schoolers and are interested mainly in Python, though they are open to exploring other languages. </p>

<hr>

<p>(I'm self-teaching, but this is rephrased as if I was teaching a class.)</p>

CC BY-SA 3.0
2017-06-25T21:24:16.467Z
Just use self-teaching and phrase it for yourself, then. There's no need to word around that :)
Ben I.
CC BY-SA 3.0
2017-06-25T21:30:43.620Z
The question is very opinion based. This is simply a matter of which open source project you like best, with "welcoming" as the only criterion. This question invites discussion because there is no real answer.  As stated in the close reason: "Answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise."
thesecretmaster
CC BY-SA 3.0
2017-06-25T21:45:25.787Z
We also may have an expertise issue: CS educators are not _de facto_ experts in open source. As such, we might not be the best community for providing quality answers for this topic.
Peter
CC BY-SA 3.0
2017-06-25T21:47:59.533Z
@Peter not defacto, no, but I think it's relevant to the community.
auden
CC BY-SA 3.0
2017-06-25T23:30:44.323Z
Our sites community is teachers. Often, teachers are not experts in open source and often are not even involved in open source. I'd say that we don't have experts because many teachers don't participate in open source and it's not relevant to the community because teachers are not normally required to discuss open source projects.
thesecretmaster
CC BY-SA 3.0
2017-06-25T23:52:14.363Z
I originally thought this wasn't a good question for the site, but I changed my mind when I saw Scimonster's answer.
Ellen Spertus
CC BY-SA 3.0
2017-06-25T23:53:27.927Z
@heather That was fast. Another suggestion: Add high school to the subject line (or remove it from the body).
Ellen Spertus
CC BY-SA 3.0
2017-06-26T03:00:09.707Z
Years and years ago, before Software Engineering SE figured out its scope, a very similar question was asked there. It's locked now, and there's a lot to read through, but there's still some good info there: [How can I find a good open source project to join?](https://softwareengineering.stackexchange.com/questions/294/how-can-i-find-a-good-open-source-project-to-join)
Piyush Parikh
CC BY-SA 3.0
2017-06-26T17:13:23.040Z
I am not sure what you are asking. Are you wanting to contribute to an open-sources/free-software project; create a project; or something else? Also note that the phase Free Software is much less confusing than Open Source. If you think not then write down the definition of both, then check their definitions [ https://opensource.org/osd-annotated https://www.gnu.org/philosophy/free-sw.en.html ] to see how you did. Then wait a day and try again. In short they are both software that gives the user (whoever they are) freedoms: to use (for any use), modify, distribute (for any fee).
ctrl-alt-delor
CC BY-SA 4.0
2018-06-02T10:55:50.483Z
Sadly @thesecretmaster may be correct. We are teaching pupils to be consumers (one of the most damaging words in modern life). Or worse in most cases to be the product. Better to be free and teach others to be free.
ctrl-alt-delor
<secondary-education><python>
Starting open source
# Starting open source

(Asked by: username_0 on 2017-06-25)

How can I best get students started with an open source project that they would be interested in and welcomed to? I'd prefer that the project is focused on building a piece of software, perhaps a command line based one. My students are high schoolers and are interested mainly in Python, though they are open to exploring other languages.

---

(I'm self-teaching, but this is rephrased as if I was teaching a class.)

**Tags:** secondary-education, python

> **Comments:**
> **username_1**: Just use self-teaching and phrase it for yourself, then. There's no need to word around that :)  
> **username_2**: The question is very opinion based. This is simply a matter of which open source project you like best, with "welcoming" as the only criterion. This question invites discussion because there is no real answer.  As stated in the close reason: "Answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise."  
> **username_3**: We also may have an expertise issue: CS educators are not _de facto_ experts in open source. As such, we might not be the best community for providing quality answers for this topic.  
> **username_0**: @username_3 not defacto, no, but I think it's relevant to the community.  
> **username_2**: Our sites community is teachers. Often, teachers are not experts in open source and often are not even involved in open source. I'd say that we don't have experts because many teachers don't participate in open source and it's not relevant to the community because teachers are not normally required to discuss open source projects.  
> **username_4**: I originally thought this wasn't a good question for the site, but I changed my mind when I saw username_16's answer.  
> **username_4**: @heather That was fast. Another suggestion: Add high school to the subject line (or remove it from the body).  
> **username_5**: Years and years ago, before Software Engineering SE figured out its scope, a very similar question was asked there. It's locked now, and there's a lot to read through, but there's still some good info there: [How can I find a good open source project to join?](https://softwareengineering.stackexchange.com/questions/294/how-can-i-find-a-good-open-source-project-to-join)  
> **username_6**: I am not sure what you are asking. Are you wanting to contribute to an open-sources/free-software project; create a project; or something else? Also note that the phase Free Software is much less confusing than Open Source. If you think not then write down the definition of both, then check their definitions [ https://opensource.org/osd-annotated https://www.gnu.org/philosophy/free-sw.en.html ] to see how you did. Then wait a day and try again. In short they are both software that gives the user (whoever they are) freedoms: to use (for any use), modify, distribute (for any fee).  
> **username_6**: Sadly @username_2 may be correct. We are teaching pupils to be consumers (one of the most damaging words in modern life). Or worse in most cases to be the product. Better to be free and teach others to be free.  

---

## 9 answers

### Answer by username_16 on 2017-06-25. Score: 10

Since you specifically mention high-schoolers getting started with open source, i have to recommend the [Google Code-In](https://developers.google.com/open-source/gci/). I participated all 4 years as a high-schooler and really learned a lot about open source.

The contest essentially has a dozen or so open-source organizations provide "bite-size" tasks. Each task is mentored, so the students have someone specific to ask questions of. There are both coding tasks and non-coding tasks (documentation, QA, outreach).

The contest itself lasts for only a month and a half (December-January), but the hope is that people get into it and stick around with the open-source projects they contributed to. Many of the grand prize winners do exactly that. See, for example, [this blog post](https://opensource.googleblog.com/2015/04/google-code-in-2014-wrap-up-with-drupal.html) by one of the 2014 winners. You can also read [my blog post](http://scikcd.blogspot.co.il/2016/01/thoughts-on-google-code-in-2015.html), though i didn't win.

For university students, there is the [Google Summer Of Code](https://developers.google.com/open-source/gsoc/), which is a similar idea with a rather different format. You must apply to be accepted, and do a single large task, and get paid a stipend.

> **Comments:**
> **username_17**: I just visited the Code-In site and it looks great. Does anyone know of something similar for university students?  
> **username_16**: @BrettBecker Google Summer Of Code. Added a bit of info to the post.  

---

### Answer by username_7 on 2017-06-27. Score: 5

Before contributing to an open source project it can be useful to become familiar with the tools and concepts involved in version control systems.

1. Write some code that is unfinished with some deliberate mistakes and share it with your students on GitHub
2. Get your students to clone / download your code, find and fix the bugs then talk about the problems with having so many different versions of the same code in the classroom.
3. Get your students to fork your code into their own repositories and commit their own changes.
4. Discuss code and commenting conventions and why they're necessary (e.g. [PEP8](https://www.python.org/dev/peps/pep-0008/))
5. Get your students to go back and recommit their code in line with the conventions discussed
6. Ask your students to issue a pull request on your code so that their changes can be contributed to the original resource.

Once they've been through that process in a safe and controlled environment they'll be much more confident joining in with an open source project. It can be intimidating jumping in for the first time, no matter how friendly and supportive the contributors are.

You might also want to look at [GitHub Classroom](https://classroom.github.com/) which automates the process of creating, sharing and collecting programming assignments from students.


---

### Answer by username_8 on 2017-07-22. Score: 3

GitHub has `good-first-issue` and `help-wanted` labels that indicate issues that would be particularly good for novices. More info:

* [How to choose (and contribute to) your first open source project](https://github.com/collections/choosing-projects)
* [Helping new contributors find your project with labels](https://help.github.com/articles/helping-new-contributors-find-your-project-with-labels/)
* [Great for new contributors](https://github.com/showcases/great-for-new-contributors)
* [Finding open source projects on GitHub](https://help.github.com/articles/finding-open-source-projects-on-github/)

[Here](https://github.com/search?l=&q=state%3Aopen+label%3Ahelp-wanted&ref=advsearch&type=Issues&utf8=%E2%9C%93) is a link to a search page that lists every open issue with the `help-wanted` label. [Here](https://github.com/search?q=label%3Agood-first-issue+state%3Aopen&type=Issues&ref=advsearch&l=&l=) is one for the `good-first-issue` label. You can further refine these lists to focus on a specific language or look for keywords that you're interested in.

Another way you might approach this is to find an open-source project that's maintained by something you already use. For example, did you know that [Spotify](https://github.com/spotify) and [Netflix](https://github.com/Netflix) both have GitHub accounts with a bunch of repos?

Finally, keep in mind that there is no such thing as too small of a contribution. Found a typo in the documentation? Cool, make a pull request that corrects it! Have a feature request or bug report? File an issue for it! Then start commenting on other people's issues. Maybe start looking into the code if you find one that sounds manageable.


---

### Answer by username_9 on 2017-06-28. Score: 3

There's some upfront work before you can contribute to an open source project. First, you have to find one. There are tons of open source software projects on [GitHub](https://github.com/). Another source is the [Apache Software Foundation](https://www.apache.org/foundation/getinvolved.html). Keep in mind that the complexity of the software and the students' skill sets will play factor in finding a match. Next, you need to learn *how* to contribute. To contribute on GitHub, you need a good understanding of the GitHub website and of course [Git itself](https://git-scm.com/). In GitHub, you typically fork the repo that you want to contribute to, make the changes to your forked version, create a *pull request* to the original owner, discuss the changes with the owner, make more changes, repeat. When ready, the owner accepts the pull request and the contribution is official. This process alone can be intimidating to a new programmer. One easy way to contribute to open source is to fix errors in documentation (e.g., a README.md file). The Apache Software Foundation offers different ways for people to contribute too, not just coding. Once you have some experience, you can make more substantial contributions.

> **Comments:**
> **username_4**: Welcome to Computer Science Educators!  

---

### Answer by username_10 on 2017-07-24. Score: 3

The OpenHatch wiki has [an excellent article on finding an Open Source project](http://wiki.openhatch.org/Open_Source_Comes_to_Campus/Curriculum/Finding_a_Project). I summarize their recommended process here:

## Step 1: Brainstorming Projects

Make a list of potential projects by doing some searches inspired by the following:

* What open source software do you use? Consider that software and related projects.
* Is there a project whose goals you find compelling? For instance, humanitarian projects or projects relating to a hobby or field of interest.
* Are there any people you know who work on open source projects? Maybe you can join them.
* Check out curated lists, like the [Google Summer of Code mentoring projects](https://summerofcode.withgoogle.com/organizations/).

## Step 2: Researching Projects

Now look up key information about each potential project:

* website url
* source repository url
* mailing list
* IRC channel
* contributor guide
* installation guide

## Step 3: Evaluating Projects

Use that information to evaluate the project:

***Is this project active?***

* When was the last issue reported?
* When was the last commit?

***How responsive are the maintainers?***

* How long does it take a maintainer to respond to an issue?
* Is the maintainer giving feedback on pull requests and helping people submit appropriate requests?

***Is the community welcoming?***

* Read through their mailing list archives, or lurk on their IRC channel to see how newcomers are treated.
* When people have questions, are they answered patiently or ignored?
* Check out a Code of Conduct, if the project is large enough.

## Step 4: Contacting Projects

At this point you probably have a favorite project or two.

***Say hello on the IRC channel***

Tell them you're new to the community and interested in contributing. You can ask:

* What do they like about the project? How long have they been involved?
* Are there any issues that people are especially keen to see being worked on?
* Is there anything particularly complicated or difficult that might be an obstacle to contributing? How would they suggest dealing with that?

***Find an issue you might want to tackle or a bug to reproduce***

Read through the project's issue tracker. If you find an issue you'd like to work on, leave a comment on the thread saying you'd like to do so.

You can also leave a comment on the tracker about reproducing a bug. Make sure to include relevant information about the version of the project you're using, the system you're on, and other potential factors.

A final word from OpenHatch:

> A quick note: you might wonder why we asked you to find multiple
> projects. The truth is that finding a good open source project is a
> lot like dating or finding a job. It often doesn't work out on the
> first try. That doesn't mean you're a bad contributor or that the
> project is a bad project - it may just be a bad fit, or bad timing. So
> keep an open mind, and keep trying projects until you find one that
> you really enjoy contributing to.


---

### Answer by username_11 on 2017-06-26. Score: 3

Another possibility, assuming that you can find someone with more experience to mentor you, is to explore organizations in your town/city. There are many public and service organizations that do good work but may be a bit overcome by technology. If you explore possibilities with one or two of them you might be able too come up with a project of suitable scope that will help them do some good. In my town, for example, we have an agency dedicated to helping people through difficulties, financial and otherwise. Any funds they obtain (grants, donations) are dedicated to the work they do, not their own infrastructure.

With a mentor, you could start your own project and make it open source. Elsewhere here you asked a question about projects for a CS Club. This might be a possibility for such a group.

Managing your own project yourselves, however, is a lot of work. You will need a mentor, perhaps someone who can give you initial credibility. It could be one of your teachers, but it could also be someone at a local computing firm. Explore the possibilities.

Acknowledgement. Ward Cunningham (<http://www.c2.com>) once suggested something like this. He was focused on tax supported public utilities (local water companies, say) that have unmet computing needs and little expertise. They also pay a lot for their IT needs that could be better spent on their main goals.


---

### Answer by username_12 on 2017-06-26. Score: 1

Depending on what you are trying to teach, Java has a very extensive and comprehensive open source community, and one way to introduce students to this is to come up with a technology "stack" which will probably be made up of 5-10 different open source technologies. You could either start from scratch and introduce one open source technology after another to build up a full working application, or start with a partial project and add new technologies to it.

A typical stack is a database such as MySQL, an application lawyer such as Spring, and a front end / HTML technology such as Angular. This kind of application might be more accessible to students because they'd be writing a web application that they can view in their browser.


---

### Answer by username_6 on 2018-06-02. Score: 1

I would start by ensuring that you have a system with a good command line: Such as Gnu/Linux (A implementation of Unix, with freedom). It is also Free Software. While using it you may discover some piece of software, that you would like to improve.

You could do what I did at Uni. We were asked to re-implement the basic Unix tools: cat, ls, grep, etc, this is good practice, and a good place to start. It will also help you learn about what Unix can already do. (What can be a 3 month project on windows, can sometimes be a single line of shell code in Unix.)


---

### Answer by username_13 on 2017-07-01. Score: -3

You might want to look at these two sites, which are specifically designed for getting students involved in open source projects:

<http://teachingopensource.org/>

<http://foss2serve.org>

> **Comments:**
> **username_1**: Hi, Dave. Thanks for contributing and welcome to [cseducators.se]! Right now, this is a bit of an *answer stub*. Would you mind editing your answer here and including just a little bit more information about those two links?  
> **username_14**: Link answers are very useful, but they can be far more useful if you include  *in your answer* what, precisely, those links have which answers the question.  
> **username_15**: It's also nice to have a description of what is at the link in case a 404 pops up in the future. That way, even if the link doesn't work, other users can look for something similar based on the description.  

---

