Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Looking for a open source project to contribute to
27 points by Macha on Oct 4, 2010 | hide | past | favorite | 39 comments
So, a little background: I've done some programming for a few years, but it's mostly on my own or with friends. Something that's always been at the back of my mind for a while has been contributing to an open source project. But I've always been worried I wasn't capable enough.

Of the languages I know, the two I have enough skills in to not make everyone go "Oh my god! Why did you do it THAT way? _function x_ is in the standard library!" are Python or PHP. Preferably, I'd like to work on a Python project.

The two big ones that keep coming up are both PHP, Wordpress and phpBB, but as large projects, they're both able to attract and avail of developers far better than me, and their codebase would require a good amount of time to get acquainted to. Further, wordpress at least seems to be more in need of translators, testers, etc than actual coders.

So, can anyone suggest a mid-sized (preferably Python) open source project actively looking for new contributors?




The nice thing about open source is that you're going about it all wrong.

You're not looking for a project "actively looking for new contributors". You're looking for a project you want to contribute to. You don't ask/interview for a spot on the team; you come up with a feature you will use, write it, and send diffs.

Even a project like Wordpress, which has a small army of PHP contributors, is "open to contributions". If you write something genuinely useful, send diffs, and are willing to transfer your rights to the code, chances are they'll seriously consider it. Of course, Wordpress probably "wants" you to build a plugin, not a core modification. But if your best idea is a core modification, just go write it.

You're overthinking this. Consider whether that's a sign that you're procrastinating.


See, I'm not particularly interested in the plugin part, because I want part of working with other coders for the experience. A plugin would be just another thing done by me on my own in a vacuum with no feedback.

As for open source programs I use on a daily basis and am interested in, they're mostly huge projects in C/C++ (Linux, Chrome, etc etc). Wordpress is the exception, but I haven't came across anything I need them to do that hasn't been covered in some plugin somewhere.

Which is why I asked here, in case there was some interesting project I would be interested in that I have the capability to actually do something useful for.


Find a popular plugin, add a feature to it. Less talk, more code. You don't need/get to ask permission; it's the blessing/curse of working in OSS.


Many Linux desktop applications use Python as an extension language, and many Linux desktop applets are written in Python. Find one that interests you and take a look at the bug list.

Another idea is to take a look at the projects on accepted into the Google Summer Of Code and see if any have projects that weren't accepted.


> I haven't came across anything I need them to do that hasn't been covered in some plugin somewhere.

If you cannot name at least 5 things you dislike about the tools and languages you use you're either in the honeymoon period, or irrational. --Jesse Noller


I asked the same question a few years ago:

http://www.reddit.com/r/programming/comments/6nc1h/im_in_col...

The responses were pretty good. Ended up looking into Rubinius, eventually started http://rubygems.org :) Good luck in Python land!


"they're both able to attract and avail of developers far better than me" That's a Good Thing! One of the best ways to become a better developer is to work with good developers.

"their codebase would require a good amount of time to get acquainted to" This will also be true for pretty much all projects.

Rather than focusing on the size of the project, try to find something you're interested in. If you're interested in the end product you'll probably be better motivated delving into the project.


A quick google search yielded this list of open source projects written in Python: http://pythonsource.com/

I have no idea what size any of them are, and whether or not they are looking for contributors.

More important than either of those considerations is whether or not you - to quote another recent discussion here - "give a damn" about them. Are you interested in this project? Would you use the final product? Can you think of ways to improve the final product?

If the answer to any of those questions is no, then you probably shouldn't be working on that project. Look for a different one.

If you're really set on Python, then go down that list and check out each project. Check out the program, app, whatever and see if it excites you. Is it something you would use early and often? Do new feature ideas start spilling out of you brain as soon as you open it up? That's the project for you to work on.


Agreed. I'd say a good approach would go something like this:

1. have a taste for using simple, clean tools

2. when in need of software, see if you can find simple, clean tools that do what you need

3. prefer those that use languages you know or would like to learn

4. use them for a while and see if you like them and develop a sense of what kind of contributions you could make

5. check out the source to see if you can get a clear enough concept of it to develop some good patches

If all of that works out, submit your patches. Voila: you're an open source contributor.


I'd suggest http://openhatch.org/. Choose Python as a language and start with "bitesized" issues.


Interesting. I don't think I've ever heard of this site. Thanks for linking it.


If you are willing to hack either C++ (or autotools -- their build system is hurting), may I suggest Octave, the Matlab compatible programming environment? GNU considers it high priority, it is fully useable, but just needs some TLC to get it fully competitive. www.octave.org.


Keep in mind that there is no shortage of open source developers out there. I'm not trying to discourage you from contributing to open source projects (the community needs you!), only to remind you that a post like this can never fully answer your question.

Browse SourceForge or GitHub and you'll find literally tens of thousands of projects ranging from huge enterprise-scale development efforts that will likely never implement your code (OpenOffice, Linux kernel, Firefox) to small projects that are a cool idea but were never even developed to the point of an alpha release.

Personally, I like contributing to the latter of those categories. The small, cool-idea projects that never got their feet off the ground are the best places to start. There are several reasons I support this route, primarily that:

1.) Smaller projects need you more, and your code is more likely to actually be committed to a release version.

2.) You will actually be designing code. Monolithic projects like Firefox or OpenOffice certainly need developers, but mostly for bug fixes and slow feature additions. Developing for a small open source project will see you actually rolling out functionality--a skillset upon which you can build.

Good luck!


> Browse SourceForge or GitHub

. . . or BitBucket or Google Code or even Launchpad.

I use BitBucket almost exclusively, because I prefer Mercurial over Git, for instance. So does a friend of mine, who has about ten different small (but worthy) projects -- probably perfect for someone looking to get started with his/her first contributions to an open source project, but (unfortunately for this case) all but one are in Ruby and that one is Perl; there's no Python or PHP in the list.

Anyway . . . start with whichever of these things supports the version control system you prefer. I think that's probably the best approach to finding projects to which you want to contribute, rather than picking one of the two most-mentioned code hosting sites in the open source community.

Hell, I've got a couple of small projects on BitBucket that could use some contributions, too -- but they're also Ruby, and probably less likely to be exciting for someone like the OP anyway.


The key is that you've got to have a driving desire to improve any project, else it's very likely that you will give up when you get to the complicated and messy bits.

Presumably, you use Python based tools whenever it makes sense. If not, fantisize about how great it would be if your favorite applications were written in Python. Search out useful looking apps in Python, some that show a lot of promise, but maybe the project is stalled or is not quite there yet. Install and use. Feel the pain of not having some feature.

Also, if you're feeling ambitious enough, look at applications written in other languages that you might rewrite in Python and make better.


Ubuntu/Canoncial's VMbuilder is written in Python and should imho be extended to allow a more flexible network configuration.

e.g. n-interfaces, pointopoint options etc.

https://code.launchpad.net/~ubuntu-virt/vmbuilder/trunk

http://bazaar.launchpad.net/%7Eubuntu-virt/vmbuilder/trunk/a...


I'm sure the mongrel2 ecosystem would appreciate your efforts.

In particular, the wsgi handler[s] are kind of in a state of flux, so improving one of those would be pretty dope.

If you ever felt like learning C well and then moving into m2core, you could even work with the one and only zed fucking shaw :P


That's for sure.


I am one of the devs of FluxBB (a fork of PunBB, if that means anything to you...). It's a lightweight open-source PHP forum software.

We have a tiny dev team with 10 members, maybe 3 of 4 of us actually active, and would be more than happy for some help if you're interested.

http://fluxbb.org http://github.com/fluxbb/fluxbb irc://irc.freenode.net/fluxbb

Some of our existing code is rather badly outdated, so we are currently looking towards a major refactoring and redesign of a few core components, I posted some thoughts at https://fluxbb.org/forums/viewtopic.php?id=4715 if you're curious.


We have a very interesting open source project that is actively looking for new contributors. It is an interactive art project. It started as a collaboration between Shawn Fanning (tech side) and Fernando Mastrangelo (art side). You can see Fernando talk about it here http://vidsf.com/2010/sep/27/fernando-mastrangelo/

We are having a brainstorming/work session at Shawn's (in San Francisco) on Thursday and we would love to have some more coders! Let me know if you are interested in attending and I will give you the details.


blogofile is a great project that is short on hands.

http://www.blogofile.com/

"Blogofile is a static website compiler, primarily (though not exclusively) designed to be a simple blogging engine. It requires no database and no special hosting environment. You customize a set of templates with Mako, create posts in a markup language of your choice (see Post Content) and Blogofile renders your entire website as static HTML and Atom/RSS feeds which you can then upload to any old web server you like."


Of the specific projects suggested in this thread, this seems the most interesting to me. Thanks for the link.


I've recently switched to Blogofile for a couple of my sites, one of which was previously using Jekyll (a similar blog compiler written in Ruby). Blogofile has been great; I'd love to see it grow.

I've actually written code to add static pages to Blogofile. I've been meaning to contribute it; I hope I'll get around to it soon.


Similar to blogofile is Jekyll (http://github.com/mojombo/jekyll/wiki), which powers Github Pages. It's written in Ruby, so it doesn't meet your exact skill set, but Ruby and Python in my experience are fairly similar.


It's PHP, but you could consider contributing to Drupal


Listen to FireAngel. He built one of the greatest Drupal sites of all time (fire, how's the science news game these days?).

There's an abandoned Drupal project called Memetracker that would leverage your Python skills AND make the world a better place if someone took it over.

Http:// drupal.org/project/memetracker

It's an open source reverse engineer of the Techmeme engine that gathers, filters, clusters, and ranks news. The original maintainers got it 50% finished before leaving for a startup. I've managed to get a private instance running that keeps me up to speed on what's in the news in Chicago. Even in it's primitive state, it tells me new things about the world I live in every day.

Imagine if anyone could start a techmeme for their neighborhood? They're industry? Their interest? The world would be a better place. We'd all be smarter for it.

We just need a good hacker to pick up the pieces.


Nice plug, but it's just not blatant enough.

http://drupal.org/contribute/development

That's better.

Also, if you turn up in the appropriate #drupal IRC channel and claim to be looking for some code to fix, you should have your inbox overflowing in no time.


This isn't really an answer to your question, but I'd pick one of those large codebases and read through it until you understand everything that's going on in it. Not only will your coding skills increase to the point that you're more confident and not completely intimidated by the other contributors, but multiple places to contribute will become clear.


For someone just getting started, I'd be more inclined to recommend picking a smaller codebase.


Makes sense. For me it was important to pick something that I regularly used. Picking a smaller project will make it easier to mentally decompose, but you'll also get a leg up on a larger one if you're really familiar with the endpoints. Of course, you can do both:)


Contribute to project(s) that you use and write features that you miss (or fix existing bugs or improve documentation).

Contributing to project(s) that you don't use is stupid and you'll be bored by it sooner than you realize... In the end you'll just waste a lot of time on something that won't be even committed.


Well, the Python Twisted framework (http://twistedmatrix.com/trac/) can always use more people and is one of the bigger and more awesome open source projects.

In addition (in my experience) most of the code is very modular, clean and understandable.


If you are looking to work on a Python (or for that matter any language) project, why not start contributing to one of the many libraries that you use daily. That will give you an opportunity to understand it better, as well as fix any bugs and add features to it in the process.


Don't be so sure that WordPress attracts so many developers that are so much better than you. It might get a few, but from what I've seen of the codebase, the project could stand to gain a few more contributors who can code their way out of a wet paper bag.


If you're into sysadmin stuff (and use Fedora/RHEL), have a look at cobbler[1] which is written in Python.

[1] https://fedorahosted.org/cobbler/


You could also browse the projects on http://freshmeat.net/tags/python and try to find something that interests you.



Well not python but Mediawiki is always welcoming to new people, check out the irc channel on freenode/#mediawiki


There are tons on GitHub.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: