You can be flexible, but within guidelines. For instance, on a Mac, you can never put a menubar in a window. Ever. That’s a violation of the human interface guidelines. The same with putting scrollbars on the wrong side, or changing how the close/dock/zoom buttons work. Or not using, say, Cmd-E to quit a program instead of Cmd-Q. Or, God forbid, Alt-F4 or somesuch nonsense.
All GUI interfaces have to have guidelines that the applications within them follow so as to provide a consistent interface to the user. That’s the key to making a computing experience easy to learn: Cmd-B should always make text bold, Cmd-W should always close windows, Cmd-Q should always quit the application you’re in. At least on the Mac. On Windows they swiped Cmd-B and made it Cntrl-B, but the window closing command is not standard, and the application quitting command is the ludicrous Alt-F4.
Apple has never touted “flexibility” of the interface. The Apple community has always held sacrosanct the Human Interface Guidelines created in the mid-1980s (and recently greatly revised for Mac OS X). The idea is that the skills for using a program that you learn in the OS or one program should transfer to the next program you’re in. You shouldn’t have to learn a new interface, a new bold command, or a new quit command, or how the fuck do you close this window???, in each new program you purchase.
That was the crappy DOS way of doing things, where Shift-F1 in one program would bold the text you were using, and Shift-F1 in another would quit the program without saving the changes, and you damn well better remember which is which! So everytime you had a new piece of software you had to scale not only the learning curve of “what does this software do?” and “how does it do the special things it does?” but also “and how does it do the simple things like present data on the screen, save files, quit the program, etc”?
The idea behind a GUI, an always present and consistent interface, is to get rid of that last learning curve. The basic widget and interface of all programs is unified around certain guidelines, making it easier to use them, because you don’t have to learn all that crap gain, you jump right into using the software for whatever features you purchased it for.
Microsoft has tried to emulate this on the PC with Windows, but has never really enforced it. But worse, their customers haven’t really demanded it, either. While on the Mac side anyone who puts for a non-standard application that doesn’t work like a Mac app is supposed to work is quickly driven off the market (with the exception of those vile bastards at Quark), on Windows no one seems to care that the bad old days with DOS are still present thanks to braindead developers who think its k00l to create non-standard UIs and make people waste time learning how this program does things (like present its program menus) that every other program also does.
Some h4ck3rrr who thinks its so cool to make some fugly, gaudy GUI that’s totally nonstandard is a detriment to the computing environment. He makes you learn everything again. He defeats the entire purpose of having a standard GUI. And frankly, none of the nonstandard interfaces I’ve ever seen have ever been any good. They all hide simple things, like the way WinAmp hides its menu… it has like six eight-pixel buttons… which don’t look like buttons… that’s utterly fucking absurd. You’re just supposed to click around on all the little gaudy baubles until you hit the one you want. that is wasteful and counter-intuitive. Clearly defined menu, title and work areas, standard to all major GUIs, are present for a reason. As are easily distinguishable, and consistently placed, window management widgets.
Apple and Microsoft have spent millions of dollars reseraching what does and doesn’t work, what is and isn’t intuitive, what is and isn’t clear. The people who make products like WinAmp haven’t. And it shows.
Any program where the first time you start it up and you have to stop and figure out how to do things that are common and easily done in all other programs is a badly designed, non-standard interface, and no program with such an interface should be supported in the marketplace, because they cheapen and weaken the very principles UI design are all about: consistency, clarity, intuitiveness and ease.