

Ask YC: Good/small open source projects to work on? - brooksbp

I am a university student majoring in CS and minoring in EE and have noticed that while I do learn some programming in my classes, it's not enough.  I've been working a job on campus doing web application development (LAMP, PHP, JavaScript, XHTML, CSS, JSON, AJAX, insert cool web technology here), but I've also noticed that this is not enough; hopefully PHP is enough of a reason to support my last statement.<p>Anyways I would like to start hacking on some open source projects.  But I can't seem to find one that 'fits' me.  Most of them are huge.  I would like to find a relatively small community, with a small project.  I would also like to get involved with a couple -- in different languages.  So I can branch out of C, C++, PHP, Java, insert corp lang here.<p>I've been recently really into memcached for a while.  Been working on client APIs here and there, but they're pretty well supported already.  Idk but something about caching really intrigues me.<p>Do you guys have any recommendations? I would like to hack on Python, Ruby, OCaml, whatever really.. Thanks!
======
mechanical_fish
Is it me, or do you answer your own question? What is wrong with memcached as
the focus of your personal project?

Meanwhile, I don't understand what's wrong with huge. Every huge open source
project is built out of a thousand small projects, most of which are probably
desperate for help, and many of which have an importance which is all out of
proportion to their size.

If you and a couple of friends start some small free-standing project to
(e.g.) build a caching tool... well, there's nothing _wrong_ with that. You
might have fun, you will get practice and learn something, and you might even
invent something important. But most likely you will toil in obscurity. Nobody
will know you exist, unless you go out of your way to become your own
marketing machine -- and that's a _lot_ of work.

But if you find a way to improve (e.g.) Drupal's use of memcached that makes a
certain class of Drupal installations 25% faster and 20% easier to configure,
several hundred developers worldwide will be _thrilled_. You might find it
surprisingly easy to become known as one of the world's top ten experts on
Drupal + memcached + Application X. And that will mean something, because
people actually _use_ Drupal.

~~~
brooksbp
Yeah. I really should have rephrased what I was trying to say. I know what I
like: code style, languages, community, etc... I just want to branch out and
poke around and see what other people are working on. I want to broaden my
horizons if you will :)

Thanks for the input and sharing your guys' own projects / suggestions!

------
jorgeortiz85
Check out the lift web framework. It fits well with your web development
skills, and it'll let you explore a new language, Scala.

Scala, as described by someone I know who has dabbled in almost every
programming language I've heard of, is "Java and ML done right". It really is
a gorgeous language. It has the OO-goodness of Java, Ruby, or Smalltalk, but
the type-inferencing heaven of OCaml/ML. It combines object-oriented and
functional programming beautifully. And it compiles to Java bytecode so you
can interface with Java libraries if you really want to. It's worth checking
out in itself, even if you decide not to get involved with the lift web
framework.

The lift web framework was developed in Scala. (Disclaimer: I'm actively
involved in the lift community.) It's the brainchild of David Pollak, who is
an experienced master hacker. He had done a lot of work with Ruby on Rails and
had grown disenchanted with it, and decided to write a better framework.
(Check out his "Web Framework Manifesto":
[http://blog.lostlake.org/index.php?/archives/16-Web-
Framewor...](http://blog.lostlake.org/index.php?/archives/16-Web-Framework-
Manifesto.html)) He hunted around for a language to write it in and settled on
Scala.

He's been developing lift for a little over a year now, and while it is still
alpha software it has really matured a lot. The community around lift, while
still small (and -very- friendly), has started growing recently. We just
announced the lift 0.3 release, and there is an ambitious release schedule to
get lift 1.0 out the door by early May '08, just in time for JavaOne. So it
should be exciting times in lift-land.

So come on in, the water's great!

<http://scala-lang.org/> <http://liftweb.net/> <http://scala-blogs.org/>
(scala-blogs is a joint effort of people from the Scala and lift communities)

------
zeka
Pick a language that you love. That will probably happen to be something not
very mainstream. All not-very-mainstream languages suffer from the lack of
good, quality libraries to one degree or another.

Fix it. Since you mentioned OCaml, I assume you like it. I suggest you look at
Python libraries (very mature bunch) and port something you like over to
OCaml.

------
richcollins
The Io Programming language could use a nice web framework (or web server).
Have a look at Io, it is a very dynamic, fun language to work in:

<http://iolanguage.com/about/>

------
bayareaguy
I'd suggest writing an add-on or utility for a popular data-managing server.
You'll learn a lot and perhaps create something many others can use without
having to get in too deep.

Here are some suggestions. I personally like the databases listed but I put
the cache stuff first since thats what you seem to like.

Cache / Proxy tools: <http://www.squid-cache.org/> <http://haproxy.1wt.eu/>

Web Servers: <http://www.apache.org/> <http://www.lighttpd.net/>
<http://nginx.net/> <http://www.acme.com/software/thttpd/>

Databases: <http://www.postgresql.org/> <http://www.sqlite.org/>

Version Control Systems: <http://subversion.tigris.org/>
<http://www.selenic.com/mercurial/wiki/> <http://darcs.net/>
<http://git.or.cz/>

------
icky
You could find some project that you think is painfully close to being perfect
except for X, and implement X for them. (For lots of projects, X is
documentation, but you can probably find lots of X's if you keep your eyes
open).

Or, you could write something on your own: a program that is intrinsically fun
and/or useful for you. Find your own "itch" and scratch it.

~~~
darose
That's along the lines of what I was thinking: you don't have to find a small
project. Just find a small area of a big project and start working on it.

------
trekker7
Maybe the OLPC project? Check this out:

<http://wiki.laptop.org/go/Getting_involved_in_OLPC>

I think there are a range of technologies in play here that you can work with,
from close-to-the-metal C to application level Python.

------
davidw
Since you asked:-)

Hecl: <http://www.hecl.org>

Thanks to Google, if you contribute something now, there's a chance you could
even get some money out of it:

[http://journal.dedasys.com/articles/2007/12/17/announcing-
he...](http://journal.dedasys.com/articles/2007/12/17/announcing-hecl-android-
alpha-and-hecl-android-developer-challenge-entry)

Also, it's a small community and in my opinion a fun and very creative
project. Making a programming language is a difficult but rewarding process.

------
jey
I say you shouldn't work on an Open Source project unless one just HAPPENS to
catch your eye. You'll be more motivated and have more fun if you work on
something just for fun, even if you're never going to release it. Go write
some video games or something. :)

If you do want to work on an open source project, you'll probably want to
start with a small isolated task, so you won't have to understand how the
whole behemoth works and can focus on just the parts you have to interface
with.

------
electric
Since you're in CS and EE I would recommend gnu radio
<http://gnuradio.org/trac> which includes both.

