Boost logo

Boost :

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.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk