Regardless of how you use computers, chances are that you have encountered the problem of comparing two files at some point or other. Doing so all by yourself is often like playing the hardest game of “Spot the Differences,” which is why software for this purpose has been available for many decades.
Originally designed to help developers keep tabs on the way their source code evolved, file-comparison algorithms eventually found their way into more mainstream apps such as Microsoft Word and Apple’s Pages, where “track changes” have helped writers preserve their sanity for many years.
Black Pixel’s Kaleidoscope 2 takes the ability to compare two files kicking and screaming into the twenty-first century, extending it beyond text to encompass images and the filesystem itself.
Kaleidoscope reveals its attention to detail from the very beginning. The app’s designers have—very wisely—decided to forego a lengthy setup process in favor of a quick startup that gets the user in control right away.
Kaleidoscope’s features could easily justify a few screens’ worth of questions to make sure that all the options are optimized. But I think this approach works very well with the app’s intended technical audience, who will want to get down and dirty with Kaleidoscope’s most obvious features first, and discover its additional capabilities later on.
Speaking of details, there are slight differences between the Mac App Store version of the app and the one that you can download directly from Black Pixel’s website. Due to restrictions imposed by OS X’s sandboxing, the former offers fewer integration options with external development tools. Luckily, if you buy from the App Store and later change your mind, all you need to do is download a new copy of the non-sandboxed version and unlock it by running it on the same machine without additional cost.
A diff primer
The ability to compare two text files is nothing new; one of the original algorithms for doing so was published some 30 years ago, and the command-line Unix utility diff, introduced in the mid-70s, is still widely used by million of developers every day.
That’s not to say that innovation has been missing altogether from this space—the advent of graphical user interface has made it possible for developer-oriented apps such as Bare Bones Software’s BBEdit and Apple’s Xcode to render the differences between files in a visual way that wasn’t possible in the early days.
Being a dedicated tool, however, allows Kaleidoscope to take on this task with an unparalleled focus, offering a wide range of comparison options, including support for plain text and HTML, as well as three separate ways of visualizing the differences between two documents.
In Kaleidoscope’s first mode called Blocks, the two files stand side-by-side, their differences shown by blocks of three colors: Green identifies text that appears on the right but not on the left, while red is used to show text that is part of the left file but not of the right. Finally, purple singles out blocks of text that appear in both files but contain different text.
A second mode called Fluid uses the same color scheme, but connects each set of blocks on both sides of the comparison with a line, giving you a quick way to see how the differences between your two files affect the flow of the document you’re examining.
Finally, the Unified mode allows you to examine the differences condensed in a single panel, with all three kinds of changes joined in a single stream.
In all three modes, whenever the same block of text appears in both files with changes, the app also highlights the differences between individual words. This is an invaluable tool when it comes to tracking down small changes—which happens relatively often in source code, where something as simple as a plus or minus sign could introduce significant but hard-to-detect bugs.
Even for something as well established as a textual diff, Kaleidoscope reveals a lot of attention to detail without overwhelming the user with choices. The three visualization modes work well without any tweaking, and the app allows you to change the display font (something every developer will immediately want to do) and to turn off multi-color display in favor of multiple shades of blue, which will be welcome news to color-blind users.
The care placed in developing Kaleidoscope’s text comparison tools carries over in its ability to highlight the difference between images, which is where the app really sets itself apart from the competition.
Once again, there are several ways to compare two images side-by-side. The first, called Two-up, simply places them one next to the other, synchronizing your zoom and pan operations so that the same portion of both images is always visible.
With the One-up view, the two images are superimposed, and you can swap between one and the other at the click of the mouse, or by allowing the app to do so automatically on a timer.
The images are also superimposed in the Split view, where, however, you can use a slider to progressively reveal a specific portion of each image.
Finally, in Difference mode, the app highlights only those pixels that do not overlap perfectly, giving a false-color image that highlights even the tiniest of changes.
It may seem gimmicky to have so many different display modes, but each of them serves a particular purpose. For example, the two-up and split views will be most useful when comparing photos to choose between different effects. One-up and difference, on the other hand, come in handy when you’re trying to get to grips with tiny positional shifts, as is the case when dealing with large icon or sprite sheets that have been manipulated by multiple designers.
Like with text comparisons, the app offers numerous options to help you customize the image analysis user interface, including controlling how the differences are highlighted, and how colors are handled.
Analyzing the filesystem
Kaleidoscope’s third area of functionality is the filesystem, where the app can be used to determine the differences between two folders. This is perhaps the app’s least-exciting functionality, although it does its job quite well.
In this mode, the focus is on comparing two directories, highlighting files that appear in one but not the other, or that appear in both but are different. Kaleidoscope again uses colors to inform the user of the differences between the two folders. As a bonus, it even shows the size of each file and folder, making it easier to zero in on relevant contents.
I was impressed by the app’s speed, even when working on a massive data set. On a lark, I had it compare my document directory with an older version on a backup drive and, despite having to sift through a decade’s worth of accumulated cruft, it took Kaleidoscope only a few seconds to start returning useful information.
Kaleidoscope’s many functions are well executed, but I have my doubt that, by themselves, they would convince many users to abandon their existing toolset. After all, for all their limitations, most of the products that could be considered competitors to Black Pixel’s software have the major advantage of effortlessly working alongside within a developer’s likely workflow, if not for any other reason than most of us have been using them as part of our daily routine for many years.
Luckily, Kaleidoscope comes with the ability to integrate with an amazing array of external developer tools, starting with the major version-control systems, including Git, Mercurial, and Subversion, as well as with other popular OS X apps for developers, like Black Pixel’s own Versions, or Macromates’ TextMate.
The integration functionality is essentially flawless: It took me only a minute or so to set Kaleidoscope up as Git’s default file comparison and merging tool, and it immediately became part of my workflow without any fuss.
At $70, Kaleidoscope’s premium pricing may seem odd in a world where most of the tools developers use on a daily basis are free. However, this app is that rare graphical utility that embodies the age-old Unix credo of taking on a single task and doing it as well as possible—and in so doing it becomes, quite simply, the best of its kind, at least on OS X.
Although clearly aimed at a technical audience, Kaleidoscope is useful to more than just developers: Everyone who has to work with large amounts of structured data, from systems administrators to graphic designers, can take advantage of its functionality for a variety of purposes.
Ultimately, what really makes Kaleidoscope a must-have is its ability to integrate alongside other existing tools to become part of a developer’s workflow. In no time at all, it has become my go-to utility for file comparison, and I wouldn’t hesitate to recommend it to any other programmer or designer that calls OS X home.