Quartz Confuser
February 15, 2007
I’ve joined the CenterStage open-source project as a Cocoa developer, and I’m having a great time working on such a large project with such passionate and intelligent people. I have taken it upon myself to improve, such as I can, the quality of the application intended to catalog and organize movie files, known as BackStage. Since part of a media center application is eye candy, I recently renovated a Quartz Composer composition that shows a 3D DVD box for the selected movie. I had played with QC a few times, and found it to be a really cool and flashy tool with a user interface I had never seen before; I looked forward to working with it on a serious project.
I can say without a doubt that Quartz Composer is nothing more than a toy. For anything more complex than an RSS screensaver, the visual data mapping becomes a chore to connect and use. The patches, while a good idea in theory, turn out to be only barely usable in practice. There’s no patch for a clickable button, for a slider, for any widget which anybody might concievably want to use - but to hell with all that, we have a glowing Apple logo patch! If, as I needed to, you need an input to an Interpolation patch so that you can turn it on and off, too bad! You’re limited to what Apple give you. Additionally, Apple have not made the slightest effort to allow people to export, import or add new patches or clips - why? Why is this third-rate software bundled along with such first-rate tools as XCode, Interface Builder and the ObjectAlloc debugger?
And there’s no undo function. How can you possibly justify releasing a program aimed at developers that doesn’t have undo-and-redo support? Much to my dismay, the only solution I could find to work around this glaring lack of functionality was to a) have around seven different save files so that I could revert if necessary, and b) keep another scratch project in which to cut-and-paste everything that I remove from the actual project. This is absolutely inexcusable, and Quartz Composer’s inclusion in the fantastic Apple developer tools is nothing but an embarrassment, plain and simple.
What mental lapse caused the selection of Javascript as the only scripting language inside QC? The target audience - OS X developers, Cocoa and Carbon in particular - have a low likelihood of knowing, much less enjoying the use of Javascript. Ask yourself - why are there so many libraries which proport to, in the words of MochiKit, make Javascript suck less? Why, indeed, would Google make GWT?
“But Patrick,” you say, “Javascript was a good choice because you shouldn’t be writing much code in QC.”
Oh, really? Even if the assumption for your argument was valid - which it isn’t; due to the fundamental brokenness of the QC patch system and dearth of patches and clips, I am forced to write code - Javascript is still a bad idea. There’s no printf(), no wait(), curly brackets out the wazoo, and tacked-on OO. Sure, with Firebug it sucks less, but we’re not exactly working in Firebug, are we? No, we’re working in Quartz Composer, where the extent of debugging is the Log() function.
Even if you have to use Javascript - despite the fact that Ruby or Python both blow JS out of the water - you could have made it much, much better. Sure, patches are a good visual paradigm - now why not let us pass them around programatically, trigger scripts at various events, and include a text editor that does little more than highlight syntax? A visual paradigm should work on top of handwritten code, not in its place; if I really wanted to I could write a Swing/SWT GUI application with a text editor.
Nothing inspires confidence like discovering that the extent of the documentation is a .rtf file in the application’s directory; the meagre resources on the ADC site as regards QC serve mostly as a guide on how to put compositions inside Cocoa apps or - the thought is almost painful - Dashboard widgets..
Quartz Composer needs some serious work for it to be useful as anything other than a pretty interface to make screen savers. I have a hunch that there is a sizable market for an improved version of QC - hell, I’d pay for it if it made my life easier.
Moral of the story? Before labeling something as a developer tool, first make sure it’s not an abysmal piece of software.
4 Comments Add your own
Leave a Comment
Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackback this post | Subscribe to the comments via RSS Feed
1.
David Phillip Oster | February 15, 2007 at 6:44 am
Immediately open /Developer/Extras/Palettes and double-click on QuartzComposer.palette
Do it now. I’ll wait.
OK, now in Interface Builder, You can make an ordinary Cocoa App, and control Quartz Composer compositions with Key Value Binding.
Read http://developer.apple.com/technotes/tn2005/tn2146.html “Making the most of Cocoa bindings in Quartz Composer.” Now, this gives you real, standard, sliders and buttons that you can use to connect to your Quartz Composer compositions.
In Terminal, execute the command:
locate /Application | grep .qtz
and (assuming your machine has been up long enough for the locate database to have been built) you’ll get a long list of file paths of Quartz Composer compositions that Apple itself uses in its own software. Open some of them and take a look.
I particularly like how Photo Booth is about 90% a single Quartz Composer composition.
You might not like Quartz Composer, but at least Apple eats its own dog food.
2.
roger | May 12, 2007 at 8:49 pm
nice rant….
QC is great to allow non programmers (eg designers etc) to create things which would otherwise requre some opengl coding.
It might not have all the features you want as a cocoa programmer but that doesn’t mean it’s crap.
if you want a commercial version of quartz composer take a look at isadora or max/msp/jitter
oh, and you want to write new patches, look here:
http://fdiv.net/2007/05/08/xcode-template-for-custom-quartz-composer-patches/
3.
ter | August 25, 2007 at 2:32 am
QC is not for traditional programming
its more along the lines of VVVV and MAX/MSP/Jitter
its not just a toy it has very powerful capabilities, its used in VJing alot for example
Its just not useful for you
4.
Shefki | September 8, 2007 at 1:08 pm
http://www.fabioalbania.com
>
> > > Dear.Mr
> > > please visit our webpage to review our quartz mining products , we are
> > > intrested in supplying your company with crude quartz , if you will be
> > > intrested please contact us to send you our offer
> > > best regards
> > > Shefki Hysa