Learning with Open Source: Reviewing SVN commits log

kinow @ Feb 10, 2013 13:02:45

Last year I became an Apache committer, and dedicated most of my time learning the Apache way, reading different mailing lists and getting used to the things a committer is supposed to know (voting process, keeping everything in the mailing list, and so it goes) and getting used to [functor] API.

In 2013 I hope I can help in the release of [functor], since Java and functional programming are getting a lot more of attention recently, probably due to the project lambda. But I also want to start contributing with the other components from commons (like math, io, jcs) and other top level projects (hadoop, nutch, lucene).

Reviewing SVN commits log

FUNCTOR-14 was created to enhance the generators API in [functor]. I’d worked on a branch for this issue, but needed some review in order to be able to merge it with the trunk. That’s where you can see why Open Source is so awesome. Another Apache member, Matt Benson, created another branch to work on the project structure, but also to review the generator API.

Apache Software Foundation

Matt merged my branch, but also reviewed all my work. I’m no big fan of pair programming with two keyboards and all (as I’ve seen in some “Agile” companies round here in Brazil). But this kind or pair programming is, IMO, one of the most powerful techniques for learning how to code.

However, that would be very easy if one simply waited for someone to review his work, and then forget about everything once it’s merged into trunk. Now it’s hammer time!

I’m reviewing Matt’s changes to my branch and, before I jump in and write some more code, I decided to write this post to keep everything that was changed. That’s because I learn better when I write things down.

  • r1439133 - use primitives where warranted; simplify some loops
  • r1439134 - file org/layout
  • r1439135 - tighten comparable
  • r1439140 - tighten comparable
  • r1439153 - start to merge commonalities among NumericRanges, including a few small bugfixes
  • r1439626 - per, ‘unbounded’ is not synonymous with ‘open’; both ‘open’ and ‘closed’ are ‘bounded.’ If this can be proven incorrect I’m only too happy to retract this commit.
  • r1439633 - keywords
  • r1439637 - fix predicated generators’ implementations/tests

I learned that I have to pay more attention to generics, follow the principle of using primitives where warranted, and thoroughly analyse loops and ifs. Ah, and that I don’t know how to use SVN keywords :-)