I would like to see a Poco crossplatform GUI library. I mean it, because there are simply no good C++ GUI libraries. The best, or the "least worse" one, would be WxWidgets. But I find it not a friendly library, its C++ is arcane, uses lots of macros and stuff. It's hard to debug errors because stepping through the code with a debugger is a painful experience.

Of course there is Qt, but the biggest problem with is that it is not free for commercial use. And the extra preprocessing required is a bit of a burden. Especially since it is not needed, since C++ is powerful enough (just look at boost~058~~058~bind and boost::lambda).

GTK+, I never really tried, but from what I've read and seen, it doesn't seem great either. I could be wrong however.

So there seem to be no good solutions. And it shows in software development companies. At my previous job there was a team devoted to the development of a GUI library that worked on top of MacOSX and Windows. At my current job we also decided to create a minimalistic OO layer on top of Win32 (since we use Cocoa for Mac).

I think C++ desperately needs a decent GUI lib. And I think that Poco would do it right. And I also think that this could be the killer feature for Poco that will lead to major adoption of this library. And I also think that there would be many people willing to contribute to this project, since developing a crossplatform GUI is always a very exciting thing to do.

So, have there been plans in the past for the development of a GUI library? I'm certain that the idea has come up a few times. I would like to know your opinion on this matter...

> So, have there been plans in the past for the development of a GUI library? I'm certain that the idea has come up a few times. I would like to know your opinion on this matter...

Yes, we have discussed it before, but the usual fuss about lack of manpower applies - we have no people and time to do it. If you have experience, time and will to lead a serious effort in that direction, let us know.

> I would like to see a Poco crossplatform GUI library. I mean it, because there are simply no good C++ GUI libraries. The best, or the "least worse" one, would be WxWidgets. But I find it not a friendly library, its C++ is arcane, uses lots of macros and stuff. It's hard to debug errors because stepping through the code with a debugger is a painful experience.

ive recently been thinking about this too. wxwidgets is ok, but i really think it could be alot better. If Poco had a GUI library and kept to similar coding style/quality then i think it could be really good. ive wanted to try to write my own (at least basic one) but i havent really had any experience with gui libraries (except java and a bit of .net), nothing like windows api.

one benefit at least is poco already has alot of very useful utilities. wxwidgets IIRC recreating alot of classes (stl) because when they started the project stl was new and not very good.

I would try to contribute if this were to go ahead, at least ideas but if i could then code too.

I think with POCO we already have a great foundation to build an excellent GUI library on top of it. It's not so much a technical problem, but more a kind of manpower issue, as Alex noted. So, if we're able to find enough contributors for such a project, we can do it.

There are already a few GUI libraries out there worth taking inspiration from. For example, gtkmm, the C++ wrapper over GTK+ is quite decent. Then there's .NET and Java (Swing and SWT). I'd say, take the best ideas from those and POCO-ify them. Also, I think we should keep the UI layer as simple as possible and not invest too much time into sophisticated theme engines, etc. While it is somewhat funny to be able to switch the UI from Motif look to Windows look with a menu command, I have never seen any practical use for it... The main goal should be to look as "native" as possible on every platform. This means using the respective platform's native widgets instead of emulating them. For Windows, that means to bite into the sour apple and use the WIN32 api. On the Mac, we should go with Cocoa. And on Linux/Unix, I guess it will be GTK+.

To get started, I have created a Wiki page for this topic. Keep your ideas flowing...

>I think with POCO we already have a great foundation to build an excellent GUI library on top of it. It's not so much a technical problem, but more a kind of manpower issue, as Alex noted. So, if we're able to find enough contributors for such a project, we can do it.

>There are already a few GUI libraries out there worth taking inspiration from. For example, gtkmm, the C++ wrapper over GTK+ is quite decent. Then there's .NET and Java (Swing and SWT). I'd say, take the best ideas from those and POCO-ify them. Also, I think we should keep the UI layer as simple as possible and not invest too much time into sophisticated theme engines, etc. While it is somewhat funny to be able to switch the UI from Motif look to Windows look with a menu command, I have never seen any practical use for it... The main goal should be to look as "native" as possible on every platform. This means using the respective platform's native widgets instead of emulating them. For Windows, that means to bite into the sour apple and use the WIN32 api. On the Mac, we should go with Cocoa. And on Linux/Unix, I guess it will be GTK+.

I agree with it being fully native thats one thing i dont like about some other GUI libraries. If your using windows it should look like a windows app etc.

I think that the framework of this should be designed so the more complex components can be made easily. So instead of spending alot of time making a large number of different components you can use, make it easier to write new ones. Then gradually new components can easily be contributed.

Java is quite nice, ive only used .net a little bit but seemed quite easy to use.
I would definatly try to help where i can on this.

I wonder if it would be possible to make native platform implemenations for the WebWidgets components. Maybe that would be difficult because we don't really need code generation, but compilation of platform dependent code.

I have some experience with the Win32 API and Cocoa, so I could contribute for that. I seems a good idea to POCO-ify an already popular library. I was thinking also of Qt as having a good interface.

> I wonder if it would be possible to make native platform implemenations for the ))WebWidgets(( components. Maybe that would be difficult because we don't really need code generation, but compilation of platform dependent code.

I think that some form of commonality with ))WebWidgets(( would definitely be desirable. Since I did not give it much thought, I'm not sure how much and how exactly would that be achieved, but once ))WebWidgets(( code is out, we can look at it and see what makes sense.

> I have some experience with the Win32 API and Cocoa, so I could contribute for that.

Since current core team does not have enough resources to pursue this, what we need is a lead developer - person that has enough skill and will to take full ownership of the library. If you (or anyone else reading this) fit in there, we'll be happy to support you.

>I seems a good idea to POCO-ify an already popular library. I was thinking also of Qt as having a good interface.

Not quite sure about Qt. It indeed looks good on the outside. Code is pretty tidy, too. However, it has non-standard nature in its core. Licensing would definitely be a problem as well. In addition to that, adding another layer of C++ interface o top of a full-blown C++ framework would not make much sense. We should aim for a really thin layer on top of native GUIs that works out-of-the-box on a given platform. There should be a unified front-end, with platform back-ends - much like Data library and connectors are designed. You start with one back-end (probably Win32 first) and add others later.

In my spare time (whilst not programming OGE), i've started writing a gui library mainly for learning/to add to my cv. I'm making this library in the same (or as close as i can) style as poco. If i manage to get anywhere with it and it works well i'll contribute it to poco project. It is of course using poco foundation.

I'll be mainly doing the windows code but i might be able to try the linux one eventually. So anyway just letting you know but it really depends on how well it goes of course.

> I'll be mainly doing the windows code but i might be able to try the linux one eventually. So anyway just letting you know but it really depends on how well it goes of course.

Since hoping for a full-blown portable POCO GUI is not realistic given our circumstances, I have spent some time evaluating wrapping candidates and the best thing I was able to find is IUP - small, portable and modular. Wrapping it should not be a lot of work (there already exists C++ wrapper that could be POCO-ified). Would you by any chance consider directing your efforts there?