$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] Thoughts for a GUI (Primitives) Library
From: Mathias Gaunard (mathias.gaunard_at_[hidden])
Date: 2010-09-09 11:29:43
On 08/09/10 05:28, Artyom wrote:
> Hello all,
>
> Few points why would GUI library be impossible to bring into
> Boost (IMHO).
>
> The major problem is religious wars.
The original post of the this thread looks like a request for comments 
and ideas, so it's natural people say what they want and think it should 
be like.
Whether the original poster (Gwenio) wants to go forward with all the 
ideas is up to him. If he comes with an implementation and submits it 
for review, it should be accepted regardless of religious wars as long 
as it accepts its own choices.
> Let's start:
>
> 1. Use "native" widgets or not
That's an implementation detail, so it doesn't really matter.
I also think it's a bad argument to begin with, based on the perceived 
look & feel of certain toolkits.
Qt and recent Adobe products don't use native widgets on Windows, yet 
most people don't even notice it.
> 2. What strings should be used? std::string, std::wstring, custom string
>     like Qt's QString or GTKmm's ustring?
None is the right answer.
Strings are just ranges of characters, or rather data that encodes such 
characters.
Generic programming techniques allow to integrate with any type that 
fulfills a certain concept.
> 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.
What's template-bloated about Asio?
You certainly have more experience with it than I do, since you used it 
in CppCMS and then rewrote your own, but it feels quite lightweight to me.
> 4. What about OS support. What GUI systems are you going to work with:
> 5. What 3D rendering would you use?
I think it's a given it's best to focus on interface and use other 
existing tools for the implementation, so as to avoid re-inventing the 
wheel.
> 6. What about licensing? Can we use LGPL libraryes? GPL libraries? or only
> BSD/MIT like ones.
According to my understanding of the Boost community, LGPL is ok as long 
as it's just for a particular binding.
> 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.
Someone could integrate Adam & Eve into Boost and get a very good 
starting point; making Eve a DSEL would make more trendy and Boost-like.
There has been such efforts ongoing already, albeit I'm not sure what 
their status is.
I think Adobe would have something to gain from this as well, so it 
sounds like a realistic and feasible approach to me.
I'm afraid I don't share the same thoughts about Gwenio's.