Jun 14

Time Waits for no One

Joda Time is a library that improves the func­tion­al­i­ty and usabil­i­ty of dates and times in the Java envi­ron­ment. The built-​in Java class­es are hard to use, miss­ing com­mon func­tion­al­i­ty, and do the wrong thing in many cas­es. Thus was born Joda Time. It has been so suc­cess­ful that it was made the basis of JSR-​310, a pro­pos­al for adding the Joda Time func­tion­al­i­ty to the base Java libraries. This post is not about Joda Time. At least not direct­ly.

In November of last year (2009) I joined with Jon Skeet and oth­ers in start­ing the Noda Time Open Source project. The goal of this project is to port the Joda Time library from Java to .NET. The built-​in class­es in the .NET run­time are woe­ful­ly incom­plete, inad­e­quate, and inel­e­gant. The orig­i­nal plan was to do a straight port with as lit­tle changed as pos­si­ble to make it work with .NET but as time went on (about 2 days) we real­ized that the Joda Time way was just too Java-​centric and would look too out-​of-​place in a .NET sys­tem. So after much wail­ing and gnash­ing of teeth we decid­ed to diverge.

As my first set of posts in this blog’s reboot I thought it would be fun to cov­er this process and along the way maybe talk a lit­tle about the issues that came up—both in inter­fac­ing with .NET and with time itself.