The issue is as follows:
* The older method of communicating between Growl and the hosted framework cannot work within the sandbox that Apple introduced in Lion.
* Apple is requiring everything in the app store to be sandboxed starting in March of next year (originally they had targeted November 1st).
As a result, everything in the app store would stop working with Growl because the communication method would be cut off from within the sandbox. This would've been... bad. So, Growl needed a redesign so that it could work with sandboxing. Growl 1.3 supports GNTP properly (and uses an XPC to do so from within a sandbox, if necessary), but also still supports the older method if you're not in a sandbox; this allows Growl 1.3 to still receive notifications from older apps. Similarly, the 1.3 framework also works with the older method, so an app built using the 1.3 framework can talk to 1.2 just fine. (And the 1.3 framework also has a mini-Growl built in, allowing notifications to display even if Growl itself isn't installed.)
So, in theory, everything's copacetic; you use the old method for legacy support, and the new method where it's required by the security model, and everything goes nice and smooth.
Where the problem arises is that the older frameworks implemented the 'isGrowlInstalled' convenience check by literally looking for the old prefpane on disk. The old prefpane no longer exists -- in order to play with all of the App Store rules and get Apple's blessing, Growl had to turn into a standalone app. This wouldn't be a problem -- the notifications will still run just fine regardless of what isGrowlInstalled returns -- except that instead of just generating notifications, a lot of third-party apps use an older framework and used the isGrowlInstalled convenience method in wrapper logic to determine whether or not they should fire notifications /at all/. And because Growl just worked, a lot of things never bothered to update their frameworks.
(I'll own up; I was one of the developers who did that, too. Trillian prior to build 1.2 won't work with Growl 1.3 for precisely this reason.)
In such a case, the older framework using the 'is there a prefpane in the location I expect' check, returning isGrowlInstalled = NO, in an application that uses that check to determine if it should generate notifications at all... well, the end result is no notifications.
The current 1.2.3 framework (for people who still need to support PowerPC or Leopard) and 1.3 framework can both be used as drop-in replacements to correct this, which is why GrowlVersionDetective can solve the problem as an interim solution for anything that hasn't released a new update.
I think 1.3 should have been released via the MAS *but*:
a) it should have been free;
b) it should have come with a big "this will more than likely break" health warning;
c) GrowlTunes and HardwareGrowler should have been released via the MAS in parallel;
d) GVD should have been available (built-in?) from day 1;
e) More thought should have been given to providing FAQ's around "common" apps (1password, Dropbox and Skype for example).
Then, 1.4 should have been chargeable.
I think this would have eased the transition from non-MAS to MAS, from PrefPane to app and from non-sandbox to sandboxed.
Having GT and HG also available would have probably reduced the number of support tickets too.
This is just my view however - and of course hindsight is a wonderful thing.
> While I agree and support all this - what frustrates me is that all of these changes have happened in one hit.
Unfortunately, until November 2nd when Apple decided to push out the deadline to March of next year, the official deadline for 'everything has to work with sandboxing' was November 1st. Thus, Growl 1.3 /had/ to do all the sandboxing-related stuff in something of a hurry.
> --
> You received this message because you are subscribed to the Google Groups "Growl Discuss" group.
> To post to this group, send email to growld...@googlegroups.com.
> To unsubscribe from this group, send email to growldiscuss...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/growldiscuss?hl=en.
>
It was public, it is still provided, and it does return YES. In other words, if you use current versions of the framework, it returns what you'd expect.
If you are using an older version of the framework and never upgrade, the framework itself was coded to look for whether the prefpane existed on disk and return that as the result; the convenience method in older frameworks is basically just a 'does this file exist in this location' check. As Growl is no longer in the same place on disk that it once was, that implementation in older frameworks returns NO.
The framework is generally bundled into the app by most developers; if you were to pop open an application bundle and go into 'Contents/Frameworks' you'd find a 'Growl.framework' rolled into the app itself.
Now it is, in fact, possible to write a program which can go in and pop out the bundled framework, replacing it with a new one. Such a program actually already exists: it's called GrowlVersionDetective, and it's available from the downloads page at http://growl.info/downloads -- when run, it will find the various programs on your hard drive that have versions of Growl bundled, and can replace the framework with a more recent version.