Ars’ Peter Bright wrote an article today entitled “From Win32 to Cocoa: a Windows user’s conversion to Mac OS X“, in which he explains why he believes “Windows is dying, Windows applications suck, and Microsoft is too blinkered to fix any of it”. These are rather harsh words, but there is a definitive element of truth in it. The article is part one in a three-part series.In the article, Bright first explains how Microsoft developers were in a happy place in the latter half of the 1990’s, whereas Apple was in big trouble due to the fact that its operating system was an old piece of junk (personally, I happen to like Mac OS 9, apart from its slowness). On Microsoft, Bright writes:
I felt well-treated by Microsoft. MSDN Library was an invaluable developer resource; Microsoft was open about what it were doing, giving out betas of Windows XP (or Whistler, as it then was) to all and sundry, and it felt like they knew what they were doing. The company had a roadmap of Whistler and Blackcomb; it had a plan.This was attractive to someone who programmed for a living. Developers felt valued, like the company cared about them. I enjoy programming, and I enjoy writing software. I did then; I do now. So for me, this is really a key piece of what a platform has to offer.
The Apple world wasn’t as rosy as the Microsoft world back then. Apple’s operating system lacked a lot of modern technologies like protected memory and preemptive multitasking. Apple started the Copland project to bolt these (and other) technologies onto what is now known as Classic, but they failed miserably. Promised developer releases were never released, it suffered from feature creep, and was ultimately cancelled. Consequently, Apple went shopping for another operating system to base the next generation Apple OS on, and after a brief flirt with Be, Inc., they purchased Steve Jobs’ NeXT Software and its operating system, NeXTstep. The rest is history. As Bright writes:
This approach – forced on it due to screwing up the Copland project – put Apple in a strong position. The new OS was free of many of the legacy constraints that the Copland approach would have caused; the clumsy old APIs were restricted to the Classic environment, and they didn’t form a part of the modern OS core. Although the new APIs were not entirely new – the Obj-C Cocoa API was based on the NeXTstep API, and Carbon was similar to the old MacOS API – they were cleaned up, allowing bad decisions of the past to be fixed.
It took a while before Mac OS X, released in 2001, became usable, but Apple continued to update the operating system, adding new frameworks and APIs, which enabled developers to easily make applications that not only looked great, but worked great too. Microsoft, in the meantime, had released Windows XP, and more or less left it unchanged for years until Windows Vista came along last year.
Bright continues to explain that these high quality frameworks and APIs in Mac OS X resulted in Mac applications that looked and worked great. This was not only a result of the APIs, Bright argues, but also because of the attitude of the developers using them; Mac developers seem more devoted, more willing to make an effort with their applications. Compare this to the bulk of Windows applications, which are “shoddy”, as if Windows developers “just don’t care”. Bright attributes this to the fact that many Windows programmers work for the enterprise. Summing up, he states:
So Mac OS X was going from strength to strength, and its third-party software ecosystem was flourishing. Developers for Mac OS X were conscientious and passionate about what they were doing, and it showed. Back at Redmond? Inactivity. Oh, they were busy working on Vista, churning out lots of code that didn’t work, scrapping it, and starting over. Talking up major (if dubious) new features and then killing them off. And you know, Vista’s okay. It’s not bad. There are bits of it I really like.But it doesn’t inspire me. Writing software for Windows is a pain. Much of the platform is clunky and badly put together, and it makes development much less enjoyable than it should be.
And that is the main argument Bright puts forth in his article. The Win32 API still suffers from design decisions made over 20 years ago, and it’s huge, and, according to Bright at least, quite inconsistent. “It’s inconsistent in every way imaginable.”
Back in July 2007, I wrote something similar in an article in which I detailed how I think Microsoft should go about the development of Windows Vista’s successor, Windows 7. One of my main points was that the NT kernel doesn’t really need to be scrapped; it is the userland and APIs that need to be rebuilt from the ground-up, with backwards compatibility moved into a virtual machine, just like Apple did in Mac OS X with the Classic environment for old System 8/9 applications. Today’s processors are fast enough for such a VM.
In addition, my article advised Microsoft to release betas and RCs often, free for the public to test and play with. After the release of this imaginary Windows 7, Microsoft should mimic Apple’s behaviour after the release of Mac OS X 10.0: update the operating system as often as possible, preferably free of charge. Provide excellent documentation on the new APIs, allow easy access to bug-tracking systems, and create a good atmosphere for developers and users to interact with one another.
It is still too early to tell whether Microsoft will take such a bold step, but it seems as if I am not the only one advocating it. Which is a comfort.
I would understand keeping up with OSX development if that is what you have been doing or keeping up with Windows if that is what you know.
What I don’t understand is why anybody would want to learn Cocoa from scratch. If you’re going to learn a whole new set of API’s, why not learn one that is cross platform like QT. Look at all the trouble Adobe got themselves into by using Carbon.
Now, if you need to tightly integrate with the OS you might wanna learn Cocoa. Much like just knowing QT isn’t enough to write an app that tightly integrates with KDE or knowing Java isn’t enough to integrate with Windows.
But that is a whole other issue in itself…I’m against apps that integrate that much into the environment.
“Look at all the trouble Adobe got themselves into by using Carbon.”
Well, Carbon was never meant to replace the classic MacOS API’s, it was just a quick way to get an old app to benefit from features on OSX and not have to run in classic mode.
It was IMO quite obvious that Carbon would eventually go away…
Adobe has only been “lazy”(not really lazy, but not willing to use resources on porting to Cocoa) and now they’re seeing the consequenses.
This is a bit off topic: but a interesting side-effect of having to get Photoshop on a other API than Carbon might be that they now would choose a cross-plattform API such as QT, GTK or wxWidgets. If they do maybe the geeky dream of having Photoshop(or maybe even the whole Creative Suite!) on *nix will come true.
Probably not though. *Keeps on dreaming*
——————————–
Regarding that people should learn crossplattform I agree! I’m soon getting a Mac, and after being trapped in .NET I want to have something that’s truly cross-plattoform, so I’m learning Python and wxPython.
On the other side there are some things, such as the drawer that (to my knowlegde, correct me if I’m wrong) can’t get with crossplattform kits. (And other things mentioned in the article.)
“If they do maybe the geeky dream of having Photoshop(or maybe even the whole Creative Suite!) on *nix will come true.
Probably not though. *Keeps on dreaming* ”
Mac OS X is Unix, your dream came true some time ago.
A: You don’t make much money, if any at all, writing KDE Applications.
B: Java is server-side programming and Web Services, not traditional client applications.
C: Qt is C++. When Qt 4.5 comes out and is designed to interoperate with Cocoa then you can leverage the best of both on a platform that has, in the author’s mind, a driven and motivated developer community which actually makes money on a platform that isn’t Windows.
D: I could go on, but perhaps you should give yourself a month of programming in OS X and Cocoa to answer your spurious and recursively destructive word that, by definition, has no answer in mind and only more questions. If you don’t own a Mac to run the platform on, then you really can’t even attempt to answer your question.
Which part of cross-platform did you fail to understand? You’re not writing KDE applications here. That’s a downright bizarre thing to come out with.
Java isn’t the best option, certainly now that Apple has crippled it in OS X, but if you have different platforms to code for then it’s silly not to look at cross-platform options. Also, cross platform options such as Java and Qt can insulate you from the stupidity of Apple when they create APIs they know they will drop.
Yer, and you can do that to a very large extent without having to rewrite your application for Cocoa from Carbon. Score to Qt.
Apple doesn’t get developers, and that has been ably demonstrated over a period of many years. API breakages, APIs being plain dropped, telling developers not to use something but making it available anyway (copying pointers out of the jump table for example) and outright hardware platform changes. If you value developers, you can’t take that stuff back. You have to make it work, and up until fairly recently, that was the view Microsoft took. If you want to see how successful Microsoft’s new direction is, look at the uptake and support for Vista and platforms such as.Net versus XP, 2000 and previous Windows versions.
If you must develop for a Mac, get yourself a nice big wrapper, and preferably a cross platform development tool, not just for the flexibility of cross platform porting, but to insulate yourself from Apple’s stupidity. The Cocoa versus Carbon debate is the same as the Winforms versus WPF one in the Windows world. Why does it even exist in the first place?
As for the article, when there are the number of applications written for the Mac, both shrink-wrapped and especially internal applications, as there are on Windows, he can give us a call and make a comparison. That’s what it all boils down to, no matter how much more ‘passionate’ he perceives Mac developers to be and no matter how much Microsoft wants you to re-write stuff in the shiny new .Net. A lot of stuff is written with Win32 and COM.
Edited 2008-04-22 12:12 UTC
Carbon has always been billed as a transitional API. It was obvious right from the start that it wasn’t always going to be available. It’s purpose was to help developers port their existing applications to OS X, before transitioning to Cocoa.
Guess it didn’t work too well, given how many commercial apps remained Carbon. It was only the announcement that there will be no 64 bit Carbon that has spurred these software houses like Adobe to start seriously looking at Cocoa.
It was never going to work. Transitional APIs never do, because they never are transitional. Once you put it out there people start using it.
Shock, horror. There is zero return on investment to Adobe or anyone else in rewriting their applications from Carbon to Cocoa!
Because cross-platform frameworks have some limitations that for some developers are just unacceptable. Opera, for example, is written with Qt. However it does not look like a native OSX app at all. That is why it is not an option for some developers. They want %100 native looking apps.
It’s a while since Opera was QT-based.
They’re using a internally developed toolkit now. It does however bear resemblence with QT. Inherited sort to speak…
Futhermore I think the main reason a lot of people are not using Opera(I’m assuming you’re talking about embedding the rendering engine) is probably because Opera is not free. (And WebKit and Gecko is, and IE although not free, it is free to use on Windows.)
It should be pointed out that mac users are particularly picky when it comes to having “native” feeling apps. I know I do.
“What I don’t understand is why anybody would want to learn Cocoa from scratch.”
Speaking as somebody who has recently learnt Cocoa from scratch (and still learning). Because I enjoy it. It’s a shear pleasure to create Cocoa apps. I may make money off them or not, either way there’s a satisfaction in writing great apps with minimal effort using a non-jarring API.
IMO cross-platform APIs like Java or QT produces rough applications. However, those applications reduce the cost a lot and are “enough” for vertical application like business applications. The pros overcome the cons in this scenario.
On the other hand, cross-platform APIs are not acceptable for wide scope applications like word processors or internet browsers. Does anybody would consider using a web browser written in Java or QT?
This sort of says that backward compatibility is a good thing but taken too far you are going to be slowly ground to a halt on grounds of performance, reliability and security.
There is a real question about how far Microsoft can take this line; and how they break out of it. Probably the key question is whether Microsoft are anywhere near making such a decision?
Well, I think I’ve mentioned this; they need to have a 3 year; announce at the beginning of a Windows release all the components which have been deprecated, then from there, announce that the following release will have it removed; in three years time. So you have a cycle of removing old cruft every three years, fixing up broken calls (and not creating backwards compatibility) everything three years.
If all operating system companies did it, it would then force third parties not to use well know deprecated API calls which they know are going the way of the dodo. Quite frankly, I am sick and tired of hearing third party vendors live the high life, fail to maintain their software, then turn around crying bloody murder when their crutch is taken away from them. Its time they started properly maintaining their software instead of expecting perpetual backwards compatibility.
As for Microsoft, there is nothing stopping them from making the change now; they could tomorrow throw out all the old unsafe calls in the next release, notify all the developers now – and there wouldn’t be a single change in the market share statistics. The simple fact of the matter is, third parties will whine but update their applications knowing that they have no choice; customers will eventually upgrade, be at a slightly slower pace, and the cost of development and maintenance would decrease of Microsoft as they would no longer need to haul around ancient crap in their code base.
The author of the article spend the time whining but never telling what kind of programs he is having problems to develop.
From the article :
Seems like the Win32 API is on its way out anyway. The future of Windows development is .NET, is it not?
Win32 has been on the way out for the last 8 years. It’s still here, and it will be here for a long time to come.
.NET will never truly replace Win32 especially when writing drivers, low level applications and small utilities and really large programs. Can you imagine what customers will say if your app suddenly demanded 3x more memory, started up slower and still provided the same features?
.NET has its place, but Win32 will never disappear.
edit: It’ll evolve to win64 of course
Edited 2008-04-22 06:02 UTC
And whats so bad that Windows support several official APIs to create programs, nothing. Keep mind that unlike Apple, Microsoft has huge corporates as clients and they demand support for long time. You can’t just trash something because some 20 year old kid thinks it’s not cool anymore. It’s always fun to see arguing on Microsoft, they really are company that can’t do right, cut support on something and you have Gartner telling that Microsoft is doomed, leave something and we get “blöööggeers” crying how this and that destroys security and blaa blaa.
You obviously do not understand the frustrations that Win32 programmers have. If you want to create native code using Microsoft’s tools, you’re stuck with C++. If you’re going to be using C++, you have a choice of raw Win32, MFC, or ATL/WTL.
Programming in raw Win32 is a joke as the API is far too verbose and requires a little too much micromanagement. Most people opt to either write their own wrappers or make use of existing wrappers like MFC or ATL/WTL.
MFC is not that elegant and it tries to shove the DocView architecture down your throat. There’s a reason why WTL/ATL is quite popular these days (despite WTL having next to no documentation -.-). When you look at the MSDN documentation, you’ll see very few new articles about developing unmanaged applications. The majority of the COM+/MFC/Win32 articles date from about 2000. Since 2000, there has been a significant effort to push .NET as the development framework of choice.
.NET is actually quite nice. Which is a real pity, since many people would like to use the framework but cannot afford the overhead of the .NET runtime. This leads to irritation among unmanaged code developers. Microsoft is clearly spending a lot of time and effort improving .NET and managed code development. As a result, the frameworks for developing unmanaged code get left on the shelf and are starting to show their age. If only we had something better coming from Microsoft!
On the other hand, Qt is quite a nice framework. However, it’s a bit much for to pay about £600 a seat for Visual Studio, and then have to pay another £600 annually per seat for Qt. In an organization of about 200 developers, that costs quite a fortune. Nevertheless, if Microsoft ever drops support for Win32/64, you can bet a lot of projects will be rewritten. And it’s not going to be in .NET
You’ve just worked out why the uptake of .Net, and especially things like VB.Net by classic VB developers, has been exceptionally poor, and why even now, a lot of applications are written with Win32 and COM.
There is zero competitive advantage and certainly no return on investment in rewriting an application with a shiny new API. However, that’s what the lunatics writing for MSDN magazine believe you’re going to do, as well as Apple when they make another hardware or API shift.
Edited 2008-04-22 12:09 UTC
Umm, isn’t .Net simply a managed runtime that sits on top of Win32? I seriously doubt Win32 is going away any time soon, if at all.
To me it doesn’t seem like Microsoft themselves have all that much faith in .NET as a typical client-app platform.
The only app of some significance I’ve seen put out on the .NET plattform by MS is their Silverlight-creation tools.
Epression Web
Expression Design
Expression Blend
Are more than just silverlight creation tools and have beautiful and highly functional UI’s.
Any new application from Microsoft will take advantage of WPF which is only maturing now as a result of Microsoft building the applications listed above.
To my knowledge Expression Web is based on FrontPage and thus not a .NET App. (But it is a wonderfull webeditor, it’s hard to believe it’s based on FrontPage!)
But yes: the other Expression apps are based on .NET
I know this, but when are MS going to have enough confidence in .NET to ship Office, Visual Studio and other important core apps in .NET? Of course, rewriting Office is a huge task, but sureley they could of rewritting say.. Notepad in .NET?
The Expression apps – Web excluded – are built with WPF not Winforms. The Expression developers claim that the development of Expression has matured WPF to the point where it is production ready. So in essence Microsoft used the Expression apps to get WPF to a mature state.
WPF comes is an amazing technology.
Yeah exactly you are right. Today Windows developers are using .NET technologies for developing apps. Win32 is done and the truth is that .NET is really a nice technology on Windows platform which makes developers life easier.
Honestly I can’t follow this guy since the beginning:
Microsoft has never done anything so bold as Apple’s OS X transition.
What did he mean? Does this guy know that you can use Vista to run a software from mid-80s (i.e. more than 20 years ago) and it will (mostly) work? Not only Apple was never able to do that, but actually no software house was able to do that, except for some old Unix console-only software. So what is the guy talking about?
What makes this all worse is that Win16 was never well-designed in the first place, and Win32 has replicated poor decisions in abundance. Win32 is a big API; it’s really huge, many thousands of API calls, and it’s totally inconsistent. It’s inconsistent in every way imaginable.
Why is this guy comparing OS X API to Win32 when even rocks know that Win32 is the past in Windows development? The guy obiouvsly never heard about .NET 1.0/1.1/2.0/3.0/3.5, WPF, WCF and so on. Now that’s a modern API to me. What’s the point in comparing OS X to Win32? Even if Win32 will be here for years (maybe until Windows will exist, knowing MS), it’s also clear that Win32 is a dead duck for new development.
It continued to tidy up legacy features (deprecating QuickDraw, for example). It added new APIs like Core Audio and Core Image.
Oh great. Except for the fact Microsoft had system-wide services like this in Windows95 and has DirectX since… I don’t know… 10 years?
Let alone the fact Windows developers produce crappy applications while OS X developers only make high-quality apps (because they don’t develop for big corporation! How fun!).
Hey friend: if you found your dimension in developing for OS X, happy coding! But avoiding to throw mud at others because you switched side, well… that would be better 😉
Well I think that’s his point. MS is so worried about losing market share, that they made a huge bloated mess out of their api’s instead of doing the sensible thing and deprecating anything irrelevant in todays computing environment. He specifically points out that apple dropped their plans to just hack Classic OS to add much needed features and instead dropped the whole thing and decided to go another direction. Basically freeing them from the shackles of old deprecated code and forced themselves and developers to start anew.
As for .Net he didn’t point this out but the real point of the article is that MS doesn’t eat their own food. Even MS themselves don’t extensively use .net for much of anything, they still use good ol win32. That’s the problem right there, developers are taking their cues from MS, but MS has huge issues with consistency in their applications, in everything from the api itself, which if you read the article he gives examples of, to issues with application UI,to not having a set and consistent HIG. Now what he failed to mention is that Apple is also guilty of the same thing. The whole Carbon/Cocoa issue is an example. A lot of Apple’s pro apps are not written in cocoa but instead use carbon, the same for some of the system wide apps. I think finder is written in Carbon. Apple also has issues following its own HIG, but they are still hands over feet more consistent that MS in a lot of respects.
Directx has been a system wide service and api since win95 (though do you seriously think that directx2-5 was any good. i certainly don’t). the issue is that MS has several ways for accessing the same services basically creating a huge issue with inconsistent way that devs access the same resources. Directx itself has many issue with consistency but the api is familiar and many people know how to use it. Besides Apple also had their version of these services in classic OS, you had quicktime, quickdraw, etc. It wasn’t implemented all that great but they were there and they had them for quite some time. CoreAudio, CoreMidi, Coreimage, all of these are newer more powerful version of the same concepts, they are much easier to use, extremely versatile and they are constant and given to developers for free of charge to use and abuse. The same api’s services are being used to develop for the iPhone. It really is rather elegant.
I am not an expert, but I am familiar with it. DirectX 10 being about performance is a straight-out lie; what DX10 is about is cleaning up the API and providing alot more consistency, both in windows and between windows and xbox.
All three of those are high quality APIs for creating Midi Sequencers, Audio Workstations, and Graphical apps.
On our side of the world, we have WPF, which is hands down the most elegant UI framework I have ever used. LINQ, which is a unified data access model. WCF which is a fantastic abstraction layer for services of any sort (anything from named pipes, to web services, to RPCs). WF, which is an API to take care of the plumbing in workflow applications.
These APIs make it very easy to build high quality line of business applications very easily, and are all free of charge as well.
Completely ignoring things like tooling, infrastructure, and language features, when you are talking api to api, .net holds its own really well against apple. The big difference is that apple pours its effort into the more creative stuff, and ms pours its effort into the more business oriented stuff.
Edited 2008-04-22 03:03 UTC
Well I think that’s his point. MS is so worried about losing market share, that they made a huge bloated mess out of their api’s instead of doing the sensible thing and deprecating anything irrelevant in todays computing environment.
That’s not true. Microsoft is deprecating older APIs. It is just not removing them. Developers are encouraged to use newer APIs but Microsoft puts a great effort in supporting their products. That’s the biggest part of its success. Of course, Apple (which holds a 2.something% marketshare) can just say “We don’t care: rewrite your applications…”. But if you were a business, you wouldn’t feel very safe with tha policy unless you’re hell of a brave business…
He specifically points out that apple dropped their plans to just hack Classic OS to add much needed features and instead dropped the whole thing and decided to go another direction. Basically freeing them from the shackles of old deprecated code and forced themselves and developers to start anew.
And that’s why Apple starts from 0 everytime. This way, they won’t go anywhere in marketshare as they will always get users willing to user Apple’s software and nothing else. Or wait 2 years while Adobe converts Photoshop to latest Apple’s changes. No-one still have doubts that backward compatibility is the key for success. Really. No-one.
As for .Net he didn’t point this out but the real point of the article is that MS doesn’t eat their own food. Even MS themselves don’t extensively use .net for much of anything, they still use good ol win32.
That’s true but OS developers always use tricks and have advantages. Reason why Microsoft is still using Win32 is because, as all businesses, they slowly migrate their software to new platform instead of re-writing all from scratch. Plus, I honestly believe that they might use some hooks or undocumented functionalities which aren’t available on .NET. But almost ANY Microsoft product requires .NET today.
Now what he failed to mention is that Apple is also guilty of the same thing. The whole Carbon/Cocoa issue is an example. A lot of Apple’s pro apps are not written in cocoa but instead use carbon, the same for some of the system wide apps.
This is somewhat normal. I honestly don’t expect Apple (nor Microsoft) to convert their applications to newer APIs all of sudden. But still, you cannot say Microsoft HASN’T a newer API because that’s not true. .NET is huge, consistent, elegant and embraces basically 95% of Windows API. If you’re developing NEW software based on Win32 today, you’re putting yourself in troubles. That’s not a MS problem as they did anything they could to provide you tools not to be forced to do that but they cannot stop you from using Win32 if you feel you should.
Directx has been a system wide service and api since win95 (though do you seriously think that directx2-5 was any good. i certainly don’t).
Well, DirectX was for sure reason for success of Windows platform as gaming platform. Of course, compared to modern APIs (like newer DirectX) it looks acient and bad but it was the foundation of PCs as gaming machines, given the better upgradbility of PCs themselves. If PC gaming market is the hugest gaming market available today, that was because of Windows and unique PC features when compared to consoles. You can’t just ignore that.
the issue is that MS has several ways for accessing the same services basically creating a huge issue with inconsistent way that devs access the same resources.
That’s true but only because Microsoft, until .NET, didn’t provide an unified way of accessing services. This is partly related to acient problems which have been solved with .NET. Now, if we compare Windows platform NOW, we have to compare to newer APIs, not older ones which are mantained for backward compatibility.
Directx itself has many issue with consistency but the api is familiar and many people know how to use it.
You said that. That’s the basis for success.
Besides Apple also had their version of these services in classic OS, you had quicktime, quickdraw, etc. It wasn’t implemented all that great but they were there and they had them for quite some time.
Unfortunately, for years Apple’s platform was a really good platform but only in specific areas. We all know Apples were great in GFX, in desktop publishing and so on but the very fact they weren’t good as general purpose machines, made them irrelevant to the market and general users.
We know (and Apples knows that too) what users want: a machine which you could use to use Excel and Word onto, which you could use for e-mails and browsing, which you can let your kid play games onto and maybe connect to your home theater system to watch DVDs. Other niche markets exists but they are infacts niche markets.
Of course, now that Apple converted to general users that’s great but your life it’s easier when you have 95% market share than when you only have 1.something or 2%.
However, I believe Jobs still didn’t catch the wave. To be popular, you should flood market with applications, pay developers to produce tons of applications in various fields, pay developers to produce games for your platform, flood the market yourself with free apps. Still Jobs tries to lock users in by trying to sell them services they won’t buy, killing competition from ISV and missing important markets. That’s not the way he will make OS X platform more popular. Time will tell.
The same api’s services are being used to develop for the iPhone. It really is rather elegant.
Sure. And that’s why Microsoft has .NET Compact Framework which is almost 1-1 (well, maybe 0.80-1) compatible to standard .NET framework.
You base this statement on what? Did the Mac versions of Office lag their Windows counterparts in any provable fashion?
No, the fact that you can buy something from eMachines for $400 is what keeps their market share small.
I have no idea what you’re trying to say here.
I believe that’s the responsibility of Developers! Developers! Developers! Developers!
Who exactly does Microsoft pay to write third-party applications for them? Apple subsidized Metrowerks’ existence for years to guarantee Mac development could continue, if that counts.
Remember Halo?
Like the ones that came with Tiger but not XP?
Yes. .Mac is truly the center of Apple’s terrible failure as a company.
I get these kinds of arguments from mouth breathing armchair quarterbacks all the time.
Apple’s business model is not the same as Microsoft’s. Quit whining that it should be. Apple lives on margins, not volume. This means that their profitability is not tied to the economy for the most part. In contrast, MS releases a not-compatible-enough OS during a recession which requires people to upgrade their hardware, and business consumers avoid it like the plague.
As API philosophies go, Raymond Chen’s “business customers are whiny babies who must be placated” philosophy is not even in force at Microsoft any more.
APIs change. Vendors of business apps are given fair warning by both Apple and Microsoft when changes come, and for the kind of money they charge their customers, their customers are entitled to believe those vendors will get with the times.
Edited 2008-04-22 16:52 UTC
But that is the whole point of the article, that business are using old code, are not fully embracing the new in-order to keep things going. the issue with that is when things break, say on MS side who do they blame? Themselves who shoul have known better than to not keep their code up to dat eor MS? They will blame MS (as they have done already with Vista. Most issue with Vista stem from third party developers not updating their software for Vista).
As it was pointed out already. Apple doesn’t plan to make any changes to the api anytime soon. Especially now that they have the iPhone using the same api’s. They want developer using their platform and so now that they have something stable and robust they cn go ahead and make less drastic changes in the api. This is still apple so you never know.
Again that is the point of the article. teh authors complaint is that apps on Ms are not consistent. This is not form a a single source, there is no consistent guideline or even roadmap for how an application should look or behave on windows. There just isn’t. Like I said the issue is because MS themselves don;t have a clear guideline for how their apps should look or act. That is the first thing that Ms should focus on.
Just like apple can’t force developers to not use carbon. Agreed. the issue is that those developers will run into issues down the line and MS will coddle them instead of doing the right thing for themselves as a company and dropping unneeded and wasted resources on something that any good company shoudl be doing inthe first place.
Directx was successful because frankly everything else sucked. Opengl was way too advanced and limited in scope for any hardware to really take advantage of. In-order for games to directly access the hardware at the time, you either had to use opengl (which most hardware didn’t support natively only in software. Not to mention that MS’s implementation purposely sucked) or 3dfx’s driver or Dos. Ms was trying to drive developers towards directx for the sake of their platforms stability (a LOT of issues with win95 had to do with legacy code and hardware support, again it bit hem in the butt. In this case it was necessary to gain a userbase).
This I agree with you on. the author should have been more objective. However its hard to compare the two api’s because while cocoa is extensively used by developers, .net is not heavily used yet because of the old api still works and is there. I perosnally think this is a bad thing but some people see it as good.
That is an issue that Apple needs to face. Though in today’s world thing are a little different, you now have cross platform productivity tools, mail clients 9though theirs is pretty good) and browsers (though theirs is pretty good as well).
And other than graphic professionals, that is exactly the audience that are drawn to macs now. Students, home users, people who want to listen to music watch dvd’s. All of these are things that Apple does well and has made in-roads and in some cases created their own markets.
Sure if you are about quantity, go right ahead and flood the market with crapware. That is no apple’s way and the fact that their sales are growing their brand strong (stronger than MS)in the public eyes speaks volumes that what they are doing is not only working but is slowly but surely gaining them customers.
Great. How many people will use it I wonder with the iPhone’s market share increasing and already huge. I see more people learning Cocoa.
Next release of OS X won’t have Carbon, so expect those Carbon parts to be Cocoa, along with their applications.
An old article* he links to, by himself on how Vista is wonderful is a much more interesting read and that was the kind of thing I expected in this one.
Here there is no technical description of the frameworks, no comparison, nothing about Objective C, no nothing.
Overall it appears as if he wanted to make clear he just bought a Mac and has converted from MS zealot to Apple zealot.
http://arstechnica.com/reviews/os/pretty-vista.ars
Edited 2008-04-22 00:24 UTC
Why Why Why did you link to page three? I did not notice that and the whole time I was thinking “wow, this guy [ars technica editor] just sorta starts in the middle when he writes articles” but then I realized that in reality I was reading the last page of a three page article.
I know, I am lame for complaining, but seriously…
I’ve just had a couple of eye operations which have meant that I need to be able to increase font-size in various apps.
I use FreeBSD 7.0 at home (with KDE 3.5.8) – changing font-size is a piece of cake. At work, with Win2K and the various apps on it, it’s another story.
Go into the Control Centre screen in Windows and there is a Font icon. Click that, and it simply gives you a **list of fonts**. Does it allow you to ADJUST the font-size? Ohhhhh, no…. Far too obvious for the Microdroids….
Windows itself has an utterly frustrating app called “magnifier” which magnifies *part* of the screen. Cutting a long story short, it is useless. It actually says that “this app provides minimum functionality blah blah blah”. Uhh, Ballmer, it doesn’t even provide *that* and is a dog to use.
Then there’s I.E. Enough said…..
The one app that I did manage to get the font-size increased in was Outlook email (after calling over the tech just across from me and having him dig into the depths of Outlook’s settings).
Now, I’m not without knowledge. I’ve gone to FreeBSD after about 6 years on Linux. I can do stuff like set up net access for darned-near any Linux distro from the command-line. FreeBSD holds no fears for me, but the way that Windows does its font-setting (when the app even ALLOWS it, that is) makes me want to join a monastery….
Arrgh…
Edited 2008-04-22 06:32 UTC
Hello
About the fonts, you where looking in the wrong place. The font icon where you add and remove fonts, not change the UI font size. That is done in an appearance dialog. I’m not on Windows now but I think it is called Display in the control panel. There you can also change the font DPI.
How well both of those methods work depends on the application. When you program an application you have the choice if you want to use the system ui font or not. As it should be. And of course, email fonts and such should not be the same as the ui font so you should be able to set those in the application.
Complaining about OE’s numerous settings seems a little odd coming from someone who uses FreeBSD and KDE…
Sure, the magnifier app may be crap, never used it.
What have Internet Explorer have to do with this? Making the fonts larger in IE is quite easy.
Then about your knowledge. I’m sure you have used Linux for many, many years and know the command line in and out but you seem to know nothing about Windows and instead of learning the basics, you bitch on OSNews.
//At work, with Win2K// Hello, 8-year-old OS? Upgrade, chum.
That I really thing that the man who wrote the article is really bored about windows. I can understand it, but saying that something is wrong beacause is based from 25 years ago idea could be a contradiction. Unix is even older.
By other hand, what I don’t like is to developed something with the preasure of a company that can throw away all its base in a couble of years, and Apple have done this.
is also a really good read:
http://arstechnica.com/reviews/os/pretty-vista.ars/1
“Java isn’t the best option.”
Amen.
Depending on what you are loading the memory it consumes on the Wind platform it can cripple traffic over a network.
Java app memory usage can cripple network traffic? Do tell.
Java based bittorrent clients might have this affect (Azureus is an example) but bittorrent clients are designed to saturate your available bandwidth.
If you have an Apple, I suppose you’ll like it. Otherwise, you can move on and read a different article that isn’t a troll.
I work at a small software house and our boss loves Macs, a lot of employees do too, infact many of us use Macbooks for work with Windows on it and have i-phones. And therefore naturally we have wanted to get into Mac programming. One of our senior developers got Xcode and tried it out and wrote a few programs for Mac with objective C etc but he found the environment not as good as Visual Studio. We might be biased due to previous experience but we found it was faster and easier to program in Visual Studio 2005/2008.
I think Windows has the best development tools, namely VS2008, it has everything you ever need.
Going from VS to Xcode is very hard. At least that’s what I found. Too much drag and drop when setting up the GUI and I struggled to make the mental connection. That’s the problem with spending close to 10 years playing with Win32 and MFC. But once you get over the initial learning curve, Xcode is really good. Especially considering that it’s free.
I develop Cocoa applications for over a year now. But if I had a choice, I would go .NET any time of the day. Cocoa really isn’t on par (especially tool/IDE-wise) with Microsoft products.
And please don’t get me started on Objective C. I’m longing the days I was working with C#.
Very good article. I tried to not get caught up in the details, but I believe the author has a point: MSFT really needs to sh^t-can the entire Windows project, except maybe the kernel. Userspace in Windows is flat out garbage – unstable, buggy and slow. GDI in the kernel? What moron came up with that? Let’s put something the user interacts with in the kernel. Smart idea…I’m being sarcastic, if you didn’t catch that…;-)
.NET doesn’t fix Windows because it’s not the development language, it’s the way Windows is built – badly. Only a complete re-write will have any hope of fixing Windows, just as the author says – like Apple did.