5 ms·
Ask YC: Good/small open source projects to work on?
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.
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.
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.
Do you guys have any recommendations? I would like to hack on Python, Ruby, OCaml, whatever really.. Thanks!
- electric 19y agoSince you're in CS and EE I would recommend gnu radio http://gnuradio.org/trac http://gnuradio.org/trac which includes both.
- icky 19y agoYou 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 19y agoThat'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.
- mechanical_fish 19y agoIs 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 19y agoYeah. 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!
- zeka 19y agoPick 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.
- jorgeortiz85 19y agoCheck 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-Framework-Manifesto.html http://blog.lostlake.org/index.php?/archives/16-Web-Framewor...) 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://scala-lang.org/ http://liftweb.net/ http://liftweb.net/ http://scala-blogs.org/ http://scala-blogs.org/ (scala-blogs is a joint effort of people from the Scala and lift communities)
- trekker7 19y agoMaybe the OLPC project? Check this out: http://wiki.laptop.org/go/Getting_involved_in_OLPC 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 19y agoSince you asked:-) Hecl: http://www.hecl.org 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-hecl-android-alpha-and-hecl-android-developer-challenge-entry http://journal.dedasys.com/articles/2007/12/17/announcing-he... 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.
- bayareaguy 19y agoI'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://www.squid-cache.org/ http://haproxy.1wt.eu/ http://haproxy.1wt.eu/ Web Servers: http://www.apache.org/ http://www.apache.org/ http://www.lighttpd.net/ http://www.lighttpd.net/ http://nginx.net/ http://nginx.net/ http://www.acme.com/software/thttpd/ http://www.acme.com/software/thttpd/ Databases: http://www.postgresql.org/ http://www.postgresql.org/ http://www.sqlite.org/ http://www.sqlite.org/ Version Control Systems: http://subversion.tigris.org/ http://subversion.tigris.org/ http://www.selenic.com/mercurial/wiki/ http://www.selenic.com/mercurial/wiki/ http://darcs.net/ http://darcs.net/ http://git.or.cz/ http://git.or.cz/
- richcollins 19y agoThe 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/ http://iolanguage.com/about/
- jey 19y agoI 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.