(2012/06/23 1:39), David Albert wrote:
> I've been using ruby as my primary language for two years now and I like it quite a lot. I'd like to start contributing back to it, but I don't know where to begin. Does anyone have any pointers as to where I can be helpful?
> 
> A bit of background: I'm pretty comfortable with the ruby language, C api, and codebase. I've written a couple of small C extensions and have a cursory understanding of how the garbage collector works and how objects are stored. More recently, I've been spending some time learning about how YARV works (iseq generation, opcodes, method definition, FrozenCore, etc).
> 
> I have been looking into https://bugs.ruby-lang.org/issues/5776, and I've made some progress. At some point between 1.9.2 and 1.9.3 the visibility of top level inner method definitions changed from private to public: https://gist.github.com/2973857. Because everything typed into irb is eval'd with the binding from inside the top level Object#irb_binding method (lib/irb/workspace.rb:51), all top level method definitions in irb have become public. I haven't learned enough yet to know why this change happened and if it was intended, but I imagine I can get there soon.
> 
> Hopefully this is enough to help you understand the level I'm at. I'm happy to continue working on #5776 or contribute to something else. Any advice or direction would be wonderful.

As Ammar says, writing Ruby program, studying Ruby, introducing Ruby to some,
helping someone troubled with Ruby... all of them are contribution.

Anyway, what you are saying is to contribute ruby core code, like fixing bugs
and adding a grand new feature.
But they are also from helping someone (include you and me) troubled with Ruby.

If you find a person who hit a bug of Ruby, you get a chance to fix the bug.
If you find a person who is suffering how to write a function beautifully,
you may get a chance to add a new feature which make the function written easily.
Such people are waiting us in twitter, blogs, stackoverflow, and so on.

If you report a bug, it should have small reproducible code.
So making a small reproducible code of existing but not fixed bug reports
is great contribution. (of course bug fix patch is welcome ;-)