Mac OS X Secretly Cripples Non-Apple Software
spikedLemur writes "Vladimir Vukicevic of the Firefox team stumbled upon some questionable practices from Apple while trying to improve the performance of Firefox. Apparently, Apple is using some undocumented APIs that give Safari a significant performance advantage over other browsers. Of course, "undocumented" means that non-Apple developers have to try and reverse-engineer these interfaces to get the same level of performance. You really have to wonder what Apple is thinking, considering the kind of retaliation Microsoft has gotten for similar practices.
Oh give me a break, if you use an undocumented API for something that does not mean you "cripple" other pieces of software. It's not like OS-X says "oooo Firefox, quick make it run twice as slow". Grow up.
No, but this is how they became one.
And is that the answer to everything is it? They can do anything that they feel like purely because they are not the dominant player... so all of Microsoft's underhanded playing early on when they weren't the dominant player is all excusable too is it?
It's ridiculous to try and use this insane rationale in regards to any company that's not Microsoft. At what point do you then start going 'well, actually I've decided they have enough market share now, NOW they should be ethical'
Bar and truly humbug
Apple has been biting into M$'s market share. Are we really surprised that they've contracted a disease in the process?
Microsoft simply did what any sane company would do. Apple's doing it now - probably have copied MS's tactics in a million other ways, because it makes sense.
Condemn Apple, too, or lose any creditability you ever had.
"The fight for freedom has only just begun." - Geert Wilders
Monopoly or no, it's undeniable that using secret APIs to give your own software an edge is anti-competitive. Not having a monopoly on the desktop market might mean that it's not illegal, but the legality has no bearing on the ethics.
"Live as if you'll die tomorrow." Ridiculous. You could die later today.
From tfa: "The reason why Firefox 2 wasn't affected was that Fx2 was not a Cocoa app"
So writing this from a native perspective introduced new APIs found in tech notes you should have read in the first place before writing and running into performance issues?
"Some of you may have noticed that the Firefox 3 nightly builds have felt a lot snappier since a few weeks ago. There's an interesting story in that, one that I finally have time to write up. We've had a number of bugs on the Mac where people were complaining of bad performance compared to Firefox 2,...
However, I'm glad that there was a workaround for this issue for us on OSX, because the performance benefits are huge -- Firefox 3 on the Mac (everywhere, really) is going to be a kick-ass release!"
So, there was no issue w/F'fox v2, and 3, already 'snappier', will be a k-a release when it comes out of beta.
So, where does the crippling come in? And why does it seem like a dev w/beta software is shifting the blame, especially when the dev admits X contained a workaround?
After all, just what % of Leopard was written in-house by Apple.
Duhhhhh...
Mac OS X 10.4 introduces a new behavior of coalescing updates that enables Quartz to more efficiently update the frame buffer during each display refresh. In addition to increasing system efficiency, Coalescing updates improved visual consistency and eliminates "tearing" during scrolling and animation. To coalesce updates, the Quartz window server composites all window buffers into a single offscreen frame buffer before flushing it to the screen. When your application issues a command to flush, the system doesn't actually flush that content until the next available display refresh. This allows all updates for multiple applications to happen at the same time. Window server operations (window resize or move, for example) are handled in the same manner--coalesced into a system-wide screen update.
I would assume Apple would be thinking this makes a lot of fucking sense.
They give app writers a way to turn it off if need be. What the hell are we crying about again?
Thanks for posting this, I was just about to post it myself. This whole story stinks of sensationalism. Do people really think that the webkit and OS X developers sit together in a room and say "Ah.. how can we screw all those 3rd party application makers?". These types of APIs are usually undisclosed because you shouldn't depend on them. Anyone who reads The Old New Thing knows that it's a big problem for Microsoft as well, where developers go digging for some "hidden" APIs only to have their applications break in a future revision of the OS because it wasn't meant to be used.
There is a public way to do the same thing. They just added a total hack to the API to automatically do something by default when WebKit is embedded, instead of requiring a configuration value to be set. They didn't want it to be publicly available since they want the call to die as soon as they figure out a better way to do it. This isn't MS style stuff. There is no hidden feature. You can run the exact same code in a public way, and the it won't break when your user upgrades WebKit.
So, no, you aren't getting it right.
Yeah, that's pretty much exactly why I posted it. IMHO, Apple has been quite good with private APIs. In a major upgrade, they tend to all either become public (often after changing), or die. MS has had a less open history, and I think there are some very valid complaints there, but some are certainly overstated.
It's a natural consequence of object-oriented design.
I don't know if you've ever programmed an OO language, but the idea is that the program will have these things called classes, which are wads of code with associated functions and data (an object does certain things, and has certain attributes). Contrast to a C struct, which is just a wad of data.
Some of the functions and data will be public (though it's better practice for all the data to be private) and thus accessible by functions outside the class. Other bits will be private, and accessible only within the class. The reason is that it restricts the ways in which things can go wrong, e.g. a certain variable can only be modified by calling the class's changeVar() function, which has validation and error-handling built in, rather than letting any function put any old data in. Only exposing certain functions means that everything else in the class is an implementation detail, and programs using the class only need to maintain compatibility with a limited number of APIs (data X goes in, data Y comes out).
So Hyatt's explanation sounds quite reasonable.
Hail Eris, full of mischief...
E pluribus sanguinem
Microsoft did NOT do "what any sane company would do"! Most sane companies do not deliberately engage in monopolist practices in order to cheat and delude their customers. Microsoft did. There is no argument about that... they have been CONVICTED many times now of doing just that, in both U.S. and European courts!
"Most sane companies" do not do that. MOST companies at least make some effort to engage in Good Business, which involves both parties walking away feeling they got a good deal. That is a far cry from Microsoft's practices, which have largely been "Great! They're in the store! Now, quick, lock the door behind them before they can get away!"
Those are two very, very different approaches. It gained Microsoft a lot of marketshare... at first. But as anybody can see today, those tactics do not keep customers. It pisses them off. And once they find a way out, they tend to stay out.
How is the use of an API in an open-source project "secret"?
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
Webkit is a framework that is open for anyone to take and put into their own application. Safari and some components of Mac OS use WebKit for their own rendering of html. There is no private, "better" linkage to WebKit, there is just a hack within the WebKit framework that is there so that other applications using WebKit will not have problems with it. The Apple developers knew the internals of the operating system well enough to do this semi-safely but even they aren't happy with themselves doing it because it can still cause problems.
There is also a public, safer, more documented way of doing the same thing for applications that don't use WebKit. This public method is not perfect either but it is much safer. The Apple developers are keeping parts of the operating system under wraps which could cause major problems if you don't know EXACTLY what the internals are doing. This is a very common thing for responsible developers to do, you don't want to expose API that could fail catastrophically if something isn't set up just exactly correctly.
In short, nothing to see here, the public API is the safest bet to use. If you choose to use undocumented methods for a bit more speed then you risk bringing down your application in a hard and messy way. The WebKit developers weighed that in their own minds and decided that the risks were worth it, since they had a hand in developing the undocumented methods and could account for the quirks in a semi-safe manner.
In the case of Internet Explorer, Microsoft had a separate set of completely safe API that were optimized versions of methods other developers got to use. If you were an internal Microsoft developer you could do more with the internal API than anyone could with the external API. This was done deliberately so that Microsoft products could get preferential treatment on the Windows operating system. Microsoft also made it so that you couldn't easily use Windows without having some part of Internet Explorer as part of the system. Under Mac OS X you can remove every mention of WebKit and all that will happen is a couple of programs won't work until you re-install them with their embedded versions of WebKit.
Sapere aude!
No all they need to say is
"It's an undocumented feature. We're not going to document it because we don't want to support it. Feel free to use it, but don't bother complaining when it breaks sometime in the future."
NZ Electronics Enthusiasts: Check out my Trade Me Listings
Why would most people care about fully controlling their computer? They just want it to turn on and work. You need a different argument. Anyone who cares about that reasoning is already in your camp.
Although it's lovely to preach to the choir, it's akin to masturbation.
AC to avoid making enemies with a larger store of emotion than logic.
Choosing an email application other than Mail
Open Mail (/Applications/Mail).
From the Mail menu, choose Preferences.
Click the General button.
Choose your desired default email application from the Default Email Reader pop-up menu.
Note: You may need to set up the email application with your email account information. This information is not automatically exported from Mail.
Choosing a default Web browser other than Safari
Open Safari (/Applications).
From the Safari menu, choose Preferences.
Click the General button.
Choose a different browser from the Default Web Browser pop-up menu.
(from http://docs.info.apple.com/article.html?artnum=25566, which is the very first link on Google when searching for Mac OSX default browser.)
* Sometimes it's only a one step process. Apple claims that if you want to change your default browser/email client again you have to still have a copy of Safari or Mail on your computer, but actually most browsers, such as Firefox, automatically let you know if they are not the default browser and give you the option of making them default, which is just a matter of clicking "Yes" at a prompt.
CATS/Diebold '08- All your vote are belong to us!
Well, the US government isn't good.. not sure I would say it is evil since I don't really believe in such absolutes. And Castro surely helps with the freedom of the Caribbean in some ways.
"Thanks for all the money you paid to us. We've used it to buy off ISO among other things" -Microsoft
They do not have the right to cripple other software I put on *my* system. A class action suit would come quickly if this is what apple was doing.
However Apple is not crippling other non-apple software. Vlad clearly states that Apple is using undocumented functionality to programatically do something that FFx3 needs to set configuration files to do.... basically apple's contributions to webkit use "secret hidden" code which isn't intended for the uninitiated. Apple *may* have a good reason for this... a specific 'weird' state may need to be achieved to use these functions, or the planets might have to align correctly during compilation... we dont know cause its binary; however Apple isn't *crippling* anything... they just aren't fully documenting everything a programmer is able to do on the OS X platform.
The I was told that Apple was better than Microsoft, that they were on our side, that it is ok to use OSX, that Apple gives back to the community. Bullshit, Apple, just another greedy corporation.
Replying to my own post. :-)
What I'm reading is this. WebKit team, an Apple team, makes use of info available only to Apple people, and not to 3rd party development houses.
Apple not being a convicted monopoly, this may be an acceptable practice, but technically, this is exactly the same thing (actually, one of many things) people accuse MS of, regardless of the underlying motive, and to argue that this is somehow different is dishonest.
That's that - I'm not trying to read too much into it. Carry on. :-)
Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
The undocumented part means that firefox developers can't use it.
----
Go canucks, habs, and sens!
More to the point - there is a public API that can give the same effect (which is used in Firefox 3). Yes, it turns out that WebKit has a similar, but different method - but it's not an advantage that's just for WebKit.
The FTA even makes it clear - FF3 got the speed advantage they wanted, using the public API. The FTA even has an addition making it clear that the Slashdot article is taking the wrong slant. 'nuff sad.
"Software is too expensive to build cheaply"
By this reasoning anyone who sells anything is a monopolist. I can't buy Starbucks coffee from Dunkin Donuts. That doesn't make Starbucks a monopoly.
And, I know this is difficult for some people to understand, but being a monopoly severely restricts what you are allowed to do. This is for a very good reason, as monopolies generally have the ability to bypass the aspects of the free market that make capitalism the generally superior market system that it is.
I'll bet Apple is still experimenting with the new API and the only reason its not published is because they can't tell if its fully effective or not.
Apple not being a convicted monopoly, this may be an acceptable practice, but technically, this is exactly the same thing (actually, one of many things) people accuse MS of, regardless of the underlying motive, and to argue that this is somehow different is dishonest. You seem to be repeating yourself and you got it wrong again.
The WebKit team has created a framework which is free and open for anyone to use. In order to make this framework as compatable as possible they used some undocumented methods in Quartz, the drawing layer of Mac OS X. Yes, they are also Apple developers and they have intimate knowledge of the internals of Mac OS X. This is why they feel reasonably safe in doing something as unsafe as using undocumented methods for means which they were never intended. They didn't do it because it provided some sort of advantage to WebKit over other applications, they did it because it kept WebKit from breaking some applications that embedded WebKit.
The Mac OS X developers also have a documented, public way of doing this very same thing and the Firefox developers used it. It worked well and everyone is happy now. In fact when you compare the public way of solving the problem and the behind-the-scenes way of doing it you find that the behind-the-scenes way is much more difficult to work with and more likely to have problems down the road.
Microsoft, on the other hand, has a history of developing two different layers of its API, both of which are equally safe. The private API is only shared with internal Microsoft Developers and is much quicker/easier/more efficient than the public API. This is what has gotten Microsoft in hot water before.
It's a far cry to say that Microsoft's dual API is at all comparable to Apple's public API and the undocumented methods being used here. If Apple was truly doing the same thing as Microsoft then the undocumented methods would do the job more easily and efficiently than the public API. They don't, they are just a hack that only an internal developer could come up with to make sure OTHER people's applications keep working well. If you look at the developer's (David Hyatt's) comments he even says that they don't use this hack in Safari, Apple's own web browser. It's meant so that other people's browsers can work well.
I'd say the dishonest thing here is your feigned innocence over your comments. "I'm not trying to read too much into it." - yes you are! All of this was explained to you by several people in several different ways and yet you still came back to try to further muddy the waters. Just admit that either you have no clue about the whole situation or that you do understand the difference between Microsoft's and Apple's behaviors and you are just trying to stir up trouble.
Sapere aude!
I don't think this is at all of a surprise. Apple is just as an awful of a company as Microsoft is; perhaps moreso, now that Microsoft may learn from their mistakes (ha!) and Apple is just beginning to make them. People view Apple as this holy grail of corporations and they are just not. They are notoriously proprietary; I don't see why Slashdot doesn't just despise them like they do Microsoft, given /.'s love of open-source. Whenever I look at new Apple products I always have the back of my head the thought that I don't want them just because they are so closed off and limited. And above all Steve Jobs is just a bad guy. I wonder how many products Bill Gates has named after disowned children?
While I get your point, I still think you're an abysmal idiot. People care about having control over their computer the instant it does something they don't want it to.
Under the influence of Post-Cyberpunk Gonzo Journalism
In the Linux world, there are 'undocumented APIs' everywhere. Unless of course, one considers a .h file to be documentation.
-- In the beginning was the WORD, and the WORD was UNSIGNED, and the main(){} was without form and void...
We're still trying to get people to rtfa, there's little else to fail.
Do you have ESP?
1. Setting browser and RSS preferences: Choose Preferences from the Safari menu. Click the General Tab and select a default browser from all those installed. Next, select the RSS tab, and choose a reader aong the plethora you have installed. Quit, and you never have to use Safari again for browsing or RSS if you don't want to.
2. Setting e-mail software preferences: In Mail, choose Preferences from the Mail menu. Select a default e-mail program. Quit, and you'll never have to use mail for any e-mail tasks again.
I mean, you must not have even looked for this - these settings have worked (and well) for me for the past three years, at least - but then again, you comment was pretty much a troll anyway - "Apple does this and does that, they suck!"
Or the SPI (System Programming Interface, the private equivalent of an API) takes advantage of inside knowledge of how some data structures are designed but which could change in the future as functionality is added to the class in question. For example, Apple might decide to change CFString to always convert data to BADC-byte-order UTF-32 under the hood for better efficiency on Vax. Not likely, but I never thought I'd see Macs using Intel CPUs, either, so you never know. :-D They could make such a change and still support the public APIs, but if they had an API that allowed you to arbitrarily manipulate the bytes under the hood, they'd be stuck.
The thing about Safari is that it is effectively insulated from SPI changes because it comes out with OS releases. If Apple needs to change an internal data structure in CF, Foundation, etc. in a way that would break an SPI, all they have to do is rev Safari to not use that SPI. Thus, it is safe for Safari to use any API or SPI. If Apple publishes the SPI as API, FireFox uses it, and Apple changes the data structure, Firefox breaks, and with "luck", so do Photoshop and Word.... :-(
So you see, Apple has only three choices: A. don't publish that portion of the API, in which case some people complain because they're not able to get that extra 1% from being able to walk inside private data structures of the HFS+ Extents B-tree or whatever, B. publish that portion of the API, in which case they're stuck with that internal architecture and can't ever change it to improve performance, add features, etc., or C. publish the API and break it later, in which case developers scream again. It's a no-win.
The only thing one could possibly argue is that Safari shouldn't be using the SPI, either, to put them on equal footing. That said, since it's safe for them to do so, where's the harm? There's no monopoly involved, certainly. :-) And as you noted, many of those SPIs that Safari is trying out might become APIs at some point in the future. Having an app like Safari exercise them allows the engineers to figure out what works and what doesn't so that they don't get stuck supporting an API that isn't scalable, is hard to enhance, or isn't easily maintainable. In the long run, everybody benefits.
I'm certain that Apple doesn't do this to cripple Firefox or to make its own software look better. It's not a vast fruit-wing conspiracy.... Apple limits its public API exposure to ensure that the APIs are sustainable so third-party code doesn't break. If you don't care about that, use the SPI... just don't come crying when your app crashes on launch after a software update or whatever.... :-)
Check out my sci-fi/humor trilogy at PatriotsBooks.
smells like fanboy
a. if this was MS you'd be screaming bloody murderb.
b. you are telling me that your beloved apple is putting experimental code on our machines? or code that might be experimental? I call bs... if they created an API they would have tested it,
for the sake of comedy lets pretend this was a new dish for the menu at a restaurant... the convo would go something like this
"hey johnny try this new dish i cooked up, its fantastic but ummm.. it may or may not contain dog feces"
"well which is it?"
"I can't remember, can you just taste and tell me what you think?"
"I have a better idea, lets just start selling this to customers and let them tell us"
"fine, but we gotta figure it out so i can make more"
sniffs
"whatever just play it safe and use half as much feces as you think you may have used and we'll see if anyone complains"
yeah im guessing that would go over real well with consumers...
"Jazz isn't dead, it just smells funny" ~Frank Zappa
EdelFactor
Great post.
I've been in product cycles where we've gone through exactly the dilemma you pointed out: where making an API public means supporting it until kingdom come, when the scenario is too new for the API to be stable, or you have definite long-term plans that will cause breaking changes in the API and you don't want the burden of having to be backwards compatible with applications designed for the older API.
The only part I didn't agree with was this:
The only thing one could possibly argue is that Safari shouldn't be using the SPI, either, to put them on equal footing. That said, since it's safe for them to do so, where's the harm? There's no monopoly involved, certainly.I think it should either be ok for all players to have internal APIs or not ok for all players. I mean, if we say that right now it's ok for Apple to do this because they are not a monopoly, what happens if they do become one? At that point do they get penalized for these internal APIs (using which they designed the products that helped them obtain the monopoly)? At what point will Apple cross a threshold at which they need to change this practice and how will they know when they have crossed it? And when this threshold is crossed, is it suddenly ok for MS to start this practice again (of having undocumented APIs).
Hopefully, honest people also, when they "reveal" an interface they consider to be an internal interface subject to change, and then have devlopers whine at them that an update broke their (application, plugin, etc.) because the interface changed, are in a position where they can be honest enough to say "tough shit" to the whiner. If not, that really removes an incentive to be honest.
(That isn't necessarily the only reason to keep secrets, but it's one reason to keep secrets. I get the impression that Linus, for example, is more than willing to say "tough shit" if somebody writes kernel code that assumes the kernel will always work the way it does now and has their code breaks because it starts working differently; if he says "tough shit" in that case, my sympathy would entirely be with him, not with whoever's software breaks. Don't want your software to break? Don't use interfaces that the supplier of the interface doesn't guarantee won't change in an incompatible fashion.)
The thing about Internet Explorer is that it is effectively insulated from SPI changes because it comes out with OS releases. If Microsoft needs to change an internal data structure in CF, Foundation, etc. in a way that would break an SPI, all they have to do is rev Internet Explorer to not use that SPI. Thus, it is safe for Internet Explorer to use any API or SPI. If Microsoft publishes the SPI as API, FireFox uses it, and Microsoft changes the data structure, Firefox breaks, and with "luck", so do Photoshop and Word.... :-(
So you see, Microsoft has only three choices: A. don't publish that portion of the API, in which case some people complain because they're not able to get that extra 1% from being able to walk inside private data structures of the HFS+ Extents B-tree or whatever, B. publish that portion of the API, in which case they're stuck with that internal architecture and can't ever change it to improve performance, add features, etc., or C. publish the API and break it later, in which case developers scream again. It's a no-win.
The only thing one could possibly argue is that Internet Explorer shouldn't be using the SPI, either, to put them on equal footing. That said, since it's safe for them to do so, where's the harm? There's no monopoly involved, certainly. :-) And as you noted, many of those SPIs that Internet Explorer is trying out might become APIs at some point in the future. Having an app like Internet Explorer exercise them allows the engineers to figure out what works and what doesn't so that they don't get stuck supporting an API that isn't scalable, is hard to enhance, or isn't easily maintainable. In the long run, everybody benefits.
I'm certain that Microsoft doesn't do this to cripple Firefox or to make its own software look better. It's not a vast fruit-wing conspiracy.... Microsoft limits its public API exposure to ensure that the APIs are sustainable so third-party code doesn't break. If you don't care about that, use the SPI... just don't come crying when your app crashes on launch after a software update or whatever.... :-)
Do you still feel the same way?
Yes, I do.
And, quite frankly, if, for example, KDE were to implement a special set of calls that Konqueror could use to make it run faster, and that the KDE developers didn't consider "good enough to release", and that they didn't document because they didn't consider them "good enough", and somebody else wrote an application that used them, and KDE 4.1 or 5.0 replaced those calls with something the KDE developers considered more sustainable, and that broke that other application, my sympathy would be entirely with the KDE developers and not at all with the developer of the application in question.
It was not stupid for Microsoft to put the competitors to MS Office at a disadvantage on MS Windows 95, it was the second most brilliant business decision they have ever made. [ The most brilliant being their cheap non-exclusive license of QDOS to IBM. ]
But it was, or should have been, illegal.
It's ridiculous to try and use this insane rationale in regards to any company that's not Microsoft. At what point do you then start going 'well, actually I've decided they have enough market share now, NOW they should be ethical'
Apple isn't the dominant platform.
:)
Apple haven't integrated Safari into the desktop.
Safari can be removed.
Apple aren't trying to kill off Netscape
Undocumented does not necessarily mean secret, commercial companies have timescales.
Safari is based on open source software.
That's what Microsoft said, for 12 years they were testing API's...
There are no restrictions in OS X preventing you from using another media player such as Cog, VLC, mpg123 or really anything else that will compile and run on OS X. You also state that iTunes comes with OS X but not with Windows yet Windows comes with WMP but it doesn't come with OS X, oh wait! that's completely irrelevant!
The Dock in OSX is built in... In windows, you can dl docks made by various developers. Windows still could benefit from a dock feature being apart of a standard install.So somehow having a default UI feature that doesn't even come with another OS means you're a monopoly? Most 3rd party dock software I've seen for Windows has had some interesting bugs (haven't really used Windows in 1-2 years though).
OSX's disk imaging backup time machine thing... It beats the crap out of the Vista one, which is crippled due to the fact that MS would be sued in court for putting the competition out of business.Well, that's because MS is a convicted monopolist and Apple isn't, personally I use rsync+ssh to mirror data across drives and machines so I don't really know too much about their offerings but I've definitely heard of a couple of annoying limitations of Time Machine.
Vista has a terrible graphics viewer, where as OSX previews just about all file types right in the os.If anything that implies that Vista is the OS that is selling because it's based on abuse of a monopoly situation.
Apple makes the hardware, sells you the computer, and the OS. It is a monopoly, more so than Microsoft. Microsoft doesnt insist you buy their pc hardware direct from their own stores and then charge you for their os.Only if you're using some weird twilight zone definition of a monopoly, on the desktop computer market MS has a pretty steady grip of the market, Apple OTOH produce a complete system where they control both the hardware and the operating system, but saying that's a monopoly is like saying GM has a monopoly on the Chevy market.
Apple controls the distro of their hardware, software, and even f'n accesories. Apple Store anyone? iPod liscensed accessories....Once again, we're in the realm of Apple hardware/software, as for iPod licensed accessories that's just the typical "guarantee" that an accessory will work with the Apple product at hand and is something lots of manufacturers do.
Apple has had their end of things locked up for a while. They have a monopoly more than MS has. MS may have more installs, but Apple is an entire entity that is in complete control of its hardware, software and sales. They dictate prices to you. There is no competition with Apple hardware, or software. You have one place to buy it, and It's from Apple.Selling a complete system with hardware and OS tightly integrated is not a monopoly any more than selling a truck that comes with seats is a monopoly just because some other guy is selling just seats. Using this analogy may also help illustrate the idea that you're not allowed to run OS X on non-Apple hardware, it would be like telling people who buy extra seats for their trucks that those seats have only been verified to work with your trucks (while also using specials fittings for the seats to make it harder to just stick the seats in any old junk car).
/Mikael (IHBT IHL HAND)
Greylisting is to SMTP as NAT is to IPv4
What about the other option?
"The SPI namespace is subject to change with future OS releases, minor as well as major. Changes will be made public on this site at least two weeks prior to shipping an update with any SPI modifications. Enter your e-mail address to be auto-notified about all changes, grouped into two e-mails per week at most."
Developers have documented access to the additional performance those libraries might give them while knowing they might change. For safety's sake, the versioning could be included into the interface, allowing thoughtful devs to fall back to the (slower) API on a version number update. Also, the documentation could include some sort of discussion plattform allowing qualified devs to propose changes that might, after approved by the Steve and his Turtleneck, improve Apple's SPI (and, trickling down, the "stable" API).
Sure they shouldn't depend on it, you mark it unstable and then let them decide, either that or you keep a rolling API over a reasonable timescale (there are many reasons linux hasn't taken off, but you cant blame the unstable API).
"Actually its more like, how do we keep people on our os?...Ah we stop them using cross platform apps"
Im not sating this is the case, but that's what Microsoft did, and once somebody switches to mac osx it would be useful to lock them into using apple apps so they don't switch to an alternative!Ever wondered why safari was ported to windows but not to freeBSD/Linux, which would have been much easier? I wouldn't put it past mac os x to try the same tricks to keep thier user, as windows does, especially as if you switch to mac you show that your willing to 'learn'* a new OS.
*I say 'learn' because using a preinstalled windows/linux/mac box is pretty much point, for most users.
IranAir Flight 655 never forget!
I think one of the main reasons acronyms are frequently used on slashdot boils down to the pressure of posting a slashdot comment as early as possible.
After all, the longer it takes to post a comment, the more comments it will be competing with and the chances of it being read (modded up) dwindle.
In fact, even if this was a great comment by now the chances of it reaching +5 Insightful are pretty slim.
Maybe great late comments do deserve more generous attention though.
Quote from the article:
... in typical style, has completely misunderstood the post."
"Edit: Slashdot seems to have picked up on this, and in typical style, has completely misunderstood the post. To be clear, I do not think that Apple is in any way trying to purposely "cripple" non-Apple software. I also do not think that undocumented APIs give Safari any kind of "significant performance advantage" (as Firefox 3 should show!). However, as I said, the undocumented functionality could be useful for Firefox and other apps to implement things in an simpler (and potentially more efficient) manner. I don't think this is malicious, it's just an unfortunate cutting of corners that is way too easy for a company that's not fully open to do."
Slashdot has a reputation: "Slashdot
It amazes me that, after all these years, Slashdot editors still apparently do not do any research before they post the stories. That has reduced the value of Slashdot as an advertising medium enormously.
"Jobs won't sell it to you until he's sure it rocks."
This is one of the most enlightening things I've read here in a while. I've never understood why people get so attached to the Mac platform. Macs have build-quality issues (for example) like any other brand, but I suppose I can see how Apple fans buy because they know that they're getting a product that, at the very least, Apple is sure is awesome. I've never really gotten the foaming-at-the-mouth fan-boy thing for ANY brand, but this at least explains some of the brand loyalty for Macs.
"So the next time you feel the need to abuse someone just because they use a Mac, ask yourself instead why you hate that they use the Mac. What difference does it make to you?"
While I don't go out of my way to abuse Mac users, I do find myself getting defensive around Mac users by default, which I suppose can lead to a sort of abuse-in-retribution. My desktop is a assembled-at-home affair, and my laptop is a Dell XPS, and both run Windows Vista Ultimate. The laptop (Dell + Vista) is like wearing a bullseye on my forehead when Mac users are around, and I'm constantly berated by "Mac-heads" over my choice of computer and operating system.
Of course, the Dell machine I use was virtually the *only* discrete graphics option in the 12.1" formfactor at the time that I bought it, and Windows affords me the opportunity to take advantage of that hardware (in the form of gaming). Now, to be fair, I could game in Linux, and I have. However in windows I can easily do things like undervolt my processor, overclock my video card and, in the end, get the maximum amount of gaming and battery performance out of my tiny, under-powered machine.
The point is that I take crap from a number of Mac users for not using a brand that doesn't have a machine in its lineup that meets my needs! The Macbook and Macbook Air, while both relatively small (although still bigger than an M1210) don't have discrete graphics. That's the end of the story for me. If they offered an option that suited me, I'd consider it.
Now, one could argue (and some of my Mac using friends have) that they abuse "PC" users because PC users abuse them. In the end this may just be a chicken/egg thing.
What I don't get it why people can't just be happy letting people choose for themselves. I absolutely approve of giving, say, a Linux Live CD to someone who has never tried it, and I've converted a number of friends to Linux even though I don't use it much myself. Exposing people to new options is admirable. Abusing them for their choices is not.
Sorry, this ended up coming off as more of a rant than an insightful comment.
Apple can't really do that because the following is what will happen:
(1) Apple publishes the SPIs with all sorts of warnings and disclaimers about how they might change, how the apps should not rely on them exclusively, etc.
(2) App developers read the docs and start using the SPIs in their apps. Some developers use them without even reading or comprehending the warnings. After a year or so, there are a bunch of apps out there that depend on these SPIs.
(3) Apple now does as promised and announces that they are going to change the functionality. Some developers don't notice; some developers have gone out of business. Some developers change their use of the SPIs, but the old version of their app is deployed on thousands of people's machines and those people have no intention of upgrading or patching their apps.
(4) Apple releases the new version of OS X that breaks the old SPI behaviour. People start installing it. Their apps that depend on the old behaviour of the SPI don't work anymore, or start to crash or act funny when they do certain things in them.
(5) Message boards around the world are filled with people complaining that the new version of OS X is buggy and unstable and makes their applications crash. Idiot users send their Macs back to Apple for unnecessary repairs. Apple gets egg on face and has to roll out a patch restoring the SPI behaviour to the way it was before, and disabling their new stuff that depends on the new behaviour.
In practice: Once you publish an API of any kind, and application developers start relying on it, you can [b]never change it[/b]. At most, you can extend it in some backwards-compatible fashion. Exposing your internal data structures is a very bad idea because of this... after you do that, you will never be able to change them without breaking other people's badly-written apps and being blamed for it.
I think it should either be ok for all players to have internal APIs or not ok for all players.
You seem to failing to understand why antitrust abuse is "bad" and hence illegal. You say it should be okay for all players or not okay for all players. In this, you fail to understand antitrust law, so I will try to enlighten you.
First, an analogy: It is legal to fire a gun. Bob goes to the target range and practices his marksmanship in hopes of getting on the olympic team. Barry goes to the mall with a shotgun and starts murdering people wearing hats. Should it always be illegal or not illegal to fire a gun? It is the exact same action, just in different circumstances. Is Barry's action illegal because he is different person, or is it illegal because it is a different situation with different results? Hopefully this shows you logically, why you can't ignore the surrounding circumstance as to what is happening. ...on to the specifics...
Tying two products from different markets together is generally a legal business strategy. You can sell product A in market A and product B in market B or sell product A and B together in the hopes of attracting buyers who want both products. This is like shooting a gun at the shooting range... all well and good. The problem comes when a market is monopolized. That is to say, when a company has so much influence in one market, that many consumers have no other choice for their needs. If pretty much everyone in market A has to buy from you, what happens when you stop selling product A, but only offer a tied together bundle of product A and product B? In general what happens is regardless of how good your product B is, you sell it anyway, because you are forcing buyers to buy it because they need product A... even if they don't want product B at all. This is like shooting people at the mall.
In the first scenario the free market continued to operate because even though you were tying your two products, consumers could just select different suppliers if they have a better offering. In the second scenario the free market is undermined. No matter how crappy your product B is, people still have to pay for it, even if they just throw it away and buy a different one from another vendor. In order for you to undermine the market B, however, you have to have monopoly influence in that market A. The laws that ban this behavior are called antitrust laws, because they were first used to stop large business trusts that were undermining the free market and ruining the economy.
I think it should either be ok for all players to have internal APIs or not ok for all players. I mean, if we say that right now it's ok for Apple to do this because they are not a monopoly, what happens if they do become one?
When Apple becomes a monopoly, then they are banned from tying that monopoly to any product they offer in a different, existing market. For example, Apple does not have a monopoly on desktop operating systems. They don't have a monopoly on any given type of software (like Web browsers). Thus, if they give their Web browser advantages that people who don't also produce Mac OS X don't get, they are not undermining free trade or breaking the law.
On the other hand, Apple has close to 70% of the portable, digital music player market. Right now they are being investigated by the EU to see if their influence in this market is sufficient to qualify as monopoly influence. If the courts decide it is, then they will be banned from tying anything to that monopoly product (iPod) which vendors in other markets cannot do. This means if they support FairPlay DRM, they must either let other music sellers use FairPlay or they must support the DRM of the other music seller. If they bundle a copy of iTunes with every iPod, they must also bundle a copy of any other music playing software other vendors want to offer. If they have protocols for putting music on iPods, they must publish those protocols so that others can
...In this, you fail to understand antitrust law, so I will try to enlighten you
Don't patronize me man.. Let's keep it civil..
First, an analogy: It is legal to fire a gun. Bob goes to the target range and practices his marksmanship in hopes of getting on the olympic team. Barry goes to the mall with a shotgun and starts murdering people wearing hats...
Murder is illegal -- for all players, whatever the circumstances. People know when they are committing murder -- so they know when they violate this rule. I hope you see my point. Circumstances are indeed important. But their importance is in determining if someone actually committed murder or not (or some lesser offence like manslaughter) -- they never determine whether the murder they committed was legal or not. The rule itself is crystal clear, and applies equally to all.
Note, I'm perfectly aware that ignorance of the law is never a valid excuse. That's immeterial here. Knowing in this case is the ability to logically determine whether you are in violation or not. Antitrust law fails to meet this bar.
<Your paragraph on products A and B; the various scenarios and their effect on free markets>
Acknowleged -- I understand the purpose of antitrust law -- to protect free markets. I'm saying that: A) They actually don't do that B) They unfairly penalize companies that are successful (thereby biasing what was a free market), and C) they would be unnecessary if law was to actually keep pace with technology and treat the disease (file formats, internal APIs, etc) instead of the symptom (market share).
For example, Apple does not have a monopoly on desktop operating systems
Apple has a monopoly on Macs, so it depends on how you define the market and that can be very subjective. Say software company ZZ makes s/w only for Macs, and Apple decides to integrate some competing feature into OS-X which now threatens ZZ's existance. Now is Apple exempt regulatory oversight over this feature (similar to MS) because they don't have a monopoly in desktop s/w, or are they not exempt because they have a monopoly on Macs? Apple will argue one way, and the software maker will argue the other. Both are correct from their world view. Applying antitrust law one way will penalize Apple unfairly, and the other way will cripple ZZ's competitiveness unfairly (and other exclusive Mac shops as well).
Antitrust law is utterly useless here - regulators won't step in until Apple is a behemoth and the entire industry is spending their lobbying money on getting the DOJ to investigate Apple. By the time the dust settles all the little guys are already extinct. What was needed, was clear rules of engagement from day one. Can Apple have use undocumented OS internals of any type, to give their competing feature an advantage, or is that forbidden? Simple as that. No need for antitrust/marketshare-related bullshit.
Stuff about iTunes, DRM, MS, etc.
Apologies if I sound dismissive here. Disagreed with many things you said, but don't have the time to refute on a case-by-case basis.
Apple is not confused by this topic and their business executives and lawyers on staff know exactly what antitrust laws state and if what they are doing is likely to be ruled an abuse. Microsoft is even less confused.
It doesn't work like that (at least in my company). Whenever a product team (developers/testers/mamagers/architects) think that a particular point in their design can cause antitrust issues, they will ask the legal department what they think. The best legal can do is offer opinions and a confidence-level in said opinion. In general legal is consulted whenever there is any doubt whatsoever. Legal of course can't scan API design docs for timebombs, and the product team obviously doesn't understand antitust nuances so