The Artima Developer Community
Sponsored Link

Python Buzz Forum
Bundles Schmundles

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
Ian Bicking

Posts: 900
Nickname: ianb
Registered: Apr, 2003

Ian Bicking is a freelance programmer
Bundles Schmundles Posted: Apr 4, 2004 12:59 AM
Reply to this message Reply

This post originated from an RSS feed registered with Python Buzz by Ian Bicking.
Original Post: Bundles Schmundles
Feed Title: Ian Bicking
Feed URL: http://www.ianbicking.org/feeds/atom.xml
Feed Description: Thoughts on Python and Programming.
Latest Python Buzz Posts
Latest Python Buzz Posts by Ian Bicking
Latest Posts From Ian Bicking

Advertisement

There's another packaging article up on Slasdot, this time about the ROX Zero Install system. Zero Install is kind of like MacOS X application bundles, though with an important added feature: instead of explicitly copying bundles into your application folder, you only run them remotely (NFS?), with heavy caching so that effectively you are running them locally (but updates can happen magically). As usual there's lots of people talking about how wonderfully simpler MacOS packages are compared to Linux.

In some ways this seems better than Mac's system, because it saves a lot of management issues, including dependency (since one bundle can refer to another bundle, and installation is implicit). Though it opens up a lot of issues as well -- what happens when different updates conflict, e.g., package A and B both depend on package C, but A and B both depend on different versions. This will be quite common as the packages are incrementally updated by their respective authors. Explicit updating of installed software gives an opportunity to manage these conflicts.

Ultimately, I think bundles are the wrong solution to packaging. They handle the simple case, and that's not very interesting. But part of why they appear to be a good solution on MacOS X is because that is largely a proprietary platform. Proprietary applications tend to be more self-contained, and include all their dependencies, because proprietary software makers can't cooperate with each other (there's just little incentive). Open source applications, however, are part of a whole community of software, and have extensive dependencies and interactions. Because there's no commercial overhead, the factoring of applications also tends to be more fine-grained.

But even in the proprietary world, MacOS's system is deficient. Installers are still fairly common -- perhaps those installers just place the bundle in the right location, but that is impossible for me to know. And there's no common way to choose or understand important configuration settings: Which application is the default handler (for a mime type, email, etc)? If I install a plugin, how does it know which browsers I have installed? If I install a service, how do I know it doesn't conflict with other services? (Only one service per port, after all)

Obviously much of Linux software can't be put in bundles currently. Part of the ideal of bundles is that they encourage decoupled application design, so even if we can't do it now, maybe the discipline would make our software better. But decoupling simply isn't possible, and the entire point of a packaging system is to robustly deal with the times when decoupled applications aren't possible: to deal with the system. Naive systems like bundles simply aren't robust with respect to conflicts and application interactions, even as simple as they seem from the outside. Software that isn't robust isn't user friendly, especially when it comes to system management (a task every user has and no user wants).

If packaging is seen as too complicated, I think that's because we pay too much attention to the filesystem. The user has no place in the modern filesystem. There's nothing useful for them to do there. There are some select places where they can do something -- /etc, some parts of /var (e.g., /var/www), and /home. That's it. (And while paths differ, the same is largely true for Windows and MacOS as well.) All the other parts of the filesystem are managed by specific applications (and even /etc should really be managed as well). Even inside /home there are managed areas -- Library on MacOS, or a pile of .whatever files in Linux.

The filesystem isn't even any good for users where they should have control. Files that users manage need to be versioned and well indexed -- things that aren't particular important for application files. The dumb pile-of-bits filesystems that we use are perfectly fine for storing program files and associated data, and there's no reason we should forgo that. But we shouldn't ask more of that pile of bits than it can provide. Bundles turn the file system into a package manager. But it should be fairly obvious that the file system (or the Finder or ROX filer) isn't going to be the kind of rich interface necessary for this most essential of system administration tasks.

Read: Bundles Schmundles

Topic: CHARMING PYTHON #B15: Review of Python IDEs Previous Topic   Next Topic Topic: xyzzy

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use