Recently some colleagues of mine were asked the question:
“Given the (relatively) small percentage of OS X installations today, why would it make sense to write something using Cocoa? Any time you’ve tied yourself to an OS you are in danger of marginalizing yourself.”
This is a good question, worthy of some consideration here. I think that question is best answered by asking oneself who their audience is, and you could indeed be catering to a niche market. Are you dealing with a lot of Mac users? In that case, Cocoa may be the best choice. Personal satisfaction is a factor too – I know some developers who just like working in Cocoa and choose to do so despite the fact that they are OS-tied and marginalized. I don’t think they care one bit.
Sometimes nice markets can thrive. Just make your apps compatible using open standards or supported formats for files and communications so that they integrate. It depends on what you’re fishing for. You can catch some big tuna in the ocean, but there’s plenty of catfish in the pond as well.
Or on the other hand, are you dealing with a bunch of nerdy scientists that insist on using every platform known to mankind including BSD and Solaris on their desks (as I am)? Probably in that case you want a web app, or a Java client, or at the very least a core base of cross-platform C++ code and putting different faces on the thing as needed.
The tradeoff has to be: Do you provide a ‘good enough’ product to the widest possible number of users? Or do you provide the best of breed product to a smaller target that demands it? Of course in most cases the answers will tend towards the widest number of users, but sometimes those niche areas need filling too.
Of course the point is kind of moot for me personally since I only deal with web apps which should, if done properly, be nearly universally accessible to any web browser or related device… 😉