
In article <079f01c48a2e$3e02b4f0$a901000a@mat>, "Mathew Robertson" <mathew.robertson@redsheriff.com> wrote:
I agree. You point out two major failing of most C++ frameworks: lack of modern C++ use and lack of exception safety. I see the rest of this thread talking a lot about C++ techniques, but there seems to be one major component that everyone is overlooking: producing a good user experience.
Perhaps as a Mac developer I am more aware to the importance of a good user experience; one of the major failings of every cross-platform C++ framework on Mac OS is a poor user experience -- usually due to reinventing OS-provided UI wheels, and thus often making the UI subtly inconsistent with the rest of the OS. This kind of subtle (or less subtle) inconsistency is what makes users (entirely justifiably) bitch and moan and shoddy ports, and give bad product reviews.
umm... which part of "cross-platform" and "use native functionality" is more important?
You are falsely presenting them as mutually exclusive choices.
If you have some functionality provided by one OS, while another doesn't provide it... what do you do?
That case is actually almost completely irrelevant to my point. My point has to do with "reinventing OS-provided wheels", which is completely different from providing additional functionality on a particular OS.
MacOS is a hard creature to make apps portable to - as its UI is significantly different to most other OS's, that making a cross-platform library which appears to work as a native OSX app is hard, real hard.
I don't know where you got the idea that the Mac OS X UI is significantly different from most other OSes. It is more alike than it is different, and I think you are misinformed (or, more likely, that your information is out of date). If you can provide some specific examples, I will be happy to try to correct you; However, I don't think that discussion belongs here. That said, I think that your argument here is really that if you start by designing a framework without understanding how Mac OS X differs from other OSes, your framework will have trouble porting to Mac OS X. This is hardly a surprise. You can argue that way for any platform -- it's hard to port to a platform you don't understand.
Take Mozilla/Firefox/OpenOffice - each of these suffers the "not quite OS integrated, compared with native apps", even though these apps are propably some of the highest profile cross-platform applications.
The quality of the user interface of all of those applications is something that I, as a professional Mac developer, would be ashamed to ship. (They are not all equally bad, though.) I firmly believe that the problem of producing a cross-platform framework that is able to accommodate the user experience demands of several platforms is difficult and tractable. I also believe this community is capable of producing such a framework, but I think that it's telling that the title of this thread is "Java style GUI in C++"; a Java style GUI typically implies making user experience sacrifices on every platform, and therefore I believe that a "Java style GUI in C++" is likely to be driven by misguided goals. meeroh