-
Notifications
You must be signed in to change notification settings - Fork 839
Description
Hi everyone. I've recently (last year) joined the maintenance team for Moment Timezone, and I'd like to gather feedback on some proposed changes for the project. First I should clarify the current status. As stated in the primary documentation:
We now generally consider Moment to be a legacy project in maintenance mode. It is not dead, but it is indeed done.
In practice, this means:
- We will not be adding new features or capabilities.
- We will not be changing Moment's API to be immutable.
- We will not be addressing tree shaking or bundle size issues.
- We will not be making any major changes (no version 3).
- We may choose to not fix bugs or behavioral quirks, especially if they are long-standing known issues.
However, since we understand that Moment is well established in millions of existing projects:
- We will address critical security concerns as they arise.
- We will release data updates for Moment-Timezone following IANA time zone database releases.
That said, I've been slowly going through the backlog of open issues for Moment Timezone and I've noticed some common trends:
- The way that
moment-timezone
requires and modifies coremoment
causes a lot of confusion and problems with dependency management. - The time zone data files try to cover too many use cases at once. But there's no one single solution that will satisfy everyone's needs. (e.g. Dramatic increase in package size #999 (comment))
- The expectations of
0.x.y
semantic version numbers are not well understood, and don't make sense for such a long-running project.
While keeping in mind the guidelines listed above, there's no way to fix these common problems without a breaking change.
Therefore, I'm proposing a moment-timezone
to v1.0.0
There are 5 potential changes that I'd like feedback on, but 3 of them are closely related so they're listed as "a", "b" and "c" variations. Each proposed change will be in a separate comment, to allow separate inline reactions (such as 👍 or 👎) on each one. If you have more detailed feedback, feel free to leave a constructive comment.
But what about "maintenance mode"?
As noted above, the Project Status section of the Moment documentation says that major changes like this will not be happening. So isn't this plan a direct contradiction of that public statement? Sort of.
The documented project status is mostly focused on the core Moment library, which is certainly more widely-used than the Moment Timezone extension. The line "We will not be making any major changes (no version 3)" is targeted at work that had been started to completely revamp Moment's internals and move to an immutable API. Moment Timezone has some slightly looser restrictions:
- We still need to do occasional releases for Moment Timezone to keep up with IANA tzdb changes. Therefore there's a necessity to avoid creating more problems in dependent projects in future.
- These proposed changes are mostly about making maintenance of the project easier. A small-scale rework in the short term which reduces maintenance hassles in the long term.
- The changes have a fairly small surface area, and don't involve rewriting large chunks of the codebase.
Ultimately, this issue is not a guarantee of change, it's a call for feedback. If there's a big pushback to some or all of the proposals, they won't be implemented. There's also no defined timeline yet, just some ideas. There's no rush on this project (I actually only agreed to join the team because the project is in maintenance mode — I get to things in my own time).