We aren't aimed at most Mac users, the OSG is for developers and developers only.
Most people touching OSG on Mac are going to be both OSG and Mac developers. It is not mutually exclusive. Most people buy Macs because of the experience it brings so people are actually looking for this stuff if they have a Mac. Steve Jobs didn't put a gun to anybody's head and force them to buy a Mac. There are lots of choices out there for those who don't like the Mac ways. If the developer is expecting the exact, must run on a command line behavior for an osg example that they got on some other system, then the they already know OSG and and the running the examples exactly the same way through the command line is meaningless information. If they already know OSG, the benefit is in seeing what the stuff they don't already know. And chances are the user on the Mac knows the GUI concept and double-click concept that they might just try that before doing anything else. Also, don't discount non-developers at looking at this stuff either. For one, think of product managers who make decisions about what technologies to use. They also look at these things.
Developers should be able to open a terminal and type in some basic lines.
I've met a surprising number of Windows developers that have never touched the command line.
The OSG is about graphics, about code, for developers not impressing end users with pretty GUI's.
Nope, it's like selling your car. It might run great and the tires might be brand new. But if you don't wash it, people are going to assume the worst. All the aspects make up the whole experience. You might only care about the OSG parts, but a new user is going to judge the product by the whole experience because they have not been trained to focus on the single aspect. Remember that you are not your user. For the user, if the parts they are familiar with don't work within their expected world view, they are going to be distracted from seeing the things you really want them to see because they are too focused with the things they know are wrong.
There should be examples that illustrate how to use the OSG API.
And the bundled built product doesn't impact/change the OSG API or the example source code at all. They will learn OSG no better without the bundle.
open mybundledapp.app "args"
I forgot about this one. It might work, but you might need to disambiguate using the -a switch. open -a mybundledapp.app "args" (Stuff on shell scripts for launching) Shell scripts are difficult to work with from the UI/double-click side. There used to be a trick where if you gave a shell script a .command extension, you could launch it through Finder. But I think this behavior no longer works or at least is totally unreliable. For me, scripts now open in TextEdit. (Some cite security concerns, thought I don't know the real reason. It could be something as simple as something remapped the .command extension to open in TextEdit. But again, this is the problem about undocumented behavior.) Assuming you could launch via double-clicking, the general problem with this technique is that I believe your current path gets set to the root of the file system so the problem is your script cannot find any of your programs unless you know the absolute path. A secondary issue is you can't rely on any environmental variables being set.
Well I certainly want the developer experience to be a positive one.
Well I'm glad we agree on this at least. But you should have some trust in your experts that know the platform. You say a lot of negative things about the platform and the things I bring up because I think they will improve things for OSG/Mac users, and honestly, I'm starting to take it personally. I know some times you shoot down my issues because they may negatively impact other platforms and I accept that, but this specific issue is a pure Mac issue.
.app bundles right now are broken. They don't perform at all good enough.
And I also agree with you on this point. But there is a very easy solution for that; for examples that require command line arguments now, provide a default value within the example code itself if no arguments are passed in e.g. "cessna.osg". It doesn't impact the OSG API, it's portable as all platforms will benefit the same way, and it doesn't interfere with preexisting behavior. Particularly for both Windows and Mac, I think this is a great solution. Windows won't require a shell script to run the things any more as a user can just pick what they want to run. All too often I see an program in Explorer or Finder and say, "Gee, that looks interesting. I wonder what that is." When I double-click, I curse and say, crap, I have to open a command line and figure out what the command line parameters are. (And personally, I don't have the patience to skip through 10 apps to see the one I want to see. Imagine if you asked somebody to skip through 10 songs in a music playlist because they couldn't select a specific one.) I would be willing to help modify the examples to provide a default argument so you don't have to do it. As for the osgViewer application, the way to handle it is to allow the viewer to load either empty or a default model (could just be an osgText string with simple instructions), and then allow the user to load a model at run time if no command line argument is specified.
From a Windows and Mac vantage point, the question is, why is there no
File Open dialog? Menu->File->Open is almost hard coded into the brain now. There are also other ways to load models. osgsimpleviewerCocoa uses drag-and-drop to allow models to be loaded and changed. Another way is to support dragging the file onto the program's icon. Another way is to register certain file types like .osg, so if the user double-clicks on the model file, it starts the osgViewer program. People are very familiar with this too. Of course, the command line should continue to be available and work as it always has. I am not anti-command line by any means.
I was going to suggest what you have just done - Makefile build without bundles, Xcode build with bundles, this is in effect the way its been under OSX even before CMake.
The problem is that this is still unsupported Mac behavior and it is bad in general. So this is still not a good idea. Also, as I do actually create documentation for this stuff and try to help with on questions on and off the mailing list, it's not an issue I really want to deal with (command line launching has already been documented for quite awhile). Finally, if/when GraphicsWindowCocoa finally comes around, I don't want this to be an arbitrary political barrier in the way if it turns out this hack doesn't work with that implementation. As a compromise, I'm willing to drop the subject if you keep the option, but make the default option Bundle, and put a comment in the CMake script and description (doesn't have to be a MESSAGE) warning users that changing the default relies on unsupported behavior and is subject to break and will not be supported by us. I'll even type in the changes myself so you don't have to. Then you and anybody else can continue using it bundless and I can close my eyes and stick my fingers in my ears when somebody down the road has problems :) Thanks, Eric _______________________________________________ osg-users mailing list osg-users@openscenegraph.net http://openscenegraph.net/mailman/listinfo/osg-users http://www.openscenegraph.org/