Tag Archives: delphi

Interview with Craig Peterson of Beyond Compare

craig-peterson

I am a fan of file and folder comparison utility Beyond Compare from Scooter Software. It is a very polished and powerful piece of software with a big following. But I was intrigued by some of the unusual decisions they had taken: competing in a market with lots of free alternatives; going 6 years between major upgrades; re-writing from scratch; releasing a Linux version; and having an extremely generous trial policy. How had they succeeded despite ignoring much of the conventional wisdom? Craig Peterson of Scooter Software kindly agreed to answer my questions.

Can you tell me a bit about your background before working on Beyond Compare.
I started at Scooter Software straight out of college.  I did a lot of programming for fun before then, but this was my first professional job and my first introduction to Delphi.

How long have you been working on Beyond Compare and what is your role?
I’m the lead developer and I started here in late 2000, a few months before significant development on v2 started.  Most of my time is spent working on the directory comparison and the virtual filesystem layer (ftp, zips, version control), but there are very few places in the program that I haven’t worked on.  My non-development tasks include managing the build process, interfacing with our component vendors, keeping track of any interns, and tech support, when there’s difficult questions or when the dedicated staff don’t have time.

How many other people work on Beyond Compare on the business side and on the development side?
There’s one other full-time developer, one part time developer, two in tech support, two in sales, and our president, who handles everything else.

There are lots of different file comparison tools. How do you manage to run a successful business with so many competitors, many of them free?
Competing with the free tools hasn’t been as hard as I expected.  The big advantage we have here is that people are paying us for the software, so we have strong incentive to provide good tech support and to provide the features they want.  We work 8 hours a day on it, which gives us more time to develop new features than someone doing it as a hobby, and we can afford commercial libraries that someone providing a free utility can’t.

As for the commercial competitors, it’s mostly a matter of providing something that they don’t.  In our case BC’s directory comparison is much more powerful than the alternatives, and we have viewers for other file types like images, binary files, and data files.  That allowed us to keep competing even when we were lagging in other areas.

What are the main methods you use to promote Beyond Compare?
We rely almost entirely on word of mouth.  We’ve had lots of customers tell us that they brought BC with them when they switched jobs and ended up getting their companies to spring for larger licenses.  We do spend some money on Google AdWords, and we hired a company to periodically submit our site to search engines and download sites, but we’ve never run a print or banner ad.

scootersoftware.com has an enviable Google page rank of 6 and ranks second for “file comparison software”. Have you spent a lot of effort on SEO?
We had a company help with SEO for a lot of the 2.x lifetime, and they’d suggest tweaks to improve things.  For v3 we took a different approach and redesigned the site to make it more accessible to potential customers.  I’m sure some of those changes helped, since we ended up adding more descriptions and using more synonyms, but it was primarily a case of asking how we could make it easier to find the information someone would want and expanding on that.  We still have a fairly wordy page title though, and I think that’s entirely for the search engines’ benefit.

Are most of your customers programmers, or does the software appeal to a wider audience?
I’d say more than 50% are programmers, but there’s definitely a wider audience.  System administrators use it for migrating servers, web developers use it instead of a traditional FTP client, and non-techs use it for backups or synching their laptops and desktops.

How long do you allow people to use the trial version?
The trial is for 30 days, but it only counts days you actually run it, so if you use it infrequently you could easily go six months or more before it times out.

I used Beyond Compare for ages before I bought a licence. I would have bought it sooner if you had been less generous with the trial. Why did you go for such a long trial period?
That goes back to competing with all the other products out there.  If someone installs two programs to evaluate, and then doesn’t have a chance to really try them out until a month later, the one that works is more likely to get the sale.  It also makes it more likely that potential customers will learn the application and start relying on it, so when it does come time to pay they’re less likely to throw out that investment and switch to another tool.

I understand Beyond Compare v3 is a complete re-write. Why did you feel a complete re-write was necessary? Was it a good business decision in hindsight?
There were two reasons why we felt a re-write was justified: (1) we had a lot of features we wanted to implement that wouldn’t work in the current framework, and (2) we over-estimated the speed that we could re-write it.

In the text compare we wanted inline editing with dynamic re-comparisons and 3-way merge, neither of which would have been easy to integrate into the v2 codebase.  The directory compare had similarly major changes, though a lot of that is internal and in preparation for other features, so it isn’t as visible.  There was also all the work we did to get a Linux release out.  It wasn’t a complete re-write though.  Anything that didn’t need significant changes, like our reporting engine, was brought over mostly as is.

I think it was a good business decision in that it allowed us to rethink and rework a lot of things without the old baggage, but it was bad in that it significantly limited what we could release in the meantime.  We ended up going 6 years between major versions and even though we were always busy adding new features, we couldn’t release them until we got back to feature parity with v2.

Beyond Compare is written is Delphi. What would you say are the advantages and disadvantages of Delphi compared to other development ‘stacks’?
I think Delphi is still the best tool for developing a native Windows application quickly.  It’s very easy to mock up interfaces and then fill them in with code.  The resulting exes don’t have any external dependencies, which makes redistributing them easy.  The VCL (UI framework) ships with source code,  and that has permeated the community, so the vast majority of third-party components also include source.

On the flip side, it still can’t produce 64-bit executables and isn’t cross platform.  It doesn’t have a garbage collector or as large of a class library as Java or C#.  The community isn’t as large either, so there’s usually only a couple of choices when you’re looking for specific components, and if that vendor stops developing it, there aren’t as many people to pick up the slack.

If you had to do it all again, starting now, would you still choose Delphi?
Probably, but I would seriously consider C# or Qt.  In our case we have a lot of experience with Delphi and we know the libraries, so starting from scratch in another language would be a significant barrier.

Beyond Compare has a very slick user interface. Did you do any usability testing?
Not as such.  Our primary usability improvements come from using our own product.  We use BC every day, for every comparison we do, so anything that sticks out tends to get squashed quickly.  We also get alpha/beta versions into customers’ hands as soon as possible, and keep iterating until they’re happy.  V2 and v3 both had private beta tests that lasted over a year and a half, and some of the features changed dramatically in response to that feedback.

Beyond Compare has a nice integration with Windows Explorer. Was that difficult to do? Were you able to do it in Delphi?
The first version of it was submitted by a user, so it wasn’t difficult at all.  It has taken a lot of refinement to get perfect though, and we were changing it all the way through to the final 3.0 release.  It is written in Delphi, though I did rewrite it in C++ in order to get a 64-bit version working.  FreePascal has since started producing 64-bit binaries, so we’re back to the single Delphi version again.

You have Windows and Linux versions. What did you use to write the Linux version?
We’re using a heavily customized version of Borland’s now-dead Kylix product, which was Delphi for Linux.  It does allow us to compile both versions from the same source code, but it’s showing its age and I wouldn’t recommend it to anyone else.  Our driving goal is to have the best Windows version we can, which means sticking with Delphi and using what’s available to produce the Linux version.  If OS X and Linux support outweighed that we would use a cross-platform option like Qt or Java, but we believe the Windows version would suffer in that case.

Do you sell many licences for Linux?
We sell enough to fund its development, so it’s a successful product.  It does introduce new challenges though, both in development and tech support, so if we were a smaller developer it probably wouldn’t be worth the overhead.

Do you think there will there ever be a web version of Beyond Compare?
I can see it as a possibility, and it would be interesting to explore, but it’s not something we’re looking into right now.  I think it would have a different audience than the current product, and would probably never be as powerful as what we can do locally.

How did you choose the price?
Our $30 standard edition is about the same price as our commercial competitors, and seems to be the standard shareware utility price.  The pro edition was priced based on our competitors, what our customers were telling us they’d pay, and what we felt the downward pressure of the freeware/opensource alternatives introduced.  We keep the price low in order to make our profits on larger quantities sold, instead of a larger margin per-unit.  We have increased our multi-user pricing considerably over the years though;  the discounts were very steep in v1 and v2, and the feedback we got was that it was just too cheap for what it provided.

I see some translator credits on the website. Is v3 available in languages other than English?
Not officially, but we have just released beta versions of a couple of languages.  The current credits are for the v2 translators, who are generally the same people working on v3 translations.

How important are resellers to your sales?
We get a lot of sales through resellers, but it’s generally from people who would buy it either way. Foreign resellers are a help to the customers though, because they allow them to order in their own language using the local currency.

Does Scooter Software have any other products besides Beyond Compare?
No, BC keeps us plenty busy.

Thank you Craig.

You can download a free trial of Beyond Compare from the Scooter Software website. I have no affiliation with Scooter Software beyond being a paying customer.

Choosing a development ‘stack’ for Windows desktop applications

beauty_parade.jpgI have have heard plenty of people saying that desktop software is dead and that all future development will be done for the web. From my perspective, as both a buyer and seller of software, I think they are wrong. In fact, of the thousands of pounds I have spent on software in the last three years, I would guess that well over 90% of it was spent on software that runs outside the browser. The capabilities of web based applications have improved a lot in recent years, but they still have a long way to go to match a custom built native application once you move beyond CRUD applications. I don’t expect to be running Visual Studio, PhotoShop or VMWare (amongst others) inside the browser any time soon. The only way I see web apps approaching the flexibility and performance of desktop apps is for the browser to become as complicated as an OS, negating the key reason for having a browser in the first place. To me it seems more likely that desktop apps will embed a browser and use more and more web protocols, resulting in hybrid native+web apps that offer the best of both worlds.

So, if Windows desktop apps aren’t going away any time soon, what language/libraries/tools should we use to develop them? It is clear that Microsoft would like us to use a .Net development environment, such as C#. But I question the wisdom of anyone selling downloadable off-the-shelf software based on .Net [1]. The penetration of .Net is less than impressive, especially for the more recent versions. From stats published by SteG on a recent BOS post (only IE users counted):

No .Net: 28.12%
>= .Net 1.0: 71.88%
>= .Net 1.1: 69.29%
>= .Net 2.0: 46.07%
>= .Net 3.0: 18.66%
>= .Net 3.5: 0.99%

Consequently deploying your app may require a framework update. The new .Net 3.5 framework comes with a 2.7 MB installer, but this is only a stub that downloads the frameworks required. The full set of frameworks weighs in at eye watering 197 MB. To find out how much the stub really downloads Giorgio installed .Net 3.5 onto a Windows 2003 VM with only .Net 1.0 & 1.1. The result: 67 MB. That is still a large download for most people, especially if your .Net 3.5 software is only a small utility. It is out of the question if you don’t have broadband. Microsoft no doubt justify this by saying that the majority of PCs will have .Net 3.5 pre-installed by the year X. Unfortunately by the year X Microsoft will probably be pushing .Net 5.5 and I dread to think how big that will be.

I have heard a lot of people touting the productivity benefits of C# and .Net, but the huge framework downloads can only be a major hurdle for customers, especially for B2C apps. You also have issues protecting your byte code from prying eyes, and you can pretty much forget cross-platform development. So I think I will stick to writing native apps in C++ for Windows for the foreseeable future.

There is no clear leader amongst the development ‘stacks’ (languages+libraries+tools) for native Win32 development at present. Those that spring to mind include:

  • Delphi – Lots of devoted fans, but will CodeGear even be here tomorrow?
  • VB6 – Abandoned and unloved by Microsoft.
  • Java – You have to have a Java Run Time installed, and questions still remain about the native look and feel of Java GUIs.
  • C++/MFC – Ugly ugly ugly. There is also the worry that it will be ‘deprecated’ by Microsoft.
  • C++/Qt – My personal favourite, but expensive and C++ is hardly an easy-to-use language. The future of Qt is also less certain after the Nokia acquisition.

Plus some others I know even less about, including: RealBasic and C++/WxWidgets. They all have their down sides. It is a tough choice. Perhaps that is why some Windows developers are defecting to Mac, where there is really only one game in town (Objective-C/Cocoa).

I don’t even claim that the opinions I express here are accurate or up-to-date. How could they be? If I kept up-to-date on all the leading Win32 development stacks I wouldn’t have any time left to write software. Of the stacks listed I have only used C++/MFC and C++/Qt in anger and my MFC experience (shudder) was quite a few years ago.

Given that one person can’t realistically hope to evaluate all the alternatives in any depth, we have to rely on our particular requirements (do we need to support cross platform?), hearsay, prejudice and which language we are most familiar with to narrow it down to a realistic number to evaluate. Two perhaps. And once we have chosen a stack and become familiar with it we are going to be loathe to start anew with another stack. Certainly it would take a lot for me to move away from C++/Qt, in which I have a huge amount of time invested, to a completely new stack.

Which Windows development stack are you using? Why? Have I maligned it unfairly above?

[1] Bespoke software is a different story. If you have limited deployment of the software and can dictate the end-user environment then the big download is much less of an issue.