The Year in Mac DevelopmentIt's risky to write a "year in review" story since there are just so many of them, but I'm going to carve out my niche and look back at the stories that mattered to Mac developers in 2006.
This was, unquestionably, the year of Intel for Mac developers. An Apple partnership with Intel seemed pretty strange at first, but it truly paid off. The Core 2 chips are very fast, and the Core 1 was no slouch either. The Mac received huge performance gains, reduced its power consumption, and moved almost entirely to dual-core 64-bit chips in about a year. On top of all of that, we have Parallels.
Human Interface Guidelines, Or Lack Thereof
From reading developer blogs, you'd think Apple made an announcement this year about discontinuing the Human Interface Guidelines document. It didn't happen. If anything, it was John Gruber's talk at C4 that sparked a realization that the HIG no longer reflects the current state of Mac software.
The state of HIG really stems from Apple's first priority: to make the best OS and apps they can. Frequently, this means making up the rules as they go. After the dust settles, they take the most effective bits from the apps developed internally and generalize them for third-party developers. It would be nice to have all of the Apple code immediately, but the app and framework teams run on different schedules. And of course, Apple has the right to keep some widgets to themselves, just as third party developers can have their own widgets.
It's not even clear if a reasonable HIG document could exist in this environment. All of this is constantly changing. And really, they're just guidelines anyway — not rules. "Violating" them is arguably an oxymoron. Daniel Jalkut (who I think had the best write-up on C4) summed up John Gruber's talk succinctly: The new HIG guideline is simply: does this look good?
Apple's focus must be producing software that make people want to buy a Mac, even if it means temporary inconveniences for developers. The company's single most biggest responsibility to the platform is to provide a constant influx of new users. We can invent code if necessary, we can't invent people.
If you need one rule to follow, make it this: don't introduce new behaviors for existing controls. Don't make a checkbox act like a push button or a slider act like a scroll bar. That will confuse users. If you need new behavior, make a new control. And when in doubt about UI standards, just do as Apple does. They have millions of customers, so consider that your buffer zone. Or just do whatever you think would work best.
It's tempting to lump the "delicious generation" idea in with the HIG story, but I think it's separate.
The Delicious Generation meme, started by Rogue Amoeba founder Paul Kafasis, describes an app which puts enough emphasis on fun and "cinematic" production values to make any computer science professor cringe. The term was based on Delicious Library, but one app soaked up most of the controversy: Disco.
Critics of Disco accused the developers of making something that was more about appearances than solving practical problems. Supporters say Disco takes something that's tedious and makes it fun. Disco actually billows smoke from the main window during burning, which some thought as ridiculous but I saw as the ultimate example of Mac developer ingenuity — like something from MacHack that actually shipped.
Some went so far as to say Disco just bound up Apple's frameworks into a pretty package. Although that's supposed to be an insult, I think that's really the goal of the frameworks: maximum reuse. If a developer sees value in putting a new face on an existing tool and users "get it," then so be it. I'd be more comfortable dropping my mom in front of Disco than Disk Utility.
The most interesting piece of this puzzle is that when developers violated the UI guidelines in the past, it was out of apathy or misunderstanding of how the Mac works. Such apps were obviously out of place on the platform. These new apps are different by design. It's intentional and thoughtful, and it's done within the Apple design universe.
But no matter how polished apps like Disco are, they're inherently polarizing because they're such a radical break from the Mac's minimalist roots. Still, it's challenging to build a case against them while Apple is busily doing the same with Aperture and Time Machine. On top of that, a non-trivial amount of the Mac user base likes these apps.
Some believe that the Mac would better off with a more subdued, unified look and that the current trend is leading us towards imminent doom. Personally, I'll take controversial interfaces over stagnation. Remember, there was a time when it was assumed that Mac OS X, Aqua, Quartz (and for some, even Cocoa) were signs of imminent doom.
If you thought custom interfaces were radical before, Core Animation looks to open the floodgates on wild interaction possibilities. Front Row-style interfaces will no longer be the realm of OpenGL experts only.
The fancy 3D effects are what get most of the eyeballs, but it's actually useful for much more than just building virtual cities of album art. It's an API for creating layered user interfaces with implicit behaviors. The new warning balloons in Xcode editor use Core Animation, for example.
Since the Core Animation workload runs on its own thread, applications can take advantage of a second core for UI rendering without doing anything at all. Combined with the existing performance benefits of Core Image, the results can actually be faster than what we have today in Tiger.
Although there is some skepticism, Apple is bringing Objective-C up to date with newer industry conventions. The two most important changes are garbage collection and property support. The idea here is pretty simple: make it easier to write Objective-C code.
Memory management is probably the most tedious thing you can possibly do in a programming language. Some think manual memory management is necessary for performance reasons, others feel that most applications can get away with letting the garbage collector do the work. Either way, Apple's system is opt-in.
David Young has some doubts about the properties system in Objective-C 2.0, as does Patrick Thomson.
Personally, I think the best thing Apple can do is maintain the essential parts of Objective-C and meet in the middle on syntax. The dot syntax has become nearly universal, and frankly I'll take this:
value = object.this.that.something.somethingElse
value = [[[[object this] that] something] somethingElse]
any day of the week. Keep in mind that square brackets aren't going away, it's just that there's going to be a new syntax available for getting and setting property values. All of the normal conventions still apply.
There may be some limited confusion with structs versus objects, but I think it's a small price to pay for making the syntax more readable and more accessible to a wider audience. Having people writing Mac software is a good thing, and the higher-level abstractions always seem to win in the long run.
Revamped Developer Tools
Apple doesn't talk much about Xcode 3 on the Leopard Preview site, but the highlights are refactoring support, improved display of warnings and errors, and project snapshots. The other big news is that Interface Builder is getting a major revamp. You can get a glimpse of it on the public site, but rest assured, big things are in store.
The Leopard dev tools will also include a new app called Xray, which is a catch-all for tuning performance. It's worth mentioning that Xray uses Sun's Dtrace framework to do some of its magic.
More info on the new tools is available here.
MacHeist and MyDreamApp
One of the biggest stories in Mac development for 2006 came at the end of the year, in the form of something called MacHeist. If you want to watch it all play out, you can see the MacHeist feature page at Cocoa Blogs.
Again, this was a polarizing issue. In short, the organizers of MacHeist offered a lump sum to certain developers for the rights to sell their product for a week. MacHeist bundled up ten applications with a combined value of $356.74 and sold them together for $49, with a portion of the sales going to seven charities. I wrote about this before (the comments are interesting too), so I don't want to rehash too much, but here's the gist.
Some said the developers were not getting a big enough cut. John Gruber shared this opinion and ran some numbers in an analysis of the event. As far as I can tell, most of the developers that participated did not regret it. Two of them actually sent me emails to confirm this, and Wil Shipley was quite public about the fact that Delicious received an increase in direct, full-price sales during MacHeist.
MacHeist sold 16,821 bundles and handed over $200,000 to charity. But this wasn't just a software auction. Even if you disagreed with the financials, it's hard to deny that MacHeist was a cleverly-conceived community game which brought thousands of Mac users to one place on a daily basis. The production values rivaled even those of Apple.
The critics of MacHeist maintained that the organizers took too large of a cut, but I'm curious how many people thought about where the proceeds are going. Maybe the MacHeist folks want gold-plated Ferraris, but it could also be the profits will be re-invested into other events or Mac-related ventures. I guess we'll see.
The less-controversial precursor to MacHeist was MyDreamApp, which was a contest losely based on the American Idol concept. Contestants submitted their concepts for a Mac apps and thousands of visitors to the site voted on their favorites. The contest featured celebrity judges and, again, did a fantastic job of building community. The winning application concepts are currently under development.
MacSanta, Cocoa Duel and Child's Play Day
Apparently launched in response to MacHeist, MacSanta was a holiday-themed site which offered 20% discounts on over 200 Mac applications through Christmas day. The site didn't feature any of the puzzles, charity donations, or community forums that were central to MacHeist, but it did bring a number of lesser-known developers into the spotlight and offered good deals to both users and developers.
Cocoa Duel was another apparent echo of MacHeist, though this one was conceived of as a peace offering between developers. Jason Harris quickly put together the IronCoder-style contest, where participanmts submitted holiday-themed applications and site visitors voted by donating to the charity suggested by their favored developer.
For example, my favorite (which was also the crowd favorite) was Snowplane by Jonathan Grynspan. I voted for his app by donating $30 to Child's Play, his favorite charity. Cocoa Duel raised nearly $2400 in six days, which is impressive given how little time there was to work with.
Last but certainly not least, Mike Zornek organized the Child's Play Day charity drive where a number of developers donated all of their sales on a single day to Child's Play. The final tally was $10,000.
Charity and Awareness
If you do the math for MacHeist, Child's Play Day, and Cocoa Duel, $212,400 was raised for charity in a very short period of time and with no mainstream advertising. That would be impressive by any standard, but it's particularly amazing given none of these efforts had high-end corporate sponsorship. All of it was a product of the Mac community's home grown efforts.
No matter how you slice it, all five events raised awareness about independent Mac developers within the Mac user base and even into the general online population via social sites like Digg. I'd wouldn't be surprised if even those who develop primarily for Windows or Linux were impressed at the visibility of both events.
Perhaps most importantly, these events took the idea of buying independent Mac software out of the shadows and brought it into the community's consciouness. A lot of the stigma of supporting smaller developers has been lifted, hopefully improving things for everyone involved.
Other Worthwhile Stories
There are a few others things that we couldn't close out the year without mentioning. First, in an effort to find creative sources of funding, the developers of both Cha-Ching and Disco introduced the unothodox idea of selling beta software at a reduced price.
I wrote about this just a few days ago, so it doesn't make sense to go into detail here, but I think it's an interesting strategy in self-funding. I hope it helps these developers succeed where they otherwise wouldn't have. Maybe even those that don't use the apps can appreciate the pursuit of making your idea work.
Another 2006 side story is that all Macs that have built-in displays now come with embedded iSight cameras. Is it just for video conferencing over iChat and Photo Booth? Well, that and scanning in items with Delicious Library. Is there more to this story? We'll have to wait and see.
Although the wheels were set in motion back in 2003, I think Apple has successfully installed WWDC as the second big Mac show of the year. The fact that the mainstream media follows the event is telling, as is the growing attendence each year. Seriously, I'm not sure where they're going to put all these people in 2007.
The Real Story of 2006
I think the biggest story from this year is that Apple finally got out of the shadow of its early success with the original Mac in the 80s, and has redefined what it means to be Apple Computer. Not only is the iPod a true cultural phenomenon, but 2006 can lay claim to the most Macs ever sold in a single quarter.
During the nineties, many were waiting to see who would fill the void left by Apple. It turns out it was Apple, just a newer version, ten years in the making.
I also hope that no one gets too wrapped up in the topics that are seen as important and controversial. To echo what I said in my post about MacHeist, no one is going to look back on this and concern themselves with which widgets drew in which colors or how much money was made in a particular software promotion. If you do it right, your memories will center around how much fun you had.
I know how it sounds — preachy and know-it-all-ish, but consider giving the thought at least a few minutes of your time. Even though we disagree on things, we're all Mac developers, participating in changing the Mac landscape in some way, and I think that's pretty damn cool. What you do could have an impact on millions of people, and the current "problems" are nice ones to have compared to the challenges faced by Mac programmers ten years ago.
There's never been a better time to make Mac software, and who knows when an opportunity like this will come along again. So just do the best work you can and don't worry about what everyone else says. Everything from this year — both the successes and conflicts — are in the past. Focus all of your attention on what you believe will make you happy now, in the present.
Eyes on the road. And as it says on the home page, follow your bliss.
The Year in Mac Development
Posted Dec 31, 2006 — 27 comments below
Posted Dec 31, 2006 — 27 comments below