Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have a C# Windows application that sells for $35, and fairly regularly receive requests for a version for OS X too. I don't have any experience with Mac so far though, and so am not sure exactly how much work that would involve and if it would be worth it. If anyone's been in a similar position, it'd be very helpful to know:

  • Roughly how many more (%) sales can you expect by porting to Mac?
  • Would you say it's worth the investment of a new Macbook Pro and the time of learning and porting to Objective-C?
share|improve this question

closed as not constructive by Yannis Rizos Apr 4 '12 at 4:32

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Learning a wholly new language (+ libraries) just to port one application sounds like overkill. How about running the existing code via Mono? –  delnan Feb 10 '11 at 21:52
Is NumberOfUniqueRequests() * $35 > CostOfMachine + (($85*8h) * (LinesOfCode/100)) –  Loki Astari Feb 10 '11 at 22:47
Random anecdote: A colleague and I went into the local Mac fanboy shop to buy a copy of Windows and Parallels for her laptop. "Oh! What do you want Windows for?" "We need to run this Windows-only app we've developed." "You don't need Windows! You need to port it to Mac!" "..." He was so resistant to selling us what we were actually after that we eventually walked out empty-handed, despite having gone in ready to buy. –  Margaret Feb 10 '11 at 23:50
Any chance of making it a web app? –  JeffO Nov 27 '11 at 17:29
Consider just porting it to Mono instead. –  user1249 Apr 4 '12 at 10:23
show 1 more comment

5 Answers

up vote 11 down vote accepted

Roughly how many more (%) sales can you expect by porting to Mac ?

That's hard to say; it depends entirely on your market.

There used to be a couple of rules of thumb back in the 90s:

  • 50% of Windows software sales went to Microsoft
  • Mac users spend twice as much money on software per machine as Windows users

So for consumer software, you could say, "The market is 90% Windows and 10% Mac, but those Mac users will buy 4x as much of my software, so the ratio is really 40 to 90. So if my Windows version sells $9000 a month, my Mac version will sell $4000 a month."

The numbers change radically depending on your target audience. For instance, if you're in a niche business market with a strong Mac following, the numbers could be far higher. Some recent numbers include:

So if your program sells to the $300 WalMart PC crowd, or the small-business accounting market, you may not see a lot of additional sales from a Mac port. But if you're selling to more well-heeled consumers or business travelers, or one of the areas in which Macs have a strong foothold, you can probably expect a lot of added sales.

And, of course, you have to factor in competition. If there's no competition on the Mac and people want what your program does, that's great - and if you're going into an arena with strong existing Mac players and you have no name recognition, that's not so good.

Would you say it's worth the investment of a new Macbook Pro and the time of learning and porting to Objective-C ?

That's not a port, it's a complete rewrite. I've done many such "ports" of DOS/Windows programs to the Mac since 1989, and they're a big pain in the neck even if you're just going from C or C++ on Windows to the same language on the Mac and are already intimately familiar with both platforms.

So I wouldn't do that - at least, not have one program in C# on Windows and another in Objective C on the Mac.

If you're serious about a Mac version, you have a few options:

  1. As other people have suggested, Mono might be an option. However, the user interface will be entirely un-Mac-like. That will be a deal killer for most potential Mac users who don't absolutely need your program.
  2. Switch both the Mac and Windows programs to a different programming system that supports both platforms equally well. One good option is RealBasic, which is somewhat like Visual Basic. Another is Qt, which is C++ based.
  3. Port your program to C++ using something like MFC on Windows. Carefully separate out a cross-platform "engine" and Windows-specific user interface code. Then port the engine to the Mac, and rewrite the user interface in Objective C.
share|improve this answer
Very interesting points, thanks a lot. Using Mono entirely would be easiest but does look like pretty much a non-starter as you say. Using Mono for the business logic layer and rewriting the UI using native Obj-C/Cocoa seems like it could work well though. –  mikel Feb 11 '11 at 1:33
@mikel: Yes, that could work. I took a quick look, and there are also Mono bindings for the Cocoa APIs, so you might be able to create a native interface using Mono itself. But then you'll have to be sure to distribute the Mono runtime with your app, since very few Mac users are likely to have it installed. –  Bob Murphy Feb 11 '11 at 2:48
The Mac users have only seen the Windows version (screen shots?). Why would they expect a port to Mac to have a different interface if the functionality is still there? –  JeffO Nov 27 '11 at 17:26
add comment

How many unique requests for OS X do you get? That gives you a rough idea of how much sales increase it would get you, at least as a starting point. If you think you'll get a lot of sales based on requests, maybe it's worth it to get a new OS X dev environment.

If it's written in C#, you can probably do it in Mono (I'm pretty sure there's an OS X runtime) and reduce the effort to port it. You may have to redo the UI to work with different windowing libraries for Mono, but the core C# probably wouldn't have to change much, unless you are very heavily dependent on Microsoft libraries.

share|improve this answer
add comment

The first point is entirely down to your market I guess, and what domain your software operates.

ie: If it's a graphics or audio manipulation program, you'll definitely get some sales in the Mac arena. If it's a business productivity tool that interoperates with Exchange or some other part of the MS Stack, then chances are the wider user market uses other Microsoft Software than Apple.

share|improve this answer
add comment

I can't really give any meaningful answer to the first question. As for the second one, it largely depends on your existing skills. Do you know C or C++ already? If so, learning Objective-C shoud be much easier than if you don't know them.

Of course, you can go with the cheap option and use Mono, but I don't think many Mac users will be thrilled by the result.

share|improve this answer
add comment

Its all about costs and opportunity costs.

In addition to the (accounting) cost of doing the port in terms of time and money vs expected revenue, take into account what you lose out on if you spend time on a port instead of some other project such as a new version or an additional Windows program. ie, opportunity costs.

For example (just making numbers up here to illustrate), you might be able to sell an additional $10k of software if you had a mac version. And lets say it takes you 6 months to get a mac version going. If you instead spent 6 months upgrading the Windows version of your app... would you make more than $10k? Or could you make more than that if you created a completely new Windows program for sale?

So when deciding whether or not to port, its not just whether you can make a profit from it (assuming you are in this as a business), but rather, is that the best profit you can get out of the time and money you want to spend.

For my desktop software, its just never gotten to the point where a port made sense. An additional 10-20% of sales I might get from a mac port would probably make me some profit. But it'd be less than the increase in sales I'd get from a new Windows version of that program or a completely new Windows program. For you and your particular apps, it may be different. Thats a judgement call you need to make based on some of the factors others have mentioned here already (types of app, cost, how new Windows versions improve your sales, etc).

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.