andymatuschak.org: Square Signals

This article was published on Thursday, December 20th, 2007 at 11:31 pm.

It chops up the data being sent and free kryptonite ringtone chunks of it on up to 79 different frequencies.The passive attack allows a suitably equipped fre ringtones and wallpapers to eavesdrop on communications and spoof, if the attacker was present at the time of initial pairing.Parelman, both of Las Vegas, Nevada and assigned by them to the United ringtone johnny cash Government.Between the 1980s and the 2000s, the mobile rap city ringtones has gone from being an expensive item used by the business elite to a pervasive, personal communications tool for the general population.programme ringtones

Anything Ubuntu can do, we can do better. Except this stuff.

When I argue with my Linux-loving friends about OS X vs. Ubuntu, they’ve only really got a couple points for which I have no retorts. But they’re big ones. Let’s think about how to fix them.

Why can’t I watch this video?

On Ubuntu, if you open an .avi for which you don’t have the codec, it will fetch it and install it.

On Mac OS X, if you open an .avi for which you don’t have the codec, QuickTime will give you an entirely useless error message. It won’t even tell you what codec you’re missing, so you can’t Google it.

Our own private DLL hell

Say a sinister hacker submits a patch for Sparkle with a security hole in it. Sparkle has maybe a couple hundred thousand users. That’s a lot of vulnerable computers.

Now, if we were using Ubuntu, a week later, our system would say: “You’ve got 9 updates available. Install?” And the user would go, “Yeah, sure.” His system would be safe, and he’d never know how close he came to total annihilation.

But no. Every one of a couple hundred apps has its own copy of Sparkle. Or RBSplitView. Or Growl. We’ll gloss over the ancillary problem of wasted disk space—a meg or two for each app. One app’s got Sparkle 1.0, another’s got 1.1. Some people are probably still running apps with Sparkle 0.1, riddled with bugs. It’s not like they’re dependent on a particular version or anything. No, they just haven’t bothered to include the updated version of the framework.

Oh dear, oh dear. How do we fix this?

Ooh! Ooh! We could have the app install the library into ~/Library/Frameworks, but only if it’s newer than what’s in there. But then every user has a different copy. We could put the framework into /Library/Frameworks, but that would require authentication. And every app’s distribution still includes all its dependencies.

Even with that hacky solution, the framework in question still wouldn’t get updated until the user ran some app that had been released recently enough to have included the new version of it. Developers still have to constantly check to see if there are updates available for the libraries they’re using.

What the hell is a disk image, anyway?

A simple user story on Ubuntu:

I have a .torrent file. What the heck is that? I guess I need a program that opens them.

I open Synaptic, search “torrent”, check one of the resulting boxes at random, and then I can open the file.

A really stupid user story on Mac OS X:

I have a .torrent file. What the heck is that? I guess I need a program that opens them.

I go to Apple > Mac OS X Software. This opens up Safari, where I search for “torrent”. This actually doesn’t turn up any useful results (what the hell?), but say it did. That brings me to another page, where I click Download. I have to click through a sheet acknowledging that I am, in fact, downloading a program. I click the Downloads stack on my Dock, click the disk image. I drag the application to Applications to install it. Then I go to the Applications folder and execute the app from there. To clean up, I eject the disk image. Then I click the Downloads stack on my Dock, and drag the disk image to the trash.

I don’t really care so much about the length of the operation, even though it clearly takes less time on Ubuntu. I don’t even care about flow, though it’s important to note how in OS X, the user has to click through modal sheets and switch between a number of different apps. I care about the knowledge required to execute these stories.

In the case of Ubuntu, the user just has to know that Synaptic Package Manager is the thing to use to install programs. They don’t need to know how to use it: the interface is self-explanatory so long as they can think to open it. Even knowing that much is asking a good deal.

In the case of OS X, the user has to know the following things:

  1. There’s a Mac OS X Software… menu item under the Apple menu. Or how to get to the Apple Downloads web page.
  2. That search box on the top menu of the Apple’s site can search for downloads in addition to everything else on Apple’s site—this is not particularly intuitive.
  3. That downloaded things go to the Downloads folder on the Dock.
  4. How to “install” an application. This involves knowing how to open up another Finder window and navigate to Applications if a symlink is not included.
  5. How to launch an installed application properly: from /Applications, not from the disk image.
  6. That the disk image can and should be cleaned up by dragging it to the trash.
  7. That the disk image needs to be ejected before the trash can be emptied.

Every extra piece of information the user is expected to know makes it more likely that the story will break down and lead to frustration. I see my father and some of my friends putting disk images in Applications and just mounting them and running the app from the image whenever they want it. I see people never deleting their downloaded files, leading to really cluttered folders.

But moreover, I see people having no idea how to complete this relatively simple task.

Working toward a solution

In my mind, an operating system’s merits can be judged by how easily problems can be solved on it. Applications help us solve classes of problems: a BitTorrent client allows us to download .torrent files; personal finance applications help us stay on top of our money; Transmit lets us talk to file servers.

We’ve got all these apps to solve all these problems, but where’s the app to solve the problem of getting the tool to solve the problem we’re currently facing?

The three issues I’ve described above are linked, and they have a common solution.

This is a chicken-and-the-egg problem, though, folks. We can’t just make an app that helps people install apps because a lot of people will never know it exists. A lot more people wouldn’t be able to install it, even if they did know it existed.

We need something more fundamental.

I’ve been thinking about how best to solve this for a while, and I don’t have everything together yet, but it seems to me that Spotlight is a tool for solving some kinds of problems. It could easily become a general tool users turn to to solve problems.

One simple example: A search for “torrent” would do well to return Transmission and friends, even if they weren’t installed. And clicking a result should download and run the app (in a sandbox), not bring the user to the site. Maybe something a little like this shoddy mockup, but with better icons:

spotlight_mockup.png

But to do this properly, one needs to display some extra information and buttons in the Spotlight results GUI. It doesn’t support this, of course. This design is complicated more by the Show All menu item using Finder.

This is obviously a complicated problem, and much more thought is required. I have no idea what the UI should be like; please don’t let that mockup deter you. Here are some basics of the design I’m excited about, though:

  • I want to be able to run an app without installing it. A sandbox is probably technically infeasible but would be really neat.
  • Getting to an app on my system that runs a torrent and getting to an app I don’t have that runs a torrent are tasks trying to solve the same problem. Let’s approach them the same way.
  • Users don’t know or care what libraries or frameworks are. Handle dependencies behind the scenes.
  • These apps are like web apps: when you run them, they are always the latest version (cached for offline use). There is no software update.
  • This system should be a system-wide service so that—for example—QuickTime can always have the codec needed to play the video in question.
  • Code signing everywhere for everything.

If you’re interested in this problem, I’d like to chat with you about it. My contact information is along the sidebar.

The Buzz {7 trackbacks/pingbacks}

  1. Pingback: Codehackers » Blog Archive » What Keeps Me Awake on December 21, 2007
  2. Pingback: Ubuntu vs OS X on December 21, 2007
  3. Pingback: Why You Care on December 21, 2007
  4. Pingback: Rethinking Sparkle 1.5 and Sparkle 2 on December 21, 2007
  5. Pingback: Codehackers » Blog Archive » Narrowing The Choices on December 22, 2007
  6. Pingback: Life, the Universe, & Everything » Blog Archive » Mac OS X vs. Ubuntu on December 22, 2007
  7. Pingback: Codehackers » Blog Archive » Radio Silence on March 5, 2008

The Conversation {24 comments}

  1. Kevin Ballard 20 December, 07 @ 11:45 pm

    Interesting ideas, but it seems like something Apple would have to implement themselves.

  2. jane 21 December, 07 @ 12:42 am

    While I (a complete noob) pretty much agree with the general idea, I see a couple teeny problems:

    First off, torrents are fairly confusing to begin with. There (was) a BitTorrent (”mainline”) client, the protocol is called BitTorrent, some people get the idea that finding the .torrent is the same as finding the file the torrent is for without opening an actual separate client (this really happens, and quite often)…and so on. And while it’s fairly simple to go look up torrent clients in Synaptic if you knew what to do with the client and the .torrent file, you have to figure out which one to get. There’s a fair number of clients going from Azureus to rtorrent, and not all clients are the same. Azureus is often times perceived as being extremely bloated cause of its Java-ness, rtorrent is a purely cli client, Deluge is using a problematic libtorrent, Transmission had that very ugly data corruption issue a version ago..that’s only the clients, let alone the client/tracker and ISP bandwidth issues one might run into. So in this regard, and probably a few others, Ubuntu doesn’t have much of a benefit over OS X. But that’s just me nitpicking :)

    Secondly, a lot of the points you’ve covered about the Spotlight idea might be asking for trouble. Sure, users don’t care about dependencies, but what about licensing issues? Ubuntu may have an install/update/uninstall model worth looking at, but they still have a long wiki page about installing plenty of little proprietary things that can’t come bundled (https://help.ubuntu.com/community/RestrictedFormats). And auto-updating any applications in the background can end up using lots of bandwidth..bandwidth people don’t necessarily have (i.e. if they’re capped to a certain amount). Some people may not want to auto-update, preferring one version over another if some feature they like is broken in newer builds. You get the idea.

    Lastly, about people not knowing how to install applications. I don’t think it’s only the system to blame here with the myriad ways of installing applications on OS X - installers, drag-and-drop..coming in .zip, .sit, .dmg, .gz. If a switcher was able to install Windows applications to a point, nothing is really stopping them from being able to learn how to install and manage most applications in OS X. Windows installations can be just as confusing, and Ubuntu isn’t perfect in that aspect, but individual users can mostly figure them out. Just the other day I wanted to install rtorrent on an ubuntu server but the version of rtorrent available was fairly outdated and therefore unacceptable, and I ended up building from svn, which is far more complicated than using Synaptic. And back to installing on OS X - there are a few ways to get around most of the issues. Most people can figure out how to open a disk image, even though they might end up running the app from the image. So why not make it painfully obvious what to do with the application (a la Firefox, Adium, and a LOT of other applications) by showing that the user needs to drag-and-drop the app into /Applications and then eject? And if they open your app from the image, to not let them continue until they’ve installed it correctly. And OS X does make a fuss should someone try to empty the trash while a dmg is still mounted. The whole process is not THAT fragile.

    Still, a very cool idea. :]

  3. Bob Warwick 21 December, 07 @ 1:37 am

    Andy -

    I’ve been thinking about a similar system for quite some time but I arrived there from a different route. I’ve outlined my thoughts at http://codehackers.net/blog/?p=48

    Long entry short, I think this is a vital idea. You can count on me to volunteer some time and energy towards a project like this.

  4. Ahruman 21 December, 07 @ 2:57 am

    I think Spotlight is the Wrong Thing here. What should happen is much simpler: the user double-clicks an unknown file. The system (in a very loose sense, although Launch Services would be the obvious place) sends its metadata (file name extension, HFS type if available, MIME type if it was downloaded to the intertubes) to a service which determines the appropriate UTI, then provides a list of applications which support it. Apps with a role of Editor are supported before apps with a role of Viewer. The necessary metadata already exists in modern Mac apps, and can be synthesized for non-modern ones. There should be a simplish way (contextual menu item, for instance) to find additional apps for a file you have, even if there’s an apparently-appropriate app installed.

    This of course leaves the question of how to get onto the list of known apps, which should be easy, and what degree of “approval” being on the list indicates, which is an obvious source of conflict with the “easy” goal.

  5. David Smith 21 December, 07 @ 7:48 am

    I agree about dmgs being the wrong thing. Adium has *almost* solved the issue, at a pretty significant cost in developer time. We’re immune to the launch-from-dmg problem (thanks for open sourcing that code to check what we were launched from, Google!), and we helped popularize the symlink to /Applications (thanks, Adam Betts, for the rather whimsical graphics-only-for-localization-reasons visual instructions!), but we have yet to figure out how to simplify unmounting and throwing away the dmg.

    Suggestions welcome.

    On the topic of “DLL hell”, it’s a tradeoff. Flip your contrived example around for a moment so that it’s not Sparkle that’s been hacked, but Synaptic. It now points to a malicious repository. Oops, now *all* apps on all Ubuntu systems that update regularly may be compromised, and will never be safe again without manual intervention. On a less malicious note, how does Linux handle the framework versioning problem? Libraries are not guaranteed to be compatible between versions, after all.

  6. Andy Matuschak 21 December, 07 @ 9:10 am

    Kevin Ballard: Yeah, probably. Especially because it’d only really be useful if installed on all Macs.

    Jane: Hm. Does anyone really pay for bandwidth anymore? Second question: does anyone who can afford a Mac pay for bandwidth anymore?

    You’re right about users wanting to potentially avoid auto-updating an app. I’m thinking that there will be a “managed” context for these apps (maybe a FUSE filesystem that caches already-run apps for offline loading and which always stays up to date, perhaps with symlinks to /Applications). If the users wish to install apps in the traditional fashion outside of this context, they wouldn’t be managed anymore.

    I think disk images are just a really poor method of distribution. Zips are actually a lot better: Safari will just extract them in-place, so the user won’t have to deal with or clean up the archive—they just have the app. But still, you’ve got to deal with the filesystem, and for some reason we still have an installation process inextricably tied to the web browser.

    Ahruman: That’s an excellent idea. But that only solves the “how do I open this kind of file” problem (albeit very well), not the “how do I manage my finances on the Mac?” problem.

    David: The solution is good, and it’s pretty simple. Minor version increments don’t break compatibility; major version increments do. And then systems have copies of all the major versions of libraries required by the apps on the system. But usually that’s just one, since major versions are a year or two apart, and apps are updated regularly.

    Bob: Great post! No comments there, so I’ll respond here:

    You’re absolutely right on both points of What Keeps You Awake. I hate web apps with a passion, but installation advantage is wonderful. The other nice advantage is total synchronization, but Apple’s working on that, too.

    Licensing is definitely an issue I’m concerned about. You’re right about the scary trials. Wouldn’t it be nice to unify the shareware model into an iTMS-like kind of thing? The user doesn’t have to deal with serials or anything; it’s just attached to his account.

    One big problem is that the administration of this (especially if it includes licensing administration) has to be performed by someone who’s trustworthy and full-time. Look at MacPorts—that’s something that Apple should have been running from the start. I’m surprised and pleased to see them pick it up, but it seems like it would be ideal to have Apple involvement from the beginning.

    Let’s keep thinking. This is the kind of project that needs a month or two of thinking before any coding.

  7. Jeff Nichols 21 December, 07 @ 9:12 am

    What timing… I just yesterday dropped using DMGs for distribution of Pomoto and went to Zip.

    Pomoto’s really geared for novice (or lazy) users, and having to explain what a disk image is (which I’ve had to do numerous times) is just a nightmare. Plus updating via Sparkle with a Zip is much much faster than with a DMG from my experience.

  8. Brett 21 December, 07 @ 11:36 am

    The installation story on OS X is woefully bad for an inexperienced computer user. I have moved my entire family over to Mac and the only consistent tech support issue I have is how to handle installations. Trying to explain a disk image and that you need to eject it and delete it is out there. And there is inconsistency in how disk images present themselves; just the app, fancy background with instructions, or shortcut to /Applications.

    2 and 3 should be solvable. Apple has an installer app, so why don’t they get developers using it? And couldn’t they add third-party support for Software Update? Users already run it consistently.

    Regardless, here is to hoping Apple or you, Andy, solve the problem.

  9. Andy Matuschak 21 December, 07 @ 11:48 am

    The installer application provides a really bad user experience in almost all cases, though. Lots of unnecessary clicking and flow-interrupting.

  10. Bob Warwick 21 December, 07 @ 12:39 pm

    In the short term I think it’s likely too ambitious to look at an iTMS style means of licensing the app. It’s unlikely that all app installation would ever happen this way, so serial mechanisms would have to be in place in anyhow.

    Thinking out loud here…let’s say for a moment that there’s some way to have this thing enter serial numbers automatically when the user purchases through this system. Their experience for buying the app looks like clicking the buy button, filling in payment info, and then hitting another buy button. When the payment goes through, the app has all trial limitations lifted.

    If that’s the case, then we could do something like associating all purchased serial numbers with an email address and be able to automatically re-license the app if someone already owns a copy. The user still never sees serials, but it doesn’t require such a drastic restructuring of how app licensing currently works.

    Apple involvement from the start would be superb. Something like an API to their downloads area would take a lot of the burden off in terms of having to recollect app information that they already have on file.

    I’m hoping for an iTMS model of app-buying when the iPhone API comes out. If that’s the case, whoever the front person at Apple is for that might be ideal in helping to figure out how to administer this thing.

    I agree that this needs a month or two of thought before any code that might go near the final project is created. In a couple of weeks, after the Christmas rush is over and hopefully before the new semester starts, it might be a good idea to formalize this a bit and set up a forum/wiki/something-else to move the discussion out of blog comments and into something a little more threaded.

  11. Andy Matuschak 21 December, 07 @ 1:15 pm

    For the iTMS-style thing, I’m not thinking a centralized host app for purchases like iTMS. Rather, a framework that apps can use to take care of licensing. So maybe on the second launch or something, the app will start to bug the user to register the app. Or if the user has already registered the app on another computer, the app figures that out and is totally silent—no serial numbers.

    The iTMS thing isn’t essential; it’s just that licensing and all the shareware-ness would be really annoying with this solution if nothing was done to unify purchasing.

  12. Leonardo Cassarani 21 December, 07 @ 1:20 pm

    I was about to post a big comment listing all my concerns, but then decided to talk to Andy first, and what I’m about to write is the result of my chat with him. Let me start off by saying that this is a project I’ve been waiting for for a very long time; I used to be a Debian user and just loved how the package manager would always take care of everything, especially when I was looking for an application and had no clue whatsoever.

    That said, there are a few things we need to tackle before we can even start thinking about the coding phase. I’ll code-name this project “Raphael” (no particular reason) throughout the rest of this comment.

    So what we’re talking about needs to rely on some kind of central repository of XML information. I’m thinking application name, author, url, license, trial period, payment information, screenshots, icon, etc. But a central repository needs administration, and the administrator must identify which applications should be displayed. Then what kind of criteria is he/she to use when deciding what’s good enough for massive distribution to the end-user?

    Andy thought we could rely on Apple’s software downloads index, if they’re willing to collaborate that is. I’m still not convinced that we could narrow the huge amount of applications that match a specific keyword down to, say, five or six results.

    On that subject, we must keep in mind that what we’re thinking about Raphael as integrated into Spotlight. That’s certainly the best way to get the highest amount of users (especially newbie ones) to use the system. But with great advantages come great restrictions too. Everything will have to be search-oriented, and although we could use some kind of tagging system to better identify the application the user is presumably looking for, the search would produce a staggeringly high number of results.

    Let’s assume I’m looking for a tool for writers. I open up Spotlight and type in “writing”. What is Raphael to do then? I’m probably looking for Scrivener (shareware, 30-day trial) or WriteRoom (freeware but not that useful if I’m serious). But “writing” could as well be MarsEdit (shareware, 30-day trial) if I’m a blogger, or iWork (shareware, 30-day) or NeoOffice (open source) for general-purpose office writing tools.

    You then realise how important the sorting algorithm is. It must be able to understand what’s the application the user’s most likely to want to use. Andy was thinking about popularity, in a Facebook-like kind of way, and I was thinking of something like the iUseThis count. But we quickly realised that freeware applications would always come first, yet they may be crap when compared to their less-used shareware counterparts.

    The sorting and raking algorithm must be very complex then, analysing usage trends from both the user and all of the other users around the world. It should probably have some kind of internal rating system that would allow Raphael to make the best choice as to which software is to be listed in the first positions. Coding this algorithm is not what worries me, it’s the thinking behind it that’s bound to be very tricky indeed.

    Just my very lengthy two cents. Hope they help building something that would benefit both the users and the developers.

  13. Bob Warwick 22 December, 07 @ 2:00 am

    Leonardo, I just posted a long blog entry which deals with some first thoughts on the ranking system, as well as a couple usage scenarios to clarify how the app is working in my head. You can see it at http://codehackers.net/blog/?p=49

  14. Andy Matuschak 22 December, 07 @ 8:45 am

    Bob’s post is good—you all should head over there and check it out. my response follows the piece.

  15. Bob Warwick 22 December, 07 @ 7:30 pm

    Andy, I just followed up your response to my post with another response. I think we’re making good progress in terms of how this thing needs to work, but it’s going to take quite a bit of work yet.

    The Coles Notes version of my response is that modal dialog is probably bad, but a dashboard keep/delete approach might be better suited.

    Sorry to spread the discussion over another blog, but I feel guilty posting 1500 word comments.

  16. Juri Ganitkevitch 26 December, 07 @ 2:03 am

    Hi Andy, everyone,

    I think this a tremendously interesting discussion and a project I would gladly contribute to.

    You seem, however, to underestimate Apple concerning the installation procedure. As devs or at least power users most of us have disabled the “open safe files after download” option in Safari. Which, if enabled, does the following to DMG files: downloads them, mounts them, looks if it’s just the one application inside. If so, it copies the app into the folder which contains the disk image, unmounting and trashing the latter afterwards. All this without user interaction. Downloads stack bounces after app is unpacked.

    This stops working as soon as people start cluttering their disk images with license files and readmes, but is a start. I also believe this was introduced in 10.5, as I hadn’t noticed it before.

    As of now and IMHO it would be best to usability-wise package one’s app in a disk image, without any /Applications alias and license (which should be in the Installer or a first-run popup anyway). The Downloads stack and the automatic unpacking would take away the clumsiness of installing and still leave the user with the conscious decision to move the app to Applications.

    This however does not address the dependency and search problem. I am not so new to programming itself and OS X, but just starting to poke around in the technologies. In the time I can spare from my MSc work, consider me wanting to help and most certainly following the discussion.

    Enough spamming from me for now.

  17. Eldgin 03 January, 08 @ 2:15 pm

    Here’s my biggest pet peeve about OSX, it’s not installing software, but uninstalling how come no one has mentioned that? Maybe I’m just too new to OSX but I think there should be a more obvious way of uninstalling applications. Now I’m nowhere near a windoze fanboy, as I run OSX, Fedora Core 7 and XP on the same machine but this is where probably the only area I think Windoze excels ahead of OSX

    I could be wrong or missing something but I hate tracking down files and deleteing them manually just to delete a program.

  18. David Smith 03 January, 08 @ 8:17 pm

    Solution: don’t bother. Just drag ‘em to the trash.

    Seriously. Hard drives are big these days. A few plists plus or minus will be lost in the noise. The only exceptions are a) if you’re uninstalling because something broke and you think a fresh config will help, or b) if they have some nontrivial chunk of files associated with them (which is pretty rare; GarageBand comes to mind).

  19. Alexander Rauchfuss 16 January, 08 @ 3:08 pm

    Maybe the simplest way to deal with this would be for application download portals to start allowing devs to upload Info.plist files. These could be parsed for file types and UTIs. This information might then be queried by any number of client side apps and services.

  20. Holger 09 February, 08 @ 8:38 am

    Really great article! Good job, guy!

  21. michaelw 26 March, 08 @ 11:23 am

    Andy,
    do you know about 0install? http://0install.net/

  22. Andy Matuschak 26 March, 08 @ 8:18 pm

    Wow! This is essentially precisely what I want behind the scenes. The UI is really-un-good, but I’ll definitely look into it more.

  23. Andy Matuschak 26 March, 08 @ 8:22 pm

    Of course, now that I’m thinking about it, most of the work in solving this problem *is* in the UI. I’ll try to write something more on it soon.

  24. nick 10 April, 08 @ 10:52 pm

    Q: Are we ever going to see something that parallels Synaptic on the Mac?

    A: Probably no, but with a slim chance that we might, and here’s my reason for saying that: It would require Apple to do something about it. Third party solutions are interesting. MacPorts is a start. But until Apple has the Mac OSX Software… Menubar item open an App (iApps?) that will fetch an iTunes-like storefront of available apps (like they are going to do with the iPhone software) Mom and Pop user are never going to know the third party app exists (you pointed this out, i think Bob pointed this out as well). I say possibly yes because as i said, they ARE doing this with the iPhone, at least according to what I read last. The reason I don’t think it would fly on the desktop App list is that it will require Apple to vet and keep track of apps. Software publishing would become their problem, and that’s an expensive and overhead I don’t think they want to incur. The iPhone will most likely have a pretty slim application base, relative to everything else. Face it, its a cool platform, but a limited one, fancy effects and all, and I’m curious what hoops developers will have to jump through (other than the ones already published) to get their app on board. Synaptic and Ubuntu work well because everybody uses a central system for publishing, ultimately somebody is controlling the feeds that get pushed to Synaptic, and while just about anybody can add applications, Apple couldn’t do things that way, the whole system would be full of wretched software (even worse than CS3…*shudders*) and one or two bad experiences and people would start to distrust it. Rating systems, download counts, in-line reviews, etc., might help this, but as a user of MacUpdate and VersionTracker I couldn’t see Apple running a similar service for an in-house software distribution system.

    I think that most Mac users, some developers included, either miscalculate, or overlook the benefits of Packages. Even if your application is a completely self-contained drag and drop app, a package can be useful. As somebody mentioned above, most current software on Windows uses installers. People know this, they are comfortable with it, to an extent. They know they download a file, run it, it runs an installer, and eventually they get an icon on their desktop, or in their start menu, or by gosh sometimes the program opens all by itself when the installer is finished.

    Apple’s simplified system is freaking sweet. The Bundle concept is one I love and cherish. But my mother could give a damn about bundles and how great they are as she is running the latest game she just downloaded from the disk image instead of dragging and dropping it. Same goes for my brother, and the rest of my family whom i have managed to convert and created the need for me to purchase ARD Unlimited to manage and keep up with (I was going to have to support them anyway, Windows or not, at least this way I can do it from my desk).

    With Leopard especially, developers can use a tool (I used Iceberg and loved it), create a package, put it in a DMG, run the command in Terminal to make the package internet enabled, and the masses (those who use Safari at least) will now download the binary DMG, which will automatically extract its contents, delete itself, AND start the Package installer. 3 simple, single-window clicks later and the user’s app is ready to go. If you’re a zip or tgz fan and not a DMG fan you’re adding another double click to a user’s process, but that should be all. If a developer really wanted to be slick he could add a postflight script that gave an Applescript prompt to ask if the user would like to start the program now or just exit the installer. the DMG is gone, most windows users know that once they install an App they can safely delete the installer (many Mac users figure this out rather quickly as well, though i have encountered a particularly dumb user or two in my time).

    As a systems administrator i _Love_ packages. I can’t get enough of them. I had a massive 288MB package with preflight and postflight scripts used to set up new systems in my old department at work. I’d start up a new machine, turn on Remote Administration, and go back to my desk. Push the package with ARD and reboot and that machine was good to go. At last count before i switched departments I was installing 10 or 12 apps, and setting 15 or 16 system preferences and tweaks with that, oh, and installed 25 printers and their appropriate drivers. Wasn’t much but saved me quite a bit of time when a load of new machines came in. That really has no bearing on this topic, but I wanted to demonstrate that I’m not a programmer but a sysadmin, and general geek. I know how to code, but i prefer web apps over Cocoa :) the other point i wanted to make is that as an Apple SysAdmin managing 40-50 machines, I got really good at making packages, be it to deploy settings, software, drivers, whatever, they are incredibly simple to make and learn the ins and outs of, and their payoff is incredible in terms of simplicity.

    My rant has went on long enough. I’ll shut up now! :)

Leave a Comment

Currently you have JavaScript disabled. In order to post comments, please make sure JavaScript and Cookies are enabled, and reload the page.

You can follow any responses to this entry via its RSS comments feed. You can also leave a trackback if the inclination is there.

If you're looking for something specific then give the search form below a try:

RSS Wordpress Grady (theme) Return to the Top ↑