With the release of Quicksilver v1.0, I sat with Quicksilver’s lead developers (at our respective far-flung computers) to gather their thoughts on this historic occasion, and to find out a bit more about Quicksilver behind the scenes.
Rob and Patrick have been at the forefront of the machine that’s driven this 1.0 release, so let’s hear what they have to say:
LoveQuicksilver: What makes Quicksilver worthy of a 1.0 status?
Patrick: Now that users can upload their crash reports to us, we’ve fixed tons of lingering bugs that we would never have known about otherwise. Stability is what v1.0 boasts, but accessibility should not be forgotten. We’ve worked to simplify Quicksilver and add great documentation (a new manual is coming out!), meaning Quicksilver can be picked up by anyone much more easily than before.
Rob: All the major known bugs are OS X bugs, not Quicksilver bugs. :-)
LoveQuicksilver: What’s next for Quicksilver?
Rob: When Quicksilver asks a plugin for objects to add to the catalog, there’s an assumption the plugin can create those objects instantly. Sometimes that isn’t the case. We need to be able to ask the plugin for objects, but let it send the results back whenever it wants. Sort-of related, plugins need a way to recreate objects on-the-fly when they’re not in the catalog. Anything not in the catalog is currently lost after a restart, so they can’t be used with triggers, synonyms, etc.
Interfaces are too hard to customise, and the way the results are displayed in a separate panel creates a dated appearance in my opinion. But, you know, hard to customise.
Patrick: We need to make it as easy as possible for developers and users to create plugins and AppleScript extensions for Quicksilver. The true power of Quicksilver comes from our plugin developers, so I’ll be happy once we have a strong dev community back on our side creating great plugins, and over the coming months I’m going to be working hard to try and achieve this – we can always make things simpler for new developers!
Rob: Proxy objects can’t be used in the third pane. They should be there. Pretty self-explanatory, I think. The reason they aren’t is because the simple act of including them in the results causes them to be “resolved” (the process that figures out what they refer to at any given moment). For some, this is fairly slow. Doing several at once compounds the problem and introduces delays we find unacceptable.
LoveQuicksilver: It’d be great to use folder synonyms in the third pane as well as the first. Any other practical examples of functionality that improvements to proxy objects could bring?
File ⇥ Move To… ⇥ Finder Selection
Text ⇥ Find With… ⇥ Current Website (Safari)
LoveQuicksilver: Now for a question close to your hearts – why did you start developing QS?
Rob: I learned Objective-C because I didn’t want Quicksilver to stop working – it’s as simple as that. I continue to spend time on Quicksilver because I want it to work well for me on my machine.
Patrick: I started to help save the project, but now it’s also fun to work with our inspiring community around the globe. A community that really appreciates what we do and shows their support in so many ways – translations for Quicksilver, donations or just kind words of thanks.
LoveQuicksilver: It’s great to hear how passionate you are about the project! Something I’m sure many users are keen to know is: What is the state of Quicksilver Development?
Rob: I don’t know what it was like at the height of the Blacktree days, but, as far as I know, it’s better now than ever. Enormous changes and improvements are being made every couple of months. It could always be better. We could use more people, or better yet, the same people with more time. :-)
LoveQuicksilver: Historically, I believe, Quicksilver was difficult to code for due to its unstructured nature, out-of-date code and lack of documentation. What changes have you made to make it easier for potential contributors to get involved?
Patrick: When I joined the project five years ago, it was almost impossible to start developing. One of my own personal ambitions has been to make it really easy for new developers to dive straight into the code. This meant moving over to GitHub (arguably the best version control site around), and much better documentation. Developing for Quicksilver has never been easier.
Rob: Yeah! There’s now detailed a reference for creating plugins, which is great for new developers. The core application is still mostly undocumented, but the code is much cleaner now. If it’s difficult finding your way around the code, there are always a few of us who know our way around and can answer questions for new developers. Not many people are asking, though!
LoveQuicksilver: What would you like to see developed in Quicksilver?
Rob: The ultimate interface for me would be one based on WebKit. Every part of the interface would be an HTML
<div> or whatever, and any user would be able to customise the appearance using CSS (including animations and 3D transformations). I don’t know how realistic that would be, but I would be much happier tweaking CSS than spending an hour and a half in Xcode just trying to figure out where a box even comes from! And of course this would open up interface customisation to a ton more people.
LoveQuicksilver: Lots of people in the Quicksilver userbase are asking questions like “Why isn’t there a Sparrow/Twitter/Textmate 2/Duke Nukem/[insert app name] plugin?” What do you have to say to them?
Rob: Some people (probably a vocal minority) seem confused about why we aren’t working on a plugin for Sparrow, or Google Chrome before that, because surely so many user requests have gotten our attention, right? Unfortunately it doesn’t work like that. I don’t use those apps, so I have no need for those plugins. End of decision tree.
I’ve said something like this before, but for almost any open source project, you need someone that knows how to do it and someone who wants it done before something will happen – and of course they need to be the same person! It’s pretty common for the people who want it done to appeal to the people that know what to do. I think it’s only fair to make the opposite appeal. If you want something done, don’t tell me it’s important to you. Show me. I will spend hours and hours answering your programming questions on the mailing list, or looking over your code, but I’m not going to spend 20 minutes on a feature or plugin if I don’t need it. I’m not losing any sleep if that hurts some feelings. After all, I’m not asking anyone to do anything I didn’t do myself, and the barriers to entry are considerably lower now. :-)
LoveQuicksilver: Wow! I expect you’ll be seeing more plugin developers jumping on board now right?! What have you learned while working on QS?
Patrick: Put simply – how to code. It may seem crazy, but I was driven to help keep Quicksilver functioning, and to do so I had to learn how to code. Another important thing has to be working internationally. The current development team spans 12 timezones (from Japan to the US East Coast) which makes discussion and collaboration difficult, but we make it work with the great tools we have – git, GitHub, IRC and good old mailing lists.
Rob: A little Cocoa and a lot of Git. Or at least that’s how it feels sometimes. I wouldn’t have guessed how much time goes into the work surrounding the work. That is, you probably spend 10% of the time programming and the other 90% reviewing issues reported by users, discussing changes with other devs, reviewing code from others, branching/merging/rebasing/committing stuff with Git, etc. Then there’s a web site and an update system to think about, documentation, and accounts to maintain. You get the idea.
I’ve also learned that when someone forks the project on GitHub, it doesn’t mean they’re interested in helping out. And I have no idea what it does mean. There are 112 forks and only a handful of people actually doing something with them.
LoveQuicksilver: It all sounds intriguing! Let’s cap things off with one more personal question for you: What’s your favourite thing about Quicksilver?
Rob: This will probably seem like such a stupid little thing to be excited about, but it’s what I immediately thought of when you asked the question, so it’s probably true. It has to be the way searching works; the fact that I can find “peanut butter” by typing “pb”, or “nbtr”, or whatever makes sense at the time. It doesn’t force me to start at the beginning of the term, nor does it force me to enter all letters in sequence, like “peanu”. That’s a huge part of the general theme in Quicksilver of not having to think. You just call it up and start smacking keys, and the right thing happens. Someone should write a Chinese proverb about that.
Maybe that general “wei wu wei” theme should be my answer, but I think there are two reasons the search behavior specifically stands out.
As a result, Quicksilver remains special.
Patrick: The simple things are always the best, right? So for me it has to be the speed and huge scope of what Quicksilver can find. There’s nothing else out there that will find your Dad’s phone number, Bob Marley’s “Three Little Birds”, my Safari bookmarks… all these different things as quickly as Quicksilver. It’s partly to do with what Quicksilver concentrates on, and, as Rob says, Quicksilver’s awesome searching algorithm. This doesn’t mean I’m happy with the speed though – I’m still looking for ways to make it faster!
LoveQuicksilver: Great, thanks for your time Patrick and Rob!
And finally, I got in touch with Quicksilver’s creator Nicholas Jitkoff (né Alcor) to see what he had to say about this historic v1.0 release of Quicksilver:
"I’m amazed at what the Quicksilver team has accomplished since they took over the project a few years ago. They’ve created something truly worthy of a 1.0, taking Quicksilver from a flight of fancy to a fast, reliable productivity app. It has been a pleasure to use thanks to their frequent updates, countless refinements, and tireless effort."
For those of you who remember, LifeHacker interviewed Nicholas all of 5 years ago on the state of Quicksilver. It’s amazing to see the turnaround in Quicksilver’s stability and development state since then.
There’s nothing more to say except that I hope you’re as happy with Quicksilver v1.0 as the development team and I are. Don’t forget to spread the word and share the love!