One thing that every successful developer will eventually face is competition. When most people think about competition, they think about evil people who want to take your customers away from you, copy your great ideas, and say bad things about you.
In most cases, a competitor is actually a person that is very much like yourself. So much so, in fact, that they chose to develop a similar product, marketed to similar customers. If you talk to one of your competitors, you will find that you share certain interests.
Mind you, I am not claiming that every competitor is exactly like you are. There is often a certain, important, difference. Something, that keeps you from pooling resources and going at the whole problem together. If you weren't competitors, you might even have become friends. But still, competitors are usually made up of the material that friends are made of, so I firmly believe that one should treat them as such.
I guess the best way to illustrate the ground rules for dealing with competitors is to take an example from real life, and point out what went wrong.
You might have heard about the Twitpocalypse a while ago, an occasion where a number used to uniquely identify a Twitter message became so large, that many Twitter clients had to be revised to avoid problems. The developers of one Twitter client, let's call it Twitter client A, made a mistake, and users started posting on twitter about the weird issues they were having due to this mistake. The developers quickly started working on a fix.
During the time that it took to fix the issue, the developer of Twitter client B started replying to the messages of users mentioning the bug in Twitter client A, advertising his own product.
In my opinion, this is an abuse of Twitter, and akin to spamming. People were asking about the problem with their existing clients, they were not asking for sales solicitation from a competitor. While it is all right, and even a demonstration of paying attention to your (potential) users, to answer Tweets of users asking generally for a product that does what your product does, or asking about alternatives to one of your competitors, you are essentially intruding on a conversation between other people when you reply to posts about your competitor.
Moreover, it is showing disrespect to your users. You wouldn't just walk up to a stranger in the street and tell them that their car is crap and that they should buy a new car from you. And you would consider it slimy if a used-car salesman walked up to you when you had a flat tire, to tell you that they have a new car on offer.
Since a developer, even if they're trying to be fair, is generally biased, they should just have the class to let their competitors (remember, they're like you) deal with their problems in peace and quiet. Let them have conversations with their customers and don't intrude. Stay in the public arena, and don't drag an imaginary "fight" to their doorstep.
It is perfectly fine to highlight the features in your product that your competitor doesn't have, or even does badly. But there's no need to bash them. This is your advertising space, why even mention your competitor? Nobody likes the guy who, when his mistakes are pointed out, points out the mistakes of others defensively. That only reeks of desperation. When users come to your web site, they want to know what your program will do to help them.
By virtue of pointing out your features, users will think of those aspects when looking at competing products. Hey, it's happened to me:
One competitor to one app I was doing pointed out a really trivial feature: Window zooming. I was confused, why would one even talk about this? Then I got a sinking feeling. Didn't I change something in a related area recently? I looked into it, and sure enough, I had broken window zooming without even realizing it.
That was clever. Take advantage of what your app does better, but be fair.