I’m leaving you.

I'm sorry. All good things must come to an end.

You introduced so many great ideas to the JS world (although you borrowed from elsewhere but...psst). Arrow functions. Destructuring. Comprehensions. I dare to say you made writing JavaScript code fun again. And my Kinesis keyboard and my wrist tendons will forever be grateful. But now it’s time to move on.

Because it’s not me. It’s you.

I remember when I saw your slick 2D syntax for the first time. I immediately thought cool, it’s kinda like, uh, super lightweight Haskell on, uh, anti-steroids ! (I was younger back then so I think I spoke like that.) But, well, sorry, you're no Haskell. Turns out you are not a good fit for 2D syntax either. I have seen too much poorly written code with too long function bodies that you made even worse. I started to miss parentheses.

You also liberated me from ever typing the var ever keyword again; var always was pretty much a joke in JavaScript anyway. Or so I thought. But then I started to see all those Object has no method 'join' errors when I accidentally redefined path. And I know you have the do keyword but let’s be honest: your scoping is bad. Just bad.

And don't even get me started on the optional brackets. I know it looks like a good idea. But it's not, really.

Anyway, what happened is that I met Harmony. You know, your, uh...daughter (I guess?).

It has arrow functions too. And they lexically bind this. And it has destructuring and it has let and const (wow!) and even a standard for promises with a catch handler. And it all just works. And it all somehow makes Harmony, well, just a nice little language.

What's even better, there's BabelJS that allows me to use it everywhere. And Node 0.12 recently got out and there’s io.js now so soon, it will all be native. Glorious future.

Things can only get better.

So anyway, I wanted to thank you for allowing all this to happen. It probably wouldn't have happened without you.

You were great.

Goodbye.