f0dder, I think I should probably outline some of the reasons why I think those are bad ideas. Not all are obvious.
IMHO 2.14 isn't bad, as long as the Xcode packaging technology is sensible; after all, that's what enables a streamlined experience for all apps.
-f0dder
I seriously doubt that it is. It's probably good for games and "most" programs, but I cannot see Apple making it robust for other software. If they had a
robust standard and approved 3rd party installers, that would make more sense.
2.18 is probably sensible; most normal stuff really shouldn't be doing this - and the AppStore isn't intended for specialized stuff? of course once the AppStore becomes the only place to install software from, it's a problem.
-f0dder
2.18 Apps that install kexts will be rejected
"kext" = Kernel EXTention. Then why are they running BSD? Dunno. It just seems like this is one of those areas that limits or excludes all low-level system utilities. I think a kext to replaced Finder would be wonderful, given how unstable/nightmarish Finder is; Finder makes Windows Explorer seem like Heaven (it's that bad).
2.21 is sensible - one of the things I hate about Windows is that apps have their individual update mechanisms, some requiring always-running crap.
-f0dder
2.21 Apps may not use update mechanisms outside of the App Store
The always running nonsense like Java and Adobe Reader are certainly annoying, but I seriously doubt that Apple can provide a robust solution to meet the needs out there. Developers will end up hacking stuff up. If Apple provided a robust set of functionality that could be reasonably used, this wouldn't be a problem. They don't. Apple developer tools are entirely substandard.
2.25 is sensible, even if I'm not sure I entirely like it.
-f0dder
2.25 Apps that do not run on the currently shipping OS will be rejected
Not everyone updates to the latest OS, and there are specialized issues for each one. So why this? It doesn't make sense. In a perfect world, sure.
2.26 is sensible, since it includes the "without user consent".
-f0dder
2.26 Apps that are set to auto-launch or to have other code automatically run at startup or login without user consent will be rejected
I choked a bit on this one. Then I thought about it again, and thought no - this needs to be there. The reason being that it eliminates all software that uses an
agent. This effectively eliminates all enterprise software. It's simply a blanket that's too broad. When you install certain kinds of software, this is implicit. Adding a consent question for the user relies on Apple's installer being robust, and simply asks the question again. For a lot of software though, this should rule them out. But it should not cover
agent software, which it does.
2.27 is debatable, but most apps shouldn't be doing this. There are legitimate reasons, though, like doing full-system backups.
-f0dder
2.27 Apps that request escalation to root privileges or use setuid attributes will be rejected
Exactly. This precludes low-level system utilities, like backup software.
2.29 makes sense, as it keeps apps working even if underlying details are changed. Don't you hate Windows developers who think that "C:\Progra~1" will always refer to the user's program files folder?
-f0dder
2.29 Apps that do not use the appropriate Mac OS X APIs for modifying user data stored by other apps (e.g bookmarks, Address Book or Calendar entries) will be rejected
I waffled on this one as well. The standardized ways are usually the best, but Apple doesn't make certain things possible. e.g. It was only recently that Apple opened up its video and graphics API enough to allow Adobe access to hardware acceleration needed for Flash. As for "C:\Progra~1"... Sigh... That's just silly when developers do it. i.e.
Environment.SpecialFolder is the right way, the easy way, and the robust way. Apple doesn't have a track record for being open or making things easy, so I can't see this as a good thing. What it really says is:
2.29 Apps that modify user data stored by other apps will be rejected unless they stick to our rigid, limiting ways of doing things
Now, for the Addressbook or Calendar, this makes sense. But for a blanket statement across all software, which it is, doesn't make sense.
This precludes the concept of software suites. You can no longer have a suite of software that interoperates with different components of the suite.
Again, useful for a lot of things, but too broad and limiting.
2.30 makes sense as well. Don't you hate Windows apps that think they can write to wherever they want?
-f0dder
2.30 Apps that do not comply with the Mac OS X File System documentation will be rejected
Again, this is one that I waffle on.
But I still think it's a bad idea. Here's a concrete example...
Mac OS X is simply very bad with external USB storage. It cannot maintain a connection to a device, much less read from them at acceptable levels. The only way to fix this would be to have a low-level fix, which would require access to system resources, and hence, system areas of the computer, which 2.30 excludes. It could/would also require exceptions for 2.15, 2.18, 2.21, 2.24, 2.25, 2.26 and/or 2.27.
But there's a whole boatload of WTF in there.
-f0dder
Absolutely.
The biggest problem is that they are wide-sweeping generalizations that preclude entire genres of legitimate software. They're throwing the baby out with the bath water.
Now, if Apple were a reasonable company, I'd be much more relaxed about it and count on them to not be morons about it, believing that legitimate system tools, agents, and other legitimate software could be developed for OS X. But Apple has a proven track record of not being reasonable. They've proved themselves to be inflexible and simply irrational
again and
again and
again and
again and
again and
again and
again and I'm getting tired of listing so many... We all get the idea.
Basically, I see that list as a weapon for Apple to club developers with, and not a way to protect people from malicious software. The
iTunes store has been hacked anyways. Apple isn't looking out for customers. It's looking for ways to stuff more cash in its pockets.