Slashdot Mirror


Brief Tutorial on Reverse Engineering Mac OS X

rjw57 writes "There is an article on OSNews I wrote about how the guy behind Desktop Manager goes about reverse engineering APIs from Mac OS X with a brand new example not revealed anywhere else. From the article: 'I am often asked in email how I uncovered the API calls I use in Desktop Manager which are, unfortunately, undocumented. This article aims to give a little insight into the techniques I use to reverse engineer Mac OS X in order to provide extra functionality to users and extra information to third-party developers. In this article all the utilities I use are a standard part of Mac OS X's developer tools which are freely available.'"

121 comments

  1. How long before ... by Anonymous Coward · · Score: 0

    Apple tries to make an example of our friend?

    1. Re:How long before ... by Anonymous Coward · · Score: 0

      Okay, please explain. What problem could there be with what he's doing?

    2. Re:How long before ... by Anonymous Coward · · Score: 0

      Four words;
      D.M.C.A.

      And if Bush has his way, that can result in three years in jail with the child molestors and murders (see previous story)

    3. Re:How long before ... by hunterx11 · · Score: 4, Informative

      The story you linked to is about copyright infringement, not reverse engineering. It has nothing to do with TFA. Apple is not encrypting their undocumented code, so it has nothing to do with the DMCA. Reverse engineering is not necessarily banned by the DMCA; in fact, reverse engineering for interoperability is specifically exempt from it.

      --
      English is easier said than done.
    4. Re:How long before ... by Anonymous Coward · · Score: 0

      Well, for one it is probably against the EULA. Something being free doesn't necessarily mean it can be used for reverse engineering.

    5. Re:How long before ... by Anonymous Coward · · Score: 0

      Apple is a control company, yes. But do they want all their users in jail.

      For ultimate control, sure why not.

    6. Re:How long before ... by sqlrob · · Score: 2, Informative

      Try reading the DMCA.

      Reverse Engineering for interoperability is explicitly permitted.

  2. Versus Expose? by Anonymous Coward · · Score: 3, Insightful

    All credit to the author; it looks like quite a feat of reverse engineering and some genius coding has probably gone into it. Apologies for the subsequent inflammatory opinion.

    However, Apple have already come up with a perfect way of handling large groups of windows on one screen; it's called expose. I used to use virtual desktops on Linux, which was adequate, but when I got a Mac I settled in nicely with Expose; OS X has a near perfect user interface designed by actual HID experts. The only reason I can think of for using virtual desktops is if you're some kind of Linux zealot.
    (Don't mod me down just because you're an anti-Mac zealot mod ... try having a real discussion instead).

    1. Re:Versus Expose? by avalys · · Score: 5, Interesting

      If you're working with a lot of windows/applications, virtual desktops can act as a nice complement to Expose.

      I'm surprised Apple hasn't made it a built-in feature. They have fast user switching, but that's not the same thing.

      --
      This space intentionally left blank.
    2. Re:Versus Expose? by chrism238 · · Score: 1
      If you're working with a lot of windows/applications, virtual desktops can act as a nice complement to Expose.

      I agree; Desktop Manager is a great piece of software - free, reliable, and amazingly small.

    3. Re:Versus Expose? by Digital+Pizza · · Score: 5, Insightful
      Ya know, virtual desktops and Expose aren't really in competition with each other. I'm sure a lot of people get good use out of both, simultaneously.

      I personally don't use multiple desktops, even in Linux, but would never, ever consider taking away that functionality (if I had the power to do so), knowing how useful it is to so many other people. For that reason, I think it'd be a great idea for Apple to add this feature to OSX.

      --
      We apologize for the inconvenience.
    4. Re:Versus Expose? by burns210 · · Score: 4, Insightful

      They have done great, exception for the multiple times they break their own HID/HIG. iTunes, for example, and the whole brushed metal is basicly an excuse for making cool-looking apps. I like brushed metal, but apple has changed the HIG to morph around what they think looks best. There really should only be 1 window gui, aqua.

      Mail, in OS X, is even a third window gui(?), it isn't quite Aqua, and has noticable differences unlike any other application on OS X. Why? Who knows.

      Apple has done great, but they have clearly ignored their own UI rules for the sake of eye candy at times.

    5. Re:Versus Expose? by drsmithy · · Score: 5, Insightful
      However, Apple have already come up with a perfect way of handling large groups of windows on one screen; it's called expose.

      Expose is for switching between windows.

      Virtual desktops are for logically grouping/partitioning windows (more typically, whole applications). Virtual desktops are, basically, a poor man's multi monitor setup.

      The two solve different problems.

    6. Re:Versus Expose? by dr.badass · · Score: 2, Insightful

      Apple has done great, but they have clearly ignored their own UI rules for the sake of eye candy at times.

      HIG stands for Human Interface Guidelines. If they were "rules" they would be stupid, because there are no absolute rules to design, and pretending there are leads to bad designs. Without such guidelines, you'd end up with even worse designs. Look at Open Source GUIs (if you must).

      Really, the HIG should be titled "Interface Design for People That Can't be Trusted to Design Decent Interfaces without Handholding: THIS MEANS YOU!!!"

      Mail, in OS X, is even a third window gui(?), it isn't quite Aqua, and has noticable differences unlike any other application on OS X.

      The toolbar pinstripes have been replaced by a gradient, and they stopped using a drawer. That is all. It is not the end of the world. It can even be turned off as easily as the metal.

      --
      Don't become a regular here -- you will become retarded.
    7. Re:Versus Expose? by steeviant · · Score: 2, Interesting

      The only reason I can think of for using virtual desktops is if you're some kind of Linux zealot.

      I've been trying to take this line of thinking to it's logical conclusion, but I can't figure it out...

      I always ignore the multiple desktop features and disable the pager in X11 window managers, does that make me a Mac zealot or a Windows zealot?

      Conversely, I know people who religiously use multiple desktops in Windows who won't touch Linux with a 10 ft pole. Are they still a Linux zealot?

      I'm so confused.

    8. Re:Versus Expose? by mr100percent · · Score: 1

      I disagree with you on Mail.app. It's not unlike the earlier Finder iterations or Apple apps, and which a lot of developers copied. Customizable toolbars? A sliding side drawer? Lots of cocoa apps have both.

    9. Re:Versus Expose? by prionic6 · · Score: 1

      He is talking about the OS X Tiger version of mail.app. http://www.apple.com/macosx/features/mail/

    10. Re:Versus Expose? by robbieduncan · · Score: 1

      The new look is mostly the new combined title bar/toolbar look that is available to apps in Tiger. No doubt it is covered by the Tiger HIG, but as Apple are yet to publish the document we don't know yet.

    11. Re:Versus Expose? by argent · · Score: 2, Insightful

      Without such guidelines, you'd end up with even worse designs.

      Worse than Metal Finder? It's hard to imagine how they could have done a worse job without risking people storming One Infinite Loop and burning Jobs in effigy.

    12. Re:Versus Expose? by harlows_monkeys · · Score: 3, Insightful
      However, Apple have already come up with a perfect way of handling large groups of windows on one screen; it's called expose. I used to use virtual desktops on Linux, which was adequate, but when I got a Mac I settled in nicely with Expose; OS X has a near perfect user interface designed by actual HID experts

      Wrong. Expose is nearly perfect for managing large groups of windows only in the case where you don't have multiple windows from an application being used in separate user tasks.

      For example, suppose you are working on some graphics for your web site. You have a browser window opened on your site for reference, and other browser windows on other sites. You have Photoshop opened with various images being edited, so you have a bunch of Photoshop windows. You've got a mail application opened reading an email thread discussing the web site design.

      Expose is perfect for managing your windows in that situation. All those windows belong to the same logical task ("update web graphics").

      Expose even stays almost perfect if we throw in another logical task, if it doesn't use any of the same apps. For example, if you have a couple terminal windows opened to servers you are remotely admining, things are still fine.

      However, when you get to multiple logical user tasks, with some apps being used for more than one of those, Expose becomes inadequate.

      Consider this situation: you are working on three separate things. For thing A, you are using two terminal windows (say to ssh to two separate servers you admin), one spreadsheet window, and two browser windows.

      For thing B, you are using one terminal window, two spreadsheet windows, and one word processor window.

      For thing C, you are using one spreadsheet window, two word processor windows, and two browser windows.

      Expose doesn't handle this very well at all. When used an all windows, it doesn't work well. Its "all windows" mode has windows from all three of your logical tasks, scattered all around, and it can be hard to tell which window is which (especially for terminals and spreadsheets).

      What you need here is a way to hide or minimize a group of windows based on the user task they are associated with. Apple provides no mechanism for that. They provide a way to hide all the windows of a given app, but in my examples above, each app has windows associated with more than one user task.

      What would be perfect would be Expose with multiple desktops. In my example above, you'd then do task A on one desktop, task B on another desktop, and task C on a third. On each desktop, you'd use Expose to manage the several windows that are on that desktop.

      Basically, Expose, minimizing, and hiding only provide three levels of organization: by individual window, by application, or everything. What's missing is a way to manage all the widows of whatever the user is working on at the moment.

    13. Re:Versus Expose? by nickos · · Score: 3, Interesting

      "OS X has a near perfect user interface designed by actual HID experts"

      There's no such thing as a perfect user interface. Apple should give users as much flexibility as possible since everyone has different usage styles. There's an interesting article from a frustrated Mac user here (read the section titled "Switcher Stories").

    14. Re:Versus Expose? by Proteus · · Score: 2, Insightful

      Expose is probably all one really needs, yes. However,,virtual desktops are nice for development. I find it very convenient to have several documentation and reference windows open on one desktop, the test environment on another, and the actual code view on a third.

      This means that it's much easier for me to quickly switch between, say, documentation and code view, while providing a cleaner workspace for each area. Is it necessity? No. It is, however, my taste. The OSX interface is very nice, and very intuitive. However, it is not possible to design the one true UI that works optimally for everyone. Having Desktop Manager as an option for those of us who work better in a "multiple desktop" frame of mind is a service to the community.

      --
      We may not imagine how our lives could be more frustrating and complex—but Congress can. – Cullen Hightower
    15. Re:Versus Expose? by mmkkbb · · Score: 1

      (especially for terminals and spreadsheets).

      Well, typically the window title is listed when you mouse over the scaled version. You can set Terminal.app to set the window title to the currently running command including arguments.

      What would be perfect would be Expose with multiple desktops. In my example above, you'd then do task A on one desktop, task B on another desktop, and task C on a third. On each desktop, you'd use Expose to manage the several windows that are on that desktop.

      Nothing stopping you :)

      --
      -mkb
    16. Re:Versus Expose? by 99BottlesOfBeerInMyF · · Score: 5, Informative

      iTunes, for example, and the whole brushed metal is basicly an excuse for making cool-looking apps. I like brushed metal, but apple has changed the HIG to morph around what they think looks best. There really should only be 1 window gui, aqua.

      Brushed metal was originally applied to windows that simulated real world devices. iTunes=stereo. DVD Player=TV+DVD player. Later on it was applied to most of the interface and I for one am very glad. It provides better contrast with window contents. Finder windows have a default white background as do many text style documents like PDFs, Word files, etc. Most editors and terminal windows are best with white text on a black background for maximum contrast with minimal eyestrain. This means about half my windows are primarily white and half are primarily black. Now what color is halfway between white and black, does not grab the eye, and does not clash with any other color? Gee that would be only one...gray. Add a little texture and you get the brushed metal look. Apple designers probably realized why people like the brushed metal, but most people just like it because it looks good. It looks good because it is pretty much the best color you can use from a UI design perspective.

    17. Re:Versus Expose? by FaasNat · · Score: 1

      I agree that Expose and virtual desktops can work well together. I think it also depends on the environment it's being used in.

      An example of this is at work, I need to have serveral different applications open, each having multiple windows. It works well when I separate them by virtual desktops and then use Expose when I need to find a certain window of that application when I'm on that desktop.

      However, at home, I am not running as many applications so Expose is sufficient enough to sort through the open windows.

      --
      There's never enough when you have too little
    18. Re:Versus Expose? by GlassHeart · · Score: 2, Interesting
      Apple have already come up with a perfect way of handling large groups of windows on one screen; it's called expose.

      Apple is composed of some very smart people, but Exposé is not at all the "perfect" way to handle large numbers of Windows. Having a second monitor - which MacOS supports very well - is usually better for users with no space or cost constraints.

    19. Re:Versus Expose? by dfj225 · · Score: 1

      I like Expose, but what I've been wondering is if there is a way to use expose or even the windowing options of indvidual programs to have all the windows for that one program tiled across the screen? What I mean by this is to tile the windows and keep them that way, not untiling everything when I click on a window.

      --
      SIGFAULT
    20. Re:Versus Expose? by nvalvo · · Score: 1

      Guys, it's worse than that: the "Pro" line of Apple Apps, eg Final Cut Pro, Shake, and Soundtrack, etc. have another gui theme (dark grey, and quite appealing, frankly). And GarageBand has an absolutely monstrous ui, totally unique.

      And yes, this is important. If this keeps up, it could get to be like Windows around here in no time.

    21. Re:Versus Expose? by for_usenet · · Score: 2, Interesting

      I think the reason why Mail.app looks so different is proably because it is one of the truly cross platform mail apps. I remember reading somewhere that Mail.app is one of the few applications that can compile cleanly and with all functionality intact on both OS X and Linux running GNUStep. If that were the case, it might explain the different GUI, as they may have had to make some comprimises to make the application truly cross platform.

    22. Re:Versus Expose? by Ucklak · · Score: 2, Informative

      I agree but from a management point of view, If you have that many apps open that Expose doesn't give you good idea of what you're working on, you're not efficient and most probably wasting productive time.

      As a user of Linux and Mac, I use both Virt Desktops and Expose (used to use VD on the Mac before 10.3). Not trying to be a flamer here but there is no way one person can be productive with 4x (or even 2x) what Expose handles.

      Expose is good for less than 15 windows on a standard desktop. Those with the 30" Cinema displays mileage will vary.

      What could you possibly use that occupies that many windows and still be 100% productive?

      I'll have Photoshop open, email, browser, Dreamweaver, and Eclipse. Sometimes I'll have 2 browsers open and a terminal window. Expose handles that perfectly but that's at the limit for my screen.

      I used to use virtual desktops on the mac the I realized that I wasn't being productive on 4 different desktops (really using just 3) and altered my workflow to adjust to Expose. I noticed that I switched mainly between 2 windows then cut off time wasters.

      On Linux I just use no more than 2 VD's although sometimes compiling on a 3rd comes in handy.

      I wish there exists a stable Expose counterpart for Linux.

      --
      if you steal from one source, that is plagiarism, if you steal from many, well, that's just research.
    23. Re:Versus Expose? by mfnickster · · Score: 1
      > Expose is for switching between windows.

      > Virtual desktops are for logically grouping/partitioning windows (more typically, whole applications).
      > Virtual desktops are, basically, a poor man's multi monitor setup.

      > The two solve different problems.

      But when you click on an application's icon in the Dock, it brings all the application's windows to the front. That's pretty much all the 'logical grouping' I need, and if I really need to see just that app, I can command-option-click the icon to hide everything else.

      In other words, virtual desktops solve a 'problem' that I don't seem to have! :)

      --
      "Slow down, Cowboy! It has been 3 years, 7 months and 26 days since you last successfully posted a comment."
    24. Re:Versus Expose? by ErikZ · · Score: 1

      You realize that posting as an AC will cause your post to be deleted when slashdot archives this story?

      So, if someone decides to have a "real discussion" with you, it will only show his side.

      Brilliant.

      --
      Democrats or Republicans. They are both taking us to the same place and they are not afraid of us anymore.
    25. Re:Versus Expose? by earthbound+kid · · Score: 1

      As far as I can tell, Apple changed the system to make it stop drawing the line between title bars and toolbar. Fine, whatever. What I hate about the new Mail.app though are the toolbar icons. They are ugggly. I'm not sure why Apple went with such strange, non-standard, and visually unappealing icons.

    26. Re:Versus Expose? by Monx · · Score: 1

      Grouping windows by application solves a subset of the problem solved by virtual desktops.

      Lets say I'm developing three different projects at once. It would be really nice to show the editor, terminal, preview, etc. for each one quickly. In other words, I want three virtual desktops each with several open windows from a various applications.

      Virtual desktops have their place.

  3. Re:Which way today apple? by guet · · Score: 4, Informative

    Great example of apples practice of breaking API's leaving developers out of the loop

    It's an undocumented, unsupported API; that's what the article is about. What broken APIs were you thinking of? Carbon took over most of the OS 9 ones (apart from some clearly documented exceptions).

    If you had read the article you might actually have had something useful to say.

  4. Re:Which way today apple? by cbiffle · · Score: 4, Insightful

    It's an undocumented API.

    That's one of the many reasons why some APIs are left undocumented: because they are expected to be unstable.

    Can't really blame Apple on this one. They didn't publish the API, and changed it in Tiger to a more flexible three-part solution. Eventually they may decide the design's a good one and publish the API.

    Until then, use it at your own risk.

  5. Re:Which way today apple? by avalys · · Score: 4, Insightful

    In this example, Apple broke undocumented APIs. Anyone writing or using an application that takes advantage of undocumented APIs should be prepared to discover that they've been changed, moved, or deleted entirely.

    The APIs that DesktopManager uses were probably left undocumented precisely because Apple knew they were going to be subject to change.

    Apple is good, and we are going to talk to talk about it.

    --
    This space intentionally left blank.
  6. It depends on how you work by AnEmbodiedMind · · Score: 4, Insightful

    I myself have found that by really learning how to manage windows the "apple way" I don't really feel the need to use virtual desktops much (I used to use DesktopManager).

    For me, this means using Hide (Command-H), Swich app (Alt-Tab), Focus on window (active) or next window (a custom key binding like Alt-Tab), and Expose.

    But that doesn't mean there isn't a place for virtual desktops.

    One thing that expose relies on is that the conceptual groupings of "All app windows" and "All of this apps windows" are all you need. The problem is if you have a large number of similar looking windows from different applications it can be difficult to manage even with Expose.

    Virtual desktops can give you custom Expose groups - which can narrow the search for a particular window. This can be useful if you are working on several complex tasks that use multiple windows from multiple apps (each task can get its own desktop), and also have a bunch of side apps - like your calendar, email, instant messenger etc.

    So Expose solves the window management problem to an extent, but it can be combined with virtual desktops when things become even more complex.

    1. Re:It depends on how you work by gullevek · · Score: 1

      I am totaly with you. When I got my first Mac. The first thing I installed was DM. But it didn't work out. Nowadays I don't need Virtual Desktops anymore.
      As you said, when you use Exposee, Hide, etc. Then you are way more powerful.
      Especially F10 Esposee to show all windows of the current app, are the Virtual Desktop Killer for me. (at least at home)

      --
      "Freiheit ist immer auch die Freiheit des Andersdenkenden" - Rosa Luxemburg, 1871 - 1919
    2. Re:It depends on how you work by civilizedINTENSITY · · Score: 3, Interesting

      I like to dedicate a virtual desktop to each class I'm taking. That way when I want to work I just move to the desktop for that class, and everything I'm working on is open there. I save often, but never actually close a document until its turned in. I use yet another desktop for email, surfing, IRC, etc...

    3. Re:It depends on how you work by Anonymous Coward · · Score: 0

      That makes a lot of sense, actually. I'll try dedicating one desktop for work and one for home use (I use the same laptop for both). Thanks for the tip!

    4. Re:It depends on how you work by Anonymous Coward · · Score: 0

      How earnest.

      Some of us reprobates use it similarly...one desktop for each type of porn we're viewing. One desktop for lesbian, one for text, one for asian, for hardcore, for bondage, etc.

      And of course one clean desktop (if not the keyboard) for when company comes by.

    5. Re:It depends on how you work by Anonymous Coward · · Score: 0

      The problem is if you have a large number of similar looking windows from different applications it can be difficult to manage even with Expose.

      I can't agree with this more. I think that Apple should at the very least have the text window title handles over the window thumbnail... the way that It's currently implemented creates something of a mystery meat interface when you are working with many windows that can't be distinguished when scaled down.

      It's really frustrating when I'm in Xcode and have a load of class files up, or in TextEdit, or most any application that does not have really distinguishable images in it's windows.

    6. Re:It depends on how you work by Ammonium+Cowherd · · Score: 1

      Same with me. I don't even use Exposé much, when I want to to get access to the desktop, I simply click on it while holding down OPTION, this'll hide the current application (I rarely have other windows than the current app displayed). It doesn't look as fancy as Expose(r), but it does the job and has done it since ye olde Mac days.

      When I switch apps I usually either do it via CMD+TAB (no hiding) or I click on the dock wile pressing OPTION that way the current app gets hidden. Keeps the screen clean. I have most of my windows hidden most of the time as I mentioned above.

      Also I started using Witch, with this app-switcher you can switch between any window, even the ones minimized in the Dock.

      I've tried Desktop Managers, but it somehow never worked for me. Having two real desktops however I found quite nifty, mainly because you can see both of them at the same time.

      If I have to switch from one desktop to another I might as well hide one window and show the other. Same difference.

  7. Done preaching? by dmarcoot · · Score: 0, Troll

    So jobs invented capitalism and anything you have to buy is evil?
    Do you live on a commune and make your own clothes too?

    Did you buy your car, TV or make those?

    The if it isnt free, its root of all evil" crowd is tiresome with the dogma.

  8. Re:Which way today apple? by nwf · · Score: 2, Insightful

    I think people mean: this is a great example a post by someone who doesn't read the article. :-) Personally, I'm all for adding cool new features to Mac OS. They will likely document them at some point.

    --
    I don't know, but it works for me.
  9. Huh? by RzUpAnmsCwrds · · Score: 4, Funny

    So now we find out that Apple has used - and is using - undocumented API calls.

    Sounds like something Microsoft would pull.

    Oh, wait, this is Slashdot. I forgot.

    Well, then Apple's just trying to protect its intellectual property. No harm.

    1. Re:Huh? by Anonymous Coward · · Score: 0

      The difference is at what level they're used. Apple uses them for the core operating system, not applications. I would be extremely surprised to find an OS that did not include some functions for private use, although they might be documented anyway as time permits.

    2. Re:Huh? by the+pickle · · Score: 4, Interesting

      Or, more likely, Apple hasn't seen fit to document the calls yet. Not to excuse their laziness, but it seems like Apple gets around to documenting things much less quickly than they used to. Frankly, I suspect that even after nearly five years of OS X, they're still playing a bit of catch-up with the documentation.

      p

    3. Re:Huh? by Anonymous Coward · · Score: 1, Informative

      Actually, Apple intentionally reserves APIs that are related to "user experience".

      I doubt they will ever get around to documenting functions related to to switching "workspaces"/desktops unless Apple themselves chooses to ship a desktop switcher. Another example is putting items into the Menu Bar.

    4. Re:Huh? by Trillan · · Score: 4, Interesting

      Apple has two methods for putting items in the menu bar: The "right" way to do things, and the way that looks good to users.

      The wrong way to do things -- and the way Apple uses for their menulets -- reserved involves injecting code into SystemUIServer's running space. If one menulet crashes, all menulets crash under this model. It is not surprising they want to discourage this mechanism for end-developer use.

      Personally, I expect that sooner or later Apple will port the features of the "wrong" way to the right way, then upgrade thier menulets to use the documented API instead of the undocumented one. However, I expect there are much higher priorities.

    5. Re:Huh? by Midnight+Thunder · · Score: 5, Insightful

      Although I can't find a reference to the source, I believe Apple already explained the reason there are documented and undocumented APIs ( these are also known as public and private APIs) The reasoning is that any private APIs are not yet set in stone, so if you do use them you should not be surprised that your application breaks with the next point release. These APIs are undocumented, but not hidden. If you wish to create programs that are stable between releases, then you should only use public APIs. The choice is yours.

      Remember there is a difference between hidden APIs and undocumented APIs. Are all the APIs in Linux documented?

      --
      Jumpstart the tartan drive.
    6. Re:Huh? by jcr · · Score: 5, Informative

      Keep in mind, that once an API is documented, then Apple is committed to supporting it. If a method or function is not documented, then it can change and break your app with any release, be it a software update, a security update, etc.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    7. Re:Huh? by Rosyna · · Score: 1, Informative

      Good point and all. But what's a menulet? Some word you just made up? They're called menu extras.

      Then again, these MAC things weird me out. I need to get a new Apple when MAC announces them.

    8. Re:Huh? by Anonymous Coward · · Score: 1, Funny

      I thought the big stink with Microsoft was that many OS services had 2 APIs, one they gave to third party developers, and one they used internally. One of them was tuned to run slower than the other... I just can't seem to remember right now which was which.

      :^P

  10. Re:Which way today apple? by pmc · · Score: 1, Troll

    Ah - right. So when a company has undocumented APIs then it is because they are not documenting them for altruistic reasons.

    Unless the company is Microsoft - then it becomes evil.

    The slight problem with this slightly simplistic argument is that the APIs are not undocumented. They are documented, otherwise the Apple developers would not be able to use them (and, after all, the article is about disassembling an Apple application to find out how they worked).

    The APIs are just not documented publically - Secret APIs in other words.

    Of course this is no doubt still a case of Apple's Secret APIs: Good vs Microsoft's Secret APIs: Evil, but it's late, and I'm not up to the mental gymnastics that will be required to make the leap. No doubt an Appleista will be along in due course to make clear the path to enlightenment.

  11. Re:Which way today apple? by avalys · · Score: 2

    I don't think there's anything wrong with Microsoft having undocumented (call them secret if you want) APIs. You're making the "all Slashdot posters share the same opinion" mistake.

    --
    This space intentionally left blank.
  12. Re:Which way today apple? by gl4ss · · Score: 2, Insightful

    all API's are documented, well, API's that are written in a company the size of apple anyways and in any other software project done by pro's(hopefully anyways).

    they're just some that some committee or workgroup decided that they shouldn't be used.. all closed os's have those.. hell, I'm frustrated at the moment at symbian because of precisely this(well, nokia to be more specific but anyways..). it bugs the hell out of me that there's a bunch of things in there that aren't open.. but that are in and usable and you need to use them for certain projects(and the api, including them, changes between versions anyways).

    everything is subject to change. just that when it's undocumented you'll never know about it untill it just doesn't work anymore.

    --
    world was created 5 seconds before this post as it is.
  13. Re:Which way today apple? by Anonymous Coward · · Score: 0

    Well, Apple has a long history of not documenting alot of their APIs. You know the little icon march that appeared when you booted Ye Olde MacOS? Even though it was widely used, it was never documented for 10+ years.

  14. You parrot nonsense without understanding... by argent · · Score: 3, Informative

    So now we find out that Apple has used - and is using - undocumented API calls.

    Um, no Apple has no applications that use the virtual desktop APIs to compete unfairly with third party apps. In fact Apple has no competing application in this area at all, and two of the three applications that DO exist are open source.

  15. truss for MacOS X? by mzs · · Score: 3, Interesting

    On Solaris there is a command truss that is the king of all truss-like commands. Unlike strace, ktrace, and BSD truss this tool can print a trace of all function calls made by an application as it runs (among many other useful things). Does anyone here know of an analogous tool for MacOS X? If not I wonder if an awk/perl script munging the output of nm to generate tracepoints for gdb where each trace point creates a new tracepoint at the instruction where the function call returns, prints out the funtion name and the contents of r2-r10 or so, then continues on or something like this would be something someone has already written.

    1. Re:truss for MacOS X? by mzs · · Score: 1

      I just looked and there are some tools in Developer -> Applications -> Performance Tools that may be what I would like to use. In particular Shark and Sampler look promising. I wish there was a simple command line program that worked similarly.

    2. Re:truss for MacOS X? by cortana · · Score: 1

      It sounds like you are describing 'ltrace'. I don't know if it has been ported to Mac OS X though.

  16. You're confused, oh trollish one. by Fished · · Score: 4, Funny
    So jobs invented capitalism and anything you have to buy is evil?
    No, no, no, no! Capitalism creates jobs, but jobs didn't "invent" capitalism. What are you some kind of weird left-wing labor flack who thinks that jobs are the end-all-be-all?

    --
    "He who would learn astronomy, and other recondite arts, let him go elsewhere. " -- John Calvin, commenting on Genesis 1
    1. Re:You're confused, oh trollish one. by sharpestmarble · · Score: 1

      Grammar and spelling: Jobs should be capitalized and it's "jobs is the end-all-be-all." :D

      --
      AC's modded -6. I don't see you, I don't mod you, anything you say is lost. Don't like it? Don't be a coward.
  17. Re:Which way today apple? by mpaque · · Score: 2, Interesting

    Actually, these are undocumented SPIs, Systems Programming Interfaces. SPIs exist in many layered systems, and are intended to provide functionality used to implement higher level mechanisms.

    In Mac OS X, for example, the CGS SPIs provide functionality used by the Carbon, Cocoa, and Java environments. (You didn't really think Carbon and Cocoa somehow each implemented their own window systems, did you?) The SPIs are private because, simply, the functionality they provide is pretty raw, low level stuff. Using the private SPIs behind the back of an application could readily lead ti inconsistent state in an application, leading to exciting events such as the Spontaneous Program Logic Application Termination (SPLAT).

    "Documentation' for some of these really low level SPIs may consist of sophisticated mechanisms along the lines of "Hey! Andrew! How's this supposed to work?" (Yes, everything should be documented, and preferably folded into a CASE system that won't let you compile anything until the documentation is written. After all, that's how the LINUX kernel is managed, right?)

  18. Appleista here! by Johnny+Mnemonic · · Score: 4, Insightful

    No doubt an Appleista will be along in due course to make clear the path to enlightenment.

    You called?

    The answer to your difficulty is obvious: follow the money. What strategic advantage does Apple gain by not publicly documenting these APIs? A corner on the windows management market? I'm sure is worth a whole lot because you can see how much Apple charges for it at the Apple Store. Oh, wait, you can't, cause there is no such separate competing product that Apple profits by leveraging their OS.

    vs. Windows, where, let's see, they made a substantial amount of their $50 Billion on by selling Office--which required that they kill their competition in Office applications.

    "But what of IE?", I hear you plaintively cry. "Doesn't Microsoft give that away for free?" Certainly. But their clear strategy was to use the product to own the web, and IE was the platform to do it.

    When Apple sells a virtual desktop management tool, besides the OS, and doesn't document the APIs, you'd have an argument. For example, I imagine QT has access to things that WMP doesn't, but proving that is an exercise for the reader. As it is, you're just trolling. Speaking of simplistic arguments.

    --

    --
    $tar -xvf .sig.tar
    1. Re:Appleista here! by GoRK · · Score: 1

      Well, Keynote reportedly uses the API; but it's not as if it couldn't do transitions another way - ie without using it. That being said, it's possible that the framework code implementing this is simply duplicated inside of the keynote application and implemented as a framework for the simple reason that several OS components need to use it as well.

    2. Re:Appleista here! by aristotle-dude · · Score: 1
      Yeah, it's called Core Image/Core Video. It is now a framework in Tiger but the functions were originally used in Motion.

      Apple started to publish information about Core Image/Video "before" Motion shipped.

      --
      Jesus was a compassionate social conservative who called individuals to sin no more.
    3. Re:Appleista here! by jcr · · Score: 4, Informative

      Keynote uses the supported OpenGL full-screen mode. There is sample code at developer.apple.com that shows how to do full-screen GL contexts.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
  19. I'm happy without virtual desktops... by sootman · · Score: 2, Interesting

    ...what I really want is to be able to hit (for example) control-alt-F1 and get a full-screen command line. Every so often I've got a lot of crap open and I just want nothing but a big, empty, command window.

    --
    Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
    1. Re:I'm happy without virtual desktops... by JJSpreij · · Score: 1
      what I really want is to be able to hit (for example) control-alt-F1 and get a full-screen command line
      have a look at Keyboard Maestro http://www.keyboardmaestro.com/main/; creating a macro that does this is very easy. Not free, but very powerfull.
      --
      "These are my principles. If you don't like them, I have others." --Groucho Marx
    2. Re:I'm happy without virtual desktops... by argent · · Score: 1

      Peter Maurer has a Butler for you. Just set up terminal the way you want, save the settings in a .term file, and drag it into your Butler configuration and assign a hotkey.

    3. Re:I'm happy without virtual desktops... by option8 · · Score: 1

      i usually run 4 desktops using desktop manager. one with my email in it, full screen; one with my web browser(s) peppered on the screen; one with whatever actual work i'm doing; and one with my admin tools full screen. it's very easy to do a full-screen term window as a .term file, pop that open on desktop #2 at login...

      it used to be that my 2 monitor setup confused my coworkers, but you should see the bug-eyes i get when i switch from desktop to desktop - each looking different from the last. i've had people start looking for the other computer under my desk.

    4. Re:I'm happy without virtual desktops... by menace3society · · Score: 1

      Well, write one. It shouldn't be too hard, you just need to have it be able to assume full screen mode. And, you'll get bonus points if it can work as a Desktop Background.

  20. Re:Which way today apple? by b17bmbr · · Score: 2, Insightful

    I think the difference is this: does Apple use undocumented API's to purposely cripple, outright break, or unfairly compete with third party vendors. The list is long when dealing with microsoft, all the way back to dr. dos. if Apple did this, say a photo-manipulation app that competed with say, adobe, then there'd be room to bitch if if they used undocumented and secret API's to speed up rendering. or perhaps they have a secret network protocol that is used to connect os x clients to os x servers only. it sounds like their desktop features are designed to compete with windows, which makes the API's not relevant. and unlike windows, there really is a mac way to do things, which apple really wants to enforce. they don't care if someone is screwing around with xcode and comes up with some neato little $5 shareware app, they are concerned with big commercial apps and they want them to do things a certain way, the mac experience. like it or not, that's what they do. if it's to enforce application uniformity than that's hardly a sin.

    --
    My problem? I was perfectly gruntled, until some numbnuts came by and dissed me.
  21. Re:Which way today apple? by Professor+S.+Brown · · Score: 1

    When has anyone said Microsoft's undocumented API's are evil? Are you trolling or just a twat? I guess if you see every Apple article as being a threat to your nerdy little world then making up bullshit arguments and playing the 'Mac Zealot' card is pretty much all you can do I guess. Are you this pathetically defensive in real life?

    --
    Shitram Brown, PhD
    Professor of Mathematics
  22. Re:Which way today apple? by jcr · · Score: 2, Insightful

    The functions in question are not API at all, by definition. Since they are explicitly not supported, they are not part of the Application Program Interface, and not documented (of course).

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  23. In a word, Don't. by jcr · · Score: 4, Informative

    I know that it's fun to pick apart the framework code, make guesses as to what it's doing and how, and write code that exploits it in some way, but don't, don't, don't write a commercial product that depends on what you discover by this kind of spelunking, unless you are fully prepared to deal with the consequences of it breaking at any software update.

    If your users call Apple because your program broke, Applecare will tell them to talk to you about it. If you ask Apple for help with an undocumented API, your request will be declined.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
    1. Re:In a word, Don't. by argent · · Score: 0, Troll

      don't write a commercial product that depends on what you discover by this kind of spelunking, unless you are fully prepared to deal with the consequences of it breaking at any software update.

      Don't write a commercial product at all unless you're prepared to deal with the consequences of it breaking at any software update. Don't write any software at all unless you're prepared to deal with it breaking at any software update. Don't even USE software unless you're prepared to deal with it breaking at any software update.

    2. Re:In a word, Don't. by CDarklock · · Score: 1

      This is wonderful advice for people who are only going to play in the little sandbox O/S developers give them. I like those people. I think everyone should go be one of those people.

      Why? Because the people who actually understand systems, who are capable of reverse-engineering the O/S to get at the functionality they want, who write software that does new and amazing things... those people are my competition.

      And while I believe competition is good for innovation, I also understand that a LACK of competition is good for my wallet.

      I find it terribly amusing as Microsoft opens more and more information up to developers, and the developers STILL cannot manage to fill in the huge gaping holes Microsoft leaves in Windows for extended periods of time. Why doesn't Outlook have a newsreader, for example? Outlook Express does. Any company could walk in and plug a newsreader onto Outlook, and if they do it well I'll bet that company will make a boatload of cash. But no one does.

      --
      Microsoft cheerleader, blue flag waving, you got a problem with that?
    3. Re:In a word, Don't. by mmkkbb · · Score: 1

      Any company could walk in and plug a newsreader onto Outlook, and if they do it well I'll bet that company will make a boatload of cash.

      Why would anyone pay for a newsreader when Google Groups exists? I can't even imagine someone trying to set up a local NNTP server for anything.

      --
      -mkb
    4. Re:In a word, Don't. by jcr · · Score: 3, Insightful

      This is wonderful advice for people who are only going to play in the little sandbox O/S developers give them.

      It's a bit silly to describe the public, supported API of OS X as a "little sandbox".

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    5. Re:In a word, Don't. by CDarklock · · Score: 1

      People who push the envelope aren't readily supported by public APIs, because those APIs leave a substantial margin to prevent inexperienced developers from falling over the edge. Innovators who set out to achieve the truly briliant are all the way at the edge, looking over and getting ready to jump.

      Everything's relative. If you don't think it's small, maybe you're just not all that big. There's a lot of room to play in the OS X sandbox at first, but anyone worth his salt is constantly growing -- and will eventually outgrow the sandbox.

      --
      Microsoft cheerleader, blue flag waving, you got a problem with that?
    6. Re:In a word, Don't. by jcr · · Score: 1

      People who push the envelope aren't readily supported by public APIs, because those APIs leave a substantial margin to prevent inexperienced developers from falling over the edge.

      Your statement makes no sense. An inexperienced programmer can just as readily shoot himself in the foot using the supported API as he can using unsupported functionality. The difference is, if he's sticking to supported API, help is available.

      Innovators who set out to achieve the truly briliant are all the way at the edge, looking over and getting ready to jump.

      Well, if that's what you want to believe, knock yourself out. I see some truly brilliant work on a daily basis, from developers who are sticking to published API.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    7. Re:In a word, Don't. by CDarklock · · Score: 1

      > The difference is, if he's sticking to
      > supported API, help is available.

      Why, yes, that WOULD be the difference between "supported" and "unsupported". Why didn't *I* think of that? It's so... obvious.

      > I see some truly brilliant work on a
      > daily basis, from developers who are
      > sticking to published API

      I'm not saying you can't be truly brilliant *unless* you use undocumented APIs; brilliance can be achieved with any tools you have. I'm just saying that *sometimes* the documented and supported API isn't sufficient for specific goals. It's probably a lot easier to do something stupid with them than it is to do something brilliant, but there are times when it's *impossible* to do what you need without them.

      --
      Microsoft cheerleader, blue flag waving, you got a problem with that?
  24. OS X uses ktrace/kdump by Anonymous Coward · · Score: 1, Informative

    You can sort of hack together that functionality using two windows. ex:

    (first window) ktrace -f less.ktrace less foo.txt

    (second window) kdump -l -f less.ktrace

    Only thing is that you have to run the first one first - if you run kdump first, then start ktracing the comand, ktrace will respect kdump's read lock on the file, and you won't see anything. Which means that there's that little time at the start, during which you're not seeing "live" syscalls, but catching up to the backlog...

    1. Re:OS X uses ktrace/kdump by mzs · · Score: 1

      Right I know that but I was not after tracing syscalls but rather tracing function calls. Do a man truss on solaris sometime too see what I mean about all the features that are missing from ktrace.

  25. Get a second monitor. :D by solios · · Score: 3, Insightful

    I needed more workspace, so I went multihead. Some apps lend themselves well to virts - web browsing, email, a pile of xterms... but when you're running something like photoshop and you need more "room to maneuver". adding extra heads is the way to go.

    I seem to be the only OS X user that neither uses no likes Expose much. Part of it's the fact that a few apps I use bind to F11-13, though my BIG gripe is that F14-F16 ARE NOT MAPPING OPTIONS. Why can't I put the shortcuts for Expose onto the three keys that I NEVER use for ANYTHING? :-(

    That aside, I've noticed that virts are something the "I used to use freenix but the desktop sucks so I switched" crowd complains about, as well as sloppy focus and the fact that portables have one button trackpads (something of an annoyance if you're using X11 applications). As a whole, the freenix imports seem to be so used to doing things Their Way that the mere notion of a UNIX not having $feature makes them positively apoplectic. :-|

    1. Re:Get a second monitor. :D by Eslyjah · · Score: 2, Interesting

      Can't you map F14-F16 to mouse buttons 4, 5, and 6, and then just set expose to use those mouse buttons?

    2. Re:Get a second monitor. :D by WatertonMan · · Score: 2, Informative

      The best way to use Expose isn't with function keys but with buttons 3 and 4 on multibutton mice like Microsoft's. It really makes things a breeze. Especially drag and drop. I find the function keys much less fluid - sort of like using the keyboard equivalent for the second mouse button in OSX.

    3. Re:Get a second monitor. :D by crass751 · · Score: 1

      My girlfriend used to use Linux before she got an iBook for school, and the only thing she misses from Linux is virtual desktops. It was one of those things she just got used to using over the course of her Linux experiment.

  26. Re:Which way today apple? by pmc · · Score: 1

    It's not like you had to look far to see a post highly critical of MS hidden APIs - the immediately previous post in response to mine does so.

    Trolling - nope. But it seems that not only is anything slightly critical of Apple seen as a troll in these here parts, but even a pointing out of the double standards that apply when judging Apple is seen as a troll.

    This is slashdot - a feverent member of the open/free software world. If anybody suggested that any other vendor* should be able to keep APIs private and for their own use only the outrage would be immense. We're no even talking about truly internal APIs, but APIs that are used in the vendor's applications.

    If the offender was Microsoft then it would be nerd apocolypse.

    * The exception is, of course, google - they also get a free pass when indulging in questionable behaviour. It seems that there is a lot of "the enemy of my enemy is my friend" going on, with MS being the enemy. I'm old enough to remember when MS was in google's position, and IBM was the leviathan, crushing all before it. And I'm astute enough to realise the there will be a new enemy along in a minute, and the next generation of geeks will be vilifying google (or whoever - google are my bet) praising a new upstart through rose-tinted glasses, and slightly bemused that MS was once seen as an 800lb gorilla.

    I could be wrong - google could become a benevolent mega-corp. But I'm not holding my breath.

  27. Re:Which way today apple? by Daniel+Dvorkin · · Score: 1

    Ah, the usual worldly-wise accusation of naivete. "You kids today, you just don't understand ..." Well, as another geezer, I'll weigh in.

    * The exception is, of course, google - they also get a free pass when indulging in questionable behaviour. It seems that there is a lot of "the enemy of my enemy is my friend" going on, with MS being the enemy. I'm old enough to remember when MS was in google's position, and IBM was the leviathan, crushing all before it. And I'm astute enough to realise the there will be a new enemy along in a minute, and the next generation of geeks will be vilifying google (or whoever - google are my bet) praising a new upstart through rose-tinted glasses, and slightly bemused that MS was once seen as an 800lb gorilla.

    Yes, because this is a practical way to think in the real world. It's not so much "the enemy of my enemy is my friend" as "no permanent allies, only permanent interests." When Apple, and Google, and IBM, act in ways which are in the community's interest, we support them. When they act in ways which are contrary to the community's interest, we oppose them. And because right now Microsoft can be counted on to act against the community interest at every turn, anyone acting against Microsoft is therefore acting for the community. No one thinks this is a permanent state of affairs, but it is indisputably the current situation.

    --
    The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
  28. Re:Which way today apple? by pmc · · Score: 1

    When I say things like the "community does this" and "we do that" people are swift to leap on the supposed fallacy of "you suppose slashdot posters all share the same opinion". Yet add the magic ingredient of "opposition to Microsoft" and shazam - it's OK. I did mention double standards earlier, didn't I? Well, what you just wrote was a great example.

  29. You are my hero, Rich Wareham!! by Anonymous Coward · · Score: 0

    Being without Desktop Manager on the Tiger development builds was one of my biggest peeves.

    The bug I submitted to Apple was marked as "Third Party to Resolve" . . . Thank you Rich for resolving the issue!

  30. Re:Which way today apple? by Daniel+Dvorkin · · Score: 1

    Fine, substitute "informed users who pay attention to what's going on in the industry" for "community" above.

    --
    The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
  31. Re:Which way today apple? by GlassHeart · · Score: 1
    I don't think there's anything wrong with Microsoft having undocumented (call them secret if you want) APIs.

    Like many things, it depends on the intention for keeping it secret. Sometimes it's because things aren't stable enough to document. Sometimes it's because your documentation team is understaffed and can't get to it yet. Sometimes it's an illegal abuse of monopoly to give your companion products an unfair advantage.

  32. Re: "Nothing stopping you" by amling · · Score: 1

    Except for the complete and total lack of supported multiple desktop software.

    --
    70e808a22cb027cde4a6abddf6435d55
  33. Wow. Got ego? by Anonymous Coward · · Score: 1

    Big talk from someone we've never heard of.

    The mac development community is small. We tend to notice who the major players are. You sir, are not one of those players.

    Please take your, "l337er than thou" attitude back to your high school computer lab. You'll impress your peers with that kind of talk, but to pull it off here you'd better start naming programs that shock and delight.

    "maybe your'e just not all that big" indeed. What trash. Sure, lots of cool programs are out that use undocumented APIs. But at the same time, some of the most successful OS X freeware and shareware does not. The single best way to discredit yourself is to talk trash like this.

    1. Re:Wow. Got ego? by CDarklock · · Score: 1

      > The mac development community is small.
      > We tend to notice who the major players
      > are. You sir, are not one of those players.

      That's true. I'm a Windows guy. But the statement holds: if you're pushing the envelope, the documented API doesn't always reach where you need to go. I would expect it's the same for Macs; it used to be.

      --
      Microsoft cheerleader, blue flag waving, you got a problem with that?
    2. Re:Wow. Got ego? by jcr · · Score: 1

      I'm a Windows guy.

      Ok, I understand your propensity for seeking out undocumented functionality, then. It's rather like when some recent immigrants to the USA are surprised that the cops don't expect to be paid on the spot if they pull you over for running a red light.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
  34. Undocumented? by mindstrm · · Score: 2

    Undocumented because they are not "public" apis, and not guaranteed to be supported in the next release of OSX. As long as that part is clear, go ahead.

    But please, let's not complain about apple not documenting function calls.. apple is very clear about which APIs are official and supported.

  35. A couple more APIs Apple needs to add... by argent · · Score: 3, Interesting

    Why can't I put the shortcuts for Expose onto the three keys that I NEVER use for ANYTHING? :-(

    What I want to know is why Apple hasn't put a general purpose input or hotkey manager in Preferences that would let you map any key combo to any hotkey-using application.

    Plus, every second keyboard these days has half a dozen extra "Multimedia" or "Internet" buttons. Why can't I map those to actions?

    1. Re:A couple more APIs Apple needs to add... by solios · · Score: 1

      I'm with you on that. It can't be THAT hard for the OS to scan a keyboard, notice extra non-Standard (all the normal QUERTY bits that are SUPPOSED to be there) keys and offer them up for remapping.

      I have a Sun Ray USB board I'd LOVE to use with OS X - while it recognizes all of the keys that it should properly, there's the slight matter of the extra rows off to the left, the blank key, and other bits - there are keys on that board that the OS doesn't SEE that, if it was all HEY BUTTONS WHADDAYAWANNADOWITHEM, I'd be able to map to system shortucts (copy/cut/paste) or app launches (Stop for a terminal, Again for VLC, Props for Firefox, Undo for apple-z, etc, etc.)

      Conversely, I'm sure Solaris users wouldn't mind their native layouts actually working under OS X.

    2. Re:A couple more APIs Apple needs to add... by argent · · Score: 1

      I'm with you on that. It can't be THAT hard for the OS to scan a keyboard, notice extra non-Standard (all the normal QUERTY bits that are SUPPOSED to be there) keys and offer them up for remapping.

      Well, the problem is that the extra keys on a USB keyboard aren't keys,they're system control endpoints. But, yes, there are standards for all of them and they all have descriptors that describe them. It should still be able to put up a list of system control buttons and let me assign events to them.

      And what I'm talking about is something even deeper and central to the system, and that's hotkey management in general, whether they're standard keys or not. There's no central place that lets an application say "I'm prepared to accept the following named events, and here's my preferred key bindingd for them" and then let the user say "when this keystroke comes in, send this event to this application".

      There's PART of that, for the CMD-foo keypresses, you can bind them to menus and things when you're in an app. But the usual hotkey API is an undocumented set of Carbon calls that probably seeped in from classic Mac OS. That's the part that should be centrally managed, so you could bring up your hotkey manager and see Key=F11 - Shift=none - App=Expose - Cmd=Show Desktop and go down to Key=Unknown (%F6) - Shift=CMD - App=Expose - Cmd=Show Desktop and get Expose action from the otherwise unused "Menu" key on your Windows style keyboard.

      Connecting that to your post, you should be able to go down further and select Key=Unknown (System Control 6) - Shift=any - App=iTunes - Cmd='set playlist to "Party Shuffle"'.

      And of course you should be able to click "enter key" and hit the "search" key on your USB keyboard and find yourself looking at Key=Unknown (System Control 3) - Shift=none - App=Safari - Cmd=open http://www.google.com.

    3. Re:A couple more APIs Apple needs to add... by Anonymous Coward · · Score: 0

      Uhm, you mean...

      System Preferences -> Keyboard and Mouse -> Keyboard Shortcuts?

      You know, the general purpose input/hotkey manager in Preferences that lets you map key combos onto hotkey-using applications?

      Yeah, that one.

  36. Maybe not evil, but at least rude... by argent · · Score: 2, Interesting

    Why would anyone pay for a newsreader when Google Groups exists?

    Um, because Google could arbitrarily change Google Groups at any moment and remove features that you depend on?

    Oh, wait, Doctor Evil, that already happened.

    (yes, it's their code, their hardware, they have a right to do it, the point is they can and do, and that's one good reason to do Usenet yourself instead of depending on the kindness of strangers)

  37. If you're ready to go out and start innovating... by argent · · Score: 1

    Dud, if you're all raring to go out and start innovating all over Mac OS X, how about filling in some of the missing tools that can be done using supported APIs?

  38. Not So Perfect by Anonymous Coward · · Score: 0
    OS X has a near perfect user interface

    If it's so perfect, where is focus-follows-pointer? Seriously, the first thing I do at a Win or X11 box is set it for FFP and turn off auto raise. I've only found how to set this for Terminal, and perhaps X11 apps on OS X.

    I've also found OS X seems to be behind in right button mouse support. I'm severly annoyed with Safari not having "Back" on the right button menu. I'll probably put Firefox on eventually, but wanted to give the native OS X a try.

    This is not to say that I haven't found anything I like about OS X since my recent adoption of a Mini, just wanted to point out that I don't think it rates a "near perfect".

  39. Apple and Microsoft have different ideas here. by Paradox · · Score: 2, Insightful
    Oh. I see.

    So what you're doing it coming from a Windows perspective and trying to make intelligent and topical assertions about the mac development platform.

    This is a mistake. Disabuse yourself of such notions. They will get you nowhere. Apple has a very different policy towards its developers. They give as much power as they can do their developers, and the tools are so good that often applications do not need to go outside the standard APIs.

    You might not believe me, because of the perspective you bring to the table. Let me try and illustrate why Apple approaches this differently:

    Microsoft views third party developers as competition. Microsoft is a software company, so you compete directly with them when you write a Windows app that fufils a function they want to control. Therefore, they create hidden "advantages" in the OS that only select MS developers can access correctly.

    Apple, on the other hand, is a hardware company. While OS X is a serious product for them, ultimately it's leverage to sell more computers. Therefore, they make their development tools very good, and encourage 3rd party developers. If a 3rd party developer makes a killer app, they get a direct benefit from it. This is in sharp contrast to Microsoft, who would actually lose business.

    Apple's "hidden" APIs are only hidden because one one of two reasons:

    1. They are not complete yet.
    2. They didn't make it into the documentation budget this year.
    --
    Slashdot. It's Not For Common Sense
    1. Re:Apple and Microsoft have different ideas here. by CDarklock · · Score: 1

      > So what you're doing it coming
      > from a Windows perspective and
      > trying to make intelligent and
      > topical assertions about the mac
      > development platform.

      Is this not a platform-independent question? Every O/S has undocumented APIs. They're undocumented for a reason, often because there are strange subtleties to their operation that are hard to understand. But they *exist* because someone needed to do something that they *couldn't* do under the documented API. Is the Mac somehow different? Why?

      --
      Microsoft cheerleader, blue flag waving, you got a problem with that?
    2. Re:Apple and Microsoft have different ideas here. by Paradox · · Score: 1
      Is this not a platform-independent question?
      No, because of how the companies handle it. MS will actively move to block you from using these APIs. I worked in a shop where I saw it done. They changed it on us by reversing the order of all parameters. That's adding insult to injury.
      Every O/S has undocumented APIs.
      Also untrue.
      They're undocumented for a reason, often because there are strange subtleties to their operation that are hard to understand.
      Or are not done yet. Or didn't make it into the documentation budget this quarter. Apple has a ton of code, but in order to release it they have to document it and agree on an interface. This doesn't always make sense to do. If they could wave a magic documentation wand and make everything documented, I'm willing to be they would for a vast number of APIs.
      But they *exist* because someone needed to do something that they *couldn't* do under the documented API. Is the Mac somehow different? Why?
      Your statement is trivially true, but not very profound. Many hidden APIs accomplish things that are out of scope for other APIs. This isn't because of a deficiency in the first API, which is what you're implying with your attitude and previous posts, but rather because the of the division of responsibilities.

      As an example, the Apple Data Kit that Apple uses for its Mail.app filters and its summary service is an API that does something very specialized that wouldn't make sense to put into Cocoa.

      The difference is in intent and in the shape of things over time. Over time, less and less Apple APIs remain hidden. On the MS side, it's my observation that the rate of documentation is far lower. They seem busy inventing totally new APIs and making their old API's documentation more readable and accessible.

      --
      Slashdot. It's Not For Common Sense
    3. Re:Apple and Microsoft have different ideas here. by CDarklock · · Score: 1

      > They changed it on us by reversing
      > the order of all parameters. That's
      > adding insult to injury.

      IIRC, I had this problem with VB routines: VB passed and handled parameters in the opposite order, so if a VB routine was rewritten in C++ (or vice-versa, if you were crazy) the parameter order would reverse. I also seem to recall Microsoft eventually bowed down to the de facto standard and changed VB to handle parameters in the same order as most other languages.

      So I wouldn't attribute this to any malice on Microsoft's part, but maybe you know something I don't about this particular situation. Microsoft *has* engaged in some awfully petty crap.

      > Also untrue.

      I won't pull Gödel out of my pocket on this one, but the fact is that every O/S will do interesting and useful things if an application interfaces with it in unexpected ways. Since these ways are unexpected, they cannot be documented -- but since they *are* ways for an application to interface with it, they are APIs.

      It is worth noting that while the truly brilliant is inevitably unexpected, the unexpected is almost *never* truly brilliant.

      > Your statement is trivially true, but
      > not very profound.

      Which is precisely what confuses me about this conversation. If it is true, what is the problem? Do I need to say it in some pseudo-zen fashion that makes people nod their heads wisely as though it is some vast cosmic truth? Sometimes things are just... simple. Profundity isn't always necessary.

      > This isn't because of a deficiency in
      > the first API, which is what you're
      > implying

      Implying? I'm outright saying it: undocumented APIs exist to fulfill special purposes for which the documented APIs are unsuitable.

      However, if you don't HAVE that particular special purpose, you don't need to mess with the undocumented API. And that special purpose is, in most cases, special enough to sound like a stupid idea: "This function creates a shortcut, calls the shell to execute it, then deletes the shortcut." If you know what you're executing, why not just call the shell directly to execute it? Why go through a temporary shortcut? WTF is the point?

      That's why it's undocumented. It would take a long time to explain, and you probably still wouldn't get it. Questions cascade into more questions, and next thing you know it's eight in the evening and neither of you got any work done. When you finally understand why it does what it does the way it does it, you'll realise exactly what we were saying in the first place by not documenting it: "You don't need this function. Use something else."

      For the unstoppably curious, using a shortcut serves as a semaphore. If another thread is running a program, the current thread can't overwrite the shortcut, so it can't run a second one. The purpose of this is to spawn multiple threads that run multiple programs, but guarantee that only one program runs at a time. If you think this sounds cool, stop: this mechanism does not guarantee IN WHICH ORDER the programs run. If it's important that they run in the order specified, you need to do something else. There also exist other problems and implications which are left as an exercise for the reader, because this post is already too long.

      I used this method to throttle database connections when I needed to have a solution running in twenty minutes. In the next release, I did something much more complicated, deleting the undocumented function altogether.

      Which is the real danger of undocumented functions; it's not just that they do something weird, it's that without the documentation, you have no contract that the API you're using is going to stick around. It's a Bad Idea to nail your app to something that uncertain, so if you have ANY choice in the matter, don't do it. Use documented, stable, reliable APIs.

      But sometimes you can't. ;)

      --
      Microsoft cheerleader, blue flag waving, you got a problem with that?
  40. MOD parent down! by Anonymous Coward · · Score: 0

    He has sucked the cock of Jesus Christ! Talk about Holy Water!

  41. GNUMail? by Kaseijin · · Score: 1
    I think the reason why Mail.app looks so different is proably because it is one of the truly cross platform mail apps. I remember reading somewhere that Mail.app is one of the few applications that can compile cleanly and with all functionality intact on both OS X and Linux running GNUStep. If that were the case, it might explain the different GUI, as they may have had to make some comprimises to make the application truly cross platform.
    Apple Mail isn't open-source, and Mail 2 uses more custom widgetry and Apple-proprietary frameworks than the previous version. GNUMail is a mailer for GNUStep and Mac OS X consciously patterned after Apple Mail 1.x.