Someday
For more than a year now, we’ve had a milestone called ‘someday’ in DrProject, so that we could group all our “wouldn’t it be nice if…” ideas together. What about adding an IRC channel for each project? Someday. How about authenticating against LDAP? Someday.
Prior to 1.0, “someday” was represented by putting “null“ in the ticket’s “milestone“ column. The two problems with that were (a) we needed special code to translate “null“ to “”someday”“ for display, and (b) it messed up sorting. To fix both, we modified the setup script to create a milestone called “”someday”“ for each project upon creation.
Which of course brought up a new problem of its own: what date should be associated with “someday”? SQL doesn’t have a standard way to represent “a date that is greater than all actual dates” (i.e., a ceiling for the type “DATE“). We’ve settled on January 19, AD 2038, which is the largest legal date in Unix, but we’re not happy with it — when we put this in classrooms this fall, we ”know” that some students are going to look at it and (quite reasonably) think it’s a bug.
So, what should we do? Eliminate “someday” entirely? Go back to using “null“ (and just eat the maintenance cost of more convoluted sorting and translation code)? Do something else (suggestions welcome)?
You’re trying to overload a DATE to mean more than just that, and, as you’ve found, SQL’s NULLs aren’t great. Why not have a date_set boolean and only if that’s true does the milestone’s date become valid.
how about adding a milestone title as a field so that the last legal date would be described as ‘someday’. though if date is the index key, then you can have only one title per date, but how often is it that you would have two milestones on the same date?
This reminds me of David Allen’s Getting Things Done productivity thing (GTD), and the importance of having a Someday/Maybe list that’s separate from your day-to-day task list… =)