Rhapsody in Yellow
Disclaimer: This one is going to be fairly long, and if you've been in the Appleverse for quite a long while a lot is going to feel like review... we're going to have to hit the wayback machine™ several times when talking about certain technologies. While I'll talk a lot about them, I'm not writing a book so it's not going to be exhaustive. But it should be enough, and while we'll cover enough ground to get the gist across, google & linkage should be your friend. As it stands, this could probably have been broken up, but I feel I owe my 12 loyal readers something of length to make up my... erratic posting schedule.
So... I was having a chat recently with someone about the lack of a certain software title for the Mac, which really seemed to be cramping their style. This eventually meandered (alcohol was involved) into a much larger topic:
What the hell is going on with independent development & the Mac?
It's obvious there have been changes, as others have touched upon, such as a big influx of *nix users to their developer base. But as far as big, high-quality apps... there just aren't many, and those that are being released are from the usual suspects. Nothing much new. Isn't Cocoa a developer nirvana, and doesn't the "power of Cocoa" allow one guy to do the work of 5?
This was really cool, because I already had some stuff written up which meant I could tie it together & make a blog post with a minimum of effort... which is like finding a quarter in the cushions as far as I'm concerned. Blog gold.
Since Cocoa is inherently a developer technology (which I'll go into further later), it'd make sense to start with the developers themselves. It's virtually impossible to get accurate developer statistics for the mac at the moment, namely because Apple, for whatever reason, doesn't want you to. Sure, they'll release 'select' blurbs that have high numbers, but they're so impracticably vague that they might as well be claiming every mac user is a developer since a copy of the developer tools come with every Mac.
I wish I was kidding. I have a several damn pages of hashed out numbers where I tried to distill the available info into a decent guess via inference from available info with a developer pal several months ago. It became obvious my effort was a pretty complete failure, although it was a fun mental exercise. There were too many missing variables without making some phone calls to get anywhere close, and racking up long distance for a blog post would have been a bit silly.
For whatever reason (you can prolly infer), Apple just doesn't want people to have hard developer numbers. I will say that I'd be very, very surprised if there are more than 10,000 developers earning their bread coding for the mac, and if I was a betting man I'd peg the number even lower. Which isn't to say there is some dire shortage developers, more it's about recognizing the limitations of what we know, versus what Apple knows. If you know, tell me.
I'm not a developer by trade, but because of how I earn my bread I run in a lot of their circles, and even if I didn't I like to keep my fingers on a lot of different pulses so I'm able to form my own fuzzy picture of what's going on. Lately, when it comes to Apple's development base, that picture has gotten both clearer in some areas and fuzzier in others... and hence, interesting as hell.
But then again, it always has been. Apple historically hasn't had a good relationship with developers (which we'll touch upon later), and while I'd have to do more checking than its worth, I wouldn't be surprised if Apple has had the most cantankerous developer relation of any OS vender evar. Some of the current stuff is sour grapes, but lordy have they burned some bridges in the past, with one developer I encountered several years ago saying (paraphrasing):
Discontinuing my efforts on the product wasn't an easy decision, and there were several factors and taken as a whole lead to it:
- 25% was due with the shrinking user base for my type of product
- 25% had to with the current outmoded architecture for my type of product, and I really don't know when they will actually ship what was promised. I prefer using the mac, but NT has those features now
- 50% is about never wanting to have to call Apple again. It is impossible to get anything out them even after paying exorbitant sums unless you are one of the big big apps. I have no illusions that Microsoft really cares about my company but they at least buy you dinner before asking you to drop your pants.
Why is that interesting? Because if the pulses I'm hearing are sound, they've made some serious inroads into changing that perception.
Apple guys are extremely helpful in a lot of the mailing lists, more responsive to bug feedbacks and giving workarounds, documentation has improved (it still has a long way to go, but you can tell it is a question of manpower now, not will)... for the most part, across the board, Apple is not only buying people dinner they're often leaving a little mint on the pillow for when you wake up.
Many a developer is taking a gander at MacOS X and liking what they're they're seeing:
- For free
Every single copy of MacOSX, and every single Mac sold comes with Xcode, an IDE which which can hold its own against many of the commercial packages out there. Also included is Interface builder, an extremely elegant tool for rapid GUI development. For free. To compliment those development tools is a decent, cross-platform compiler for C/C++/Obj-C... free.GCC isn't the fastest on any platform and it has some severe speed problems on PPC (not going to rehash my old GCC rant), but it's there, and a known variable. And, again, free. Yes, the compiler is open source, and can be had for windows, but there is a mindset in including it with the computer that just isn't the same. This is, bar none, prolly one of the coolest things Apple has done in a long while.
- !#
Just about any scripting language your heart desires is going to be available to you. Well, not just available to you, most are available in some form on Windows. But they are included, and integrate well. Python. Perl. PHP. Ruby. Installed by default. Slick. - SELECT *
Front-end guys are arguably getting kind of screwed with the mac at the moment, but back-end guys are happier than they've ever been, or ever could have been if Apple hadn't gone the *nix route with their OS. In addition to the scripting languages mentioned above, you're talking: MySQL, Apache, Tomcat, PostgreSQL... it's all there, and if it's not, it's prolly on the way. You can run everything I just mentioned on windows, but the shoe is suddenly on the other foot, and you feel as though you're running a port. The tech started on *nix, and that's where it swims.No, it's not perfect yet, and not everything is included by default, but getting up & running is much easier. This is something that is hard for a lot of windows users to relate to: you can just tell when something is a port, and not really in its environment but being shoehorned into another. It might be acceptable, but it doesn't make you go Ahhhhhhh. The backend guys are prolly second only to the video guys in the lack of drawbacks in paddling over to the mac end of the pool. Powerbooks instead of desktops are often a real option for these guys, and they do love that sexy kit.
- Java
Java really doesn't suck. Honest. To most mac users it does, as they're generally used to something like Limewire, that starts slow as hell, runs slow as hell, and just doesn't feel right. Or having it embedded in a website that isn't just java applets, but ties those applets to activex/liveconnect controls that make it all but unusable on an alternative platfrom. Love it or hate it, Java is going to be around for awhile, and it's taught in a hell of a lot of curriculums. And Java doesn't really suck, but java apps with GUI's (egh, Swing) often can.In the case of a GUI-less back-end, it can be a really, really slick, and once everything is running, you don't really lose much speed. And it allows for enormous freedom: as long as the platform has a VM, you can move to it or add a box with your app on it. Linux, Apple, Microsoft, Solaris, anything. And Apple actually has a very nice VM.
No, it's not as fast as Microsofts. And yes, the MHz problem hurts its usage. And yes, there have been issues with it being a bit behind in the versioning. Quite a few of them, to be honest... 1.2 especially really hurt Apple's mindshare. But the versioning problem has largely been ironed out, even if the releases still take a little too long, and there are some really nice technical advances Apple has contributed. Apple is a credible platform for java development, no matter what the target OS, and is a very sexy platform for mobile development.
- Mocha
...Or, Java + Cocoa. This is something that's of interest to me, and I've been trying to follow it for awhile. Java as a syntax really doesn't suck, and there are a hell of a lot more developers out there who know the Java syntax than are familiar with Obj-C. It isn't to say that Obj-C is some nightmare to learn, but rather that in allowing the use of Java syntax en leu of Obj-C for Cocoa development, a developer moving towards the mac is able to get up and running that much faster.They're already going to be spending most of their time learning the idiosyncrasies and nuances of the frameworks. Removing the hurdle of the syntax for developers who are interested in getting their feet wet with the mac is a really good thing™.
- Chai?
Java isn't the only language being tied into the frameworks, and Apple seems to have taken a bit of the page from Microsoft's .NET here (or perhaps Apple did it first, I dunno). Basically with .NET, you have the CLR runtime of APIs, and for the most part can access them in an entire host of language syntax's. C#, VB.NET, etc. Apple has done some of the same, by bridging other languages to toe frameworks. There's a bridge for Perl, Python, and others... and they're being used. In some cases not by many, but they are, and you could well be using one of these apps and not realize it.As an example, fire up one of the newer BitTorrent clients and you'll see python running in the background. Syntax can be a pretty personal thing, and if you have a large Python knowledge base, the idea of being able to translate that outside of places you may have normally been able to apply it, well, very cool. I may sound as though I'm repeating the Java thing, but this is something I've heard come up many, many times when I'm chatting up developers: they like the fact that OSX, by bridging their weapon of choice to the frameworks, lets them capitalize on their knowledge base. This isn't to say that there aren't GUI Python (or other language) bindings & such for other platforms, there are.
But there is where you come back to the Cocoa frameworks, and the value they add. It's nowhere near 100%, but not shoving Obj-C down their throats is really making these guys take a look. This also isn't to say it's perfect, it's not. It's not quite as pervasive as .NET. There are things you are going to have problems accessing via languages other than Obj-C, depending upon what your needs are. I've checked in without developers to be confident in the statement that while Obj-C is cool and all, and I certainly don't have a problem with it, the value is in the frameworks, not the language.
- Unix is expensive
...at least traditionally. Apple missed the first Unix gutting at the workstation-level by the bottom-up OSs, due to not having a technically competitive OS. WindowsNT pretty much sucked up that share, as companies like SGI found out the hard way. Linux has pretty much eroded the the server share, as its lack of a competitive GUI wasn't really a hinderance. Even now, the traditional Unix's are only generally used because if you need it, you need it, if off-the-shelf hardware couldn't do the job, or you needed things like 64-bit.But while a huge chunk of that shift has already passed, that shift is still going on, and Apple isn't above scavenging on the carrion left behind. The introduction of the 64-bit Opteron and the G5 have, hopefully, started a second but smaller wave, and apps that didnt migrate to NT but to Linux are ripe for porting to Mac OSX via Apple's implementation of X11 being very viable. Things like IBM's announced XLC compiler and Fortran compiler for PowerPC are removing more of the stumbling blocks to the scientific market.
- Protected memory
This one seems kind of trite if you haven't been developing for a long time, or are new to the mac, or come from a background where it's just a given. It isn't something that people talk about much now, but paleo-macdevs still hurt from it. Developing for the Classic MacOS just sucked compared to what else was out there towards the end.If you aren't a developer, stop and think about how when Internet Explorer 5.0 used to crash in OS9, your entire fsck'ing computer would lock up, requiring you to reboot and having to run a disk repair program to make sure things were kosher, etc. You also either lost some of what you were working on, or had to get "back to where you were". Now imagine having to do this 50 times a day because, you know, you are debugging. If you've ever developed a web page, imagine having to reboot your computer every time you preview the code in the browser. Not fun times.
I'm sure I could go on, and I'm sure I'm missing things. There are of course other ways of developing for OSX, and a more exhaustive list can be found here. But you should be able to get the gist: Lots of developers are looking at Apple in a different light, and getting interested.
So everything is all rosy, right? Well, not quite, although all of the above is excellent. If you'll notice in the above, most of "successes" I've mentioned center heavily on the Unix side of the pie, or are related to Apple having an OS based upon a *nix.
What's missing? Few Windows developers are making the jump.
Now this doesn't mean none are, just that as a ratio, when you realize just how many developers MS has on their fence, and how many have come over... something is prolly askew here. Is this a problem? Depends on who you ask, I guess. But for the sake of my carpal tunnel I'm going to assume it is, and go from there. Since we've identified it as a problem, what's causing it?
Several things come to mind:
- Lack of an entry-level language
There are few things I hate more than a $10-$19 shareware program that essentially does nothing but take a few arguments and appends them into a string as and passes them to another application viaNSTask. Hell, I can do that, and I'm a retarded monkey when it comes to coding. But something I hate even more are RealBasic apps. Some of those apps make me want to cry like the baby jesus.I'm not going to start bashing Real Software or anything of the like, but it's a fair statement that if the app is made in RealBasic the chances of it sucking go up by several orders of magnitude. Much of that has to do with the vastly lowered barrier to entry, both in the language and in what Real handles for you. There's nothing inherently wrong with Basic, things like VisualBasic are good IDEs. Some of the programmers I've worked with (IMHO) and hold in the highest esteem use VB, although most of the good ones are hankering to move to C# post haste and they're using it because that's where the work is.
There are probably hundreds of thousands if not millions of people out there using a form of Basic, whether RealBasic, VisualBasic, VB.NET or others. I wouldn't be surprised if RealBasic itself has a mac userbase of several thousand. There's a market there. You could say RealBasic fills that niche, but I'm not going to go there. It doesn't. A VB-style syntax accessing the frameworks through Xcode would. Keep reference counting for memory management if you have to. Whatever.
- Limited talent pool
Everyone talks about how Cocoa will deliver your kids and all, and it really is some great tech. The problem is that very few people actually know how to develop for OSX well. Apple themselves isn't excluded from this. NeXT didn't exactly have a huge user or developer base, and it's no secret a pretty big chunk of Apple had to go for training. A lot of the earlier apps kinda reflect that. I'm tempted to say some of their apps still reflect that.You also have the problem that with the current OS, you're often not just talking Cocoa, you're talking Carbon. Big chunks of OSX functionality need to be hit through an alternate method, depending on what you're doing. Things like, oh, Quicktime. Moral of the story, even if you wanted to go out and hire 100 crack OSX developers tomorrow I'm not sure you'd be able to. This raises the barrier to entry to a company who decides they want to enter the mac market in a timely manner in more ways than one. Bit of a vicious circle here.
- Dev DDT
Namely, the chicken & the egg problem. Developers want users to sell their software to, and users want software for a platform they choose. If there aren't enough target users to sell to, the opportunity cost for porting/creating their app for the mac is too high. If a user needs an app that a developer hasn't ported because there aren't enough users... nice circular dependancy there.One of the things mac users just love to point to when market-share figures come out is that yeah, will a billion PCs were sold in the last month, how many of those are actually viable desktops for developers to target? I.E., a ton of these will be blank boxen rolled out in corporations running Explorer & Office and that's about it.
Ok, that's valid. But it works both ways. There are ~10 million macs around the world running OSX. How many of those are spread around K12/university labs or other like place? I wouldn't be surprised if you're talking 15-30%. No I'm not saying the sky is falling or any other such thing, but it's also no secret that the mac base just isn't growing like the PC base at the moment...
As an example of the above, a little while ago I ran into a company recently who was going to be doing a vertical-market app for the cabinet/CNC/interior-design industry. For the sake of this, let's call them Acme company.
Acme company is starting to look at a linux port as 'they've been hearing things about it' and part of the . For whatever reason, I started talking about the cocoa frameworks in an abstract way and fired up projectbuilder and mentioned the term 'free'... they really took to it, so I sent them to Apple's dev site to get an idea of the arch, etc. This was more of a lark than anything, and they were "SUPER interested", but basically said "It's really really cool, but no way. None of our clients use macs, the whole industry is windows".
Since none of their clients are using macs, and they just get an occasional call about a mac version, they really can't justify a mac port just to go phishing, as you know, not everyone is as desperate as Corel. So mac users are left without this app to get their Feng Shui on. On the bright side, I got several beers out of it.
There are two quick things to clarify here:
- They could have been up & running to make a Cocoa version for less than $1k, assuming eMac + Ram + free dev tools. But actually getting someone who could handle the code, could translate the raster library to something on the screen as well as translating the DirectX stuff to OpenGL... you dont even want to upper range of pricing they were being quoted by just about anyone wouldn't be learning-on-thejob, and even then the time-tables were iffy. For a small company, not gonna happen on a lark. Part of that has to do with the fact that they're taking advantage of off-shoring, and the other part is that getting decent Visual C++ guys to smack it together (in the USA) would cost about the same, but for, well, the other 95% of the market. The opportunity cost was just too high.
- Vertical may be a poor choice of words, or at least can conjure the wrong image, as people often associate it with $20k stock-market apps or Maya plugins or the like. Niche can be more appropriate, and basically spans that isn't mass-market. Most of this stuff isn't very sexay.
We're talking about apps that interface with sewing machines and download patterns, apps that keep track of soccer statistics for a team (not fantasy games!), tools for making cool Flash stuff, web marketing tools, media compression tools... gazillions of small little markets. And due to share ratios, if there are 5,000 x86 users for a niche market, if its not directly related to one of the macs core markets, chances are there's only a base of ~300 to sell to on the mac. For a $20k vertical app, the user prolly won't care what machine they have to run it on. For a $49, they will.
This isn't saying anything new to anyone who's been around the mac for awhile, but it's started to get a bit exacerbated lately. The loss of Framemaker is going to make people I know have to move to windows to get their stuff done, yet it's still available for Solaris. That's a big wtf. Some are trying to figure out some kinda-insane workarounds, but it's fairly obvious they're going to have to buy a PC to get that stuff done. Palm has dropped mac support in their upcoming OS. Adobe's not exactly making a lot of friends in the mac community, and I swear to gawd I'm not even sure Dreamweaver 2004 shipped with the gawd-damned debugging code removed. But I digress.
The chicken & egg problem is getting worse, and is probably the largest problem on software makers minds. The economy is picking up again, but Apple's unit sales aren't really showing it. I've spent a reasonable amount of time going through Apple's Q1.2004 earnings, and they're a little disturbing. That's a whole other blog post in the making, but some of the highlights:
- Apple only showed ~5% unit growth in computer sales, while the rest of the industry showed a bit less than 15%. Part of the problem with this is that most of the growth is taking place on the low-end of the market, which is probably an indication that we've seen a downward price point shift.
- The G5s are still squarely in the problem area, especially considering the very hefty marketing efforts pushing them lately including big rebates, etc. They actually did worse than I thought they would, selling about 174k units. Apple is going to be working on some "intense marketing efforts" to fix this.
- The iMac and Powerbook are doing pretty poorly, with the iMac showing a 15% drop in sales from last year, and Powerbooks showing a 20% dip between quarters. The revenue dropped on the Powerbooks was less than 19%, which prolly means they've been able to push up the margins since the tech is a bit long in the tooth. Even stranger, the iMac sales are still lumped in with the eMac sales, so we don't really know ohw poorly the iMac is doing.
- Japanese & European sales are down. Way down. Europe was down 22% for the quarter, and Japan was down 29% for the year. That kind of a drop is more than a little disturbing.
- The iBooks are doing... ok. They showed flat growth between quarters, but a 50% jump from the last year. More interest was that Apple didn't seem to really know why they had the jump, or at least the analysts weren't buying their pat explanation which was a repetition of the phrase "G4". This was actually an interesting point of the call, with analysts wanting a more concrete explanation as to what was actually going on (as well as with foreign sales), with Apple really not offering much. The phrase "trust us" was made, and was a little disconcerting. I don't think we've heard the last of this, I know it disturbed me.
- The iPod is making up a hell of a lot of their profit, and saw a 900% growth year over year, but only 10% growth for the quarter. Interestingly enough, they didn't want to give exactly figures for iPods or the iPod Mini for competitive reasons... but they did say they are able to meet the demand for the current iPod, but can't for the Mini just yet. The iPod demand leveling out could piss off HP, but the writing for iPod isn't on the wall yet, and HP being able to push the iPod into foreign areas Apple doesn't have access to should be interesting.
- The interest on cash stockpile is making up more of their profit than it should, but it has for awhile. I think you're going to hear more & more rumbling about a dividend soon.
- Higher-education share grew some, but nothing major.
- I don't believe it was mentioned at the call, as its newer data, but Apple's share would appear to have dropped below 3%
- Apple is "aware" that they aren't really paricipating in the current personal computer growth, but as others have noted, they've made the conscious decision not to compete in the low-end arena where all the growth is occurring. They made several statements you could tell they were hoping the press (and mac users) would pick up, such as "...it's hard to tell if anyone is making money there anyway" (paraphrased), but this was... disturbing. More disturbing was that they didn't really have an answer to it.
- Just to hit this point home again, Apple didn't seem to have a whole lot of real data about what was really going on in a whole lot of their personal computer sales areas and the term anecdotal was used enough that people were repeating the question.
Considering the current climate (economy improving, overall personal computer market showing growth, and spyware/worms/viruses gone mad on the windows platform), Apples stunted computer sales are worrying. Sure, certain conditions could be more optimal, but Apple can't expect to sell computers during every economic bubble. The long and short of it is that the userbase isn't growing very well.
Cue the part of the conversation where people start talking about BMW's share of the market, and how marketshare doesn't really matter. I love analogies, but anyone who says it doesn't matter just really doesn't understand the network effect or Reed's law.
Now Apple must surely be aware of some of the more obvious gotchas I've mentioned above, and surely their current developer strategy, right? Cool, anyone happen to know what it is? Do me a quick favor, and google on "Apple Developer Strategy" or just click. Check out what shows up.
When you recover from the 1996-1998 linkage, you might try googling on other things from bits the first search turned up, like "Apple developer adoption program" or other things. Best of luck, but you may end up reaching the conclusion I have: Apple doesn't seem to really have a laid-out developer strategy, much like its M.I.A. security policies (tell me, how long will 10.3 have security updates when 10.4 is released? 10.2?).
So since we don't really have anything from Apple to go on, we're going to kinda have to infer:
- Use Cocoa as a competitive advantage for RAD development on the Mac. Theoretically this allows one to get cool shite™ up and running faster for complex apps, and gives Mac developers a competitive advantage over other platforms. Examples of this might be FinalCut Pro, iPhoto, iDVD, Motion, GarageBand, Keynote, OmniGraffle, Omniweb, etc.
- Try to make it fairly easy to port from other platforms to the mac, but even that is fairly secondary. They'd really prefer you're writing mac-specific versions, but hey.
- If there is a gap in the mac market, and Apple considers it strategically important, they'll step in and do it themselves if others don't. Well, and sometimes if others do, but Apple thinks they can do it better, they'll step in. Or if Apple just wants to have more direct control of that market. Well, ok, really anything is fair game. You've been warned.
- If Apple decides a specific market is strategically important, they aren't above acquiring some key companies and then making it... fiscally inconvenient to not buy the mac version unless you switch apps altogether.
- Where possible, leverage OSS & Open standards by taking an existing project or technology, polishing it in some way or another and releasing it into the wild under a spiffy new code name.
Essentially, Apple's ideal is to have 3rd parties creating native high-quality software for the mac, preferably doing things you can't do on other platforms. While they've had decent success with a few of the "strategies" above, none of these seem to be making a dent in the problem we're talking about... and they've been in play for long enough that if they were going to do their thing they'd, well, I wouldn't be annoyed.
This isn't to say that there hasn't been massive value in what they've done, only that, in the context of this particular problem (switching users) has been a failure. Not a complete one, but I'm not really into lowering the bar when you don't make it.
Speaking of bars, that brings to mind an old adage that no one ever says unless they've had enough white russians in them because, well, it's kinda hard to pull off:
"When your opponent is holding all the aces, there's only one thing to do. Kick over the table."
When it comes down to it, Apple needs a disruptive technology in its developer strategy. Not better technology. Not cool technology. Disruptive technology. Apple hasn't really had a disruptive technology in awhile in any form until recently unless iTunes pans out. It's really been quite the drought, and it isn't helping much that google's handing out down the street basically handing out disruptive tech and business models like they're AOL CDs.
There's a reason why disruptive technologies are few & far between, created either by geniuses or someone who happened to be in the right place at the right time. They're often the dark horse in the night, and overlooked until *boom* it's obvious everything has changed. Since I'm neither a genius (I have iQ tests to prove it) and my personal history has shown I'm perpetually running late, I have no disruptive technologies to offer.
But its fair to say that doing the same thing over and over will result in the same outcome over and over, and Apple's current developer strategy is not going to change their current chicken & the egg problem. And the chicken and the egg problem leads us straight back to developers, as they are somewhat inversely proportional to users.
Basically, getting 5 developers onboard increases the value of the platform more than 5 users does. There's a reason why Ballmer was out on the stage screaming "Developers! Developers! Developers!", and while the sweaty video passed around on the web isn't exactly conducive to his argument, the message itself is pretty sound.
Since we've looked at the problem, and looked at what they're doing, it brings us to the crux of that matter: How do we get more developers on board? A lot of things are new on the developer front at the moment, so lets start at the beginning, or rather the last time Apple had a developer strategy.
Namely, Rhapsody.
Yep, hold onto your iPods, we're about to step into the Wayback Machine™ and go retro as hell.
Ahhh.... Rhapsody. Few words will instill loathing in an Apple developer more than that word. QuickdrawGX prolly comes close, and OpenDoc prolly qualifies. But Rhapsody left a very large chunk of Apple's developer base pretty damned pucker-mouthed.
Sure, I could rant about the poor developers who dropped $5k+ on tricked-out dually 200MHz 9600's to develop for OSX. But let's just put it this way: these developers dropped serious money down for kit in 1997 with the full expectation that they were going to be releasing software for the kick-ass new OS soon... the kick-ass OS that had a public beta in 2000, but was released in 2001, and was so immature that there was a free upgrade to 10.1 late in 2001, and was still so immature that most 3rd parties waited for 10.2.
But wait, you say, everyone has screw-ups. Stuff had to change, stuff came up, shite happens, and so on. Fair enough. But for a lot of the old timers, this was, it seemed, the last straw. Apple did have a sort of RDF while Jobs was gone, and were able to convince a lot of people to pour effort into various technologies that died on the vine. They'd been screwed on so many technologies, that Rhapsody was seriously starting to look like another Copland to the world. There's a reason why 10.0 was such a poor release, Apple had to get something out the door. People were literally starting to wonder if they'd ever ship. Again. Uncool.
You'd be well within your rights to ask why the hell I'm going on about this. Or, if you're the type of person who frequents my blog, why the hell I'm rehashing this. It's simply to reiterate just how badly some developers feel towards Apple. Apple has never, ever been considered to be a developer-friendly platform, quite the opposite really. Arrogance, and a feeling of deigning to allow you to develop for their platform come to mind... almost as though they considered it a privilege.
Developers had already been treated like cattle for Apple to herd as appropriate for ages, but the promise of Rhapsody was so strong that much of that was either chocked up to "Bygones" or "Thank you sir, may I have another". I'm not kidding. Mac OSX is cool. Rhapsody was insanely great™. The promise was so strong Apple saved almost $5 million a year in energy costs alone for several years by being able to turn down the dial on the RDF field. Rhapsody had developers for other platforms buying macs simply to use get in on it.
So what was Rhapsody, and why did it inspire such developer wood? Some people say it was a product, some people say it was a strategy, but really it was both. Back in that time, Apple was in... fairly dire straits as far as their OS was concerned. The writing had been on the wall for the Classic MacOS OS for years, and Apple had had failed attempt after failed attempt in creating it's successor, sometimes with some very large partners who they're still working with.
Operating systems were entering a new phase: new world & old world, modern & quaint. A line had been drawn in the sand between what constituted a "modern" OS, and what didn't. This was the time of Microsofts WindowsNT and IBMs OS2/Warp, and Apple desperately needed to be able to haven an OS that could be lumped in the modern category.
It's current OS was exceedingly long in the tooth, and while it had served Apple very well (and still continues to serve millions of people well), it was very much entering the Elizabeth Taylor era of it's life. With enough surgeries it looked ok, and sure it stood up and looked around every once in awhile, but it didn't seem to always know where it was.
It's current effort at the time was Copland, and it was an abysmal failure. My impression is that this wasn't due to the quality of the coders or in-house talent, but rather the technical demands placed upon them in creating the new kernel. Either way, it can't be stressed enough just how badly, and publicly, this project crashed & burned. As an example, some are asking if Longhorn is Microsoft's Copland. Ouch. You really don't want your project entering the tech lexicon once many have forgotten what it originally was. Even worse, the failure of Copland was coming on a series of them.
At this point, Apple didn't really have any confidence in the OS coming from within, so had to look outside. Apple had several different options, including, but prolly not limited to:
- WindowsNT
Basing the MacOS on the WindowsNT kernel, which they would license from Microsoft. This seems completely brain dead now, and I'm sure some new kids on the block think I'm making this up. But this was a different time, and Microsoft had ported WindowsNT to PowerPC, specifically the CHRP platform (which seems to be getting new life from IBM lately).
I don't recall why this one didn't go through, as things were in such dire straights that the mac faithful would have rationalized this somehow. I was ready to.
- Be
There was this uber-cool, technically-advanced OS called Be that existed for the PowerPC and was created by an ex-Apple exec who was known forhis delusions of grandeurbeing a bit "high strung". Be was pretty damn unique, and arguably the shizzat of OSs on the market.
Outside of the Amiga, this was an OS born with multimedia in mind from the start. It was also one of the few modern OSs built from scratch (this is hard), and deserves its due. I could go on for ages about what put Be into the damn cool shite™ category, and Apple heavily considered buying Be. Next to NeXT, it was prolly it's most promising options if you assume pride was a factor.This deal died because of some demands by the owner who seemed to be caught up in some irrational exuberance, and the fact that Be was very immature for Apple's needs. This "immaturity" may have been somewhat exaggerated in the hoopla surrounding the choice they did end up going with, but there's no denying Apple's core market (well, it was then) was going to need to, um, print.
- OS9 Reloaded
Well, refactored. There was the option of "back-porting" several of the most direly-needed "expected modern OS features" to OS9, namely protected and memory and preemptive multitasking.
This would have been incredibly painful and a glued-together hack job, but it was theoretically possible. Luckily, this was shelved, although due to delays in Rhapsody some of this did take place, like a multi-threaded finder (which, I swear to god, we might have again in 10.5).
- Linux
Apple had been playing a tad with Linux for awhile, there was even something called MKLinux that ran on PPC. They'd also experimented with AU/X. But the Linux of 2004 is not the Linux of '95 or '96, and the amount of work it would haven to get it to where it is now, for one company, was more than a little daunting.
Still, taking Linux and adding everything to it that Apple would need just didn't feel like an option. You also had the fact that the GNU was still somewhat in its infancy as far as companies were concerned, and the BSD license was considered a lot more corporation-friendly.
- NeXT
When Jobs had left Apple, he went on to create a new computer company that arguably engendered the most hype ever to befall a computer launch: NeXT. I could go on and on about NeXT too, and it deserves every kudo you could throw at it.
In all honesty, the history of NeXT is worth a read if for no other reason than to hear some of Ross Perot's juicy quips or some of Larry Ellison's statements from the time. Or on just how much their logo cost. I love that stuff.Long story short, NeXT was very Apple-like, in that they had both an OS and hardware. The hardware, while insanely great for it's time, died. NeXT transitioned to standard x86 boxen, and proceeded to create OpenStep. More on that later. It was Unix-based, which meant it was kinda the Linux route but with a huge leg up. Suffice to say,
NeXT bought AppleApple bought NeXT for $400 million, and proceeded to get started on their next-gen OS: Rhapsody. - The Amiga
This wasn't really an option, but I swear to god I heard it proposed. Sad, sad Amiga.
The early days of the transition to Mac OSX were rough. Really, really rough. There are better places for a more accurate blow-by-blow for what happened, but the strategy was basically this:
- Port NeXT's OS to PowerPC
- Slap a Classic "platinum" MacOS interface on top of it
- Make NeXT's APIs (application programming interface, these are routines developers call to say, make a new window) the new standard, with the old crusty MacOS routines being put out to pasture. These were the YellowBox APIs.
- Run the Classic Mac OS as a separate process from with Rhapsody, so that people were able to run their run their current applications in a separate window, similar to VirtualPC. This was the BlueBox.
- Pray.
But wait, there's more!
NeXT had already dropped its hardware, and when Apple bought them was running on X86, using an interesting strategy: They sold an OS, and they ported their application frameworks to several OSs, allowing one to create an application on their box running NeXTs Openstep, press a button and have one for WindowsNT or Solaris come out.
You could even do things like Quad-binaries, or dual-binaries, which was somewhat similar to what Apple did with their 68k to PPC transition. What looks like one application to the user, but actually has two separate code bases inside it.
Apple now already had an OS that ran on X86, because Openstep did and really they were porting from x86 to PPC. They also had the same ability that NeXT had for cross-platform development. The idea was to ship Rhapsody for both PowerPC and x86 hardware, which Apple might themselves release. This would have meant that if Apple had two different types of CPUs on the market, a developer could hand you a dual-binary app that would load the x86 code if you had a pentium inside, and the PPC code if you had a PowerPC inside. This also meant that the developer could spit out an app that they could hand to a WindowsNT user and they could use it natively. This was basically the "Yellow Box".
It both went very well and very poorly, and Rhapsody (Mac OSX) was so delayed it engendered class-action lawsuits). But it did ship, just on a timetable that prolly would have allowed them to take any of the other options and do it in the same amount of time.
Several things happened:
- They had a full-scale revolt from some of their largest 3rd party developers. Most developers were in awe of what Rhapsody was going to bring, but some of these developers had been burned too many times. The current Rhapsody strategy would have caused them to have to rewrite their entire apps to have them run natively.
The mac's share of the market was already having problems, and there was a full-blown onslaught from WindowsNT on some of their core markets... and Adobe, Quark, etc just really weren't loving the idea of having to rewrite their massive codebases for an unproven OS that was seemed in no hurry to ship. Because OS8 and OS9 weren't going to go away over night, they'd have to support three code bases: Windows, and two code bases for a minority OS. But wait, you say, they'd only have to support one and let the other die? Theoretically, but no one was counting on that.
- I mentioned the Classic MacOS would be able to run as a separate process, but within its own window. This was called "the Blue Box". Users really, really weren't digging this, primarily because 99% of the apps they'd be running would be running in this compatibility window.
- Windows95 had morphed into Windows98, and had arguably eroded even more of the day-to-day differences between it and the MacOS interface, including things like plug-and-play and wizards galore. You also had the problem of true preemptive multitasking OS not leaning itself to an interface that wasn't designed for one... The MacOS interface was starting to look decidedly unsexy, and even, dare-i-say-it, globbed together and long in the tooth.
In order to deal with these, several things occurred:
- The first, or Yellow Box, was handled with Carbon, which was a huge, huge deal: They took the old MacOS APIs, ripped out a chunk that were just way too crufty to consider bringing over with an OS like MacOS, and ported them. Apple's line was that developers would only have to change 10% of their code on average to have a working app. This of course ended up being a tiny bit to some, and a big deal to others... but either way it was kind of a load. Sure, they'd run, but they'd run like crap as developers soon found out. Some of them haven't, which is why we still have the occasional Carbon app using CPU while idle because it is constantly polling.
- The second, or Blue Box, was solved via the Classic environment, which was distinguished because the separate window idea was abolished but apps instead ran as though they were dated-looking regular apps. This hurt compatibility a bit, but really helped the whole experience.
- The 3rd was handled with Aqua & Quartz, which arguably did more to harm the speed perception of current macs more than any MHz problems could begin to. Don't get me wrong, I love Aqua, but there's no arguing that Aqua is tomorrow's tech shoved onto yesterday's hardware.
But Apple did actually ship two releases of Rhapsody, both DC1 & DC2 in 1998.
Rhapsody DC2 was the last version of Mac OSX to run on X86 hardware, but that feature was axed later and made PowerPC only.
The cross-platform frameworks were similarly axed, meaning while you still got the frameworks, you weren't going to be handing your app to someone on Windows and having it run.
Some people weren't completely surprised.... Rhapsody DC2 had engendered a lot of excitement, but really the entire OS was so delayed at this point, and had already been repositioned with new life being breathed into the Classic MacOS that people were wondering if anything would ever ship... and there were other signs of problems, what with takeover rumors and the CHRP platform.
When MacOS X shipped, people had an arguable case as to whether Apple had made the right choice with NeXT. Everything was just so... incomplete. And rough. And slooooow.
They most certainly did make the right choice. Part of me still wishes they would have bought Be, Inc. a few years ago, if only so Palm didn't end up picking it up for $40 million and a twinkie. The big things Apple got from NeXt that are applicable to what we're talking about are:
- *nix environment
You'd be hard pressed to say this hasn't been used effectively by Apple, as illustrated by the backend, scripting & traditional unix guys I mentioned earlier who have gotten very interested. Sure, there are things they could be doing... but it's brought tremendous value to the OS that arguably wouldn't have been there with some of the alternatives. I know this is what kept me: I had a seriously wandering eye there for awhile, and it just so happened that having#!/bin/shandssh -2that I can access through a native terminal shell went way up on my priority list. I see guys carrying around Powerbooks & iBooks at various groups that wouldn't have looked at them if it didn't. - Openstep Frameworks
Well, we have Cocoa, or the Cocoa Frameworks, which is essentially what the "Yellow Box" was supposed to be, minus anything cross-platform. None of the real value inherent to a developer as far as using Cocoa has been removed, you still get a great RAD environment for prototyping your software, interfaces, what-have-you. But it's on Apple's hardware alone, which goes back to the chicken & the egg problem, and it should be obvious as to where I'm heading with this.
No, I'm not advocating for Mac OSX on x86 hardware, that's a whole separate issue and there's an obvious fear there that it would just destroy Apple's hardware market if they shipped it for generic x86 as planned. It's actually a very valid argument, as I've found the next laptop I want right now and it's not made by Apple (it does, however have a 2GHz+ AMD64, higher-rez screen and every goody I'd want for $1k less...), as Apple only competes in 1" thick laptops. Apple just isn't making what I want, but I'd like to run Mac OSX... I can't be the only one, and I'd have to think lots of us would raid their hardware sales something fierce.
What I'm throwing out there, after talking to a lot of developers, is that they bring back one aspect of it: the ability to port your app, with a minimum of fuss, to other platforms by choosing to use Apples Development tools and OSX (hence, mac hardware) as your development platform.
Depending on who you ask, Java has 1 to 4 million developers programming for it, so we'll assume 2.5. I know guys who develop for Java on their powerbooks, even though 99% of their userbase is on x86 and Solaris. They have like literally less than 5 mac customers using Xserves. This brings 3 things to mind:
- This isn't a native MacOS X app, refactored into a cocoa codebase, yet Apple has sold at least 3 Powerbooks to these guys (one still uses an IBM thinkpad) simply because they support Java. Without Java's cross-platform capabilities, that's 3 Powerbooks that wouldn't have been sold. There's benefit there.
- Their app, while Java and can theoretically run anywhere, is fairly complex and they do need to "certify" platforms before they deploy as there is some platform-specific stuff that needs to be done. They would have been in the "if enough people ask, we'll look at it" situation.
- Their app is pretty darned polished for a sub-5 userbase, simply because they've noticed lots of little things because it's what they're developing on. It's a lot faster and less buggy than it would have been otherwise.
- If Apple can get 1% of the ~2.5 million out there, you're talking 25,000 developers buying machines of some form, as well as the other things associated with having the apps they do make being made on the platform
I don't want to even guess about what would happen if you ran that number with Microsoft's developer share, so I won't, but you get the idea. There's also the case of Acme Co I mentioned earlier, who was in a development transition point and interested in a Linux version and a Mac version, but the opportunity cost was just too high. Java just isn't an option for them for several reasons, but in running it by them and some others... if they could develop on Mac OSX with their beautiful frameworks and support Mac, Linux and Windows with a minimum of per-platform hassle, you'd really, really have something.
Oh, yeah, Linux.
That's kinda important, as the market hasn't exactly stood still over the last 5 years. We're going to be somewhat cursory about this, but suffice to say, Linux is at another interesting transition point: the desktop. They've already made the leap from hobby OS to credible OS to essentially dominating the server space and some companies with a lot of weight behind them are working to have it eat its way up on the low end of the desktop.
Linux at this point can't be ignored, it's somewhat viral. Sure, your market just might have a slight cough at the moment, but soon you'll be coughing up a lung and really wishing you'd made that doctors appointment. I'm looking at you, Sun.
There are several ways to developer for Linux at the moment, but for desktop apps there are essentially two competing "desktop environments" at the front of the pack:
It'd be really easy to get into a pissing match here about the various merits of each, but that's a whole other can of worms. Instead, lets look at the licenses:
- Gnome is free as in beer. You can download and hack the source, and basically do whatever the hell you want as long as you follow the GNU license.
- KDE isn't free, unless you use it for free things. You can essentially develop for KDE for free, as long as your app is for free. If you want to charge for your app, you have to pay KDE.
- History tells us that when it comes to technology, the markets are like water and tend to go towards the path of least resistance. IE, if you were a betting man, you'd bet that Gnome is going to win the desktop, and KDE is going to end up moving into some sort of niche. Probably a high-end development environment for Gnome (and possibly other) desktops.
No, this isn't going to be tomorrow, but it's going to happen. KDE sees something on the wall with this. Why, exactly, do you think KDE is working so hard to port their frameworks over to OSX? Do you think they have a completely altruistic reason (well, not saying they're doing it for a bad reason) for KOffice running on OSX?
In other words, KDE is very much taking a play from the Openstep playbook here, and if Apple doesn't watch it their Yellowbox ace-up-their-sleeve is about to be rendered scarily redundant. Apple needs to wise up to this, as I certainly doubt the idea of a developer realizing they can just pay KDE and get Linux, Windows & Mac OSX for free, which is of course what KDE wants.
This can't be stressed enough: Apple may not have to choose a "desktop environment" to back, but the frameworks need to be ported to Linux eventually, and the sooner the better. Apple can either do it now, while they can still heavily influence the direction of the Linux stampede, or they can do it after it's passed and they're desperate and all that's left are the droppings from the herd.
Linux isn't the only area in a transition at the moment, the windows developer base is currently in the throws of .NET & C#. Most people are inherently confused about what .NET still is, which is primarily Microsoft's fault due to some really lousy all-inclusive marketing at the beginning.
If you go beyond web services or other things, to a windows developer, .NET is the .NET frameworks which interface with a CLR, or common language runtime. The easiest way to think of a CLR is to imagine Java's JVM (virtual machine) which allows you to write the java code, and then run it on any machine with a JVM installed. It's very close to the same thing, except it's not emulated, so the performance hit is a small fraction of what you get with something like Java. The .NET frameworks are a set of object-oriented APIs that can be called on through a ton of different syntaxes.
I.E., if you can use VisualBasic.NET, C#, Fortran, lord there are a ton, and they're pervasive. If you choose to VB instead of C# (well, and don't write as though you're not using an OO syntax now) your stuff just looks uglier and its a bit harder to scale the code than if you use C#. Well, and less fun. They haven't included Java syntax yet, as that'd prolly be a whole lawsuit in the making... I'm being cursory again, as there are other features and the like, but that's not important to this.
And yes, I'm well aware that I've pretty much just described the "Yellow Box", except that the what the different languages can access have better support for them in the APIs, and the fact that it isn't cross-platform, and you're tied to Windows. But that doesn't mean the CLR is going to stay on one platform... the CLR gives Microsoft enormous freedom between platforms, if they choose to use it.
...which brings us to C#, another big transition point in the windows world. The transition of thousands of code bases from VB6.0 to VB.NET and C# is prolly going to be on the scale of Y2K transition over the next 5 to 10 years. This thing is huge, especially for in-house applications (primarily corporate).
Companies & developers are sitting around realizing they need to move to .NET, and are trying to figure out the pros & cons. It's pretty much going to happen, but they are often having to weigh VB.NET versus C#. It's often not as easy as it sounds, as while the syntax is much the same between VB & VB.NET, that's about it. How you write the applications needs to completely change, or you are screwing yourself. Some people are learning this the hard way, by moving to .NET thinking they'll save time and then realizing they really can't write code in the same way they were.
Long and short of it, the transition isn't going to be painless, and in technology where there's pain there's opportunity. People are sticking their heads up and looking around. More than a year ago I was walking around seeing VB developers carrying C# books around to the coffee shop, not because they were having to use it, but because they believe they're going to and scarily enough... they like it.
But they're not able to use it on OSX, and that's prolly going to have to change, sooner rather than later. Of course, they could always just use Linux...
Yeah, you heard me, Linux. No matter how anti-MS you are, you have to get this through your hard. C# doesn't suck. The .NET frameworks don't suck. You can nitpick on them, or find things here and there, but by and large developers like them. Enough so that not only has the Mono project gone from pariah to greek-cred to momentum in fairly short order. And Mono is basically C# and .NET ported to Linux.
Ayup, geeks like it that much. It's not 100% just yet, but it's getting some big backers, like Novell. It's basically been split into two different stacks, an independent stack for those who want to write Linux apps .NET style and C#, and those who want an easier way for moving their Windows apps to Linux. Ayup, moving their Windows apps to Linux.
In other words, while Mono isn't making it a straight compile for .NET developers on Windows to get their apps over to Linux, you can see where it's heading. Apple needs to move on this yesterday. The value is in the frameworks, not Obj-C.
In all fairness, I'm sure I'm missing some things and there are some obvious problems to what I'm proposing (and possibly already have, I've just not heard good answers) that would need to be worked out by brains larger than mine. Luckily, those are pretty numerous...
So lets go through some of them:
- Loss of hardware sales
You obviously have the danger of say, whipping up the next killer in the Cocoa frameworks and people finding that other platforms just run it faster/better cheaper. Hence, since they don't have to buy a mac to get it, Apple could lose hardware sales.
No real good answer here, but I'll admit I'm the type of person who looks at things like the iBooks with their intentionally crippled video and just gets annoyed. I like competition. Compete, damnit. Hot buttered jesus that irks me.
Here's the thing. One of the fun parts of using an alternative platform is getting to say, "Sorry, you can only do that if you use a...". The worst part is having to say "Sorry, they don't make that for...". I swear to gawd that first one is a granny-smith flavored hit of heroin to the cerebral cortex of your bleed-six-colors mac user, and not something they like to give up lightly. In this case, we might have to give up some of the highs to get rid of some of the lows. Prozac.
- The Carbon conundrum
I mentioned the Carbon layer before... unfortunately that could throw a big wrench in the works. Carbon or Cocoa isn't an all or nothing thing, now, which is also something I mentioned. If you're using Cocoa, specifically, there are lots of things you can't reach without making Carbon calls, and lots of Cocoa calls you do make are actually just wrappers for Carbon calls. This was a good thing at the time, lots of developers were actually worried Carbon was a quick stop-gap and was going to get dropped. But integrating it into everything, it made it obvious that it's here to stay.Carbon is C/C++, and as such fairly portable. I get that, but what about things like the code fragment manager (CFM) that a lot of carbon apps seems to use? As it is now my understanding is that these are direct PPC calls that are translated by OSX as, well, it doesn't generally give apps that kind of access anymore (and pushes towards mach-o). Stuff like the CFM would seem to have to be rewritten if you wanted photoshop/office running on x86, or emulated. Emulation isn't a good word, but in the case of not wanting your stuff to run faster on other processors might be...
I know carbon apps can go to mach-o, and some have done so, but I don't really have a handle on how big of an undertaking it'd be for a large (or small) application. I'll have to look into that. But Carbon may well have made things a lot more difficult than they once were.
- Cost
Apple isn't above recalling an old warhorse from the stable, witness Ink, from the newton days. However most who have played with Ink realize that it hasn't seen much improvement since the newton days either, and this probably wouldn't fly with what we're talking about. The windows platform hasn't stood still, and neither has Linux. There's going to be a lot of work there, even if they just ignore things like DX9.
If Apple went cross-platform again with their libraries, and it was going to be a very large investment, I'd have to think there'd have to be something that could be worked out to bring in some cash, such as giving the full-featured dev tools away for free, and charging $1k+ to any developer wanting to use Xcode Extreme to press a button and have it run on 4 platforms... free academic use, and of course, tiered structures so the mac coders at adobe don't piss themselves as they watch their jobs evaporate.
- ...like butter spread across too much toast
Arguably, Apple is spread very, very thin across the board. You can get a sense of this when you look at how many developers work on various projects, and how many of their developers and industrial designers "hop", IE get one version out of one app/hardware, then move onto another app, then move back. Apple has to wear a lot of different hats w/OSX: keeping gcc in sync with obj-c, improving obj-c, improving ppc gcc's performance, improving the cocoa frameworks while also improving and merging with the cocoa frameworks, improving the kernel & userland... ad infineum.
I don't really have a good answer for this one, and it's probably somewhat related to the cost issue above. Ideally I'd like to think that some of this being spread very thin thing was part of their uber retrenchment strategy, and it's time to climb out of the trenches and make some real waves.
To wrap up...
I may sound convinced, but I'm really not. I'm very much keeping an open mind, but also realize things aren't working as they are. This type of topic is also in the "Mac OSX on X86" or "Free Trade" territory, in that it just seems to scare the hell out of some people and engenders a visceral knee-jerk reaction.
I guess that's fairly normal, as while anyone whose read a pamphlet on economics knows protectionism is bad for the economy & industry as a whole, that's left-brain thinking. And when you're in the thick of it, or it directly affects you, the left brain is generally the first to leave a note on the pillow that its taking a leave of absence.
Speaking of absence, you'll notice I haven't mentioned the perennial favorite of mac heads everywhere to the software conundrum: some form of VirtualPC-ish software that doesn't run the apps in a window, but rather an environment similar to Classic or X11... transparently, just another application in the dock. It wasn't mentioned because I don't think things like that are really the answer. Mac users are a fickle lot, and MHz are still a precious commodity in the Mac world.
Besides, when you are paying as much as you do for a piece of Apple kit, having to make do with sloppy seconds is... distasteful.
--------
Update 2004.05.03:
Please see corrections and clarifications here.
--------
Comments (126)
Posted by: sHurse at April 30, 2004 09:52 PM
Glad you only include a short excerpt in your RSS feed, I think this might have hurt Netnewswire. If there is a contest for longest blog post you probably would win. There are at least thirty discussions in this one post, talk about blowing your load. :D I am surprised you didnt discuss how to create world peace. :D I am going to have to digest this one I feel like you just dumped a months education in my head d.b. you should think about breaking this up as I sure dont know where to start.
To Yipper you if you had a mac you could do your own PDF like I did. :D
Posted by: jwarren at April 30, 2004 10:17 PM
An astounding train wreck of a post. But I admit I can't look away... could only be intentional. Blog as performance art?
Posted by: Evan at May 1, 2004 06:28 AM
"WOA. I KNOW KUNGFU" said Keannu. Same feeling gettin smacked with this in shrook before I've had coffee. I can't believe you said the last line, I had to clean my keyboard from the spray. Its only funny because it rings true.
This ain't a blog post its a treatise for Apple to look at its markets and forget about the iPod for awhile. The FrameMaker comment is a shout out. We have three guys in the back who we were waiting to upgrade to OSX because of FrameMaker. Adobe is telling us to use Indesign as a replacement. Indesign is nice but it is NOT in the same league as FrameMaker for long document creation. Not even close. At least not yet. This still does not make sense, keeping it for windows and SOLARIS but dropping it from the primary publishing platform. SOLARIS!!!!! I bet we have iPhoto and the Finalcut and Motion pissing Adobe off to thank. Personally every app I need EXCEPT for FrameMaker is on the Macintosh. But I can tell you unless InDesign vastly improves in less than one year they will lose 3 hardware upgrades to windows. The world does not revolve around Photoshop! If you do not care about FrameMaker ask what happens when Illustrator is discontinued. Slippery slope!!
Posted by: kyotoC at May 1, 2004 09:40 AM
But I admit I can't look away... could only be intentional. Blog as performance art?
More like the Neal Stephenson of blogging, he's never met a sentence he didn't like. Still a damned good read.
Posted by: crinkles at May 1, 2004 10:49 AM
Cocoa was oversold. That's it. You make a good point about how everyone expected the mac to have a software bonanza and its true most of the apps are very small. So that hasn't come to pass.
What you are missing is that no one is stopping anyone else from making these applications if they want to. Like you said anyone can pick up the apps for free, its not Apples fault if some are too blind to realize the goldmine staring them in the face.
Posted by: No. at May 1, 2004 11:14 AM
So let me make sure I understand. You think Apple giving up OBJ-C and adopting Microsofts Java clone is going to HELP?!?! And then give up their frameworks to other platforms completely negating their competative advantage in making applications?!?!
Apples base is doing fine. You dont see more BIG apps coming to the mac because everything you could want is already here. Who cares about NeoOffice or OpenOffice, we have the real Office. Who cares about Trillian if someone doesnt like iChat they can use Fire.
Posted by: Rui Carmo at May 1, 2004 04:15 PM
Gosh, I wish I'd written this. First off, it's one of the best quasi-historical pieces on Apple's options (or lack thereof) over the past decade or so. It is bound to be largely misinterpreted due to the fact that most people on the Internet today _didn't_ go through this as I did, or don't have the faintest idea of how all of this fits together. Congrats.
Oh, and this is bound to be misinterpreted seven ways from Sunday. But then, I guess you knew that already.
Posted by: Mike Hearn at May 1, 2004 04:35 PM
A few corrections:
- Java is not "emulated", it's JIT compiled in the same way .NET is, and they have comparable performance profiles.
- You don't have to pay KDE to develop proprietary KDE apps, you have to purchase a Qt license from TrollTech. This is also true if you make a KDE/Qt port to Windows.
OK, now for the opinions: Cocoa is the most overhyped thing I've seen for a long time. Worse than even .NET. I've looked at Cocoa and I didn't see a great developer environment. Objective-C is a strange language, the NextStep frameworks might have been great last decade but these days people expect garbage collectors, not auto-release pools. The NS* APIs seem heavily over-engineered, witness the amount of code necessary to setup a socket. They are totally not portable, unlike the Linux APIs are.
Basically, I think Apple are going to get their lunch eaten by Linux in the next few years, as it's rapidly catching up in the ease of use department with MacOS - hard to believe I know, but basically true.
Posted by: neil at May 1, 2004 04:40 PM
Nice, and a really useful reference piece/history lesson for switchers like me. I have to agree, Be OS was a super cool C++ development platform, but fundamentally kneecapped.
I love Cocoa but but I'm at my wits end trying to figure out if there's a market for my developer-oriented stuff on it. I actually started writing a letter, out of sheer desperation, to Steve Jobs the other day to ask if it was worth developing for Apple. Then I remembered the PFOs I'd had from Apple's PR weasels and figured it just wasn't worth the effort.
I love my PowerBook; if you want it you'll have to prise it out of my cold, dead hands. But your post has made me realise what I think I knew all along. It's time to go back to a six-figure salary, time to go where I'm wanted, time to go back to developing for Windows.
Posted by: Jeremy at May 1, 2004 04:48 PM
I think that framemaker is really on its ay to dying, but Adobe is acting like a big baby about FCP and Motion and has decided to discontinue that Mac app far in advance of the Windows app just to try to hurt Apple.
tell Adobe that if they could made a damn app that did not suck (premiere only running in classic, what did they expect to happen?)
personally, I think all the frammaker babies need to toughen up and get back to good ol' laTex. free yourself from the dependance on a company.
Posted by: Mediocre Programmer at best at May 1, 2004 04:57 PM
Excellent article! I just wanted to comment on Java - I'm not a fan of Java for desktop GUI apps. The performance is so variable that I don't think one can say (as many Java fans do) that it's fast enough on modern hardware. To create a cross-platform app with minimal changes means having to create a lowest common-denominator app. Does Apple want that? More importantly, do end-users want that? While developers see the benefit of reducing cross-platform code, are they not invariably creating a poor "user experience" by limiting themselves to only cross-platform features? I can understand why Apple is trying to encourage Java development on the Mac - they obviously want more applications, but I really don't think Java is the right language/platform for GUI development.
By the way, using Java seems to imply a tacit acknowledgement that the differences between OSes are minimal. Isn't that what someone at Sun once said - Java makes the underlying OS irrelevant? Are the differences between different Operating Systems really cosmetic? I'm sure neither Apple or Microsoft would like you to believe that.
Posted by: Jacon at May 1, 2004 05:18 PM
Good Article, but I think you severely missunderstand what exactly KDE is.
KDE, like GNOME, is free as in beer and speech. Like GNOME, you can download and hack the source and do whatever the hell you want as long as you follow the GNU license.
With KDE, like GNOME, if you want to make software based on it and charge for it, you can. The only difference is if you want to make closed source software (whether you charge for it or not is irrelevent under the GNU GPL license).. in that case you need to pay TrollTech for a commercial Qt license.
People porting KDE to OSX _is_ altruistic. It's done by a bunch of Linux users who converted to OSX and missed KDE apps. There are no hidden motives, whatsoever. KDE isn't some commercial company trying to win the battle of the desktops.. it's just open source paltruistic. roject with mainly a bunch of part time free software hackers making software for fun.
Neither KDE nor GNOME is likely to become the dominant UNIX desktop. What _is_ likely to happen is that the KDE and GNOME seperate platforms start to become minimized such that only one platform exists that both are compatabible with. Both projects are active in Freedesktop.org that works to acheive this.
So yeah, in the end I think you're severely misunderstanding projects like KDE.
Posted by: Mark Davidson at May 1, 2004 05:40 PM
Wow... I just spent the last 45 minutes here, drinking my morning/afternoon coffee and reading this post. It made me do a lot of thinking.
I'm one of those people who bought a G4 Powerbook (most expensive computer I've ever bought) because of the combo of a Unix base and Java support (I'm a Java developer by trade), and you are right... without the all-encompassing support for Java, I wouldn't have bought this box.
I also would technically agree with you about the relationship developers have with Apple. I've used Macs on and off for years, and having developed at least one commercial "classic" Mac App, I am quite aware at how hard it used to be.
Frankly, I'm frustrated that Apple doesn't push/promote the Java/Cocoa bridge more than it does. I've read through a lot of the Apple docs on Cocoa development and I'd love to use more of the J/C bridge, but it seems like finding the info you need is an exercise in frustration. I'd love to know of pointers to books/web sites that discuss this more. Funny thing is... I use fink/open-source apps and Java almost 100% of the time... I just can't seem to sidetrack myself into pure Obj-C.
Anywyays, great post!
Posted by: Jason T. at May 1, 2004 05:42 PM
You're pretty right on the money with your commentary on Apple, but your comments about Linux clearly show how out of your element you are. Qt by trolltech is what costs money, not KDE. KDE is built on the GPL'ed version of Qt. The gist of what you said is true though. However, neither trolltech or the KDE team are working hard to port their frameworks to MacOS X. There is one guy http://ranger.befunk.com/blog/ working on porting KDE to the newly GPL'ed Qt/Mac. He might have a little help now, but for the most part has been all him. KDE has no chance of building free apps for Windows unless trolltech decided to release Qt/Win under a dual license, as they have for Mac and X11 (Linux). I'm pretty sure Windows is not even on their radar. KDE is focused fully on building the best desktop environment for Linux, and they've done an amazing job. I recently made the switch from MacOS X to KDE on Linux and I never looked back. Gentoo Linux on this Athlon64 is a dream. I wouldn't recommend it for my mom yet, but for a developer like me, its wonderful. I used to be a very active Mac developer, but I got tired of depending on Apple and getting let down. The hardware is too expensive, mostly out of date which generally means slower, the developer tools (gcc/gdb) are out of date and buggy versions, and targeting the Mac with cross-platform code is always a huge work around: dlcompat, missing wchar functions/std::wstring, missing poll, the need to write custom GUI code to make anything look decent. I think Apple would be very smart to re-release the OpenStep framework for Windows/Linux. Its a great framework, and I think many Linux developers are interested in good cross-platform frameworks and would gladdly learn Obj-C/OpenStep/Cocoa.
Posted by: Samir M. Nassar at May 1, 2004 05:46 PM
Since Qt is GPL for X11 you can in fact post that Qt version to Windows should you want to. In fact, there is such a project but it hasn't gone anywhere really. Yet it is possible, legally and otherwise.
KDE is a volunteer organization. YOu do not pay 'KDE' anything for using KDE, commercially or otherwise.
Posted by: ralf at May 1, 2004 11:13 PM
Regarding MS and .Net, you said "They haven't included Java syntax yet...". Wrong, there's J# for this, in the hope it will streal some J2EE developers to .Net:
http://msdn.microsoft.com/vjsharp/
I have to agree with the prior comment that Cocoa is overhyped. The API is a mess (NSString with path manipulation, hello?!) and feels like a rather outdated OO framework with history (compare to .Net and JFC).
Posted by: Randall Helzerman at May 2, 2004 02:41 AM
I tried to get into the whole Cocoa thang, I really did.
Its beautiful, but it is beautiful in the way that a
victorian-era adding machine is beautiful--the brasswork
is excellently wrought and polished, and the gears are
decorated with flowers and sunburst patterns.....but
lets face it, it is hopelessly outdated. Case in point--memory
managment : neither garbage collected nor ungarbage collected.
The framework is wonderful--back in 1985, it was way ahead.
But can Apple's big strategy for the future be getting us all
to use 80's technology?
Posted by: OTTO at May 2, 2004 02:45 AM
One thing to keep in mind about "Portable Cocoa" is that Jobs already fought that long, hard fight and basically lost. C++ beat Obj-C, MFC etc beat OpenStep. It has the downside of pissing off Microsoft, allowing Mac devs to port off OS X and very little upsides. Like it or no, Objective-C is not the language of the future.
If I were Jobs, I would beg/borrow/steal a NET implementation that runs native on the Macintosh, with full WinForm and Cocoa support (at the same level as Java). Apple can not afford the type of Developer War they had with Next, and they do need to keep the Mac tools at the same level as the competition.
Posted by: Chad Hardin at May 2, 2004 02:59 AM
Very nice read, it really made me think. However, why no mention of GNUstep? Progress on it is slow but many feel it has more potential than KDE or GNOME (which were mentioned).
Posted by: Joshua at May 2, 2004 03:06 AM
I found your article very, very intuitive and interesting, even despite your jeuvenille writing style, use of words that don't even exist in the English language and relentless acknowledgement of machines and code as sexual objects. I quit reading about a quarter of the way through, however, where your jeuvenille writing style and attitude climaxed with an absurd throw-away line about Jesus. How tasteless and irespective.
Posted by: Butt-head at May 2, 2004 03:19 AM
Huh huh huh, he said 'climaxed'.
Posted by: urddd at May 2, 2004 04:22 AM
I'm a (java) developer having a mac and a windows PC.
I'm gonna write a new (commercial) app in a few months and I'm wondering in which platform/language I should write it.
So lately I'm been reading many blogs about .Net, Mono.
As a java developer I've never coded gui apps (only server side apps) and I'm wondering if Java is the right tool for the job. I know it _can_ be done but I care more about the end result: it has to be a fast and responsive gui.
As I have a Mac and a windows PC I'd like to use my app on both platform but then the only option I'd be left with is java. More ofen than not java gui are not very well done (doesn't feel like a native app).
Then there is C# and the .Net framework. Nonoby is saying that either sucks. I can only find positive review. And it will get better thay say (with the inteeegration with Avalon in the new OS from M$). But today Avalon is a work in progress so some of the goodness of .net will be realized only if Microsoft delivers (in +2 years?).
Reading you excellent post (and other) I realize that it would not be wise for me to write an app for OSX. I should wirite an app in .Net because this is very the people and the money is.
Of course it would be nice to write an app for .net and be aable to run it on w2k or OSX, but I don't thing that will ever work at 100% because M$ will lock developers in some way or another into .Net/Avalon.
I don't know what will be the future of OSX but I agree with you that with fewer developers for its platform, Apple will face harder times.
As I see it there is 2 options here. Java and .Net.
Java is very strong in the server-side and does not seem to be interesed into winning the desktop anymore.
On the other hand, .Net seems to be headed to the desktop (and wish to get to the server-side too but it might not get there as Java is alrady well established and working very well).
Just my 2 cents.
Posted by: Patamunzo Lingananda at May 2, 2004 04:23 AM
Holy crap... That's an impressive amount of verbal diarrhea.
Good presentation, mildly amusing, but points off for being grossly misinformed and too fucking long.
Posted by: evariste at May 2, 2004 04:29 AM
Ignoring a few cosmetic errors like conflating Trolltech with KDE, I think this was quite the well-thought-out overview of Apple's strategic landscape, and the path they must take to greater mindshare.
Posted by: PantherMachina at May 2, 2004 04:58 AM
This was an interesting articles and humorous too. However I completely disagree with some point the author made in particular the importance of Mocha, it is a cool technology, yes, but should not be used as the basis of any port of well anything.
As to those with criticisms of Cocoa:
I will admit somethings ar a tad baroque in their design like the sockets implementation, but guess what, Obj-C's power was never merely it alone but also the fact that all C was valid in it being a superset of the language. If you don't like NSSocketPort, write your own wrapper or use the RAW BSD Sockets yourself.
As to overdesign, NSString represents a string and like it or not, paths are merely strings, woulf you like a NSPath object to be a glorified Object that is merely a string with the methods one would find useful for them? Considering the fact that Obj-C supports categories, you don't even need another class and could have them all as a category, but nonetheless they are still strings. Using non member functions hides them as you then have to look up those functions. Most functionality in Cocoa is gotten from the classes themselves, why hide something so fundamental?
My last comment is in response to:
"One thing to keep in mind about "Portable Cocoa" is that Jobs already fought that long, hard fight and basically lost. C++ beat Obj-C, MFC etc beat OpenStep. It has the downside of pissing off Microsoft, allowing Mac devs to port off OS X and very little upsides. Like it or no, Objective-C is not the language of the future."
Yes, you have pointed out that superior technologies lost out to completely inferior ones, not because they lacked technical merit, but rather that people were used to them. People still shy away from Obj-C because the syntax is different from C and C++ and now Java, if those same people took the time to read the capabilites of the langauge rather than getting spooked by it's appearance there would be no argument. Devs would wholeheartedly pick up Obj-C. That is the entire reason why C# and .Net are so attractive because what Windows Developers were using before was just so damn poor in comaprison, that such an elegant language and API speaks to them.
Oh, one more thing. Garbage collection is not the end all and be all of memory management, matter of factly it is the single worst thing bough forth into programming since C++. It teaches programmers horrible habits that make those same developers that most likely already had trouble with memory management that much poorer at it. Especially when you consider that even with garbage collection, it is still possible to leak memory in Java very easily if your careful, I have seen many people do it firsthand and is the part of my disdain for it.
Posted by: Judah at May 2, 2004 05:00 AM
Couple points:
There is a Java language on .NET, C#. It supports Java 1.3 calls, minus a few sun.* libs.
Also, Mono isn't just about running .NET applications on Linux. In addition to Red Hat, Debian, etc, Mono also runs apps on Windows and Power PC.
Another note: Microsoft's shared source version of the .NET framework (non-commercial or academic version), dubbed Rotor, runs on PPC and BSD out of the box. See http://msdn.microsoft.com/msdnmag/issues/02/07/SharedSourceCLI/
Posted by: mark at May 2, 2004 05:42 AM
ha - I've just gone from knowing nothing about mac development to being able to have opinions about it in one fell swoop. Good stuff.
Its interesting that as a developer (since '88) Mac's have never appeared on my radar screens. For the last few years I've been fairly cross platform using server side technologies (J2EE, Web, Python, bits of .Net etc) and Mac's just don't figure.
I feel that the OS is actually going to get less important for a lot of people - frameworks ARE where its at. The ones that cross platforms and hardware are going to win. Longhorn is a red herring - sure there will be soem nice GUI stuff but the big thing is XAML/XUL type stuff which will end up being the user interfaces material of a lot of user apps. Sure the wordprocessors/Graphics/Music progs will all stay native but for 99% of developers this isn't what we make.
Posted by: Scott at May 2, 2004 05:52 AM
I would love to write Obj-C / Cocoa applications for my Windows clients who won't or can't switch to due business apps that don't run on OS X, etc. It's a very elegant language and framework.
I've heard rumors that a future version of iTunes for Windows will contain a significant amount of shared Cocoa code. Could this mean that official support for Windows could be in the works?
Posted by: Arno Nym at May 2, 2004 07:03 AM
Java Weenie!
Posted by: adam at May 2, 2004 07:06 AM
congrats on a great post...
i jumped on the mac bandwagon when they released the new iBooks and iMacs back in 01-02 (i bought both) and i have been realy happy with every aspect of my mac. 10.1 didn't have connectivity with pc networks but a few months later 10.2 fixed that and gave me great developer tools. MS's VB.net costs over 450$ for the acedemic version, while project builder delivers the same for mac only for no cost. Mac has all the compatability with windows and doesn't crash when opening a browser, i couldnt be happier with my macs and with OSX but the points you brough up are troubling. thx
Posted by: Girelly at May 2, 2004 07:50 AM
It is nice to hit a site with real content that doesnt have google ads or banners or amazon links everywhere. Will admit your writing is hard to follow and intense, but its nice not to just be spoonfed. I like how you expect the reader to fill in the blanks. And damn I laughed you know this poor guy is going to get letters. I shudder at the power he could weild with an editor.
I also like your chicken and egg, the idea of developers need users and if Apple cant offer them users on the mac... then Apple should offer them all the users on all the platforms! You did good leading me there I'm sold.
But you blew it on KDE. You can still charge whatever you want the distinction has to do with whether you keep the source closed or open. Maybe seems the same to some but you should know better. I hope it was just semantics and you will correct.
Hope you keep it up. Came from /.
Posted by: Tom at May 2, 2004 09:22 AM
So to shepherd developers over to an operating system, what do you need?
a) No new “this is how we do it here” languages, paradigms, or what-nits - use the skill that is out there. I tutor two classes of first-year university students in C. Bamola- There's 40 more developers than know C in the world now.
b) To make the developer-person feel at home. Not too many new words or ideas. Soothing colours. Buttons that do the expected.
c) For the system to be better than the existing system. Better interface, being free, or both.
d) The system to be out there. (large enough user base)
Got those, and you've got a disruptive Operating System.
Hey, imagine an open-source OS that had 20-year-olds developing quality applications and games, was genuinely similar looking and feeling to windows, was easy to port to from todays systems (.NET CLR and win32 etc), and was free. Thar goes the Microsoft tax. Yes, it is too bad the effort required is beyond considerable.
What other points (above) do you need to herd you guys over?
I would be interested in seeing what the most common useful base skill set is for windows developers. C? MSVC++ IDE? MFC? WIN32? .NET? C++?
Posted by: Sten-Erik Björling at May 2, 2004 09:41 AM
Regarding tools for deployment on different platforms...
Have you looked at Omnis Studio?
www.omnis.net
Stene
Posted by: Pedro Vera at May 2, 2004 10:06 AM
Thanks for a great article.
I am a rare animal: I write classic ASP 3.0/SQL Server 2000 apps from OS X 10.3 (on a 15" AL Powerbook). The two main reasons I do this from a mac:
1. Since all my work involves a text editor, a terminal server window and a browser, it does not make sense to have to deal with XP Pro's constant crashes and security issues.
2. Since my company is tiny and the IT environment is very mixed, having this Powerbook allows me to carry around four operating systems into a compact enclosure without having to worry about rebooting to switch OS: OS X 10.3, OS 9.2, Unix and Windows 2000. I used to count Windows from VPC 6 but now I rely more on the terminal server sessions.
#1 is a huge improvement in my quality of work because I write everything from scratch, and BBEdit Pro is an amazing tool. I use Aqua Data Studio to manage our SQL Servers, so I only really use terminal server to manage IIS.
#2 is awesome because it gives me amazing flexibility. If I need to use a free tool, odds are it will run in any of the OS's I have available in my Powerbook without having to reboot.
The basic problem I am having now is that if I want to write ASP.net I am stuck writing from scratch, since VS.net runs like crap on VPC, and Macromedia Dreamweaver MX '04 is a bloated piece of crap. Your article is reinforcing the idea that maybe it is time I switch to Java.
Posted by: gerd at May 2, 2004 10:26 AM
/*KDE isn't free, unless you use it for free things. You can essentially develop for KDE for free, as long as your app is for free. If you want to charge for your app, you have to pay KDE.*/
That's completely wrong. Or the latest of anti-KDE FUD attempts.
Posted by: Simon at May 2, 2004 10:49 AM
One item that might you might want to explore is swt, used for the Eclipse IDE; a Java library that makes native calls to the OS so things look (more or less) "correct" on each platform. IMHO, it's exactly where Apple should be, albeit with some head-scratching from their marketing department on how to make it pay it's way. Perhaps the Trolltech/Qt model is the way for them to go?!
Posted by: Peter da Silva at May 2, 2004 10:56 AM
You're pointin in too many directions, and none of them are terribly useful for Apple. You have Java, you have .NET and C#, you have KDE, Apple can follow these, but where's the win?
The thing is, there's a third desktop on Linux that's got potential. It's not doing very well right now, because it's not as cool as KDE and Gnome, but it should be very interesting to Apple. And that's GNUstep.
Apple could throw a little of the old NeXT code they're not using any more, like the NeXT file manager, over the Open Source wall into GNUstep land... and all of a sudden the third Linux desktop will be OS X junior, *and* a viable framework for people to develop for Linux and Windows for on their Powerbooks... without the bad press of Java...
Posted by: Jack Oatmon at May 2, 2004 11:29 AM
Interesting read. Dovetails nicely with some of the things I have observed relating to Apple's relations with developers. In some ways. Others, not so much. While I have seen Apple bend over backwards for certain types of developers, it seems to me that their attitude is that they will help someone if that someone is willing to play exactly by their rules. And they do have rules. When Apple decided to go "Open Source" (but not free) I was excited. Cool. Now I can look at the guts of those knarly kernel routines -- heck, I can even sub-class them, replace them. BUT. If I want that code to become part of the kernel, say, to support a new type of hardware, fugedaboutit. If that hardware doesn't happen to fit into a pre-defined 'model', you're screwed. You have to tell your users, "sorry, but you'll have to install this kext before you can use this device". Just the kind of thing that I thought Apple was trying to avoid. Silly me. Meanwhile, over in Linux land, the changes were made, the right people found and contacted, the changes trimed and streamlined, and wallah: The Linux kernel now supports this new device. Natively. The only OS to do so Today. (Windows has a special driver too, but it appears that Microsoft will add that support at least by Longhorn, if not in a service pack.)
Apple has had many opportunities to 'make the right choice'. Once in a while they do, but they have more often than not, shoot themselves in the foot.
Posted by: neil at May 2, 2004 11:43 AM
Hey Joshua,
That's 'juvenile' without a spare 'e',
And 'irrespective' with two r's,
And irrespective ... of what?
But I think the word you were really searching for was 'disrespectful'.
Let he who is without sin cast the first stone, eh?
Posted by: Mark at May 2, 2004 11:52 AM
I didn't see much of a business case for Apple in that extremely long diatribe (requiring an extremely long response). Apple makes money from hardware which means until it decides it no longer wants to do that, the software is written to support the hardware.
iTunes on Windows exists to push iPods. A Cocoa framework is not going to sell a significant amount of Apple hardware (especially compared to what might be lost) -- a seriously bad business deal if your A BUSINESS (note: Apple IS A BUSINESS).
A lot of errors in the text .. but that's common for folks talking about Apple and what they did and should do.
Cocoa (Obj-C + frameworks) was over-hyped in the sense that folks thought all the power of Cocoa would come for free. It doesn't. There is a real ramp up time to learning the frameworks and understanding the language (although the language isn't AS BIG a hurdle as the frameworks). It took me 6 months before I really felt comfortable developing in Cocoa.
Once you get past the hurdles, you can truly be much more productive (I don't know if I buy the 5x claim, but it is significant).
And commenting on the Linux Desktop post (Linux catching up quickly in ease of use) -- I have a friend who is pretty hard core. He tried to use the latest Linux desktop environment (I think it was SUSe) and pretty much said it'll be years before it even gets close to Windows or Mac usability. And you're assuming that Apple won't improve their ease of use during that time.
After all is said and done, it turns out the blog was just another call to port OS X to x86 (although one might have been mislead by the claim that a port to x86 is not what the article was about).
If you want to offer Apple solutions -- it has to be hardware solutions. For example, Apple should take a low cost G3 chip (no longer used in any existing machines) and develop a SlimMac. They could bring the price point down to $499 and still make a nice profit. The processor could 900Mhz G3, 256MB, 40G hd, OS X. This proposal, at least, stays within the bounds that Apple makes hardware and uses that base to determine a plan.
Posted by: Aaron London at May 2, 2004 12:06 PM
Glaring omission of the SSCLI. http://www.microsoft.com/downloads/details.aspx?FamilyId=3A1C93FA-7462-47D0-8E56-8DD34C6292F0&displaylang=en#filelist.
Posted by: Eric in Seattle at May 2, 2004 12:36 PM
This post is worth reading for a lot of reasons, but especially for the OS 9-Elizabeth Taylor metaphor. Classic! (so to speak)
Eric in Seattle
Posted by: Borschski at May 2, 2004 12:43 PM
Fabulous post...and nice injection of some wit (makes a long post palatable to read).
Every single thing you wrote about is focused on one thing: incentives (or the lack thereof).
There isn't an incentive for companies (and their developers) to make a monetary, energy or effort investment in developing for Mac OS X. But there is a HUGE incentive to invest all of that in a methodology that would have an accelerator or multiplier effect. Some of the things you suggest could provide those effects...if positioned and delivered properly.
I'm a reasonably technical user and have WinXP, Linux (SuSE) and Mac OS X on personal boxes. At the end of the day, my incentives are to use a platform(s) that give me, my family and my wife's small business the widest variety of options to achieve our goals and objectives with computing -- and at the lowest total cost of ownership.
I personally love Mac OS X. It's elegant. It's solid. As my wife says, "it's pretty and is just simply pleasant to use". But when I wear a parent hat as a volunteer on our school district technology committee -- and see how the district pays nearly $200 per year per teacher that only does email, web browsing and minimal Office use -- I see the enormous incentives that exist with migrating to Linux.
Linux adoption is going to continue to accelerate. Apple has a chance to align incentives and provide disruptive accelerators and multipliers to the development community to ensure that Apple is the one that leads and is the recipient of the monetary, energy and effort investments.
Posted by: James at May 2, 2004 01:22 PM
Decent article, but when it comes to credibility, you really aren't doing yourself any favours by using idiotic words like "prolly".
Posted by: Lucas at May 2, 2004 02:53 PM
I have an ibook G4 and a desktop windows/freebsd based pc. Cocoa and .NET are completely different technologies. .NET is not java like many people equate it to. .NET is faster and Microsoft wants developers to switch to .NET development much like apple tried to push Cocoa.
From a development perspective, I decided to use .NET for commercial development because it is easier to use, quicker to work with, and quite frankly I started on VB. I've played with Cocoa and Carbon in OSX and I dont' feel like Apple wants me to write apps for the Mac. If my app is good, Apple will duplicate it and put me out of business.
As for GNU/Linux, its not the end all on the desktop. Linux will never be superior to *BSD or System V UNIXes. Linux is simply a kernel. Debian has even experimented with other kernels inlcuidng the GNU/Mach replacement for linux. Even the GNU thinks the Linux kernel sucks.. thats why Mach TRIES to copy the Mac OS X kernel which in turn copied the real Mach kernel with NetBSD and FreeBSD features. People mistakenly equate Linux to a GUI deskotp system. its not. Linux + GNU TOOLS + KDE (OR GNOME) is a desktop system. FreeBSD can run KDE (or GNOME) as well. Microsoft and Apple will continue to advance in their proprietary models. Then we have Sun. Sun is trying to sell Linux + Gnome + Java as the Java Desktop System. Linux people should support their *friends* at sun if they want commercial linux. I don't think they do.
In the end, we are left with a linux community divided, a Macintosh community confused, and a joke called Longhorn from the Microsoft camp. Everyone loses. Personally, I'll continue to use my laptop for everyday tasks running Panther and my NT kernel bases software running .NET for work.
I wish Apple would license/port .NET to OSX and OSX server. I could buy xserve machines and stop patching windows every week.
One last note. Project Mono is not a cross platform C# framework. It only works correctly on linux. Try running a ASP.NET website on FreeBSD using mono! Good luck with that!
Posted by: Randi Joseph at May 2, 2004 02:56 PM
This is the longest idiotic post ive ever read... He was not aware of GNUStep which works on multiple platforms INCLUDING LINUX, FreeBSD, and has been around for years, well before java had a base or .NET existed.
This is to be expected, since most developers dont know whats out there anyway... very very annoying....
Posted by: Marco at May 2, 2004 02:57 PM
Correction again:
Java can be JITted since Java 1.2, but it wasn't designed to do so. (and it is a bit duct taped on)
.NET does it more bottom up, and elegant.
I don't know _if_ this matters a great deal perforamncewise, but architectural on the bytecode level, there is a great difference.
Under Java, everything is typed and conversions are inserted, while under .NET typing is only added when something else would be ambigious, and typing and covnersions areinfered while jitting
Posted by: eco2geek at May 2, 2004 03:05 PM
Thanks for a facinating piece, part market analysis, part commentary, part historical overview. You've got a new fan.
Joshua: If you're going to run this man's blog through your own morality test, you're just going to miss out on the meat of what he's saying. Whatever. :-)
Pedro Vera: I'm no big fan of Microsoft the company (using Linux to write this), but saying that you "have to deal with XP Pro's constant crashes" when you're only running "a text editor, a terminal server window and a browser"

Jesus! I'm not completely sure what this is but I am pretty sure its cool. You should put a pdf download of this, it is huge.