
Ask HN: Looking for a open source project to contribute to - Macha
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.<p>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.<p>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.<p>So, can anyone suggest a mid-sized (preferably Python) open source project actively looking for new contributors?
======
tptacek
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.

~~~
Macha
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.

~~~
tptacek
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.

------
qrush
I asked the same question a few years ago:

[http://www.reddit.com/r/programming/comments/6nc1h/im_in_col...](http://www.reddit.com/r/programming/comments/6nc1h/im_in_college_and_i_want_to_contribute_to_an_oss/)

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

------
ZeroMinx
"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.

------
dbingham
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.

~~~
apotheon
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.

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

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

------
forkandwait
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.

------
david_shaw
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!

~~~
apotheon
> 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.

------
strait
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.

------
rmoriz
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...](http://bazaar.launchpad.net/%7Eubuntu-
virt/vmbuilder/trunk/annotate/head%3A/VMBuilder/plugins/ubuntu/templates/interfaces.tmpl)

------
alexgartrell
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

~~~
pbastov
That's for sure.

------
JamieRF
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.

------
LisaG
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.

------
bravura
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."

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

~~~
pingswept
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.

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

~~~
brandnewlow
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.

------
pessimizer
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.

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

~~~
pessimizer
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:)

------
piotrSikora
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.

------
merijnv
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.

------
akv
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.

------
apotheon
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.

------
ciupicri
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/>

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

------
revorad
<http://matplotlib.sourceforge.net/>

<http://www.sagemath.org/>

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

------
ashitvora
There are tons on GitHub.

