“Apple yesterday withdrew its latest OS X development guidelines after the document raised a storm of protest. Published four days ago, Apple posted Technical Information Note TN2034 containing advice on good programming practice for Mac OS X. Traffic on the list – usually confined to discussion of arcane programming tips – mushroomed as developers expressed their dissent.” Read the rest of the story at TheRegister, along with further explanations about this story which apparently has a NeXT background.
yes the new practices will be a pain in the butt, but OS X is a diffrent beast. it is Unix, why the hell would you use Meta Data in Unix? also, they are compliaining about how they do not want to write in Java! ummm yes you may not like Java because you rely like C++ but if your apps are going to run better under Cocca then why not program in Java? I have heared that it is 90% C++ anyway.
it is another case of Whiners not wanting to change the way they work. to bad the platform that they work on almost requires them to do so.
Carbon had better get fased out in the next 2 years cause I just know there will be some programmers who will not want to use Cocca, and Apple needs everything to be moved to Cocca so that OS X can be fully utilized.
The big deal is, you’re one of the victims of Apple’s propaganda.
MacOS X is not worth the name. Apple is trying to push all Mac developers in a new direction but my guess is lots of them will walk in another direction if they have to walk such a distance anyway.
Modern OS, duh… only modern thing I noticed was this sugar coating.
Maybe Apple’s pulling this technote is a first sign of wisdom, maybe they will start to listen? I hope so, but I’m not holding my breath…
Unix is very powerful and there is no reason that you have to use some Win32 crap to be modern. besides, it uses a true micro kernel so in OS design it is ver modern….even Win XP is not a true micro kernel
An old ‘micro’ kernel of which many say it combines all the design errors one can make. One framework based on a twenty year old design written in a language that is prehistoric, the other a revision of another 20 year old API. They tried to come up with some new callback stuff to make it look more modern, but unfortunately this new stuff is so full of bugs it is unusable. On the unix side there’s no /proc file system, some weird executable format, etc. And they managed to make it perform worse then my ten year old Classic.
come on
Tell me, what is modern in this OS?
so what. new stuff always is. but just because the older stuff is older dose not make it bad. are you realy telling me that windows 2000s API is better? that damn win32 API is the most convoluted POS I have ever seen.
what is the definition of modern? the least Posix compliant as possable?
Apple’s biggest mistake ideologically with MacOS X is to compromise the API by allowing non-Cocoa apps to be developed. Carbon was meant to be a bridge to the new ‘modern’ features of the OS, not a genuine alternative to rewriting apps. I don’t know enough about the internals but this is similiar to Microsoft’s transition from Win3.1 and the Win16 API to Win95/NT and the Win32 API. Now, you can argue that the Win16 and Win32 API’s both blow (which they do), but at least MS had the foresight to not compromise the Win32 API (Cocoa in this analogy) by giving an intermediate (Win24? ) API (Carbon in this analogy). If they hadn’t taken a tough-love approach to the developers then the transition to full 32 bits apps would’ve taken a LOT longer than it did; which, in hindsight, was an amazing feat that it happened so fast.
Basically, the fragmented API of MacOS X is the biggest mistake they could have made and something that will be a headache for some time to come. As for the definition of ‘modern’… compliance with POSIX standards shouldn’t really be a consideration for good or bad. The question of moderninity, or more simply ‘progress’, is: Does this OS, as a piece of software, make it possible for the computer to be more effective and useful for users/developers/system integrators. Considering the difficulty that Adobe has stated in porting Photoshop to Cocoa, I’d say that this API confusion counts against it being ‘modern’.
Hi Foo, I am stretching my feeble memory here, but wasn’t there an intermediate API between Win16 and Win32, called Win32s. I don’t recall too much about it – never used it myself, didn’t make sense to. Went straight for Win32 when Windows 95 came out. The thing about Win16->Win32 was that (at that time), you were still coding in the same language (C), and e.g. when you called CreateWindow() in your Win16 app, lo and behold, look at the Win32 api and there is CreateWindow taking the same parameters.
On the Mac, the situation is much worse, though I’m not sure what bee “me” has in his bonnet. Not sure what language he means by “prehistoric”. Maybe it’s Objective C. Objective C is an object oriented language, derived from C, and heavily influenced by Smalltalk. It does everything Java does (more in fact), only better. “Me”, how many times do you have to reinvent these concepts? Just because the language is >=10 years old, does that mean it’s invalid? Are you programming in an object oriented language today? If two languages support the same concepts, is one no longer useful just because it is older than the other? Or is it more of a popularity contest, to be decided by media-hype and marketing spin.
I think Jeremy is hitting closest to the mark: it’s all in the developer’s mindset. Is s/he willing to stretch out and learn something new? Objective C is a piece of cake to learn. But the Cocoa frameworks are definitely NOT so easy. Once you get used to them they are great. But, I think the twin factors of having to learn Objective C, coupled with having to learn these frameworks is a prohibitive factor for a lot of developers.
It’s a shame, too, because learning the stuff is definitely worth the time investment. Those of you poor souls who are programming with Qt, or GTK, or Borland’s VCL, or Java, or heaven help you, MFC – you will see where some of the design concepts for these libraries originated. It can be very enlightening.
you could just deny Apple and Microsoft. If you have to support them to make a living then you must do what needs to be done, but if you’re just looking to get into something then go with BSD or Linux. I personally find no fun in supporting dynasty systems.
I’m posting this from FreeBSD-5.0-CURRENT and nobody can tell me what I can and cannot do with this system (as long as I include the BSD copyright). It takes a bit more work but the freedom is well worth the trouble for me.
It is the most clueless among the computer illiterate who keep contacting me asking when I will port my apps to Cocoa. They read some marketing hype about new and modern and the next big thing.
I’m writing cross platform software so I wrote my own application framework in C++. No problem there when trying to port to either MS-Windows, X-Windows, MacOS 9 or any other OS. But MacOS X is a nightmare, carbon is broken and Obj-C cannot be mixed with C++.
The real problem is that all those OS vendors are trying to come up with API’s that lock you in once you start to use it. That’s why BeOS failed and that’s why Cocoa will never succeed. To be attractive you need a language neutral API and don’t have too many restrictions.
Now from a marketing perspective, why does Apple think it can remain so arrogant to tell all its third party developers to throw away everything and start from scratch. When a developer finds out one day that all his work spend on MacOS 9 was for nothing simply because Apple decided to go some other way, why do you think he should be loyal to Apple and learn a new language and framework and start to develop for a yet unproven platform. How big will the market be? The alternative might be to look around for another OS, after all he has to learn a new API anyway. Now what do we have, Windows? Hmmmm, much bigger market. Linux? Wow, faster than MacOS X on the same hardware, bigger market and the software you write will work on peecee’s too!
Do you get this? Apple is nowhere without developers. Ask Be if you don’t believe this. Apple should listen to its developers, if they don’t you can find out what will happen by looking at Be. Personally I’m not going to buy a new Apple computer for some time even though most of my income comes from my Mac software.
Obj-C and C++ do mix but their object models don’t, besides unless you need to maintain legacy code why would you want to ?
To all you people dissing Windows and the Win32 APIs. They are not POSIX but they ain’t bad. I can agree that hungarian notation licks balls but it does have great support for asynchronous IO, easy to use UI controls and actually a pretty neat way of handling most of things (window classes, messages and so on). But you can’t honestly compare a lowlevel C API with a high level OO API. The OpenSt… Cocoa API of OS X should be compared to either MFC7 or better .NET. Now say what you want about Microsoft but IMHO .NET is a great thing that goes beyond a simple application framework.
// muggboy
Bleach
Win32s was a libray set used on windows 3.1 by some programs,
you had to install it if you wanted to run mosaic (that’s the
first www program before it became netscape)
Apple developers need to evolve, they could program on a non changing
OS for the last decade. It’s over now… I’m really not interested
in old programs or backward compatibility.
all I can say is this:
cocoa apps run faster and are more stable than carbon apps.
period. i’m running OsX on powerbook g4 500 with a happy of 1gb of ram – so all of the apps run just fine and dandy, but when it comes down to it – cocoa apps are superior in every way. i have this sinking feeling i’m opening this topic up to a giant flame war – so I want to avoid that.
Fire and JabberFox are both cocoa – and are very slick instant messaning apps.
OmniWeb – is fast and intergrates in to OsX nicely – too bad it is worse the NetPostive+ (BeOS), it has the worse standards support I have ever scene – I actually think it is worse the Netscape 4.7. Sadly the OmniWeb programmer staff knows that have several HTML enginners who don’t even understand how to fully render the HTML languages – but because the program brilliant cocoa code they are kept around. huh?
The cocoa version of Quake 3:Arena is just … mouth watering really.
TIFFany is a rather slick image manipulation app, also cocoa.
In fact … come to think of it – BBEdit 6.5 is the only Carbon app I use that fits nicely into OS, is fast, and stable. Sadly it is text-editor – so not all the impressive.
I’m sure there are a dozen more kick-ass cocoa examples that I have never seen … (post’em!). I’m betting there are a bunch of carbon apps to that are just as good … but most of the carbon apps i’ve used look like poorly hacked together mac os X versions of their software – which isn’t a great way to lure people to the new os … unless you think by making shitty applications you’ll keep people in the land of OS 9 – which is horrible and completely silly thought.
I say we just move to the new Amiga DE http://www.amiga.com
They are really doing some awsome work. What really tickles me is the fact I can write a program once, and have it run on multiple OS’s. To me that rocks!
Not to mention that the OS itself can be intalled on various hardware/processors.
Im a Mac user right now and I have to admit, the whole carbon/cocoa thing is really crazy. And as most of you have stated, the time it takes learning, porting and rewriting dosent seem worth the effort. And as for Windows, well, i dont really have to comment on that do i? And Linux, lets not even go there!
The way i figure it, the Amiga people have the right idea. I suggest reading through thier site, especially the details of the Amiga DE. I was really blown away.
The time saved by writting a program once and being able to easily make it available on multiple platforms is well worth it.