Relative Paths

Richard Gaskin ambassador at fourthworld.com
Wed Apr 7 20:57:17 EDT 2004


Monte Goulding wrote:
>>So for OS X, unless you move your external stacks inside the bundle
>>(altering the path from what it had been in development, altering the
>>user experience across platforms, and thereby requiring forked
>>documentation for your product) you'll need to prepend your stackFiles
>>to accomodate Apple's break from convention:
> 
> By having all external stacks inside your application bundle you are infact
> maintaining the same relative path across all platforms and you don't need
> to your stackFile altering script. 

Only from the perspective of the machine.  For people, there are two 
fundamental metaphors driving the experience: files and folders.  An OS 
X bundle is neither and both, an oddity that differs not only from the 
rest of the computing world but also from Apple's own legacy of nearly 
two decades.

This is not to suggest that introducing the bundle concept is without 
merit, but neither is it a trivial matter to accomodate well.

For apps with user-modifiable components, if I moved those components 
into the bundle on OS X I would have to inform users of the extra steps to:

1. Control-click on the application

2. Select "Show Package Contents" from the contextual menu
    (a violation of their own HIG, that item is not also
     available in a primary menu)

3. Open the Contents folder

4. Open the MacOS folder

5. Do whatever they need to do as on other platforms

And all of that must follow an explanation of why what appears to be a 
file isn't really a file at all but is secretly a folder, or refer them 
to the appropriate section of the sparse Mac OS Help which explains that 
mystery.

Note that Revolution's components are also outside the bundle as they 
are with mine.

 > The single clickable bundle is the expected user experience on OS X.
 > I'm not sure how you would need to fork
> your documentation based on you application's files being inside the bundle.
> Generally these files need no user interaction. Certainly it's not
> appropriate to put files that need user interaction inside the bundle but
> neither is it appropriate to place them next to the application on most
> systems.

Consider many of the applications from Adobe, Macromedia, Microsoft, and 
others:

A lot of apps allow plugins, templates, or other user-modifiable 
elements, including Flash, Dreamweaver, GoLive, Office, Photoshop, 
Swift3D, Interarchy, and of course Revolution itself, just to name a few.

Apple's decision to leave "Show Package Contents" out of the primary 
menus suggests it's not something they expect end-users to deal with.

But even many apps that don't have user-modifiable components are built 
with external component folders that are the same on all platforms 
relative to the *.app, not the /Contents/MacOS/executable within in. 
And I believe a majority of apps keep their documentation external to 
the bundle in either case.

So yes, many apps can be easily built to accomodate both OS X and the 
rest of the world without difficulty.  But many others, including 
Revolution, can't, requiring either forked code or forked documentation. 
  Revolution wisely favors the end-user, keeping the experience 
consistent across platforms and forking the code instead, using a script 
probably not too different from the one I use.

With the ease of adding extensibility to Rev-based apps (through 
external media, plugins, etc.) it may be worthwhile exploring ways to 
make it consistently easy to deliver multi-platform apps in the form so 
many major vendors do.

--
  Richard Gaskin
  Fourth World Media Corporation
  ___________________________________________________________
  Ambassador at FourthWorld.com       http://www.FourthWorld.com


More information about the use-livecode mailing list