Free software advocacy is something I do -- both for a living and as a hobby. Over the years I've gleaned a few best practice tips and I thought I'd pass them on. They may not all work or even be applicable in your case, but I have found then all useful at some time or other. They are in no particular order and in my opinion carry equal amounts of weight.
Beware price comparisons
With the current economic climate there has been a fair bit of rhetoric regarding the opportunities for free software to gain some "market-share". I think any argument which primarily advocates a cost advantage to free software is flawed. I've gone on enough in this column regarding free software and market share but in short proprietary software sales is measured in ways that free software installations cannot. It's also been said by a few people -- some of them on here -- that advocating free software on price alone is a dangerous business; although the temptation to do so increases during an economic downturn, the danger does not diminish. Why? Well, if you set out your stall built on the lowest price, somebody will almost always come along and beat it. They'll use (often deliberately) confusing terms like "Total Cost of Ownership" and "lifetime costing". The point is that if a punter switched sides once because of price, chances are they'll do it again. If you are going to use an argument to win, make sure it's harder to beat later.
Balance the rate of change
Sometimes in our enthusiasm to advocate free software we can come across a little, well, pushy. Whilst it's good to be 100% behind our argument, it's not always helpful if we overlook the needs of the person we are talking to. You have to gauge the situation based on your experience of the "client". If you are talking to somebody who is nervous around computers, is willing but a little unsure to try free software and trusts you to help them, you need to ensure you don't abuse that trust by throwing them in the deep end too quickly. Equally if you are talking to somebody who knows or thinks they know a lot about computers -- by which they mean Windows -- you may need to convince them one step at a time. Perhaps installing a free software based mail router to manage spam in front of their existing proprietary mail server is a better first step than a wholesale swap to a free software mail platform. Regardless of how much better you know the free software solution is, if you let them discover that advantage for themselves you'll more likely create another advocate than just another user.
Being realistic will win hearts and minds
This is slightly related to the last tip and I may raise some hackles here but over the years I've had more success in converting people gradually than in one go. If I allow them to keep running a proprietary application they are familiar with -- at first -- more often than not they will ask about free alternatives after some time. At a recent free software advocacy conference I spoke to someone who was interested in free software but they were put off by some advocates they had spoken to. Their concerns were over an implied insistence that they should change everything at once. They had a piece of software that was fairly to key to their business and there was no direct free software equivalent. There are some workarounds and ways to do it but nothing -- in their eyes -- as simple as the software they had. In this kind of situation it's better to take the route I've mentioned above. By recommending that they run free software servers and change to some Windows-based free software products they could keep using that key piece of software. However don't leave it like that: work with them, find and seek to fulfil their needs regarding that key piece of software. I know the purist argument and in some cases it works but honestly, changing people's minds about freedom in a licence is hard enough without telling them it's about the make things -- again in their eyes -- harder.
Be in it for the long haul
When you are trying to teach people about freedom in software (two words most people do not usually associate with each other) you need to put in the commitment. Hit and run, fire and forget are not techniques that work when introducing people to the idea of software freedom. You need to make yourself (or arrange for somebody else to be) available for support. Newbies have questions, lots of them, and if you are the one who has sold them on this idea then it's up to you to answer their questions. Telling them to just go to a forum might work with some people, but generally I've found it's better to answer it yourself and include a link to the forum post in your response. I guess what I am saying is: it's about being prepared to engage in some hand-holding.
Help them to engage with the community
One of the much-praised benefits of free software is the ability for anybody to contribute. The problem is that -- more so these days -- fewer people seem to do so. Part of this will be the ratio of user and programmers which seems to lean more toward the former now. Whilst the "not everybody is a coder" argument has been answered with varying aplomb many times, those answers are not always appreciated by new users. By nature they consider themselves too new to be able to write documentation, or teach others and certainly they won't advocate immediately. So what you have to do is show and guide them in engaging with the community. Teach them about lurking on forums or mailing lists. Look out for issues they've resolved (however minor) in other people's posts and get them to answer. We, free software people, are often quite vocal about the community, but in my experience we rarely show new users how to engage. We seem to want them to learn it the way that we did (e.g. The hard way).
So, there you have it. Not the least obvious or most profound set of tips, but certainly ones I have picked up over the years and found invaluable. I hope they help.