
Hello all, Few points why would GUI library be impossible to bring into Boost (IMHO). The major problem is religious wars. Let's start: 1. Use "native" widgets or not - "native" - which native for Unix to choose Qt? GTK? Motif? Tk? - Your own vector based: - how would they integrate to current desktop environment's look and feel - how are you going to implement complex text rendering under Unix? I mean complex text layouts like right to left, up to down, what about fonts rendering... etc. etc. etc. Most likely it would be done wrong. 2. What strings should be used? std::string, std::wstring, custom string like Qt's QString or GTKmm's ustring? - std::string/UTF-8 - hey what about Windows developers to believe that wide API is best? - std::wstring - hey what about Unix developers for whom UTF-8 is natural and wchar_t is wasteful (4 bytes) - Custom strings - why to use this when you have strings in C++! - Use both... Now everything become bloated, the code is doubled! or everything in headers or templates. 3. What about event loop: - Let's use ASIO as central event loop! But it template bloated - Let's use our custom event loop. But how do I integrate with ASIO event loop to support asynchronous networking. 4. What about OS support. What GUI systems are you going to work with: - Windows, X Server, What about cell phones? What about frame buffers? 5. What 3D rendering would you use? - OpenGL - hey but Direct3D developers don't like it, it has bad windows support (thanks to MS) - Direct3D - hey but it is not portable - Both - hey but you can't write cross platform code - Let's do our custom... 6. What about licensing? Can we use LGPL libraryes? GPL libraries? or only BSD/MIT like ones. - Only BSD - you will get stuck implementing 99% of the code from the scratch (especially stuff like complex text layout, that by no chance would be done right) - BSD and LGPL - hey but it is not free enough got 10% of users! But hey, these 10% of users use proprietary libraries that much worthier then GPL... Bottom line ------------ It is not about how specific widget would look like, it is about concept, most GUI library developers decide one way or other, it may be good or bad but it works. So finally you don't like some design, you choose something that works, if this is Qt with preprocessor, if this is "native C++" GTK or even macro-based wxWidgets... or even (ohh hell) MFC. But finally it gives you solid and useful codebase - and what is mostly important: well debugged and supported one! GUI framework is **VERY** complex project and it is **VERY** hard to do it right (see Enlightenment as great example how cool stuff may never become useful) More then that it is not clear what "right" is... It would never happen in Boost. As it tries to please them all. So you can discuss look and feel and other issues for how. Artyom