Acorn 3: Perfect Timing

Acorn 3Acorn 3 has just been released with an introductory price of $29.99 (via the App Store or not, as you prefer). To say that it changes the “balance of power” in the Photoshop-alternative stakes is a huge understatement. With Adobe playing a new round of let’s gouge our most loyal customers, I have to say Flying Meat’s timing is immaculate. It’s been a while since I last posted an update on the state of the Photoshop alternative market, so here we are.

Layer Styles

Acorn 3 does layer styles right. To begin with, its layer styles cover pretty much all the obvious suspects (e.g. gaussian blur and motion blur) and there’s no weird distinction between adjustment layers and styles — they’re all the same thing. Want to bevel a layer? It’s a layer style. Want to blur it? Layer style. Want to give it a drop shadow? Layer style. All in one place with one good UI. Photoshop, in contrast, offers three different ways of applying non-destructive changes to a layer and they all work differently (and none of them as nicely as Acorn’s).

It’s worth noting that Adjustment Layers do serve a purpose that Layer Styles do not (i.e. performing the same operation on everything “below” them) and Photoshop has a  convenient interface for copying and pasting layer styles which Acorn conspicuously lacks, but I expect this latter will be addressed shortly. (In other words, I made a feature request and since it’s very easy to do, I expect it will happen quickly based on past experience.) The obvious way to fix this would be for layer styles to work as expected on groups, but right now this is very much not the case (I’m not sure whether the way layer styles work on groups is a non-feature or a bug).

Correction: it turns out that, in general, layer styles work correctly on layer groups (making them generally more useful than Photoshop’s adjustment layers and layer styles) but that some of the styles behave strangely and it just so happens I used those styles and jumped to the wrong conclusion.

All-in-all, layer styles represent a huge leap in functionality for Acorn and help make it a serious tool.


Acorn 3 boasts significant new vector functionality, notably the ability to convert text to bezier curves (which is extremely useful for graphic designers). Unfortunately, a lot of the ancillary functionality is not there yet (e.g. I can’t figure out how to resize a shape, which is pretty hopeless). I assume this will be quickly fixed, but it’s a huge issue right now.

Assuming the obvious things get fixed/added to Acorn 3’s vector support (transformations and booleans), Acorn will be very credible here and could easily manage to become better than Photoshop or Photoline in this respect (since both have pretty crummy vector UIs). The good news is that Acorn 3 has all the core functionality for great vector support and has implemented most of the UI well; the bad news is that its actual feature set is missing key functionality.


The gradient tool now live-updates (which is nice) but isn’t editable in place (the way Photoline’s is) making it more of a gimmick than a useful feature. It’s a little odd to me that gradients aren’t available as a layer style (they’re very useful and Photoshop certainly offers this).

Where it leads the pack

With some minor omissions (e.g. gradients) Acorn’s layer styles are better than Photoline’s and for most purposes Photoshop’s. Pixelmator doesn’t have layer styles yet, but I think we can confidently expect them in Pixelmator 2, so while this is a huge advantage for Acorn right now, Pixelmator may catch up soon.

Acorn 3 also has a very low barrier to entry for writing plugins. You can write first-class plugins for Acorn using Python or JavaScript. Acorn also features solid Automator and AppleScript support. On the other hand it has no support for slicing (see below).

The Not-So-Good

Online Help. Acorn’s help is only available via the web. I’m not a big fan of Apple’s help system (with its mysteriously terrible performance) but it’s nice to be able to look stuff up when you don’t have an internet connection. Worse, it’s pretty incomplete. E.g. there’s nothing at all on masks. (Of course I only offer online help for RiddleMeThis so I’m not one to talk.)

Gradients. Gradients should be applicable non-destructively (as layer styles) and — ideally — editable in-place (as in Photoline).

Half-assed Vector Support. It really bugs me that Acorn now implements a lot of the hard stuff but doesn’t do the easy stuff. Right now you can’t seem to change control points from smooth to corner (and when you create a custom bezier you get n-1 smooth points and a corner, which won’t make anyone happy ever), nor can you select multiple bezier points or perform transforms on vectors. This makes what could be compelling or even class-leading vector support almost useless. Add booleans and SVG import and export and we’re talking.

Layer Masks. I’m not sure how this feature is supposed to work, but right now it doesn’t. What I’d like to see is the ability to turn a selection or its inverse into a mask, the ability to mask “into” layers (the way Photoshop does it), the ability to drag a layer into a layer mask so that its alpha channel becomes the mask, and a nice UI for editing a mask manually. What we have right now is (as far as I can tell) none of the above. (The documentation for Acorn’s mask feature is here, but it doesn’t currently appear in searches.)


Slicing and dicing. A lot of web developers use Fireworks or Pixelmator to chop up a design into lots of pieces automagically. Fireworks even supports button states and animation. Acorn has no functionality of this kind whatsoever.

If you want to edit HDR images (16-bits per channel or more) or work in different color spaces (e.g. CMYK or Lab) then Acorn is useless to you. Doesn’t bother me too much but it may be a deal-breaker. Similarly, look elsewhere for a non-destructive RAW workflow (Aperture and Lightroom are probably what you’re looking for).

If you need comprehensive typographic support or the ability to import vector art from a program which does have comprehensive typographic support then you’re using Photoshop and you don’t need Acorn. But Acorn does have nicer typographic functionality than anything else in this space (Photoline has more features but produces inferior output).

Right now, if you need comprehensive vector graphic support then Acorn isn’t there yet, but watch this space — I suspect it will be there soon.

If you need Photoshop plugins then Acorn does not support them.

If you work at very high resolution (e.g. for print) then Acorn doesn’t scale well. In fact, it even trails Pixelmator in its over-reliance on Core Image. If you are working on a 16MP image from your DSLR it’s going to be pretty unresponsive.


Acorn 3 is an impressive upgrade as much for what it delivers (class-leading layer styles) as for what it promises (if the new functionality is fleshed out with a few user interface tweaks, it may well be better than Photoshop for many purposes). I should add that Acorn is currently my go-to tool for quick image edits, ahead of both Photoshop CS5 Extended and Photoline 16.5. (I don’t have a Pixelmator license because I still consider it a half-assed product.)

Anyway, here’s my big comparison table revised and updated — new stuff since last time is in bold. Where a product clearly leads its peers, I’ve marked it in green. Where it clearly trails the others I’ve marked it in red. In a nutshell, if you can’t afford Photoshop, get Photoline. If you have Photoshop but want a “lightweight” alternative, get Acorn. If you want a pretty toy, get Pixelmator. But, I’m really looking forward to Pixelmator 2.

Category Pixelmator 1.65 Acorn 3.0 Photoline 16.5
Simple Painting Tools Basic but servicable Strong support for brushes, cloning tools, dodge and burn. You name it, it’s there
Text Cocoa text with nice drop shadows Decent typographic controls, elegant minimal interface, cocoa text, and full reusable layer styles. Fully styled and formatted text with both character and paragraph stylesheets and layer effects like emboss and drop shadow
Layer Support Blend Mode and Opacity, Text Layers, Layer Groups Strong vector layers (with some obvious missing stuff that should get fixed quickly), comprehensive non-destructive layer style support, Layers can be grouped hierarchically Blend Mode, Opacity, Layer Effects, Filter Layers, Vector Layers, Text Layers, Layers can be different modes (e.g. you can have 16-bit color, 8-bit color, Layer Masks, and monochome layers in a single document), Layer Styles, Layers can be grouped hierarchically (these are not new but deserves mention)
Filters Excellent Core Image support (including custom Quartz Composer filters)
Excellent Core Image support (including custom Quartz Composer filters) and some additional useful filters, such as Clouds. Many useful filters are available as non-destructive layer styles. Comprehensive set of filters (including some marked improvements over Photoshop) but no Core Image support. Stuff that Core Image doesn’t give you like comprehensive noise reduction tools, and fractal clouds. Oh and you can create and reuse named presets for almost everything.
Vector Layers None Solid vector support, but some missing features (e.g. transforms). Nice UI. Non-destructive layer styles. Full vector support with strong bezier tools and SVG import/export
Non-destructive editing Not supported Layer styles allow the most common filters to be applied and composited non-destructively. Non-destructive effects layers for most image adjustments (e.g. curves, levels, hue/saturation)
Image Format Support 8-bits per channel RGBA 8-bits per channel RGBA 16-bits per channel support, Greyscale, Monochrome, Lab color, CMYK
Digital Photography Support Direct RAW import Direct RAW import Direct RAW import to 24-bit or 48-bit (16 bits per channel)
Architecture Some clever optimizations (e.g. filter previews appear to be at screen resolution) but chokes on large files. Chokes on large images and slower filters. Clever and flexible preview system allows you to keep the program responsive when working with huge files, heterogeneous layer support
Workflow and Automation Some Automator actions (but no AppleScript dictionary) Python, AppleScript, and JavaScript scripting and plugin support Recordable macros and batch conversion, Save named presets for almost anything, enter expressions for numerical inputs
Web Export Support Slicing support. Direct export to Flickr, Picasa, and Facebook. Photoshop-style (but far simpler) web export dialog with file-size preview etc. Some random subset of Fireworks is implemented (slicing, button states, etc.). Not really sure how good or extensive it is (much more extensive than Pixelmator or Acorn) since I have no use for such stuff.
Plugin Support You can probably build your own using the Quartz Compositor tools from Apple. You can build your own using the Quartz Compositor tools from Apple, and there’s extensive support for creating extensions using Python, Objective-C, AppleScript, and JavaScript Supports Photoshop plugins.
File Format Support Pixelmator, Photoshop, PNG, GIF, JPEG, JPEG2000, TIFF, BMP, SGI, TGA, PICT, PDF, and a dizzying number of export options Acorn, PNG, GIF, JPEG, JPEG2000, TIFF, BMP, RAW import Pixelmator, Photoshop, PNG, TIFF, JPEG, JPEG2000, BMP, PCX, TGA, Mac Icon, Windows Icon, Windows Cursor, and a bunch more, and can import and export to an even larger number of options, notably including export to SWF and import RAW
Cute Stuff Live gradients, the “dangling rope” that joins position widgets to filter control floaters Gorgeous Icon, Filter Compositor, Elegant Minimalist UI, Elegant and powerful non-destructive layer styles Amazing gradient tool, full-featured yet it still launches amazingly fast, 64-bit support
Ugly Stuff Poor performance when previewing filters or working with high resolution images. Vector layers are still half-assed. Poor performance when previewing filters or working with high resolution images. OMG the icon … it burns! (Sadly, Pixelmator 15 introduced a new icon that’s just as ugly as the old one), half-assed web export and page layout features clutter UI without being useful
If I could add one thing from Photoshop Vector support, Layer Styles Just add the obvious vector functionality and we’re in great shape. Groups should work in the obvious way (they don’t right now). Being able to use one layer as a mask for layers adjacent to it.
Online Community Active Forum, Excellent Video Tutorials None Active Forum, Some (Lame) Tutorials
System Requirements 10.5 10.6 10.4
Price $59.00 $29.95 (introductory price) €59.00

Advertorials & Opacity, Reviewing the Reviewer

Advertorials & Opacity

I’ll say one thing for daringfireball’s mini-posts with links — at least they don’t pretend to be product reviews. Even so, mixing editorial with advertising is pretty damn annoying, and it’s perhaps the single thing about daringfireball I really don’t like.

Advertising disguised as editorial?
Advertising disguised as editorial?

Now it’s possible that this is actually not an advertorial, but a heartfelt recommendation — however, I’m giving John Gruber the benefit of the doubt. If he’d actually tried using Opacity and written this, my estimation of him would drop far further.

Based on its focus and feature-set, Opacity seems like a must-have product for developers. It appears to be a layer-based Core-Image savvy vector-drawing program for UI designers that snaps vectors to pixels to make sharp but resolution-independent graphics. I wasted about two hours trying to produce some simple icons in Opacity — icons I had already designed in Photoline (which is definitely not intended for this purpose), which means I had done the hard part elsewhere — and it looked fairly promising until I tried exporting the icons (something Opacity is apparently specifically designed to optimize).

Opacity's Icon. Enough said.
Opacity's Icon. Enough said.

Now, I have to say that the warning signs were there from the start. Opacity’s icon is childishly horrible, and the sample icon they focus on in most of their web marketing on (a faux Safari-style compass) is a sad joke and a typographic nightmare. Both things that make me believe Gruber was simply schilling this piece of crap for a few bucks.

OMG you made this fabulous icon using your program? Where do I send my $80?
OMG you made this fabulous icon using your program? Where do I send my $80?

So the basic idea of Opacity is that you want to use vector graphics because they’re resolution independent, and you want pixel-aligment to prevent horrors like single pixel lines being rendered as smears when their coordinates are fractions (e.g. when drawing in HTML5 canvases if you create a rectangle along integer coordinates and stroke it with a single pixel line you get a 2-pixel wide 50% transparent line. Ouch.) The problem is that Opacity does all this with astonishing incompetence.

I was trying to create 24×24 pixel button icons. Opacity offers a “UI mode” for this which is (supposedly) optimized for creating 32×32, 24×24, and 16×16 icons from a single vector source, and lets you work in your favored resolution. Perfect! I switched to 24×24 view, and started drawing.

Now, Opacity doesn’t snap your vertices to pixels or pixel edges. Nope, it simply snaps the coordinates it derives from those vertices to pixels or pixel edges (this may be a preference item, but I’m talking default behavior). So the odd thing is that you’ll draw an object and get something else. You then slide the vertices around until the rendered bitmap looks like what you want, and then when you’re happy, you can preview the results in all the desired (?) output sizes (i.e. 32×32, 24×24, and 16×16). So editing splines and polygons is kind of hit and miss, but you can get the job done.

My original design in Photoline (note the smeared edges).
My original design in Photoline (note the smeared edges).

What about output? My first icon was a simple “magnifying glass with a + sign inside it” to indicate “zoom in”. I had produced a pretty nice version in Photoline (think Photoshop but cheaper and faster and with a clumsier UI for most things, but better vector tools than Photoshop and better bitmap tools than Illustrator) but it suffered from “smeared lines and edges” syndrome. (Note that Photoline is cheaper than Opacity.) I replicated this design in Opacity and it looked perfect — I mean perfect — in Opacity. I then clicked preview and discovered that:

  1. The + sign in the 32×32 preview icon was messed up. BADLY messed up. Oh well, I don’t actually want a 32×32 icon so who cares?
  2. The + sign in the 24×24 preview icon was messed up in the same way. WTF?
Here's Opacity's preview mode (on the right).
Here's Opacity's preview mode (on the right). Note how it louses up the previews because I haven't registered. Just in case I want to use a screen cap of the messed up preview bitmap (with no alpha channel) to sneakily avoid paying $80 to get a properly alpha channeled borked image.


I’ve just coined a new term for what Opacity does.

Close up of the 24x24 preview in case you can't see just how awful it is at normal resolution.
Close up of the 24x24 preview in case you can't see just how awful it is at normal resolution.

So here’s the deal. I don’t know exactly what Opacity is doing wrong, but my guess is that when you’re in 24×24 edit mode it generates your edit (“fatbits”) view by snapping vertex coordinates to pixels at 24×24 resolution. So far so good. But when it tries to render the icon at 32×32 it snaps the vertices to a 32×32 grid (producing random results), and when it tries to render a 24×24 icon it snaps the already-snapped-to-the-foreign-resolution vertices to the 24×24 grid, producing random pointless variations from the results you first thought of. How this piece of crap hopes to justify its existence as freeware let alone an $80 pricetag ($40 for the crippled “express” version) escapes me. Bear in mind this is in the ballpark of Photoshop Elements, Intaglio, Pixelmator, Acorn, and Photoline.

(Disclaimer: you can’t actually export anything from Opacity (without having crap splatted on it) until you register — in fact you can’t even preview anything properly, let alone export to code, so it’s possible all this stuff works perfectly when you pay for $80, but since my free trial went so swimmingly, I’ll be hanging on to my dollars.)

Incidentally, aside from Photoline and Photoshop, the only “bitmap editor with vectors” program I’ve got handy is Acorn 1.5.x (I haven’t played with Acorn 2.x yet because my Macbook Pro is still running Leopard — but Acorn 2.x hasn’t added any vector functionality according to the release notes). Acorn’s vectors comprise lines, circles, and rectangles (seriously, that’s it) but with the intriguing property that all vertices snap to pixels. It’s a brilliantly polished half-assed feature. Indeed, if Acorn’s vector layer didn’t suffer from all kinds of bizarre UI bugs and supported arbitrary bezier curves it would crush Opacity like a bug.

Here's the final icon in Acorn (the green is just a test background). The weird yellow rectangle is a selection hint for the line that forms the magnifying glass's handle. Yes, Acorn is a bit buggy.
Here's the final icon in Acorn (the green is just a test background). The weird yellow rectangle is a selection hint for the line that forms the magnifying glass's handle. Yes, Acorn is a bit buggy.

Given my icons were very simple, I tried doing them in Acorn and produced perfect results (albeit only at 24×24 resolution) once I figured out that (a) forcing Acorn to create a new vector layer requires creating a bitmap layer you don’t want and trying to draw a vector on it, (b) duplicating vector layers in Acorn is prone to randomly losing or reordering layer components, and (c) selecting vector objects in Acorn requires marquee selecting way more objects than you actually want and then shift-deselecting the ones you didn’t want in the first place by guessing where the hit rects of the objects are. The fact that producing these icons in Acorn was vastly more pleasant and quicker and produced better results than undertaking the same operation in Opacity speaks volumes.

One last Opacity screenshot. Note the weird zoom scale. You can zoom to 533% by selecting "400%" from the zoom menu (and 1067% by zooming in once from that). Now that's attention to detail.
One last Opacity screenshot. Note the weird zoom scale. You can zoom to 533% by selecting "400%" from the zoom menu (and 1067% by zooming in once from that). Now that's attention to detail.

Gruber — hang your head in shame.

Reviewing the Reviewer

I’ve written magazine software reviews for real money way back when people like me still read magazines. Even when the typical computer user’s principle source of information was magazines (such as Australian MacUser — the now defunct publication I wrote for) and reviewers got packages months in advance and had weeks to write their reviews, most reviews were hopelessly superficial. (Mine were not, but I also tended to hand them in rather late.) So it should come as no surprise that in these days of incredibly rapid releases and zero lead times, most reviews are utter crap. Pretty much the only reviewers worth reading are either (a) reviewing a product long after release, or (b) dedicated beta testers. Anyone else simply doesn’t have the “real world product experience” to say anything much useful.

It’s astonishing to me that despite the dozens of fairly prominent bloggers who discuss graphics software for the Mac, none seem to ever mention Photoline. OK, it’s not Mac-only (but then neither is Photoshop or Photoshop Elements), and it doesn’t have a gratuitously chic UI (like Pixelmator) but it’s actually useful. No-one who uses graphics programs for anything but the most trivial of edits (redeye reduction, fixing exposure, cropping) would give Acorn — say — anything other than short shrift as a general purpose image editor. Pixelmator is at least vaguely useful for basic image editing. I’ve seen some decent work done with Pixelmator. The only real use I have for either product is as a wrapper for Core Image filters (and since I figured out how to graphically set focus points for filters in Acorn, that means I have no use for Pixelmator whatsoever).

The gold standard for reviews (at least in my experience) is the New Yorker‘s non-fiction book reviews. A typical example will start by discussing the recent publication of a particular book, or several books on a given topic, and then broadly sketch out that topic’s landscape, including the strengths and weaknesses of the existing “definitive” works covering the same material. The review will then go on to give you a rough outline of what the new book or books cover, what they add to the existing literature, and what their weaknesses — if any — may be. The result is that I — for one — often end up reading reviews of books I have no interest in, find any given review both educational and interesting, and end up either wanting to read the book(s) discussed or happy enough not to, but with some kind of vague understanding of what I’m missing out on. Fabulous.

Obviously, simply having read the book or books in question and being well-versed in the pre-existing literature covering the same subject matter is but a feeble and insufficient prerequisite for writing such a review.

A good software reviewer should do something similar. They should discuss the problem domain the program or programs handle, the dominant products (if any) in that category, and describe what the reviewed products add (if anything) and any obvious weaknesses. It follows that they must have a broad understanding of the problem domain, solid familiarity with at least some existing competing products, and have seriously used the product being reviewed. It’s pretty clear when you’re reading such a review, and it’s pretty clear when you aren’t.

Thank goodness for Ars Technica.