On May 9, 2005, at 11:54 PM, Vincent Foley wrote:

> I would really be interested in contributing some code.  I'm not
> exactly sure how to do that though, although I have done Ruby coding
> for a while now, I never helped on somebody else's project.

Greg explained the process pretty well in his response.  As he said,  
check out the CVS, change some code, then use the "cvs diff" command  
to generate a patch file and send it to me in an email.  It's not hard.

Getting familiar with the code it probably the only tricky step, but  
I try to keep it clean and well commented.  HighLine is built with a  
practice called Test Driven Development, so the test files (in the  
test/ directory) cover every single feature I've added.  They should  
help you make sense of things.  From the root project directory, you  
can run those tests with "rake" (if you have Rake installed) or "ruby  
test/ts_all.rb".

This also means that any feature added to HighLine needs to come with  
tests that cover it.  Write those first, I say, so you can see what  
you're trying to implement.  Then go tinker until the tests start  
passing.

Currently, the two files you would be adding features to are lib/ 
highline.rb and lib/highline/question.rb.  highline.rb covers  
terminal encapsulation features, while question.rb stores the state  
of each question.  They work in tandem to accomplish some things.

Finally, don't be afraid to ask questions.  I won't bite.  The TODO  
probably makes more sense to me than anyone else, for example, so ask  
me to translate if needed.

Thanks for the interest!

James Edward Gray II