October 14, 2002
Implementation Details

This was written mainly as a response to an email I received on the Omni Group's MacOS X-Talk mailing list. The email said:

If the implementation [of haxies] is poor or unsupported, there's a good chance the software is eventually going to cause problems. This is particularly unfair to Apple and third party developers who have to field technical support and do PR repair for issues they didn't create.

My Response:

When you or anyone has a problem with a haxie, tell me and it'll get fixed. As far as I am concerned, posts like this are just FUD from people that haven't even bothered to use them and for some silly reason think they are implemented the same as extensions, which is impossible in OS X. Haxies do no more trickery than InputManagers, Contextual Menu Items (look at Ittec), Internet Plugins, or QuickTime plugins do.

So unless you are having a problem with a haxie, don't theorize on what bad things they can do. Don't tell me about a friend or some other third party that had a problem and blamed it on a haxie but failed to tell you that he just copied his entire hard drive's contents to another via the finder and tried to boot off the new copy and was surprised it failed or that he decided to install Mac OS X DR4 over Mac OS X 10.2.1, ten minutes after he installed FruitMenu.

If a haxie is causing a problem, it is extremely easy to find out if they are actually the cause of the problem. For one, just remove the ApplicationEnhancer.framework then log out and back into OS X. For another, the crash log will mention something about the haxie in the crash log for the thread that crashed. That's why we designed this new system to have one point of manual failure. Remove that framework and haxies cease to load.

However, there is another side, a good side, to the story. Haxies are actually able to fix bugs in other people's software. Toast 5.1.4 had a problem where it double released memory when it scanning for devices. It would crash in odd cases (usually when other memory was allocated). WSX 2.1.1 actually fixes this bug in Toast by preventing the double release by calling CFRetain on the CFTypeRef that was double released.

Finally, we do not usually talk about the methods used to implement haxies for one simple reason. In the past the parts that make people feel uneasy had been posted to public forums and websites while completely leaving out the massive amounts of checking and verification we do to make sure the bad parts of extensions from Mac OS 9 never occur with haxies.

Digg This!

 Posted by rosyna at October 14, 2002 04:28 PM




Related:
Comments

I think that Labels and other stuff from System 9 should have been built in to 10, but as long as I can buy them for a few dollars that's cool.

I just worry about Apple removing the mechanism that allows your Haxies to work.

Posted by: Terri on October 14, 2002 4:44 PM

Me too. I don't think I can live without WindowShadesX. It's literally become a permanent part of my daily life!

I hardly ever used them in OS 9, but seem to be unable to live without them in OS X. Hmmm...

I also love ClearDock. And even though I'd live, I'd rather not have to if it ever stopped working.

Posted by: Jason Anderson on October 21, 2002 4:05 AM

If there's anything you have to worry less about is that our haxies would stop working. Changes of that nature don't get implemented in one day (as some system services that use the same tricks as we do would have to be rewritten), so we'll have and take our time to modify the APE mechanism if such an event occurs, *before* an official release of an OSX with such a change.

Posted by: slava on October 21, 2002 4:48 AM

I just found your aped running on my system. I think I installed one of your shareware programs a while ago, realized it was cripple-ware and said "fuck crippleware", and threw it away. I had no idea aped was running on my system, nor how long its been running... I don't know what exactly you need this always-running process for, but I wish you didn't do it the way you do, or made it easier for users to remove. I've deleted the stuff from my Frameworks and System directory... Did I get it all? I hope so. I wonder how many thousands of users have this process running full time and don't know about it.

Posted by: unhappy on February 26, 2003 10:03 PM

The computer I'm using was given to me after someone left the company, and apparently, I learn now in frustration, this person was a fan of haxies. I know this because I'm trying to run some Tcl/Tk applications and all of them are reliably crashing every damn time I try to launch one.

I thought the software was broken, so I sent a crash log to their tech support and they noticed the call to /Library/Frameworks/ApplicationEnhancer.framework/. And what do I see in the Info.plist file there but an Unsanity copyright line -- of course, I should have known.

Every computer I've had the mispleasure of using Unsanity haxies on has had these obnoxious Heisen-bugs that take forever to figure out. At least when it was my own computer I realized what I was installing (and soon, uninstalling), but this time the junk has been sitting there for months unnoticed. Not any more...

My job today is probably going to be to ssh in to all the Macs in the office and come up with a list of this crap for removal... *mumble* *grumble* What a waste of time this crap-ware is...

Posted by: annoyed on April 6, 2004 5:10 AM

Such a nice thing you didn't even read the post you posted a comment to.

Posted by: Rosyna on April 6, 2004 5:18 AM

I read it. This isn't the first time that Unsanity software has caused me headaches, and for that matter it isn't the first time that you personally have tried to convince me that I was imagining things (I used to be on the macosx-talk list, but have been happily unsubscribed since late 2002).

I just can't understand why anyone would want to trash a perfectly nice Mac by hobbling it with these "enhancements". Any improvement they make on the UI -- it's arguable whether haxies improve anything at all, but that's subjective so I won't get into it -- is more than offset by the unstability that these things cause to the system.

Skim the first dozen or so hits on Google for a string like '/Library/Frameworks/ApplicationEnhancer.framework' and most of them will be crash log reports. Actually, of the 17 "first page" hits this string currently returns, at least a dozen seem to be crash reports -- either KERN_INVALID_ADDRESS or KERN_PROTECTION_FAILURE, which is supposedly "impossible" -- and every single one ends the report with a call to /Library/Frameworks/ApplicationEnhancer.framework/Versions/A/ApplicationEnhancer.

All these people are desperately trying to figure out what's wrong with their software: Apple Remote Desktop, Mozilla, VooDooPad, Inquisitor, Books, hudakX2.3.0, Camino (two different people reporting errors), ThemePark (two people again), Safari, NeoOfficeJ (two people yet again), XDarwin, etc.

If this company gave a shit about software quality -- which obviously isn't the case -- the underlying problem would be fixed and they'd be out there doing damage control by posting responses in all the threads Google returns saying how to fix their computers. It shouldn't take more than an afternoon to post a form lettter to each of these fora owning up for the damage you guys have caused and showing how to correct the situation, and yet most of these posts go back months & years, and has anything been done?

Of course not.

Posted by: annoyed on April 6, 2004 5:44 AM

As I've said before, APE will appear in ALL crash logs. It has nothing to do with the actual crash. If you actually LOOKED at the thread that crashed, you'd likely see that APE is no where to be found.

Just like QuickTime or Carbon is listed in all crash logs.

Posted by: Rosyna on April 6, 2004 3:01 PM

I deleted the framework and killed the aped process, and the problem went away immediately. When the problem has been isolated, why keep digging?

Like it or not, it's awfully conspicuous that APE was the final entry in every one of these crash logs. Not just somewhere in among everything that's running, but the last one that was called before things blew up. Funny, eh?

You can place the blame elsewhere all you want, but it seems pretty clear cut to me. APE is breaking things for lots of people. Lots of people are wasting time looking for solutions to problems with other software that may or may not actually exist in the first place. Removing APE resolves these problems at a stroke, like magic.

But hey, don't fix your software on my account. Just smile & think of all those peoples' wasted hours trying to sort through the mess, and then go back to saying it's something else.

Whatever gets you through the night...

Posted by: annoyed on April 6, 2004 6:18 PM

The things on the bottom of a crash log are loaded images. They are listed in order of load. Not in order of when called. APE will ALWAYS be the last one listed.

And yes, an APE could have caused the problems (like an APE made by someone for 10.2 not made for 10.3) and of course removing APE would have stopped it. Just like when you computer if turned off, it cannot crash.

You are blaming software that has had one bug (for 10.1.5) in it's ENTIRE lifetime. And as I've said before, both APE and upgrading OS X can cause memory problems in applications (that always existed) to start to cause it to behave differently.

Do you even have one of these crash logs that I could see since it seems obvious you've never emailed for support.

Posted by: Rosyna on April 6, 2004 8:42 PM

How about you guys CLEARLY explain how to completely and reliably remove the APE framework? Then people could make up their own minds about whether they want your stuff embedded in their systems

Posted by: anon on June 13, 2004 2:30 PM
Post a comment
Keep comments on topic. If a comment is unrelated to this post, it may be removed or moderated.





Remember Me?

(you may use HTML tags for style)