Ask HN: Any Open Source Projects Looking for help from College Students?

23 points by alexgartrell ↗ HN
So, I have to admit, I'm kind of asking this question selfishly. A friend and I are taking a course that requires work on a serious project as part of our Software Engineering minors, and the forward-looking faculty of the S.E. department is looking to try out some open source stuff (a similar project of much smaller scope (not the whole course) has been very successful in a prerequisite course to this one).

We'd need to be closely involved with a 'client', basically someone who wouldn't mind the overhead of laying down some goals and stuff and who would be willing to interact (though not handhold or anything near it) throughout the process. Many larger open source projects have these kinds of people already (specifically David Humphrey at Mozilla).

More generally though, I believe this to be a good way of getting college students more involved in open source projects, and wouldn't be surprised if other HN students jumped at the opportunity, so feel free to comment if you're also an interested student.

That said, if you'd like more information about myself and my friend (to make sure you're not wasting your time) or about the minor and related courses at my school, feel free to email me (agartrell@cmu.edu)

Edited to add: We're talking about small groups of students as part of a class. In this case, we're referring to two students, but one can imagine groups of 2-5.

14 comments

[ 3.2 ms ] story [ 44.2 ms ] thread
I worked with David on the Mozilla Education project. Here's my two cents.

It's easy to put out the call for volunteers. It's hard to cope with the deluge of people who want to help.

Code bases are complex and/or large in any meaningful project. Even skilled programmers may take time to get up to speed. Core developers have limited time available to answer questions. (People don't scale.)

For someone working outside of a classroom, this may be fine. They aren't on a schedule and can claw their way into a community over time.

But if you plan to unleash a classroom of students on an open source project, what you really need is an instructor who operates at or near the level of a core contributor to that project. The instructor is the one who bears the overhead of scaling up developer time by funneling student questions into a high signal to noise stream.

Mozilla is a bit unusual in that they actual pay someone (David) to do that.

I know instructors have attempted to replicate this model with other large open source projects, but it hasn't been a success. Attempts I know of to work with openoffice or the Eclipse Foundation didn't really go anywhere. RedHat/Fedora might be a good place to look. Try to get in touch with Greg De Koenigsberg there.

Up for the info.

The difference here is that the only schedule we're under is to have commits to the code base by the end of the semester. Though this is more structured than some guy's side project, it comes with the benefit of deliverables being a necessary part of passing the class.

Beyond that, in this particular case, we're talking about two individuals who've both kind of worked our way into code bases before. Specifically, we both made small patches for the Mozilla code-base as part of the pre-requisite course [1] and I've been doing some research coding that's involved a lot of reading and manipulating linux network internals; tools like LXR and MXR have been invaluable in getting there.

[1] Regarding the pre-requisite course, there's an open source project to be done every semester. Students work in groups of 2. Last semester, patches were made to Firefox, Chrome, Pidgin, FreeCol, Scala Testing Suite, and the Scala Eclipse plugin. I'd be happy to talk more about this if interested, but it was a really powerful thing when it came to learning how to get into a code base and write production code.

It's really important to know at the start of the semester what projects will be wanted and needed. Students may have their own ideas for what they want to do, but it's so much easier to get the ear of a developer when you are working on something they want. This is critical if you need to get something committed.

Another commenter mentioned Google Summer of Code. The projects that are successful for gsoc are the ones where students and mentors did a lot of talking about what the community wants before submitting a proposal.

One thing we learned in doing the open source projects in the prior course (I took then TA'ed it) is that you kind of just pick up whatever tickets the project has laying around. In this case, we're definitely looking for a "Please do X, Y, and Z" situation. So we're just looking for an X, Y, and Z type thing that might fit with our interests; not trying to squeeze our interests into a project.
A big part of admission into Google Summer of Code is having a good list of suggested projects.
HFOSS might be interesting, they work almost exclusively with students: http://hfoss.org/
To summarize: HFOSS is an organization that helps get students (and hopefully, soon, others) involved in FOSS projects that have humanitarian goals/benefit society in some way.

If you're looking for major, well-established projects, we've worked with the Gnome Accessibility Project, OpenMRS, Sahana, and a few others I'm forgetting right now.

We also have some projects we've started that are primarily student-run at the moment: POSIT (posit.hfoss.org -- Android app for mobile search and identification) and Collabbit (collabbit.org -- RoR webapp for emergency management).

I'm not sure what capacity right now the various projects we're involved in have for taking on new members, but I'd be glad to put you in touch with people you can ask.

I was an HFOSS summer intern this past summer, and I'm now on the steering committee. Feel free to get in touch (e-mail is in my profile) if you're interested or have questions.

This is done by hundreds of projects every year--often quite successfully--through Google Summer of Code. I've been a mentor for GSOC for two years.

If I understand you correctly though, this is a case of a whole classroom forced into a single project as opposed to a few students in each one. This creates a massive management disaster and many other issues:

1. Coding for open source works best when you're interested in the project you're working for. If you force everyone to work on one project, many people won't be interested, and in my experience as a manager/leader of an open source project, such people are an utter waste of time. Of course, it's not their fault they were assigned to something they're not interested in.

2. I've educated quite a few people in the full inner workings of our codebase. But it's one thing to mentor one or three people; it's another to mentor twenty.

3. Most projects don't have enough work for twenty people. Assigning a ton of people to one task won't get it done faster, and assigning everyone a separate task will just make the load on the mentors/developers absurd.

4. The single biggest problem with these types of systems, including GSOC, is the problem of ensuring that code gets merged at the end of the development period. Many students will simply disappear, leaving behind huge patches with nobody to maintain them. For example, the ffmpeg project has suffered greatly from this, with many feature patches taking years to merge and others simply languishing for eternity with nobody to finish them off.

I have mentored many students for my project, both in GSOC and otherwise. I had one student who simply came to me one day and said that he wanted to learn the codebase: so each day he took one module and learned how it worked, asked me questions about it, and studied until he thought he understood it--the I quizzed him. After about two weeks, he had a pretty good background in most of the program. He has since become a significant contributor.

My policy is that anyone who wants to learn can ask questions and get answers in their quest to understand how things work: this was how I became an expert, so it's my obligation to pass on my knowledge to those who want to do the same.

I could do great with a few highly interested students. But I wouldn't even be able to come up with enough tasks for a whole class, let alone the resources to teach them all without a classroom. My suggestion would be to let students pick their own open source project, or some other method of splitting students between projects, to avoid dumping an entire class on one project.

We're talking in this case about a very small group (2).
That would be absolutely great (I see you've updated the original post for clarification). I, and probably most other developers, would find 2 far more manageable than 20. It would also be a nice way to have a GSOC-like program during a portion of the year in which GSOC isn't running.

(For information's sake, my project is x264, and if someone is interested in applying as a student, we can be contacted at #x264dev on Freenode.)

For undergraduate research, me and a friend made a recommendation engine web service (very similar to Directed Edge) using Python + Tornado. I've put it on the back burner because other priorities necessitate my attention for now. But I certainly wouldn't mind help.

I've implemented a recommendation algorithm using a modified version of TANGET, but it is untested. I'd love it if someone with more knowledge in ML than I stepped in and worked on it. I wouldn't even mind if they completely scrapped my algorithm and made a new one.

I think this would be a good opportunity for anyone interested in ML because everything except the recommendation algorithm is decently solidified: it includes several tools for testing, and it exposes everything through a simple REST API. Theoretically, it would just be a matter of dropping in your algorithm and seeing how it goes. Practically, however, I must warn that code comments are ridiculously sparse and there isn't a single unit test, because I'm a terrible person. There is, however, a decent integration test suite and some solid documentation.

It is available here: http://github.com/heliumpigs/snowball

These are also several related open source projects that we made and our project depends on:

* A tool for running blackbox tests on REST APIs: http://github.com/heliumpigs/catnap

* A key-value store built on top of MySQL (inspired by FriendFeed's use case): http://github.com/ysimonson/scarecrow

* Some useful stuff for Tornado: http://github.com/ysimonson/oz

Email me if you're interested (info in profile). PS: I'm posting here in case anyone else is interested.

I took a course like this a couple years back and actually started an open source project through it. My group found a local organization who was interested in using the software we had in mind after and they served as our "client". So, if you have any ideas you'd personally like to work on, perhaps you could take that approach.

Since then I've been the client for student groups as well; we had a student group last semester work on an experimental component of the software I wrote when I took the class. Having served in both roles (student and client) I have a good bit of advice on strategies for this type of course (hint: it's totally different than any other group project and most personal projects you've likely done), but it doesn't really belong here. Feel free to contact me via email if you'd like to chat.

There's a whole host of under supported and underdeveloped Drupal projects that could certainly use some love.