You've got to know when to hold 'em
Know when to fold 'em
Know when to walk away
Know when to run...
-- "The Gambler", Kenny Rogers

Aside from the fact that Kenny Rogers got me into a lot fights as a kid (due to a different song that I absolutely loathe), the key takeaway from the burden of unfortunately knowing some of his songs is the line "know when to walk away". And that time has come for one of my early OSS projects.

I started the "Knockout.js External Template Engine" for an internal/intranet site back in 2010/2011. I never intended it for publicly-deployed sites, as I feel there are far superior options (RequireJS, Webpack, etc.) for asynchronously loading assets into a web client. Nevertheless, I tried to keep up support for it as it picked up users. In late 2011, I moved on from using Knockout on a daily basis. Support for the project at that point was entirely out of not wanting to let anyone down. I tried passing it off at the time to anyone interested and there were no takers. I updated the project's README with a similar notice last May with the same result. I totally get that - it's rare that someone really wants to take over another project (especially one not well-written!) Nevertheless, these factors weigh heavily on me:

  • I have other projects which I'm passionate about (postal, machina and many more)
  • I haven't used KO in years
  • I have a wife, three kids and friends that like to see me occasionally

So - it's time to say goodbye. I will leave the project on github, but I simply do not have the bandwidth to support it any longer. The offer to hand it off to someone still stands.

No OSS author revels in letting people down - and I've put this post off for way longer than I should have. I sincerely apologize to those who've opened issues and have been left waiting. This is the hard reality of OSS projects. I've been on both sides of this, and can confidently say it sucks regardless of if you're a user or the author.

If you're writing apps with KO - I highy recommend reading some thoughts from my friend Ryan Niemeyer. His advice on how to handle asynchronously-loaded assets is exactly what I'd roll with today if I were writing a KO app: