ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
5

In what way(s) has wxWidgets failed to maintain good cross-platform compatibility?

asked 2012-12-13 14:31:12 -0600

updated 2014-01-28 17:14:34 -0600

ngrennan gravatar image

Hi!

On the DevelopersGuide page (http://www.ros.org/wiki/DevelopersGuide) it says the following.

"We are targeting all new GUI development at Qt. Much of the existing code is instead built using wxWidgets, but we are migrating to Qt as wxWidgets has not maintained good cross-platform compatibility."

I'm wondering in what way(s) wxWidgets has failed to maintain good cross-platform compatibility. To be clear, I've never used it myself. It's just that everything I read claims that wxWidgets is extremely portable. Does anyone have any examples or references?

Thanks, Kevin

edit retag flag offensive close merge delete

3 Answers

Sort by ยป oldest newest most voted
7

answered 2012-12-18 13:21:26 -0600

Dirk Thomas gravatar image

ROS has been using wxWidgets for a lot of tools in the past. In 2011 the design of an integrated user interface (http://ros.org/wiki/rqt) was started and several existing GUI toolkits have been considered.

Based on the experience with various tools and the available features, licenses etc. the decision has been made to use Qt for that project. The reasons behind that are:

  • it supports all platforms well: Linux, Max, Windows (potentially even mobile devices)
  • works well with cross-language programming: mixing Python and C++ in a single application
  • very rich feature set: Model/View framework, cross platform libraries, signals and slots
  • high-level widgets: Graphics View framework, X11 embed, i.e. Qwt
  • easy to use: QtDesigner, QtLinguist
  • large and active community, extensive documentation

The experience of several developers was that Qt was (much) easier to work with than wxWidgets (may be since it is less similar to MFC? may be due to signals and slots?). Based on the success of this project further tools will be converted to Qt for easier maintenance.

As mentioned by Jack before: this is just the decision for the GUIs we develop in our group. Any user can freely choose based on personal preference and what is most efficient for him.

Anyway the advantage of using a single toolkit across several tools should not be neglected: you can share code (and even UI fragments) between different tools and build integrated tools more easily and the developer team gains deeper knowledge by focusing on one technology.

edit flag offensive delete link more
7

answered 2012-12-17 03:36:14 -0600

VZ gravatar image

Disclaimer: I'm a member of wxWidgets dev team, however I'd still like to reply to this to give some facts which hopefully don't suffer from any bias.

  1. wxWidgets is still being actively developed, the development simply happens almost exclusively in 2.9 branch and not 2.8. You can look at the http://trac.wxwidgets.org/timeline (activity timeline) to get some metrics. The last release was indeed in July and the hoped for autumnal release couldn't be done soon enough so it will now be done in January but this is hardly the end of the world.
  2. If there is a single platform where wxWidgets should be used instead of Qt, it's OS X. wxOSX is far from perfect, and I'm well placed to know of its problems, but it still provides a much more native user experience than Qt there.
edit flag offensive delete link more

Comments

So it seems my question stands. Perhaps I missed a discussion in the mailing list, but I can't find an explicit explanation anywhere. Again, I haven't used either yet (my last GUIs were in C/GTK and Java/Swing). But I'm trying to figure out what framework to use in the future, hence my question.

leblanc_kevin gravatar image leblanc_kevin  ( 2012-12-17 23:59:02 -0600 )edit

2.9 is a development branch, the 2.8 version is still the latest "stable". 2.8 only has a carbon implementation. This prevents you from building a 64-bit version of wx for 2.8. There fore we needed to use wx2.9. But we could not get it to build from source, I was able to use the 2.9 binary.

WilliamWoodall gravatar image WilliamWoodall  ( 2012-12-18 11:46:14 -0600 )edit

I should say we couldn't get it to build from source at the time, I have not tried it since. There was a period of about a year where wx just didn't work on snow leopard as a 64-bit library, and that contributed to my recommendation of a move.

WilliamWoodall gravatar image WilliamWoodall  ( 2012-12-18 11:54:27 -0600 )edit
4

answered 2012-12-18 00:08:53 -0600

A bit more searching yielded this conversation, from before I started using ROS. I guess this is where the decision was taken, and I guess there will always be room for debate regarding the wisdom of the decision...

https://code.ros.org/gf/project/ros/mailman/?action=ListThreads&mailman_id=8&_forum_action=ForumMessageBrowse&thread_id=44126

edit flag offensive delete link more

Comments

That discussion makes sense to me. No one proposed a binding decision for Qt or against wxWidgets. But it is helpful for the core ROS developers to converge their GUI dependencies. Hence the recommendation for Qt. Both are still supported. People can use whatever they prefer.

joq gravatar image joq  ( 2012-12-18 06:38:53 -0600 )edit

I agree with joq, There is nothing preventing anyone from using wx, gtk, or .NET with ROS. Simply the core team uses Qt because they chose to do that. The GUI framework that has come up around Qt is being used actively and seems to meet everyones needs.

WilliamWoodall gravatar image WilliamWoodall  ( 2012-12-18 12:25:48 -0600 )edit

Question Tools

2 followers

Stats

Asked: 2012-12-13 14:31:12 -0600

Seen: 3,200 times

Last updated: Dec 18 '12