Ask HN: Best OSS Projects for Beginning Contributors
I am building a curriculum to teach people to code through meaningful, mentored open source contributions.
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.
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?
I used the Github API to generate this list: http://upward.io/help
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?
36 comments
[ 4.2 ms ] story [ 76.2 ms ] threadRebuilding 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).
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.
Either that or the project owners/maintainers have a lot of pride.
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.
I guess "small" is key. I agree a large refactoring would be troublesome to verify.
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.
Tests are a way to delegate trust. Instead of trusting the developer, you trust the code. It's a huge huge relief. If you can remove that burden from the shoulders of the maintainers, I guarantee you will be welcomed with open arms.
The side-effect is that you don't need to _add_ content/functionality, so the maintainers don't have to think about your new shiny feature. And if you fix something that was supposed to work in their own view of the project, then you start being noticed.
-Actually makes the code cleaner.
-Reduces redundancies.
-Above all, actually results in there being less code than there was before.
If you can achieve clean code + negative lines of code after a refactor, with identical functionality, they'd be fools to not merge it.
It's possible the refactors you submitted didn't meet these requirements. Or the project owners simply were too possessive of the code they wrote with their own fingers.
Isn't that sort of contrary to OSS?
No, OSS is a licensing model not a development model. With OSS, if the existing project has a dev model you don't like, you can always fork it and start a project with a dev model you do; with proprietary software (even if the source is available), if you don't like the development model (among other things you might not like) you're, well, forked.
Full disclosure, founder
That looks pretty open source to me. It's not the most permissive license, but neither is the GPL...
> 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
https://github.com/codecombat/codecombat
http://openhatch.org/
Maybe I should launch a "Please write help us write docs" plateform.
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!
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!
Regarding discovering them algorithmically tends to be quite an interesting idea actually, should think more on this.
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/ )
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...
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/
and are trying to reach out to project maintainers to help projects become "OpenHatch affiliated"; 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/ , 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/> 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.
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.
https://github.com/cantino/huginn