
Ask HN: Best OSS Projects for Beginning Contributors - begriffs
I am building a curriculum to teach people to code through meaningful, mentored open source contributions.<p>My first step is to find projects that would be a good fit. The students who are most interested are dev bootcamp grads who want to build portfolio pieces. They know the basics of (generally) Rails, Node and Git, but need experience in a bigger codebase than what you find in example bootcamp projects.<p>So what projects are appropriate? Is there a way to discover them algorithmically so that there is never a shortage of meaningful work for students?<p>I used the Github API to generate this list:
http:&#x2F;&#x2F;upward.io&#x2F;help<p>These are projects that have no readme, but have decent ongoing commits. What are other ways to identify projects that have low-hanging fruit for would-be contributors?
======
Xdes
I'm terrible at open source because I usually fix things that don't need to be
fixed (aka refactor). Then people yell at me to go away.

~~~
prezjordan
You're dealing with terrible project maintainers then. Refactoring is super,
super important and any project that rejects it must have a strange codebase.

Either that or the project owners/maintainers have a lot of pride.

~~~
fundamental
That strikes me as a bit of an odd stance to take. While refactoring is
certainly a portion of the work done to most any project, I wouldn't think
that refactoring would be attractive as a first commit for someone who may be
viewed as an outsider to a project.

Even if you overlook that getting code that matches a projects style guides
might be rarer than it should be refactoring (at least in most cases that I
need to deal with it) requires a good understanding of how everything fits
together and a better idea of how it should work. There are some simple cases
in which this might not be the case at all, such as grouping together a whole
bunch of copypasta style code, but even under those circumstances any
refactoring is likely to yield a fair bit of work for the maintainer to verify
(regressions/style/changed organization) with fairly limited benefit.

As such it doesn't really seem that effective to try to impose something like
this on a project without a good justification. If a good justification can be
made, then sure refactor away, but otherwise the maintainer would logically
think that the work was a waste of everyone's time.

~~~
mareofnight
What _does_ make a good first commit? I ask because I'm just starting to try
to work on open source. The first commit I made on the one project I've
already started getting involved with was adding more content (especially
where there was a "TODO: more of this" comment), and correcting spellings. I
wouldn't know how to start on something less content-based, though.

~~~
yizzerin
Docs are a good place to start. In the projects I've worked on, new
contributors usually enter when they've found a bug/desired-feature and worked
out a fix for themselves. Aside from that, good first commits are usually
smaller, so it's easier to review, and address a single concern. After you get
a commit accepted, you can start claiming commits.

Answering questions on Stack Overflow / mailing lists / issue trackers can be
a good way to build up trust in your abilities and a working relationship with
other contributors.

Often projects label things that are "good for a first commit" and you should
check out those.

All that said, most projects are eager to include new people, and personally I
enjoy helping new contributors feel comfortable and get their commits
accepted.

------
Oculus
Code Combat (YC W14) is a game that teaches people to program. It's been
entirely open sourced and the devs/community make it extremely simple for new
comers to contribute. I strongly recommend you check them out!

[https://github.com/codecombat/codecombat](https://github.com/codecombat/codecombat)

------
fmendez
You might want to take a look at:
[http://www.codetriage.com/](http://www.codetriage.com/) which is build
precisely to help you find out OSS projects to contribute to.

------
egor83
OpenHatch tries to solve this problem - help people find a good project, and
in general, make it easier for new people to get into OSS.

[http://openhatch.org/](http://openhatch.org/)

------
bitsweet
Helpful ([http://helpful.io](http://helpful.io)). Ruby on Rails helpdesk
software trying to make things like ZenDesk & Desk.com suck less. Github:
[https://github.com/asm-helpful/helpful-web](https://github.com/asm-
helpful/helpful-web). There is always a list of things to do
([https://assemblymade.com/helpful/wips](https://assemblymade.com/helpful/wips))
and a community around to help. We also share the ownership (and profit) of
the app between the contributors. Anybody is welcome to be "Helpful" and join
in building it.

Full disclosure, founder

~~~
veeti
This is not open source.

~~~
dkuntz2
[https://github.com/asm-helpful/helpful-
web/blob/master/LICEN...](https://github.com/asm-helpful/helpful-
web/blob/master/LICENSE) ?

That looks pretty open source to me. It's not the most permissive license, but
neither is the GPL...

~~~
veeti
From their license:

> Any redistribution or use is for noncommercial purposes only and is not
> redistributed or used in connection with any application that is
> substantially similar to the Selected App Idea.

From the open source definition [1]:

> 6\. No Discrimination Against Fields of Endeavor

> The license must not restrict anyone from making use of the program in a
> specific field of endeavor. For example, it may not restrict the program
> from being used in a business, or from being used for genetic research.

This is "visible source", not open source.

[1] [http://opensource.org/osd](http://opensource.org/osd)

------
laurenstill
I would focus on larger, well known established projects covering a variety of
interests. For me, personally, I wont get much out of just pushing code or
documentation to a project I don't care about. Second to that, is not working
with asshole. I'm not sure how I would script that.

OpenMRS was my first true OSS introduction, even though at the time I knew
nothing about java. It's in my field of choice, and large enough I got some
decent mentorship and appropriate projects. Doesn't hurt that they also
regularly participate in GNOME/FOSSOPW, so I knew there would be people
interesting and willing to mentor.

------
phantom_oracle
Large amount of stars/following with a handful (or less) of contributors?

Rebuilding dead projects from other languages into modern languages?

I was working on something similar and would like to restart my effort to get
folks building up real projects. Perhaps we could work together if interested
(unless you're driven by profit, which I am not).

------
camus2
What about contributing to writing docs instead? yes i'm serious. When it
comes to writing documentation for opensource projects, suddenly,there is no
developper available. Yet documentation is central to any opensource project.

Maybe I should launch a "Please write help us write docs" plateform.

~~~
ashray
This is ultra important! I can't even begin to count the number of times I've
come across great open source projects with ZERO documentation. I tend to read
the code (if the project is in a language I know well..) but that's not an
option for many people looking to quickly integrate.

Maybe OSS contributions should actually start with writing the docs, sort of
like how interns start with fetching the coffee ;) Of course, you can do more
if you like but writing docs is a great starting point to learn more about the
underlying code anyway!

------
nolanl
PouchDB is a fairly up-and-coming JavaScript library, and the maintainer makes
a good effort to mark issues as "goodfirstpatch" or "goodstudentproject":
[https://github.com/daleharvey/pouchdb/issues?labels=goodfirs...](https://github.com/daleharvey/pouchdb/issues?labels=goodfirstpatch&page=1&state=open)
.

I've been on the project for a couple months, and I find folks to be very
friendly and quick to respond on Github/IRC/etc. Plus it's part of the bigger
Apache CouchDB ecosystem, so it's a good crowd to run with!

------
hardfire
I have found the mozilla community to be very helpful and each project has a
very good list of mentored bugs. The community has found
[http://www.joshmatthews.net/bugsahoy/](http://www.joshmatthews.net/bugsahoy/)
to be a very good tool for beginning contributors to get the right first bug
and step into the whole community. Best way to get involved remains to ping to
#introduction on IRC (irc.mozilla.org)

Regarding discovering them algorithmically tends to be quite an interesting
idea actually, should think more on this.

------
jimaek
A very easy way to contribute is to help keep jsDelivr updated. People can
submit new libraries they find and update older ones (at least until auto-
update will be ready)
[https://github.com/jsdelivr/jsdelivr](https://github.com/jsdelivr/jsdelivr)

------
dmourati
My approach is to work on bugs I encounter and that I am capable of fixing. So
far that has lead to contributes to SimianArmy, Ganglia, Anemometer, and
Logstash. Just be a good community member and get in where you fit in.

------
paulproteus
Hey begriffs!

I'm a volunteer with OpenHatch, which egor83 mentions below -- a non-profit to
help people get involved in open source. At our Open Source Comes to Campus
events, we aim to find great projects to connect newcomers with. (More info on
the event series here --
[http://campus.openhatch.org/](http://campus.openhatch.org/) )

Your question struck a chord with me, since I think your curriculum and the
curriculum we use for our weekend-long events would have some overlap:
[https://openhatch.org/wiki/Open_Source_Comes_to_Campus/Curri...](https://openhatch.org/wiki/Open_Source_Comes_to_Campus/Curriculum)

But the hard part is helping find great open source projects to contribute to.

To help with that, we wrote a guide for projects: [http://opensource-
events.com/](http://opensource-events.com/)

and are trying to reach out to project maintainers to help projects become
"OpenHatch affiliated";
[https://openhatch.org/wiki/OpenHatch_affiliated_projects](https://openhatch.org/wiki/OpenHatch_affiliated_projects)
\-- maybe one great next step is to take this list of goals for projects, and
work together in reaching out to projects to become OpenHatch Affiliated. Then
you can have your students join the collection of people reaching out to those
projects.

We find that having a specific person in the project care about the newcomer
experience matters more than what we could find algorithmically. We still have
the automated tool here:
[https://openhatch.org/search/](https://openhatch.org/search/) , in case
you're interested.

Semi-sorry that this is a long comment, but I wanted to fill you in on a bunch
of things, and I'm about to go to bed, so this has a higher chance than usual
of being rambly.

OpenHatch-y people who care about outreach like this convene on the "Events"
mailing list
<[http://lists.openhatch.org/mailman/listinfo/events/>](http://lists.openhatch.org/mailman/listinfo/events/>)
and I hope you'll join us there and say hi! And/or reply with your thoughts
here.

I'd love to collaborate on this, as it's something that we're always
interested in improving for our students, too. I'm based in SF, in case you
want to meet up for coffee etc.

P.S. The OpenHatch web app is itself is an open source project, in Django &
Javascript, and we are always welcoming contributors. (-: Also, oppia is the
project that we're furthest-along with in terms of OpenHatch affiliation.

------
donniezazen
Any of the KDE Community projects.
[http://community.kde.org/Getinvolved](http://community.kde.org/Getinvolved)

------
tectonic
We'd love the help on Huginn!

[https://github.com/cantino/huginn](https://github.com/cantino/huginn)

------
hammadfauz
I would like to add a couple of filters to the OP (for personal use): The
project is mainly in JavaScript, preferably uses Node.js

------
aksx
elementary OS, an Ubuntu based GNU/Linux distribution. We use bala for the
programming language which is very similar to C# but compiles to C.

Most of the contributers are students including me and we have a very
welcoming environment.

Just drop I'm #elementary-Dev introduce yourself and join the effort.

------
jongleberry
if you're interested in creating small, modular browser modules, feel free to
contribute to any repo in
[https://github.com/component](https://github.com/component). most work with
browserify as well, and bower support is trivial.

------
chris_wot
It's a pity you don't teach C++, the LibreOffice team are amazing!

