The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

REALBasic Vs. wxWidget Vs. Net

If you were developing a small windows program such as Eric's Winnable Solitaire, today, What would you choose? given you have zero experience on each of them.

With Eric's Solitaire in wxWindows and his SourceGear in .Net, it is really confusing for me to understand what exactly he is trying to say about each of them.  BTW, Wasn't SourceGear originally done in Java?

Personally, I don't have any experience with any of them.  I just want to work on a personal project which might(TM) involve a lot of string manipulation and occasional heavy accessing file system.  I also like to have web-access capability, at least able to generate output in HTML or XML.

It is purely for learning purpose as I have absolutely no experience with neither.  REALBasic is optional if it is better choice than wxWindows.  Eventually, I will do the same project in both.  But I just can't decide which one come first.

I also like to know if you think wxWidget is dying?
Monday, September 13, 2004
I've been using wxWidgets for the last year and I have to say that unless you really need cross platform I wouldn't bother. If you are developing in C++ for Windows then I'd go with WTL which is much nicer.

For me I can't go down the .Net route because of the size of the runtime (Joel has written on this.)

My next project will be using Delphi. I have no experience of REALBasic so can't comment on it.

As to whether wxWidgets is dying, I doubt it. The thing you have to remember with these open source projects is they don't have a lot of money for promotion so they will never have the profile of tools from a major vendor.
Tony Edgecombe Send private email
Monday, September 13, 2004
I did Winnable Solitaire in wxWidgets because I wanted to learn the wxWidgets API, and because I wanted to leave the door open for a Mac version.

There is no product called "SourceGear".  That's the name of our company, not our products.

We have a product called Vault which is done in .NET.  We've been very happy with C#, but it's not what I would choose if I needed cross-platform.

We have a product called SourceOffSite.  It has two parts -- client and server.  The client is MFC, and always has been.  The server was Java.  We ported it to C# for version 4.0.
Eric Sink Send private email
Tuesday, September 14, 2004
Not an original recommendation in this forum, but consider Python and wxPython. Especially since you mentioned string processing and hitting the file system.
Tom H
Tuesday, September 14, 2004
So,  After getting to know the wxWidget API,  what do you think?


Michael Koziarski Send private email
Wednesday, September 15, 2004
My impression of wxWidgets was generally favorable.  It feels like MFC except better.

But I have not yet given it the true test -- I need to try and port my app to MacOS.  After all, portability is the whole point of wxWidgets, right?  :-)
Eric Sink Send private email
Wednesday, September 15, 2004
So Eric, if not wxWidgets, what else, at least in the Windows and Linux domains, might be on your radar screen?

Enquiring minds want to know ...
Mitch & Murray (from Downtown)
Wednesday, September 15, 2004
Tcl with the tile extensions ( is great for developing native-looking crossplatform applications.

The Tclkit extension allows you to distribute single-file executables in all platforms

Other tools allow you to precompile/obfuscate the code

All open source and free ;)
Thursday, September 16, 2004
Having used wxWidgets a lot and even written a long article on how to use wxWidgets and multiple inheritance, I can speak about wxWidgets with confidence.

Right now, wxWidgets is both better and worse than MFC.

On the plus side, wxWidgets is multi-platform but you can still write platform-specific code directly to get exactly what you want.  wxWidgets is being developed; I was lured away from MFC because MFC seemed (and still seems) abandoned.  Moving to wxWidgets takes no effort for expert MFC programmers; I'd have no problem hiring a good MFC guy to work on wxWidgets, even if the guy had never even heard of wxWidgets.

On the minus side, wxWidgets is shoddy in places; I never had to fix MFC source code but some things in wxWidgets just aren't acceptable to me so I change the library itself.  You also can't buy wxWidgets components whereas there are lots of MFC components that can make your application look pretty.  There also aren't any books on programming wxWidgets whereas there are a zillion MFC books.

wxWidgets is open source.  Open source is always a mixed bag: there is openness and freedom but also personal agendas and unprofessionalism.

For me, it is worth it.  Sure, I spend 10%-20% of my time fixing wxWidgets internals that would have just worked in MFC.  In exchange, I get a vibrant library with lots of flexibility, which is appealing to programmers and has cachet and up-and-coming status in the community.
Daniel Howard Send private email
Friday, September 17, 2004
I have always had a curiosity about cross-platform GUI toolkits.  Right now, the race looks like wxWidgets vs. Qt.  RealBASIC looks cool, but I'm just not going to learn BASIC or any variant thereof.

Java is simply *not* sufficiently cross-platform for GUI stuff.

So, it's wx vs. Qt.  Qt is more polished and professional.  Apps written with Qt are more portable and require fewer ifdefs.  The advantage of wxWidgets is that the resulting app is using the native underlying widgets on the platform.

Both frameworks now have some real success stories.  Qt was used by Perforce and Seapine (both competitors of SourceGear) for their GUI client apps.  AOL Communicator was built with wxWidgets.

Bottom line:  I don't have real experience with either one.  I'm just talking out loud about an area that interests me.
Eric Sink Send private email
Friday, September 17, 2004
A while back, I did an evaluation to decide whether to do a new project in Visual Basic, MFC, wxWidgets, wxPython, the Mozilla framework or Java (Swing or SWT).  I selected wxWidgets in the end.

To some extent, I was lured by wxWidgets' siren song: "It's exactly like MFC except cross-platform!"  It was only later, after the project was well underway, that I discovered the shoddiness and immaturity that I speak of earlier.  But I'm still positive.

But, really, cross platform was not the critical factor; it was just a nice bonus.  Ironically, the licensing was what put wxWidgets over the top.  I was leaning towards wxWidgets because it was easiest to drop out of and just write to the Win32 API if I need to but the easy licensing put it above the rest.

FYI, here were other results:

Visual Basic: Fast development but I might take a hit with people later, politically.  Sure, I can use a DLL to do C++ but, with wxWidgets, you just write the code inline.  If I'm doing Basic and C++ anyway, why not just do C++?

MFC: Used it a lot; it works.  Feeling abandoned and neglected and worried about starting with a seemingly dead technology.

wxPython: Great for open source programs.  Makes the program tweakable.  But is sort of slow and acts like an unprofessional program.

Mozilla framework: Too obscure, too difficult for ordinary mortals.  Somebody besides me will need to work on this someday.

Java: Distributing the JRE looks like a hassle and compiling into binary seems hacky and unreliable.  License is a concern.  Java desktop apps either look good or look native but not both.
Daniel Howard Send private email
Friday, September 17, 2004
Arg!  Yes, I did evaluate QT, too.

QT: More mature than wxWidgets but apps look like QT apps, not native.  Licensing might be a problem.  More differences from MFC than wxWidgets.
Daniel Howard Send private email
Friday, September 17, 2004
We haven't encountered any problems with the "professionalism" of wxWidgets on our project.  In my experience, it's a solid, well-behaved library, and it lets you port to Linux easily.  (wxMac was pretty marginal a few years ago, but they've done a lot of work since then.)

Sure, we've had to submit a half-dozen patches to wxWidgets and we've had short-term consulting contracts with several of the maintainers for more intricate work.  But we enjoy being able to *fix* bugs, and the contracts involved adding actual new features.  In general, the support is excellent--there's a couple of top-notch programmers associated with the project, and they have consulting businesses.
J. Random Hacker Send private email
Monday, September 20, 2004
Yes, wxWidgets is good. It plays nice with DirectX and OpenGL, too.

Its selling point, in my view, is that it's no harder to make resizable dialogs than it is to make fixed-size ones. This is really great. (Dialogs and basic GDI functionality are just about all I use it for. I haven't ventured into its document/view stuff.)

Unfortunately making any type of dialog can be a slow process. There's no good dialog editor that I've found, but there are some slightly dodgy ones that you could perhaps make work. Fortunately, with practice it's possible to become relatively proficient. Those who've spent any time with Java's AWT layout classes will know what to expect.

However, I think this approach pays off in the long run. Resizable dialogs are just so much nicer to use! (And once you have the basic layout down, new controls generally slot in very easily. Compared to rearranging a terribly complicated dialog in VB or the VC++ editor, it's an improvement, though I suspect the initial cost means you save little or no time overall.)
Tuesday, September 21, 2004
You should look at Dialog Blocks for editing dialogs for wx, it's maturing nicely.
Tony Edgecombe Send private email
Wednesday, September 22, 2004
Yeah, we plonked out the cash for DialogBlocks.  Definitely the best way to create wxWidgets dialogs.  Plus, it exports to the wxWidgets resource format, so you can always ditch it later.
J. Random Hacker Send private email
Wednesday, September 22, 2004

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz