Tag Archives: free

Cppcheck – A free static analyser for C and C++

I got a tip from Anna-Jayne Metcalfe of C++ and QA specialists Riverblade to check out Cppcheck, a free static analyser for C and C++. I ran >100 kLOC of PerfectTablePlan C++ through it and it picked up a few issues, including:

  • variables uninitialised in constructors
  • classes passed by value, rather than as a const reference
  • variables whose scopes could be reduced
  • methods that could be made const

It only took me a few minutes from downloading to getting results. And the results are a lot less noisy than lint. I’m impressed. PerfectTablePlan is heavily tested and I don’t think any of the issues found are the cause of bugs in PerfectTablePlan, but it shows the potential of the tool.

The documentation is here. But, on Windows, you just need to start the Cppcheck GUI (in C:\Program files\Cppcheck, they appear to be too modest to add a shortcut to your desktop), select Check>Directory… and browse to the source directory you want to check. Any issues found will then be displayed.

You can also set an editor to integrate with, in Edit>Preferences>Applications. Double clicking on an issue will then display the appropriate line in your editor of choice.

Cppdepend is available with a GUI on Windows and as a command line tool on a range of platforms. There is also an Eclipse plugin. See the sourceforge page for details on platforms and IDEs supported. You can even write your own Cppcheck rules.

Cppcheck could be a very valuable additional layer in my defence in depth approach to QA. I have added it to my checklist of things to do before each new release.

What type of free trial should I offer for my software?

Once upon a time, the idea that you would allow people to try your software before they bought it was revolutionary. But now, thanks to the shareware movement and the ease with which software can be downloaded from the Internet, free trials are the norm for most types of off-the-shelf software. Prospective customers no longer have to rely on reviews of questionable independence or reading the packaging in a shop. They can try the software for themselves before making any commitment. This has been overwhelmingly a good thing for software users. It has also been a boon for vendors of good software.

When I surveyed 92 small software product vendors in 2009, 100% of them offered a free trial.

Eric Sink says:

Every small ISV today should give its customers an opportunity to try before they buy. It is officially now absurd to do otherwise. Customers will come to your Web site and expect to find a demo download.

And that was in 2004.

So, for most software products, the question isn’t – should I have a free trial? The questions is – what sort of free trial should I have? As with everything related to marketing, it depends. There are many different approaches. Below I describe some of the more common ones.

Time-limited

Typically this takes the form of a fixed number of contiguous days of free and unrestricted use. The software then stops working  and you need to buy a licence to continue using it. The time period is often 30 days. As you can see in the pie chart above, this was the most common type of trial in my survey.

The advantage of this approach is that it allows the user to try the full functionality of the software. But it does have a number of issues:

  • The trial might expire before they have finished their evaluation.
  • It isn’t suitable for software that might only be needed for a limited time. For example, a 30 day time-limited trial wouldn’t be a good idea for my wedding seating arrangement software as a wedding is a one-off event (we hope), and people could just start the trial 30 days before their wedding.
  • You have to find some way to hide the data about the date the trial starts.
  • It is relatively easy to circumvent. Even if you hide the install date well and check for changes to the system clock a potential customer can just keep reinstalling the software inside a new virtual machine each time the trial expires.
  • Cookie expiration is an problem. For example, Google Adwords conversion tracking cookies only last a maximum of 30 days. So Adwords conversion tracking won’t count a sale on day 31, which is probably where most of your sales will happen with a 30 day trial.
  • As most sales will only happen after your trial expires, you will have to wait longer to get your money.

I have sometimes downloaded software, started to evaluate it, got distracted and then returned only to find the trial has timed out. Very frustrating and unlikely to result in a sale. So I am generally not a fan of fixed duration trials. There are a couple of ways you can try to work around this issue:

  • Only limit the amount of time they are actually actively using the software. For example, allow them 8 hours of total active usage. This shouldn’t be too hard to program. For example, stop the timer if there hasn’t been a key press or mouse click event in 2 minutes.
  • Allow them to request an extension. Then at least you have got their email address and can follow them up.

Usage-limited

In this approach you limit the number of times a certain action can be performed. For example the number of pages they can print or the number of times they can start the software. This avoids the issue of a time-limited trial which expires before the user has finished their evaluation.

Feature-limited

In this approach the trial disables an important function of the software, for example printing or saving.  The problem is that a user won’t know if this feature works properly until they buy the full version. This may put some people off.

It has the advantage that you can ship a separate trial version with features missing completely from the executable, which makes life a little harder for crackers (note that they can still get hold of the non-trial version to crack if they want to, e.g. with a stolen credit card number). But it also makes life harder for customers, as they have to install the software a second time after purchase. Personally I care more about making life easy for my paying customers.

Capacity-limited

A capacity-limited trial restricts the amount of data that can be entered. For example, a password manager might only allow you to enter 50 passwords into the trial version. This approach can be problematic when performance is important. For example, if you limit a database trial to one thousand records, how can the user test whether the search performance is adequate for a database with a million records?

Output-limited

Many products exist purely to produce some form of physical or electronic output, for example image editors and label printers. Adding a watermark, or altering the output in some other way, can be an effective way to limit a trial. But you need to make sure that the modification to the output can’t easily be removed or worked around (e.g. using screen capture). You also need to be sure the user doesn’t think the modifications in the output are due to a bug in the software.

Nagware

Nagware allows you to use the software without restrictions, but ‘nags’ you periodically to pay for it. Usually this takes the form of a window that pops up when you start or exit the software. But I once used some software that also nagged you in audio. A woman’s voice with a heavy Scottish accent no less. It got uninstalled very quickly! Nagware isn’t very effective in my experience. I never did buy WinZip. Did you? After a while you just click the ‘continue’ button without thinking about it. Little tricks, like moving the ‘continue’ button or greying out for a few seconds are just annoying. And annoying people doesn’t seem like a great start to a business relationship.

No trial

Some software has no trial, just a money back guarantee. If your software is an enterprise system that takes significant effort to configure, then this is entirely understandable. But if it is off-the-shelf, downloadable software, what are you trying to hide? On the plus side it avoids the issue of people downloading software and then never getting around to trying it. My own stats show that only some 40% of people who start a download of my software actually install and run it. Also many people won’t ask for their money back even if they don’t like your product. So you might get sales to people who wouldn’t have purchased with a trial. But do you really want these people as customers? Personally I am unlikely to buy a software with no trial, unless there is no real alternative. I assume you won’t let me try your software because it isn’t very good. I’m sure many other people feel the same way.

Hybrid trial

Hybrids of the above approaches are also possible. For example, the trial of my wedding seating arrangement software doesn’t allow you to save, print or export plans with more than 30 guests – a hybrid of the capacity-limited and feature-limited approaches. I figure that 30 guests is enough to show what the product does, but not enough to be useful for most events. Also no-one is likely to pay for event planning software for an event with 30 or fewer guests.

Conclusion

A good trial is a balancing act. You need to give prospective customers enough to show them your software could solve their problem, but not enough to actually solve their problem. But if you are too restrictive they might go to a competitor with a more relaxed trial policy. It can be tough to get the balance right or to know whether a different approach would get better results.

Obviously, the best type of trial depends very much on your product. If it is a product that is likely to be used a lot and  is going to increase in value as it is used, then you might be best offering a generous time-limited or usage-limited trial. But if it is a product that is only needed for a one-off task or a limited period of time, then a feature-limited, capacity-limited or output-limited trial probably makes more sense.

For example, most consumers will (unless they are very unlucky) only want to use disk recovery software once. So it wouldn’t make sense to offer a 30 day free trial. It would probably make more sense to offer a feature-limited trial that allows them to see what data could be recovered, but not actually allow them to do the recovery until they pay up. But if you are selling to professional disk recoverers, then a time or usage-limited trial might be appropriate.

I asked  Craig Peterson of the Beyond Compare file comparison tool about their very generous trial policy (30 non-contiguous days of use) in an interview and he said:

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.

Data comparing different types of trial is hard to come by:

  • My 2009 survey didn’t show any clear difference in mean conversion rate between time and feature-limited trials (there wasn’t enough data for usage-limited trials to be worth counting):

The nagware vs feature-limited result is fairly conclusive. But, apart from that, there doesn’t seem to be much hard data to go on. Even if there was more data, it wouldn’t necessarily apply for different products in different markets. So, unless you want to program multiple types of trial and run lots of split tests (trial and error?),  you are going to have to ‘go with your gut’. It is tempting to pick the same trial model as your competitors. But remember that part of successful marketing is being different.

So there are no easy answers. But don’t just choose a 30 day time-limited trial because that is what everyone else is doing. Have a think about what fits best with your product, market and customers. Be creative.

Eventcountdown.com

I have just launched at new website at eventcountdown.com.  This website contains free countdown clocks,  for both Windows and web, to allow you to count down the days, hours, minutes and seconds to any event. It can be a wedding, a birthday or a major cultural or sporting event. Are your children wondering how many days, hours, minutes and seconds it is to Christmas ? Wonder no more! You can also use it to count up from an event e.g. giving up smoking or Perl.

web countdown clockweb countdown clock for Mac, iPad, iPhone and Android

windows countdown clockWindows countdown clock

The hope is that a significant number of people interested in planning events will go to evencountdown.com for a free clock and a small percentage will click through to PerfectTablePlan.com and buy my software. I have no idea how successful this will be. I certainly don’t expect a quick payback on the investment. But hopefully it will pay for itself in a few years, and then anything after that is pure profit.

This project has also been a small scale experiment in outsourcing that might lead on to greater things.

  • The web design and CSS/HTML coding was done by Sergey Pozhilov of μISVStyle.
  • The Windows countdown clock was done by Milan Marusinec of VectorGraphica.
  • The Javascript for the web countdown clock was done by Paul Kossowski of Dolphin Futures.

They all did a great job and the total cost was less than I would have paid for a couple of ads in event industry newsletters (which I tried recently, with fairly miserable results).

I have quite a few ideas about how I can improve eventcountdown.com, but I wanted to get something out there ASAP. After all if you aren’t embarassed by v1.0 you didn’t release it early enough. I would be interested to hear any feedback. Backlinks to eventcountdown.com would also be very welcome. ;0)

milan@crossgl.com

Should I give free upgrades for life?

There are any number of different licensing models. For commercial software the main ones are:

  1. subscription
  2. outright purchase, with annual maintenance
  3. outright purchase, with free minor upgrades and paid major upgrades
  4. outright purchase, with free major and minor upgrades for life

Subscription payments and purchase + maintenance are nice, if you can get them. They give a more predictable cash flow for a business and you can generally charge a higher lifetime price than you can with a single payment. But this isn’t appropriate for all types of software. For example, it doesn’t make much sense for lower priced desktop software. Assuming subscription or purchase+maintenance isn’t an option, the question boils down to – should we charge for major upgrades?

Let’s look at the numbers for a simple (contrived) example. AcmeSoft sells 1000 licences of v1 of their product in year 1, 2000 licences of v2 of their product in year 2, 3000 licences of v3 of their product in year 3 etc. Each year 50% of the customers who bought the previous version (new or as an upgrade) pay to upgrade to the latest version. The upgrade costs them 50% of the initial purchase. How much is the upgrade revenue worth? We can create a simple model in Excel:

Income new licences (blue) vs income from upgrades (red). Click to enlarge.

Percentage of annual income from upgrades. Click to enlarge.

In year 8 the upgrade income is actually worth more the new licence income. By year 10 upgrades are worth some 60% of yearly income for the product. If the product has a 10 year lifespan, nearly 50% of the total income from the product will be from upgrades. So it only makes commercial sense to give free upgrades for life if this will at least double the conversion ratio[1]. This seems highly unlikely. You can always try changing your upgrade policy and measure what effect it has on your conversion rate. Not much, I would guess (if anyone has tried it, I would be interested to know the results).

Even in a more pessimistic model where only 30% of customers upgrade and they only pay 30% of the new licence fee, upgrades still account for nearly 25% of total income over 10 years. You can download the spreadsheet and play with the parameters yourself.

Upgrade income becomes particularly important when:

  • A product has a long life span.
  • Customers are very likely to upgrade to a new version.
  • There is little growth in new sales.

In the worst case you could end up with a product with a huge customer base built up over a long period, but which makes very few new sales as it has saturated the market. Free major upgrades would mean that each major release is then going to result in large expense (developent and support) but very little income. Microsoft must be very happy they didn’t offer free upgrades for life on Windows or Office!

I don’t see anything unreasonable about charging for major upgrades. The vendor has to do additional work to add the new features and existing customers can choose whether the new features are worth the upgrade fee. However customers have certain (not unreasonable) expectations for paid upgrades:

  • The fact that the customer is expected to pay for major upgrades needs to be made clear before purchase.
  • Any major bugs in version n should be fixed before releasing version n+1.
  • A major upgrade should have significant new features.
  • Major upgrades should not be released more than once every 12 months.
  • The upgrade fee should be reasonable. Around 40% of the cost of a new licence seems typical.
  • There should be a grace period for free upgrades. E.g. If I buy v1 of a product on 01-Jan I don’t expect to have to pay an upgrade fee for v2 released on 02-Jan. Typically this grace period is 3-6 months.

If you are offering free upgrades for life currently, you can change your policy to paid major upgrades. But, obviously, you will need to honour free upgrades for everyone who purchases before the change of policy.

There are some, apparently successful, companies that offer free upgrades for life (Axialis for example). But I have heard many tales of small software vendors regretting their initial decision to give free upgrades for life. The easiest customer to sell to is the one you already have. If you don’t charge for major upgrades, are you leaving large amounts of money on the table?

[1]Ignoring inflation, interest etc.

Beware upgradeware

fungi.jpgSome years back my wife bought a PC and got a ‘free’ inkjet printer with it. It was a really lousy printer, but hey, it was free. When it ran out of ink we tried to get a new inkjet cartridge, but the cheapest set of cartridges we could find was £80. That was 4 times the price of other comparable cartridges at the time. Some further research showed that you could buy the printer for £20 – with cartridges! Their ugly sales tactics didn’t work. We threw it in the dustbin and bought an Epson inkjet, which gave years of sterling service using third party sets of cartridges costing less than £10.

When I started my company I had a thousand decisions to make. One of them was which software to use to create and maintain my new product website. It just so happened that my new ISP (1and1.co.uk) was offering a bundle of ‘free software worth £x’ when you signed up (I forget the amount). It included a web design package (NetObjects Fusion 8 ) and an FTP package (WISE-FTP). Hoorah, free (as in beer) software and 2 less decisions to make. I was weak. Instead of spending time checking out reviews and evaluating competitors, I just installed and starting using them. It didn’t occur to me that they might be using the same sales tactics as the manufacturer of the lousy printer. In this imperfect world, if something appears too good to be true, it usually is. And so it was in this case. I grew to hate both these pieces of software.

WISE-FTP was just flaky. It kept crashing and displaying German error messages, despite the fact that I had installed the English version. No problem, I just uninstalled and installed FileZilla which is free (as in beer and speech), stable and does everything I need and more.

NetObjects Fusion was flaky and hard to use. By saving after every edit I could minimise the effects of the regular crashes and I assumed that I would learn how to work around other problems in time. But I never did. By the time I decided that the problems were more due to the shortcomings of NetObjects Fusion as a software package, rather than my (many) shortcomings as a web designer, it was a little late. I had already created an entire website, which was now stored in NetObjects Fusion’s proprietary database. Some of the bugs in NetObjects Fusion are so major that one wonders how much testing the developers did. My ‘favourite’ is the one where clicking a row in a table causes the editor to scroll to the top the table. This is infuriating when you are editing a large table (my HTML skills haven’t yet reached the 21st century).

In despair I eventually paid good money to upgrade to NetObjects Fusion 10. Surely it would be more stable and less buggy after two major version releases? Bzzzzt, wrong. The table scrolling bug is still there and it crashed 3 times this morning in 10 minutes. Also, every time I start it up the screen flashes and I get the ominous Vista warning message “The color scheme has been changed to Windows Vista Basic. A running program isn’t compatible with certain visual elements of Windows”. Even just trying to buy the software upgrade off their website was a confusing nightmare. The trouble is that it is always easier in the short-term to put up with NetObject Fusion’s many shortcomings than to create the whole site anew in another package.

For want of a better term I call this sort of software ‘upgradeware’ – commercial software that is given away free in the hope that you will buy upgrades. This is quite distinct from the ‘try before you buy’ model, where the the free version is crippled or time-limited, or freeware, for which there is no charge ever. Upgradeware is the software equivalent of giving away a printer in the hope that you will buy overpriced cartridges. Only it is less risky, as the cost of giving away the software is effectively zero. It seems to be a favoured approach for selling inferior products and it is particularly successful when there is some sort of lock-in. It certainly worked for NetObjects in my case.

Norton Anti-virus are the masters of upgradeware. Norton Anti-virus frequently comes pre-installed on new PCs with a free 1-year subscription. The path of least resistance is to pay for upgrades when your free subscription runs out. By doing these deals with PC vendors, Symantec sell vast amounts of subscriptions, despite the fact that Norton Anti-virus has been shown in test after test to be more bloated and less effective than many of its competitors. And if you think Norton Anti-virus doesn’t have any lock-in, just try uninstalling it and installing something else. It is almost impossible to get rid of fully. Last time I tried I ended up in a situation where it said I couldn’t uninstall it, because it wasn’t installed, and I couldn’t re-install, because it was still installed.

I feel slightly better now that I have had a rant about some of my least favourite software. But there is also a more general point – ‘free’ commercial software can end up being very expensive. Time is money and I hate to think how much time I have wasted struggling with upgradeware. So be very wary of upgradeware, especially if there is any sort of lock-in. When I purchased a new Vista PC, the first thing I did was to reinstall Vista to get rid of all the upgradeware that Dell had installed (Dell wouldn’t supply it to me without it). You could also draw the alternative conclusion that upgradeware might be a good approach for making money from lousy software. But hang your head in shame if you are even thinking about it. It would be better for everyone if you just created a product that was good for customers to pay for it up-front.

Ps/ If you fancy the job of converting www.perfecttableplan.com to beautiful sparkly clean XHTML/CSS and your rates are reasonable – feel free to contact me with a quote.