No (useful) Plug-Ins in Mac App Store apps

As you might know, I’m currently in the process of getting flickery into the Mac App Store. I know, I’m a little late to the game. I originally had planned to have flickery in the Mac App Store when it first launched, however, time was not on my side.

Anyways, flickery has been rejected from the Mac App Store. For two reasons.

Reason for Rejection #1: Private API.

I’m using a great framework called BWToolkit in flickery. It’s a UI framework with HUD-style buttons, scrollbars, etc – you get the idea.

Apparently, it uses private APIs for its NSTokenField subclass (which I was not aware of at the time of submission and – thank god – am not currently using in flickery).

I get why usage of private APIs is discouraged (or simply, not allowed) – they might not be there in a future release of the OS, there might be something wrong with it in certain cases, etc and I’m happy to comply with Apple on that matter. However, this next point kind of bugs me.

Reason for Rejection #2: Installing of Plug-Ins for iPhoto and Aperture.

The Developer Agreement states:

 

3.3.2 An Application may install or run additional interpreted or executable code (e.g., plug-ins and extensions) for use in conjunction with the Application as long as such code:

– does not change the Application’s submitted binary or would not otherwise be considered an Update (as determined in Apple’s sole discretion); and

– does not change the primary purpose of the Application by providing features or functionality that are inconsistent with the intended and advertised purpose of the Application as submitted to the Mac App Store.

 

I guess that is applicable for video conversion-applications which need to download some kind of codecs or frameworks that can not, for legal reasons, ship those codecs with it. Some of these applications do not work without those codecs and demand you download them, otherwise you have to quit. I do understand why Apple does not want that. It’s inconvenient to the user, it’s tedious and it just plain sucks, in my opinion.

However, if you ship a photo sharing application it only makes sense to include plugins for iPhoto and/or Aperture, for example, so users can access their photos right from the source. They are not installed automatically, but at the user’s request (if they were installed automatically, that would be another story).

It does not change the submitted binary and it certainly does not change the primary purpose of the application (by providing features or functionality that are inconsistent with the intended and advertised purpose of the Application as submitted to the Mac App Store). One of the primary purposes of the application is to get stuff on flickr. With a plugin for, say, iPhoto, it makes it very convenient for the user to do so.
The features and functionality are there anyway, uploading works both with plugins not installed or installed.

If this is a violation of the rule, why not just disallow plug-ins altogether? What the flickery exporter plug-in for both iPhoto and Aperture does is the very definition of a plug-in, don’t you think?

A Solution?

It’s no solution, it’s more of a workaround which other applications currently use as well.

I re-submitted flickery with the plug-ins removed, albeit with a button to go to a webpage to download the plugins. flickery will install them for you if you drag them onto it (I hope they’ll allow that).

However, I don’t go down without making some sort of noise. I did write an eMail to the Mac App Store team regarding this, asking for a re-evaluation of this topic.
If they (however unlikely) do change their minds, I will be happy to re-add those plug-ins to flickery.

Fingers crossed.

[twitter-follow screen_name=’eternalstorms’ show_count=’yes’]

flickery and the Mac App Store

Thanks to your feedback, I’ve reached a decision on the Mac App Store which I think is fair and I’m pretty sure you will like as well.

Result of earlier blog Post

In an earlier blog post I asked you if you were ok with flickery being Mac App Store exclusive with version 2.0 where you wouldn’t be able to receive the discount I promised you when you purchased flickery 1.x

Responses have been generally very positive, I’m glad people are very accepting of the Mac App Store and my wanting to move my apps there.

However, I did think of a way where existing customers wouldn’t lose their discount.

flickery on Mac App Store decision

  • flickery will be released these days (once it’s been positively reviewed by Apple staff) on the Mac App Store in version 1.9.21
    Version 1.9.21, which brings a few fixes, will be available for non-Mac-App-Store customers as well.
    It will be priced at €18.99, nearly exactly the same as on the website.
  • Updates up until version 2.0 will be available for Mac App Store users and non-Mac App Store users alike.
  • flickery 2.0 will be Mac App Store exclusive
    Once version 2.0 is released, it will be offered at a discount, as promised to my existing customers so they can easily transition to the Mac App Store version.
    flickery 2.0 will be a free update to users who purchase flickery 1.9.21 or later on the Mac App Store.

I hope you like this solution, please let me know in the comments.

[twitter-follow screen_name=’eternalstorms’ show_count=’yes’]

NSOperationQueue on 10.5 and crashing flickery

I received three (yes, I counted them) crash logs of flickery with this particular problem, so it’s not really common, but I still thought I should let you know what it’s about.

Apparently, when using NSOperationQueue and NSOperation on 10.5 there’s a chance an exception is thrown and the application will crash.

I’ve been checking on this for quite some time now and finally stumbled upon this blog post by Rogue Amoeba’s Mike Ash.
What he’s saying is that NSOperationQueue is buggy on 10.5 which causes applications to crash. This is really sad because it’s such a great tool for us developers.

I haven’t been able to work around this issue yet, however, I’ll keep working on it and see if I can do something about it, short of rewriting the whole application.

Fingers crossed.

[twitter-follow screen_name=’eternalstorms’ show_count=’yes’]