So lately, I’ve been thinking about both platforms. I’ve been thinking about switching from Win32 to the Mac OS X land. The best way to make the judgement is to use both and compare. Luckily, for a little while at work, I got to use an eMac while developing the Plaxo for Thunderbird extension. Here are some observations:
Anti-Mac:
Windows gets the keyboard. On a Mac, unless you dig and dig, it is hard to navigate the UI with just the keyboard. On Windows, this is established and natural. I find this to be an absolute Must Have for OS X before I switch. They are moving towards this. The Mac even looked outside of its own realm and copied the ALT-TAB idea from Windows. They need to go much farther.
The Mac is just retarded with the single menu at the top. Every Mac person I talk to gets defensive about this. Eventually, this will fall too just like the whole “I really only need one button on a mouse”. I mean come on. With wide screen displays, why should I move my mouse ALL THE WAY to the left in order to change a preference when the App is all the way to the right. This will clearly end only when Steve Jobs tells his flock that this is OK to have as a preference.
Update: Lack of debugging tools. No strace or truss! No winspy!
Mac nits: (not deal breakers)
The one button mouse. (Easy to fix)
The Terminal app STILL sucks. After 15 years, you would think they could get this right. (Probably easy to fix).
Costs. (Although less so. In fact, I think this will switch over. Microsoft is trying to squeeze more $$ from their customers, and succeeding.)
Their reluctance to REALLY innovate in the App-Kit layer. They need to figure out a new path for the post Objective-C world. They need a component object model. I mean compare Safari to Firefox.
Smaller market for skill set.
More, Not Invented Here but clearly being done everywhere else surprises?
Microsoft is catching up again.
Pro-Mac:
Unix. No comprimises have to be made. Web servers, PHP, vi. Nice!
95% of what I do is free or bundled on a Mac. (Web, IM, Free compiler tools)
Great graphics engine (Quartz and the PDF for free rendering are excellent.)
It looks really nice… good experience.
Great for video and media.
Great hardware, everything works.
No spyware worries.
Anti-Both:
Both are a bit bloated.
Both force me to compromise in some way.
Pro-Both:
They don’t suck like Linux.
Thoughts?
Ooo… that “Pro-Both” comment is fightin’ words 😛
I wouldn’t touch this thread with a 50 foot stick, rubber gloves and 3-inch thick flame retardant gear.
One thing though I would like to comment on, if only to get your opinion on it. Microsoft has always invested a great deal of time in creating extensibility in their OS and applications. Mind you I love that they do this, by in large most of my income over the last 7 years was generated through development of extensions and add-ins. But I’ve come to the conclusion that in some cases they took this too far. For example, I really feel today that the windows hook, and the windows subclass should have been depreciated back in Windows 95.
If an application is not designed to be extended through some sort of author sanctioned extension mechanism, should developers still have the ability to modify the application’s functionality, UI, and behavior? I believe the answer to this is no. And I wish MS would depreciate both of these ugly hacks. I’ve rarely seen much good come out of the hook, or the subclass. Usually what ends up happening is the host application becomes destabilized, and the authors of the extension as well as Microsoft feel the pain. If, when asked if something was possible which would require a hook, you could have simply said, “you can’t do that.” wouldn’t we all be better off?
Dude:
“Smaller Market For Skill Set?” — Sure, if you limit yourself to just Cocoa/Objective-C. What about Java, SQL, Perl, Python, C++, etc? All of which can be done on OS X. About the only thing I can’t use my Mac for is .NET development. Whoopie (finger spin).
My main complaint is that Apple doesn’t give a more robust set of hooks into the system from 3rd partly languages. Sure, they give me Quicktime for Java and some JVM hacks to get my menus in their menu bar, but why do I have to write in Cocoa for Java or make some cross-call BS just to create a PALETTE WINDOW or turn off the shadow said Window (ok, there’s a workaround for the second one). Why can’t there be Swing to NSWindow translation methods for those specific calls, etc…? Why does the Open/Save dialogs have to FEEL so damn clunky compared to Cocoa apps? Lame.
Oh well. Perhaps in time.