- Emulate ( Simulate the application from scratch or with the know source code )
- Enhance ( Add new Features, Enhance the existing one, tweak the code to work faster )
This holds good for products or service which are available in the market and most of them follow it.
Users love the existing product, That means they expect most of the features already available in the existing software or service.
Let us say we build a new product like word processing software, you expect the least to have the cut, copy and paste. To my knowledge any new product will incorporate these with out even thinking that they are competing with the giants. what about spell check, WordPress didn’t have them initially, after users have asked this feature they implemented it. You know about any word processing software would expect a spellcheck, then don’t wait, provide them.
Innovation is the key, what if the competitor thinks and implements it faster than you, You provide it before your users ask about it in support or feature request or forums
A small example would be to export the text to different format or exporting them to blogs
I agree with Kathy sierra that running behind all the features of the competitors and implementing them is waste of time and would require a seperate team to enable them to the existing software because the core team will continue to innovate, but atleast trying to provide the best of features available from the competitor list should give you a better edge.