Check out Part 2
For the most recent news check out part 2 .
Update
Thanks for participating
Thanks to everyone you showed up to the live stream or have participated in the comments. I really appreciate it.
Here’s the plan:
I’ve decided to use the original repo. I think it will be easier to gain traction to the newest version by doing this. Several cdns already pickup the repository and starting a new repo will cause a delay and wide availability. CdnJs for instance, has a GitHub Star requirement.
I will be renaming the repo to remove the bootstrap moniker as "tempus-dominus". I will likely do this after Task 1.
Task 1 : Current repo TLC. I’ll be closing all open issues and PRs to provide as much of clean slate as possible. I’m going to leave them for now but I could "migrate” them to an archive repo and then delete them from the original repo. I’ll be trying to add labels and milestones as I figure out what that looks like. The first new milestone will be to complete the tasks 1-5 below.
Task 2 : Merge Tempus Dominus Core and Tempus Dominus BS 4 together. This will be the base going forward. The TD projects will be EOL’d and remain untouched. I will probably archive those repos.
Task 3 : Remove Bootstrap. Moving forward, BS won’t be a hard dependency. I’ll use a tool to grab the basic styles to generate a standalone css. The picker’s class names will probably stay the same. Hopefully, things will still look nice with BS5.
Task 4 : Remove jQuery. This is going to be a challenge, as I mentioned during the stream to find all the places where jQuery chains are being used. A LOT of testing is going to need to be done here.
Task 5 : Swap momentjs to dayjs. I realize this will be a difficult hurdle for some to either change or have a second datetime library. I think doing this now will be easier compared to later.
Task 6 (long term) : Font Awesome 6. FA6 is in Alpha at the time of this update so it would be a good idea to prepare the default icons for this. Again, I know some people will still use older versions or Bootstrap Icons, but that’s what the options are for. :)
Task 7 (long term) : Typescript. I started working on a jquery/bootstrap free typescript version a while back but it was a lot of work and never got it working right. I think a typescript version could happen after everything above is completed.
Way back when
I forked and updated the "bootstrap-datetimepicker” project all the way back in August of 2013—7 years ago! My only goal at the time was to fix a few things that needed to be upgraded in order for the project to work on the newly minted Bootstrap 3. What started out as a simple patch grew into a datetime picker used by thousands of projects. During the time I've managed the bootstrap-datetimepicker, it has gone through 5 major versions, experienced 3 rewrites, and sparked the Tempus Dominus spin-off projects.
As time went on, it became more difficult to manage by myself and harder to make it work for everyone in all of the different (and often conflicting) ways users envisioned. I've had a few people step in to contribute major pieces of code, for which I'm very grateful, but most of the time it was just me.
Tempus Dominus was my attempt to not only update the picker to Bootstrap 4 with a fresh clean take and utilize new JavaScript advances like classes and lambdas, but also to make it easy for others to adopt the core of the picker into their own frameworks.
Over time, I became discouraged when what started as a fun project that benefited myself and others turned into "work” with little reward.
I also got really sick. Like scary sick. Over the past 3 years I've been to the hospital 4 times. My health is slowly returning to me in some ways, but it is still concerning.
Difficulty in maintaining the projects because of my poor health and diminishing interest in contributing to open source projects caused all three projects to come to a halt.
What could happen
Bootstrap 5 is in alpha and they are removing jQuery as a dependency. This would be a great thing for the picker as well. Bootstrap has provisions to allow jQuery to be used optionally but has largely reworked their JavaScript plugins to work without jQuery.
Moment.js is now in maintenance mode. I think at this point, I could also remove this as a dependency or possibly use Day.js or some other minimalist date library.
I'd also like to remove Bootstrap as a dependency. I'll extract the necessary styles to make it look good. With Bootstrap 4+ their team moved to using Popper.js and the Tempus Dominus project already uses this for positioning. Bootstrap isn't really needed beyond styling.
The TL;DR: on the above is that I'll look to remove all of the picker dependencies except for Popper.js. For Bootstrap 3 this will be a new dependency, but for Bootstrap 4 you won't notice a difference.
There could even be the possibility of not needing Popper but it seems like "reinventing the wheel."
The Future
I'm planning on hosting a "town hall" stream on Twitch a month from now, November 7th, 2020 @ 3 PM EST (click to add to your calendar) . The goal of this stream is to gauge the community's thoughts on which of my ideas to move forward.
Here are a couple of things I want to talk about in particular:
- I want to reunify the picker. Maintaining two projects for BS3 and BS4 is just not something I can do right now. The question is where to do this?
- I could use the original repository
- Pros: Everyone already knows that repo. I have lots of web traffic to the repo and cdnjs already picks up releases.
- Cons: What happens to existing tickets, prs and forks? People will continue to create tickets for the old version that I don't plan on updating.
- I'm considering mass closing or deleting any existing tickets/prs so it's easy to find relevant tickets.
- I'm also thinking about renaming the repo to remove the "Bootstrap" prefix.
- I could use the Tempus Dominus organization but it has the inverse considerations of the first option: no tickets to worry about, but little traffic and I would have to redirect people to the new project.
- I could create eonasdan/tempus-dominus. This has the benefit of a clean start and some "brand recognition" for my username, but again, the con is that I would have to redirect traffic. I'm leaning toward doing this option.
- I could use the original repository
- Using TypeScript: I hate JavaScript's loose typings
germanShepard = new PineTree()
. I come from a C# world where that kind of thing wouldn't be allowed. The last few years I've been doing Angular + .Net Core and I love using TypeScript.- Pro: the code base is less error-prone.
- Cons: this would take a lot of work (potentially problematic since my health is still an issue), the code would need to be compiled down to JavaScript and might increase the barrier for people trying to make contributions.
- This could be a future goal after removing the other dependencies.
Thank you for your ongoing interest in these pickers, and I look forward to hearing your opinions about these issues during the stream.
Comments
You can also comment directly on GitHub.