Why does Phoenix use naive datetime for timestamps by default?

In my view the difference is semantics.

  • :utc_datetime is very clear that UTC is it’s frame of reference
  • :naive_datetime retains ambiguity as to what the frame of reference is. It’s up to the application context to imply and/or supply the frame of reference.
    • In the absence of any other evidence UTC is the only sensible choice.
    • In the application context of being used as a Phoenix timestamp it is known to be UTC.

So just because it’s :naive_datetime doesn’t automatically imply it’s not UTC.