HotKey Conundrum

As you may know by now (or maybe you don't, which is ok since I'm going to follow up by stating the fact anyway...), Komodo has been in development for over 15 years now. There is an incredible amount of functionality in Komodo that I myself am still learning about (having joined the dev team relatively recently). As each new feature was being added, it made sense to add a key binding to gives users quick access to it.

You can imagine this turns into a LOT of key bindings over 15 years! This eventually has made adding or changing the default bindings comparable to gene manipulation with the number of variations in play (not really at all, but you know what I mean...right?). Now multiply that by the three platforms we support--Windows, Linux and Mac OSX.

It had come to the point where we could no longer add key bindings with unreasonably high dev time, so we decided it was time to review. We obviously knew this was not a task to be taken lightly. First of all, we were proposing changing what our current users spent time memorizing. Second, how could we know that our knew configuration was any better than the last? These changes couldn't be based on personal opinion, so we made a few simple ground rules to follow and guide our decisions:

  1. Loyalty. Do not alienate current loyal users.
  2. Simplify. Not every command needs a binding
  3. Commonality. What is most common and accept in the wild?

This incredibly boring task was given to me, the junior dev. I've made my peace with it.

Step 1 was the easiest. People that liked the previous keybinding set as they were can use the Legacy set when in Preferences > Key Bindings or when going through the First Start Wizard, in the Integration section. As I stated in the Komodo Extreme Makeover blog post, we wanted to give users the option to rollback if they wanted to.

Step 2 was relatively simple as well. Again, calling on the Extreme Makeover post, we got rid of the saturation of key bindings (You get a hotkey! And you get a hotkey and YOU get a hotkey! Everybody gets a hotkey!). Only the most common tasks and commands were assigned key bindings. All commands that wouldn't be called in a typical development session had their bindings removed. This simplified things for step 3.

Step 3. Step 3 was...not fun. This step involved comparing all major IDEs and editors on OSX, Windows and Linux. Without going into too much boring detail of one of the most boring blog posts I've ever written, this process allowed us to nail down what people expected from their keyboard while editing.

On a high level, that's basically it. I can't tell you how excruciatingly tedious step 3 was people. If your boss ever asks you "Hey Carey, want to take on completely revamping of our key binding set?" just say "No Nathan, no I don't".

...Of course I kid! I even found some cool tools in Komodo that I didn't know existed, like Partial move and selections which I now use almost daily, among others.

You can see the fruits of my labour plus more--download Komodo and start your 21-day trial.