Slashdot Mirror


Ask Slashdot: What is the Best GUI Framework?

After asking you all to share your thougths on what really makes a GUI. I figure it might be interesting to see what you all thought about the implementation side of things. What kind of framework do you think a modern GUI should have? So when exa slid this piece my way, I just had to post it. Click below to read his question.

The following is from Slashdot Reader, exa.

I wonder which GUI frameworks are the cheesiest to code with and what makes a GUI framework good. Previously, I've been involved with GUI programming on GNU/Linux, Solaris, Amiga and Windoze 9x/NT platforms. It is then not so surprising that I ask /. about GUI programming ;)

In particular, I'm pursuing GUI programming for X11. To give interested hackers a boost, I present the following remarks on how a framework should look like (in no particular order):

  • In general, a robust and scalable GUI framework, in C++ or a prominent OO language like Ada9x, is very desirable.
  • XFree86 is all pretty good. But times can change, so a framework with platform independence has its pros. (And multi-language capabilities count as well)
  • Many libs don't have a good design. A great GUI framework must attain design goals such as uniformity, modularity and comprehensibility.
  • For a good design, it should make use of certain design methodologies. For instance it might adhere to a design pattern like MVC.
  • The license does matter.
  • The framework, where applicable, must support standard stuff. At least it should not disallow use of them. For instance, you'd want threads, you'd really want TCP/IP, you'd like reading in JPEG files.

I also wish to make some comments on a few of the popular GUI frameworks:

  • Motif based stuff such as BXPro: I use free software, and on my system Motif progs just look antique. What's more, they are lightning-crash-and-slow-motion. I don't possess a Motif 2.1 product and I don't plan to. How perfect they might be, I am skeptical about them. (I did write with pure Motif, and I'm outta the game)
  • QT: This lib forces you to write in a certain style. The keywords introduced by means of moc are not a proper C++ extension. CPP macros, thus signal/slot mechanism is ad hoc. A fatal error is in their failure to recognize standard C++ library. And the license is boring.
  • Java swing: The successor to awt has several advantages over the previous. Although I basically dislike Java language, the GUI subsystem features a somewhat nice design.
  • GTK+: A framework that has a well defined run-time system. The types give a formal way of handling a general OO design. Multiple language bindings. (C++ bindings are cool)
  • JX: After seeing how Code Crusader performed, I abandoned work on it. But still, something that works.
  • Other Stuff: freshmeat lists other "widget sets" too, like the FLTK and TOAD which are LGPL'ed. By the way, don't even think of MFC. It is the worst GUI lib that has ever seen the light of sun. It is *not* designed. (I worked with it over a year... :-

Note that I'm not concerned with the user interface, docs, distribtion, etc. of the applications written with a particular lib. Thus, I'm not suggesting a GNOME/KDE flame war. The only purpose is to assess the quality and performance of the software that underlies graphical applications. In this sense, I don't ask how a user interface should be designed. In addition to this, I don't ask what tools are available for the software (like GUI builder). The two chunks of comments above determine my primary questions:

  1. What are the aspects of the ideal GUI framework?
  2. Among the available software, which GUI frameworks for X11 are preferable and why do we pick them?

Ed: This is a heavy topic, so I'm hoping for some good discussion. If you feel the need to discuss GUI systems available on other platforms (X11 is rather limiting, other platforms may do it better!) feel free. I don't want to stray too far from the original question, but I would like to know what you all think the best GUI framework in existance is. I got quite a few submissions similar to this one so to those of you that them in, I hope this topic covers what you were asking. If it doesn't, you can always send those burning questions back to me by re-submitting them.

432 comments

  1. GTK+ by X-ViRGE · · Score: 1

    I'm not a programmer, but from my perspective (User) I like GTK+ most of all, and hate Motif most of all. Note that for my perspective I take into account speed and looks, since that's what matters to me. :)

    1. Re:GTK+ by warmi · · Score: 1

      I am truly amazed at the number of people who dismiss anything that looks even remotely like windows. GTK in default style is butt-ugly !!Looks like some bad mix of Motif and Windows ...

      But hell, what else you can expect from UNIX type of crowd who came up wiht original Athena stuff..

    2. Re:GTK+ by nitehorse · · Score: 1

      Speed and looks.... stability? (Read more below, I explain it more fully.)

    3. Re:GTK+ by pb · · Score: 2

      (a) Who cares?

      (b) If you do care, try GTK themes. They can be slow, just like Windows, and can be made to look the same or better.

      (c) Windows could benefit from some of the features of Motif. Tear-offs are a nifty idea, for instance, not that I use them much. :)

      (d) Wouldn't it be nice if Windows gave you a *choice* of widget sets?

      (e) Gosh, what do you expect from that original UNIX crowd that gave you *stable* server operating systems, and functional desktop machines with a GUI, mouse, and networking before that was cool. (is that cool yet in Windows, or are we waiting for the next release still?)

      --
      pb Reply or e-mail; don't vaguely moderate.
    4. Re:GTK+ by Anonymous Coward · · Score: 0
      (d) Wouldn't it be nice if Windows gave you a *choice* of widget sets?

      Maybe, but then it would also become patchwork like Linux: no uniform GUI (right on my screen: I have Window Maker + docked apps + one WM them, netscape, xemacs, Eterms, xterms, vmware: they all look different).

    5. Re:GTK+ by Jherico · · Score: 1

      >(d) Wouldn't it be nice if Windows gave you a *choice* of widget sets?

      Hardly. I think that part of window's success it that as crappy as it is from a technical standpoint, its very standardized from a user interface point of view. You can write a book or talk on the phone with a user that needs help and not have to worry about what kind of widget set they are using. Contrast this with trying to work on the phone with someone trying to figure out a problem on a UNIX machine. I regularly have to give help to someone using CDE on an HP-UX machine and also using Linux on a machine I built for him and every time I have to tell him to get in a terminal and stay there so that I can work with command line because I don't have the time or inclination to learn every last GUI tool or widget set he might have.

      --

      Jherico

      What can the average user can do to ensure his security? "Nothing, you're screwed"

  2. I like QT/KDE by cdwiegand · · Score: 1

    I, personally, *like* QT/KDE. It makes programming GUI programs in C++ much easier. I'd like GTK+ to have something like it (with the attendant QString equivalent!). Sadly, it's also slow on my 486, and if it's slow there, well, maybe some work needs to go into making it faster....

    --
    . Define sqrt(x) as something really evil like (x / rand()), and bury it deep. Watch your coworkers go nuts.
    1. Re:I like QT/KDE by warmi · · Score: 1

      There is not much you can do here. It is X server issue - most likely in something like 486 you have rather slow video card and this + the fact the generally XFree drivers are not up to level of their windows counterpairs should explain why it seems so slow.
      You might want to try AcceleratedX - it is truly at least 40% faster than XFree.

      But I completely agree with your comment about QT.
      It is the best toolkit available for UNIX period.

    2. Re:I like QT/KDE by Gershwin · · Score: 1

      As I started reading the article, I began smiling thinking this guy is a Qt fananatic. Then wham he downplays Qt and picks GTK? Get real.

      Here's my 2 cents.

      The design of the GUI only benefits the designers. (Please no flames on that!) As a programmer useability (of the GUI) is probbably the highest thing on my plate and that goes way WAY beyond GUI design. For instance, in a purely get the work done framework, I recently switched a project from C++ Builder to VB. Do I like VB? Absolutely not. But it has one advantage I have yet to see in ANY other development environment. I need to build a lot of screens really fast, really robust, with lots of code under them to ensure they did the right thing at the right time. My first attempt at creating a wizard for all the maintenance stuff resulted in 3 lines of code to create a form and place a control. 4 lines of code let me reference a control that wasn't part of the design environment by default. The wizard I wanted, just required prototyping the 6 screens I needed for doing maintenance on a single table. I often find that useless features get tucked into programs, for instance, controls that access data and allow updating in Windoze. I haven't worked on a single toolkit that should have integrated data access into controls for anything other than a read-only envrionment. -Give me a break- I have NEVER gotten intrinsic data access to work for any but the most trivial of examples and those are often in deep question of whether they work as they should. Bottom line, fewer "features", higher flexibility, higher extensibility, and a great environment (that it is trivial to extend, and that doesn't mean the extensions have to be trivial)

      The next issue which has to be fairly high on the list has to be speed of the resulting application. VB is NOT a speed demon, but I can't type faster than it takes characters, that's fast enough.

      On a Linux platform I'm still looking for something worth developing in. FLTK is a great niche tool (Because it's so darn small!) Beyond that Qt is my next love/hate relation ship. The library (design) IMHO is great. Not nessasarily because it's an elagant design, but because it's consistant and easy to understand. My hate relationship is the license. It would be nice to see a graduated license.

      GTK certainly doesn't fit the bill for me. How exactly you correct error free code in a consistant manner that's easily understood and enforced by the compiler is still eluding me. (But hey, the docs aren't quite done yet are they :))

      Bottom line, the GUI design really only affects the GUI designers. I could care less if the developers sweat bullets to create a fantastic GUI to develop with (unless of course I'm writing the GUI!). Programmer and end-user useability should be more important than the beauty of the design. Besides the most elegantly designed GUI used by 3 people isn't likely to create a fundamental shift in Global programmers lives. VB is ugly but easy to use and it gets used by millions of developers (some use it just to prototype what they will develop in another language). Make the environment and the GUI trivial to use and trivial to learn and it will get used, a lot. Don't add features because you can but because they are useable. Work more on diversity of implementation (Controls, etc) than intrinsic control features. A great GUI will make writing a Game GUI a snap; a system utility a breeze; and a productivity app a joy.

    3. Re:I like QT/KDE by SYS2066 · · Score: 1

      I agree with you completely. QT is much more than a GUI toolkit, and I've found much use for QString , QFile and some other tools. Made some quick hacks without GUI using QT, and It rocks.

      QT is through-out consistent, and lets you program in a nice OO way. Much like Java, I believe.

      QT free edition lets you release programs under the GPL, and while it's sad that it's non-free under Windows, I think I can live with that...

      // Simon

  3. Swing rocks. by Anonymous Coward · · Score: 2

    Swing is really nice. It is the aggregation of every concepts in MVC GUI frameworks. Versions 1.0.x were quite slow, but they did quite a lot of optimisations in version 1.1.1; speed is now acceptable on Blackdown's JDK. On IBM JVM for linux, it flies. You don't have to say that you don't like the Java language just to look like a real unix guy... :-) The language is awesome; it is the implementation that could be better...

    1. Re:Swing rocks. by chicken · · Score: 1

      I agree that Java is great. It brings Exception Handling (not signals), Threading, Good UI and Good Documentation to Linux.

      No wonder the establishment hates it :)

  4. [HT][X]ML by Breace · · Score: 3

    I'll prawly get flamed for this plenty, but I think for the majority of apps an HTML/XML GUI would be the best solution. And use any script language to actually interact with an app.

    The biggest advantage being 'Open Source'. And, yeah, it's probably not so appropriate for a Word Processor, but I just see so many apps that are just list/edit/text/combo/whatever boxes put on a form. You should be able to do that with HTML/XML.

    It may also be a way to seperate the GUI from the actual application better, because still too many programmers embed the entire app right in all the GUI code.

    Visual Basic, Delphi and C++Builder are nice examples of environments that stimulate that behaviour.

    Well, heat-shield up, Breace.

    1. Re:[HT][X]ML by Anonymous Coward · · Score: 0

      The best GUI framework for me will be a combination of HTML, JavaBeans & Javascript. Wish there was better support to script JavaBean events with Javascript.

    2. Re:[HT][X]ML by stripes · · Score: 2

      HTML is a bit limiting. Using tables to lay out widgets is Ok, but missing progress bars, and hot beng able to give user feedback except as the result of clicking a submit button is a big big disadvantage.

      The only thing with a real GUI I have done in years is a MP3 jukebox player (streaming mp3's over HTML into mpg123). As it selects songs randomly (baised on user ratings) it needs to display the song title (and disc name, and the band, and the current rating, and blah blah). It also wants to display a progress bar. Oh, and of corse it wants to play the sound on the machine with the speakers, not the server in the machine room.

      I did do a GUI mock-up in HTML, and that was pretty good. Actually a friend did a set in HTML after I did one or two in pencil. That was very helpful. Showing off the HTML one to a few potential users was much more useful then showing my cruddy pencil drawen one.

      I imagine many other GUIs have similar problems. I expect alot of them would also be doable in HTML with varying degrees of suckage.

    3. Re:[HT][X]ML by servo8 · · Score: 1

      libGlade is pretty cool -- it generates a gtk interface on the fly based on glade XML files. Add the fact that gnome-perl has bindings for it, and you've got a pretty nice deal.

    4. Re:[HT][X]ML by technos · · Score: 2

      Flame shields up? You've got it at least on a few angles! If I wanted to throw a nice front end on some of my kludgy, half script/C++ console creations, it would be the BEST choice! However, TCL/TK also has some appeal. (I'm sure it would have a bit more appeal if I had bothered using it, even once) Again, good call in the OO, portability and extensibility departments.

      --
      .sig: Now legally binding!
    5. Re:[HT][X]ML by kuro5hin · · Score: 1
      I'd agree with this too. CS-people might sneer, but the future is in web-based applications (or, at the very least, web-ifyable apps, if not actually in the whole "NC" concept). What I'd REALLY like to see is basically a way that I can run web apps in a window which is not really a browser, but sort of acts like one. As in, I'd code my application backend and have it running on some server somewhere. The user would download a binary that used their "interface" libraries to create a window and an interface (which would basically be XML/HTML with better widgets) which would run on their desktop just like any other application. Now mind you, when I say "download," the simplest case is that it's the same as how you "download" a web page today. It could be done on the fly, as needed ("Just-In-Time?"). But ditch all the bloat and crap that goes along with a traditional web browser, cause all we need is a little window to paint our gui onto.

      It sounds like mozilla is shaping up to be a potential answer to this need. If nothing else, it's OSS, so it might end up being at least a base that could be used for this. Kind of an "app browser" if you will. I think it'll happen sooner or later, but maybe that's just me :-)

      --
      There is no K5 cabal.
      I am not the real rusty.
    6. Re:[HT][X]ML by Roundeye · · Score: 1
      Being one of the "CS-people" as you put it, I completely agree with you (and hope that other CS-people have the sense to realize what is happening around them (doubtful for most, knowing a good number of them personally)). I am in a business venture which is producing a product (application) which delivers content through a more complex interface than a typical browser can provide, but must be (to a degree at least) platform independent.

      We decided to go with Java/Swing and it is coming along well, but knew then and now that we would be better served by having more implementation options. Specifying the content and interactions/dependencies of a GUI by XML and having a user use a powerful "browser" (application rendering tool) would have answered our prayers.

      It will come. Probably soon. Then we'll write perl scripts to help convert to it :-)

      --
      "Cause there's 40 different shades of black, so many fortresses and ways to attack, so why you complainin'?"
    7. Re:[HT][X]ML by Anonymous Coward · · Score: 0

      RE the comment on seperating GUI from the actual application... I am most likely wrong here but I thought that Java did something like that - And I keep reading that a good Java design uses a seperate thread to drive the screen writing seperate from the actual program functionality. I thought that at least Java did all that, or some of it. I use VB and am finding more and more that I don't like it.

    8. Re:[HT][X]ML by mindlace23 · · Score: 1

      Using tables to lay out widgets is Ok,

      Actually, it sucks rocks. That's why I use CSS1 and 2 exclusively. If you're talking standalone app, you can always include Raptor, the 1mb rendering engine from mozilla, but if you're actually wanting it to go over the web, I'm afraid you'll more or less have to wait untill Christmas, when the final Mozilla is availiable.

      but missing progress bars

      Mike's site has a progress bar app implemented in javascript.

      and not beng able to give user feedback except as the result of clicking a submit button

      There are lots of sites that talk about form validation in javascript. Neeraj Kochhar has basic intro on the subject. Search for form validation javascript.

      Also, look at some of the features of Forms and the Button object in HTML 4.0, which include the disable feature.

      These are not complete solutions, since incompatibilities between NS and MS's implementation of ECMAScript can make life annoying. However, DOM1 and strict ECMAScript addresses these issues, but Mozilla will be the only browser to support strict DOM1 for a while.

      ~mindlace

      --
      ~mindlace
    9. Re:[HT][X]ML by Sensor · · Score: 1


      I think the comment may have been more directed at people who include all of their major code in GUI event handlers rather than having the handler call another procedure.

      If all you do is propogate calls to another procedure (probably in a separate object file) then your maintenance becomes much simpler.

    10. Re:[HT][X]ML by Anonymous Coward · · Score: 0

      Funny you should mention it. I built something very much like what you're talking about, and my company has found it very easy to deploy and support. Basically a browser-like universal client with a limited (but not too limited - includes a grid with full input support) set of widgets that an application can combine these into forms or screens or whatever you want to call them. Comunication with the server-based apps is done via screen-by-screen 'transactions' during which the app can send progress info. Users can also request context-sensitive help on a widget-by-widget basis that is fetched on the fly from the server. If you accept the limitations of this architecture (basically, that you have to stick to a pre-determined widget set, and there's limited feedback available while filling in a form), you get a lot of advantages: 1. Complete separation of the GUI from the application logic, which is entirely server-based. 2. Transaction-based model is highly scalable. In our case, a small pool of application instances are shared by any number of users. 3. Uses very little bandwidth - works well over a dial-up Internet link. 4. Imposes a simple state-based approach to application programming that can make for more understandable/reliable code. The point is, for some things, you need the wide-open flexibility that is only available through client-based GUI programming. For many other things (especially traditional vertical market data processing apps), a simpler model may in fact be superior. If anything, I'd think that future (XML, XUL, etc) advances in web technology will legitimize the above approach - while rendering specific implementations like mine unnecessary, ;-). Rob Yampolsky ryampols@cjds.com

    11. Re:[HT][X]ML by kuro5hin · · Score: 1
      Rock on. Good to see somebody with actual training thinking this way. Sometimes I suffer from "Web Developer Inadequacy Syndrome" (WDIS), which is often compounded reading posts on /. which run toward the "If it isn't [C|C++] it's not 'real' programming" theme.

      Personally, I don't write Java, because every time I try to learn it, I get a headache. But I do know that a lot of the time, Java is the only way to accomplish things that I want to do, despite the fact that what I want to do is not all that complicated. I mean, something as simple as updating a status bar on a web page, for God's sake. See my other post on this thread for more on what I'm thinking of.

      --
      There is no K5 cabal.
      I am not the real rusty.
    12. Re:[HT][X]ML by jafac · · Score: 1

      My company writes a product that uses ActiveX controls to display a web interface in a sub-pane of the app (actually slaves IE), which acts as the Admin console's "wizards". The HTML and scripting gives us the ability to use BIG FONTS and graphics to aid the user in using the product for the first time. "Normal" operation is done by replacing the web pane with other ActiveX controls, to display the objects the user's going to work with in the "normal" mode of operation, once he's become familliar with how the product works, and what the terminoligy means, and what things need to be done.

      "The number of suckers born each minute doubles every 18 months."

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
    13. Re:[HT][X]ML by jafac · · Score: 1

      Oh, and I forgot to add, what's so great is that the Wizards content can be changed very easily, by downloading new files and stuff - so this is an easily updateable help system for the product.

      What's NOT so great is, different versions of IE implemented some scripting differently, that was a pain in the neck. I think we're moving away from this in our next version, because HTML/JavaScript just doesnt give us enough control, etc.

      "The number of suckers born each minute doubles every 18 months."

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
    14. Re:[HT][X]ML by Anonymous Coward · · Score: 0

      Why would CS people sneer!? The Web is just a dumbed down version of something invented at MIT: X Windows Think about it. . .

  5. GUI/API programming... by neowintermute · · Score: 1

    I've worked in both windows and macintosh for quite some time, and I had a class using awt. I find that the horrible messaging system in windows basically forces you to write a plug in for windows, whereas the mac toolbox enables you to actually write code the way you want to. Aside from windows code being ugly as hell... As far as awt goes, there are a rich, reliable set of classes to be used there, but then you have to deal with the limitations/simplifications of java. (which kind of prohibits useful/messy down and dirty hacking) I think that java is too much like pascal and visual basic to really give you full control of what's going on. It basically insulates you from all the real api. I know thats the point, but the awt event model isn't any simpler. It doesnt seem to be much of a solution.

    1. Re:GUI/API programming... by Anonymous Coward · · Score: 0

      how long does it take you to write a hello world win gui code ? 70+ lines (look at any win programming book - thats the first win32 example). 70+ lines for a GUI and you think its compact ?? which planet are you from ?

    2. Re:GUI/API programming... by /dev/niall · · Score: 1
      how long does it take you to write a hello world win gui code ? 70+ lines (look at any win programming book - thats the first win32 example). 70+ lines for a GUI and you think its compact ?? which planet are you from ?

      FUD. You obviously have never written a Win32 program, and have no idea what you're talking about. Either that, or you write 10 lines of comments for each line of code.

      If you don't know what you're talking about, keep your mouth shut. You just end up looking dumb. Win32 programming is a lot easier than making Xlib calls, and pretty comparable with GTK.

      --
      --
    3. Re:GUI/API programming... by Black+Cardinal · · Score: 1

      I disagree. I have programmed with Win32, MFC, and GTK+, and am currently using MFC in my job. It DOES take 70+ lines of code to write a "Hello, world" program with Win32. That was one of the main reasons MFC was developed--to provide a more structured and simplified API.

      Are you sure you aren't thinking of MFC? Using the Foundation Classes does make it possible to write a fairly compact program (compact source, anyway). These days it's common for many people to confuse MFC with straight Win32 programming, which isn't done very often anymore. I only use Win32 calls to read and write my software's .INI files (I hate the registry).

    4. Re:GUI/API programming... by spectecjr · · Score: 1

      I find that the horrible messaging system in windows basically forces you to write a plug in for windows

      However, it is highly scalable and highly customizable; you can do pretty much anything with it, because it can be expanded ad infinitum. You probably just don't like writing WNDPROCs :)

      Simon

      --
      Coming soon - pyrogyra
    5. Re:GUI/API programming... by spectecjr · · Score: 1

      how long does it take you to write a hello world win gui code ? 70+ lines (look at any win programming book - thats the first win32 example). 70+ lines for a GUI and you think its compact ?? which planet are you from ?

      Well... it takes me about 30 seconds actually... who cares how many lines it takes?

      Why not let us know how many lines it takes for your GUI?

      Simon

      --
      Coming soon - pyrogyra
    6. Re:GUI/API programming... by Anonymous Coward · · Score: 0

      void main() { MessageBox(NULL, "Hello World!", NULL, MB_OK); }

    7. Re:GUI/API programming... by Salamander · · Score: 2

      Actually, 70+ lines is about right for a _Win32_ program. At the very least, you have to register your window class, create a window, do a message loop, write a window procedure that calls DefWindowProc (or whatever, it's been a while) and so on. Of course, if you're an MFC weenie, you may write a lot less code but MFC != Win32, and the most common way of using MFC via "wizards" in VC++ actually ends up generating a lot more than 70 lines of code for you.

      That said, Win32 may be easier than Xlib - or maybe not - but the original estimate was more tied to reality than your "correction".

      --
      Slashdot - News for Herds. Stuff that Splatters.
    8. Re:GUI/API programming... by /dev/niall · · Score: 1
      Actually, 70+ lines is about right for a _Win32_ program. At the very least, you have to register your window class, create a window, do a message loop, write a window procedure that calls DefWindowProc (or whatever, it's been a while) and so on. Of course, if you're an MFC weenie, you may write a lot less code but MFC != Win32, and the most common way of using MFC via "wizards" in VC++ actually ends up generating a lot more than 70 lines of code for you.

      I've been trying to dig up some of my old source. I have an old Win32 FTP application I wrote that's right around 100 lines w/o comments. That's including the network code. That's why I'm disputing the post, because I've done it in less.

      A "Hello world" MFC app would run about 40 lines, less if you made your code look a little hard to read (I know, because I just wrote one right now to see ;) ). And on another note, no one is twisting your arm to use "Wizards". In my experience, most of the wizards (besides the ones that initially setup applications conformant with the Windows user interface specs) end up causing more work than they save because you have to tweak them so much.

      That said, Win32 may be easier than Xlib - or maybe not - but the original estimate was more tied to reality than your "correction".

      No, it wasn't. I wouldn't have taken issue with it if I didn't know for certain they were wrong. So there.

      --
      --
    9. Re:GUI/API programming... by Anonymous Coward · · Score: 0

      Yes, all those things are true, but it is so PAINFUL! Microsoft has gone to great lengths to ensure that it is impossible to write elegant software in Win32. They have succeeded.

    10. Re:GUI/API programming... by Tenareth · · Score: 1

      void main()? Which language are you using?


      -- Keith Moore

      --
      This sig is the express property of someone.
    11. Re:GUI/API programming... by spectecjr · · Score: 1

      Perfectly acceptable to a compiler if you don't need to return a value from main, simply because that that point you're usually returning to the OS, and in the runtime there will be a different mechanism used to pass out the return value... scary, but true :)

      Simon

      --
      Coming soon - pyrogyra
    12. Re:GUI/API programming... by Anonymous Coward · · Score: 0

      Actually, an X Windows based Hello World program isn't very long, either. With good white space, style and commenting, it's only about 50 lines: Compile accordingly, run, then when done, press a button when the cursor is in the window. /************************************************* ***************************** * Module : X Hello World. ************************************************** ****************************/ #include #include int main(void) { GC gc; XGCValues values; XEvent ev; XSetWindowAttributes attr; /* Open display, get root window and font. */ Display *x = XOpenDisplay( NULL ); Window root = XRootWindow(x, 0); XFontStruct *f = XLoadQueryFont(x, "10x20"); /* Get metrics for window. */ int hght = f->max_bounds.ascent + f->max_bounds.descent + 12; int wdth = XTextWidth(f, "Hello, World!", 13) + 12; /* Create window. */ Window w = XCreateSimpleWindow(x, root, 0, 0, wdth, hght, 2, 1, 1); /* Select event types. */ XSelectInput(x, w, ExposureMask | ButtonPressMask); /* Create a graphics context for drawing string. */ values.font = f->fid; gc = XCreateGC(x, root, GCFont, &values); /* Show window. */ XMapWindow(x, w); /* Get and process events. */ for ( ; ; ) { /* Get an event. */ XNextEvent(x, &ev); /* Process an event. */ if (ev.type == Expose) XDrawString(x, w, gc, 6, hght - 6 - f->max_bounds.descent, "Hello, World!", 13); else break; } }

    13. Re:GUI/API programming... by Salamander · · Score: 2

      >I have an old Win32 FTP application I wrote that's right around 100 lines w/o comments. That's including the network code.

      You, sir, are simply a liar and a troll.

      --
      Slashdot - News for Herds. Stuff that Splatters.
  6. wxWindows ins't a framework, but by William+Tanksley · · Score: 1

    wxWindows is a good multiplatform toolkit. There was even an ncurses binding for it (not enough interest, so it stopped being maintained, because it had special contraints)!

    Its scripting language bindings are especially impressive.

    -Billy

    1. Re:wxWindows ins't a framework, but by Anonymous Coward · · Score: 0

      wxWindows is pretty awesome toolkit in my mind. Right now, I haven't seen a better solution. It is not a framework as in the MFC or Borland's VCL is. I don't think this is what the person was looking for.

      I've been following the maillist for sometime and it seems to me that they support just about anything you want or will be support it soon. Of course, with your help it will proceed much quicker! I think that right now there is Windows, GTK, Motif, and Mac. Work is being done on BeOS, OS/2, WinCE and QT.

      Come on and joint the team. You can learn more about wxWindows at http://www.wxwindows.org

    2. Re:wxWindows ins't a framework, but by fantastico · · Score: 1

      What the heck are you talking about? wxWindows is one of the most complete app frameworks out there, and it's improving daily! It's very similar in feel to MFC, but they've managed to get rid of all the MS idiosyncracies and maintain a clean, consistent design. I don't use MFC at all any more, and why should I when I can write my apps with wxWindows and have it run on Win32 and Linux (and MacOS soon too).

  7. Does Delphi really suck that much? by Anonymous Coward · · Score: 0

    Why exactly is Delphi "not acceptable"? You don't provide any examples. Ok, so it's not perfect, but it's far more stable and powerful than VB (unlike VB which is developed by C++ programmers, Delphi is written in Delphi). The GUI framework (VCL) has its problems, but is far more coherent than MFC. Delphi as a language sucks at times, but we're not discussing languages here. Anyway, CBuilder uses the same GUI framework if you'd prefer C++.

    1. Re:Does Delphi really suck that much? by Anonymous Coward · · Score: 0

      Delphi definitely does not suck as far as it's Gui framework goes. It has a very well thought out inheritance chain. It is very flexible. It gives you enough rope to do what you need to do and provides you with a clean API.

      Delphi's biggest problem is that is not portable. It is starting to look like borland will port Delphi to linux. Hopefully they will have the forsight to uncouple it so tightly from Microsoft!

      my 2 cents --doug

    2. Re:Does Delphi really suck that much? by Speed+Racer · · Score: 1
      Delphi's biggest problem is that is not portable. It is starting to look like borland will port Delphi to linux. Hopefully they will have the forsight to uncouple it so tightly from Microsoft!

      Since the VCL abstracts all the Win32 API calls, Borland should be able to wrap the VCL around a different API such as GTK+ or QT.
      If they are smart about it, just about all pure VCL-based code (no Win32 API calls) could be ported over quite easily.

      I can dream, can't I?

      On another front, since VB and Delphi call the same framework, namely the Win32 API, you can't really call the development tool a GUI framework like QT, Motif, GTK+, etc . . .
      Being tied to NT at work, Delphi and Xnews and Mandrake at home are about the only things that keep me sane at times. . . Oh yeah, my daily doses of /. and UF help.

      --
      Free Mac Mini. Yes, I'm
    3. Re:Does Delphi really suck that much? by Anonymous Coward · · Score: 0

      If I understand correctly, the Delphi is itself a programming framework that is just sittinng ontop of a library, Win32API. It could just as easily sit ontop of other GUI libraries such as GTK or QT.

      I would call it a framework because it defines how to make Forms, buttons, scrollbars, etc. How it calls. It sits on Win32 API much in the same way that GTK sits on Xlib (I am assuming here)

    4. Re:Does Delphi really suck that much? by hiroaki · · Score: 1

      The VCL actually has the tightest integration of native windowing handles to objects I've ever seen (which is a requirement for a fast GUI framework). This is the part of any GUI framework that associates a native window handle with the framework's object handler. Various techniques can be used: a map, private window data, windows getprop/setprop, etc.

      In the VCL, the association is done actually in the windowing class callback itself. Each window class gets its own snippet of assembler that is manufactured on the fly, and contains the VCL class pointer for dispatching. Thus, there is absolutely NO overhead for the lookup to dispatch any windowing message. Hence, the GUI part of Delphi blows the doors off of MFC and VB for performance. This technique is a key facet of the VCL that allows them to blend the numeric messaging identifiers into the Object Pascal language. I'm hoping they torque the language in the direction that pays off for ease-of-use under Linux as well.

      Alas, this is the part that is going to make it tricky for tricks on Linux to relink with a Linux-based Win32 implementation. This technique will of course tie the implementation to Intel.

      There are other parts of the VCL written in native assembler, most notably the native ref-counted string class. Those won't be hard to replace with pascal, but I'm hoping for performance they use conditional compilation for Linux/Intel.

      An aside: here's one example where a proprietary language is a blessing: Borland owes nobody any explanations why they move the language forward to implement nice tie-ins with the deployment platform. VCL has the easiest COM integration, and window message syntax in method declerations. I'm betting they do a bang-up job making it just as easy to do Linux development.

    5. Re:Does Delphi really suck that much? by /dev/niall · · Score: 1
      If I understand correctly, the Delphi is itself a programming framework that is just sittinng ontop of a library, Win32API. It could just as easily sit ontop of other GUI libraries such as GTK or QT. I would call it a framework because it defines how to make Forms, buttons, scrollbars, etc. How it calls. It sits on Win32 API much in the same way that GTK sits on Xlib (I am assuming here)

      Not exactly, Xlib is a bit more low level than Win32. If I had to compare Xlib to something under the "other" platform I'd say it's closer to GDI.

      --
      --
  8. IBM Open Class Lib by Locutus · · Score: 1

    Any of you use VisualAge for C++ on AIX? I've meddled with VA C++ on OS/2 and OCL seems like a really nice framework to me. I've not used it much so I'm hoping to here from some OS/2, Windows, or AIX people that might have more experience with it. Especially since it went to v4.0 just some months ago.

    --
    "Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
    1. Re:IBM Open Class Lib by Anonymous Coward · · Score: 0

      .... just got off a big IBM project using the IOC on NT and AIX (c/s)... all the user interface was NT, developed in IOC UI classes, and the back end was AIX IOC. Personally I hated it, my understanding is that IOC was a C++ rewrite of a Smalltalk library that was used in the development of the original Visual Age product, and therefore was burdened with a lot of smalltalkisms that don't translate to C++ well. (ie everything being based off one root class, and therefore inheritance being the primary (only?) technique for reuse). In the OS/2 days, what IOC was supposed to be useful for was always a mystery to me, IOC code wasn't appreciably simpler enough than raw PM code to justify learning their library. At least when M$ did the same thing with MFC they wrote useful screen /code generators...

    2. Re:IBM Open Class Lib by Anonymous Coward · · Score: 0

      I did a lot of PM programming in the past ten years (www.pawlitzek.halifax.ns.ca/leeps.htm) but I never made an attempt to learn the IBM Open class library. I just couldn't see the benefit of it. In 1997, I joined Borland International as an R&D Engineer and started to learn VCL (Very complex library). VCL is reasonably simple but Windows only. These days, I believe that Java is the only class library that is worth learning. Go Java!

    3. Re:IBM Open Class Lib by Locutus · · Score: 1

      From what I just read, IOC and based on the MVC design pattern which has its beginnings on Smalltalk. They built IOC on that model just like most other GUI frameworks today only they seem to be more OO then the rest ( MFC ). If you come from a Windows came then inheritance is probably pretty foreign and interfaces are more your game. Inheritance is how one reuses OO objects and I'd think that a very structured class heirachy would be a desirable goal. There was alot of Taligent work that went into v4.0 of VisualAge C++ and the MVC design is generalized to the MVP (Model View Presenter) design pattern. There is a very good link to a PDF file (mvp.pdf) on the IBM site that explains this design. I really like the VisualBuilder because I don't have to spend much time doing grunt GUI coding and can even connect components without writting code. It may not be pretty to look at but generated code is not something you should be looking at normally. One should be working in business logic components.
      I like that IOC used(s) Event Notifiers and Factories because it makes it easy to work in the Java world since it uses this model too. IBM has for years tried to find a OO model to use accross all its systems and was very close with SOM. VA C++ on OS/2 and AIX would write SOM wrappers directly from C++. OpenDoc was going to be the next step for SOM but WordPerfect/Novell dropped that ball for the Windows port and Apple was classic 'we are the world' and would only promote OpenDoc on Apple (CyberDog was pretty cool). Now we have Java and the JavaBeans model to pick up where IOC, SOM, and OpenDoc left off and its multiplatform out of the gate.
      Thanks for your opinion. By the way, PM is pretty easy to write to. I did a quick port of a PM app to NT a year ago and NT required more code to do the same thing (at the SDK level). I had also wrapped my PM code in a shallow C++ layer so most of the changes were in the class definitions.

      --
      "Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
  9. XP and featureful! by Anonymous Coward · · Score: 0

    wxWindows I have found to be a nice XP GUI library/widget set. It's C++ only though, so that might be a problem for some. It takes advantage of GTK+ or Motif on *NIX. It also supports win32 and Mac.

    1. Re:XP and featureful! by dilbert · · Score: 1
      > wxWindows I have found to be a nice XP GUI library/widget set. It's C++ only though, so
      > that might be a problem for some. It takes advantage of GTK+ or Motif on *NIX. It also
      > supports win32 and Mac.

      Actually it's not C++ only. wxPython is a Python binding for wxWindows and it ROCKS! Once the Mac version is done it may very well become the new de facto standard GUI toolkit for Python, kicking Tk out into the cold.

    2. Re:XP and featureful! by Anonymous Coward · · Score: 0

      I hope not. wx* may be a very useful toolkit, but it is not exactly a very pretty implementation (hardly ideal, anyway.) And yes, I think tk is a better one, even if tcl sucks. My opinion is based on the C++ binding.

    3. Re:XP and featureful! by meirion · · Score: 1

      Hmm. I've been writing an app. in wxGTK recently. I started out writing it in Java, with the calculating engine being in C++. I wanted the XP stuff (which is why I was looking at Java in the first place) but it just didn't look very good. I then thought about Tcl/Tk, because Visual Tcl is really quite cool and I've written quite a few apps. with it in the past. In the end I settled on wxWindows because it could all be in C++ and their coding style is pretty similar to my own.

      I have to say it looks at least as good as any Tk app. I've ever written (and there's bits of it that are way way better). It was at least as quick to get the first frame up and running properly as in Java, too, which I found pretty impressive.

  10. The new Java one, definitely by RickyRay · · Score: 2

    The new one in Java is based heavily on NextStep, has great tools (Inprise, IBM, others), is way too easy to program, is quite fast (it now takes advantage of what systems can do natively), and has a cool system that lets you dynamically plug a look and feel into a program (instantaneously make it look like Mac, Next, Windoze, Unix, ... whatever). And it's instantly portable to _anything_, including things far from Linux/BSD/UNIX. Seems pretty obvious to me. Besides, lately it's about the only one I've been allowed by contract to use when I code for the military, the medical industry, or whoever, mainly due to the portability.

  11. OK, STOP THIS by Anonymous Coward · · Score: 0

    OK, it's time to end this line.

  12. NO! MAE LING MAK NAKED AND PETRIFIED by Anonymous Coward · · Score: 0

    Turn her to stone. (Slurp!)

    1. Re:NO! MAE LING MAK NAKED AND PETRIFIED by mattc · · Score: 1

      What the hell are you talking about?

    2. Re:NO! MAE LING MAK NAKED AND PETRIFIED by Anonymous Coward · · Score: 0

      What the hell are *YOU* talking about? I like to take cute girls and turn them to stone. Slurp!

      --
      ALWAYS CAPITALIZE MAE LING MAK!!!!1!!!1!!

    3. Re:NO! MAE LING MAK NAKED AND PETRIFIED by Anonymous Coward · · Score: 0
    4. Re:NO! MAE LING MAK NAKED AND PETRIFIED by Anonymous Coward · · Score: 0

      .

    5. Re:NO! MAE LING MAK NAKED AND PETRIFIED by Anonymous Coward · · Score: 0

      Alright you little shithooks, stop posting offtopi...wait, what the fuck am i doing?

  13. Curses library is by far superior. by Anonymous Coward · · Score: 2

    The curses library has some distinct advantages for building a graphical user interface. It is incredibly simple, crash proof, lightning fast, and generally hard to go wrong with. It is when you go for the elaborate high-resolution graphical interfaces that you go wrong.

    1. Re:Curses library is by far superior. by Anonymous Coward · · Score: 0

      Not to start a flamewar but, many of the second-year Computer Science students (including a couple with A averages) at my school had an incredibly difficult time getting anything to work in Curses. We found it far from "incredibly simple, crash proof ... and generally hard to go wrong with." Rather, we thought its name was rather appropriate, as we spent as much time cursing at it as coding.

      Out of a class of about 100, there were about 40 of us who all borrowed code from the first person to get something working. You know, little things like getting the xterm into Curses mode without segfaulting.

      However, I must admit, the performace problems in my group's code came from our database backend (don't get me started on using DBM to store multiple fields). The front-end was nice and fast.

      There is one problem more problem with your reasoning, too. Curses is text-based, so it is by definition not a GUI.

    2. Re:Curses library is by far superior. by Mithy · · Score: 1

      Out of a class of about 100, there were about 40 of us who all borrowed code from the first person to get something working. You know, little things like getting the xterm into Curses mode without segfaulting.

      But plagiarism from the "first person who got it to work" is standard procedure for any given CS class, isn't it? ;)

      "What do you want to boot today?"

      --

      --
      "This isn't the post you're looking for. Move along."
  14. Re:[HT][X]ML => for some stuff, he's right! by RickyRay · · Score: 1

    A project I did a while back was (because the contract said so) the first major Java-and-XML-based commercial app around (IBM bragged about us because we were the first game in town using their tools).

    Problem: it was a web-based app which could have been completed several months faster (and just as easy to use) if we had done the GUI in HTML instead of XML-defined Java (the XML part was cool, and would have translated well to dynamic HTML, but using Java instead for the actual interface was pretty pointless).

    So sometimes HTML is better.

  15. Sounds like you've already made up your mind... by Arandir · · Score: 2

    It sounds like you've already decided on GTK+. So why are you asking the question?

    I was going to mention Qt since I find it to be a very clean interface, but you've already decided. But I find it curious: you first say that license doesn't matter, then you blast Qt for having a "boring" license. What gives?

    p.s. If you're worried about the so-called new "keywords" in Qt, take a much closer look at them. They aren't keywords.

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  16. Keyboard or DEATH by Anonymous Coward · · Score: 0

    What makes a good GUI? The ability to use the KEYBOARD. Mice arne't easier to use -- they are a pain in the ass.

  17. Be by Jeffrey+Baker · · Score: 2
    I really like the API that BeOS presents to the application developer. Basically what you get is a message queue, and messages are delivered to whatever widget has registered to receive them. Messages can come not only from the Input Server (i.e. the mouse and keyboard), but also from other threads within and without your own program. Thus scripting is quite possibly in BeOS.

    Also, I don't mind that all of the GUI classes for things like buttons, lists, and scroll bars are consistent and clean.

    All of the above is basically highly opinionated personal preference, of course. Also it helps if you don't hate C++.

    -jwb

    1. Re:Be by Anonymous Coward · · Score: 0

      I agree completely. BeOS's API framawork is top notch, using many of today's well established programming principles, yet without overuse or complexity. BeOS leaves you with a smile on your face after a day of hacking. _No_ other gui framework (besides maybe Swing) does this.

    2. Re:Be by Sentrik · · Score: 1

      Yeah, the Be API really is good. Since they wrote everything from the ground up they don't have to worry about backwards compatibility like other APIs. Also, it's not built on top of anything else, so you don't have to find references for the underlying libraries in order to extend something.
      Additionally, the C++ mechanisms are very nice and well thought-out. I'm not particularly fond of C++, usually because I feel like I'm adding another layer between myself and the real API, but with Be the core API interface _is_ C++. I really hope things work out for Be, but usually the coolest interfaces (programmer or end user) end up dying (read NeXT, OS/2, etc).

    3. Re:Be by Anonymous Coward · · Score: 0

      yeah, you are right. what I really hate about mfc is that there are (at least) 5 different ways to do incompatible versions of the same action. Eventually you get around it, but still it's a pain to communicate between threads & ui classes. You post messages to windows - so you usually need a reference to the window. A bit of a pain. I understand Be is better in this aspect, though I have never programmed for Be. I wish Apple hadn't dropped Be...now i need x86

    4. Re:Be by Anonymous Coward · · Score: 0

      Be suffers from one major problem though. Well, technically they don't suffer from it *YET*, but they will in the future. Since Be's API is C++ based, that means their objects are defined to be a static size. As they add new features they start using up the "reserved" vtable entries they've defined. One day they will run out of reserves and they'll have two choices. 1) Don't add any more features, no matter how important they may be or 2) break existing programs and change the layout.

    5. Re:Be by hub · · Score: 1
      This API is quite good, but it lack several features.

      • First, it lacks layouting system. All views (that can be drawing canvas, widget, etc) are placed upon the coordinate system with anchor rules (like follow left, follow top, follow all, etc). This is really a pain to make resizable dialog boxes with a lot of widgets. You are forced to handle resizing by hand. This also cause problems since you can customize the font used to draw widget labels. You can make the GUI useless because the controls are sized to a fixed pixel number instead to a unit that depends on parameters like font size and al.
      • Second, it lacks of a GUI building. I whish I could generate GUI layout by writting a separate file that describe it, separating GUI strings and layouts from the source code. There is none. We can store any window and its content to a datastream (a flattened BMessage object), but this is after it has been constructed and it is not human readable or even in a documented format. The layout should also be stored into a resource (not X-like but MacOS-like resource) since BeOS does support resource concept
      • The object oriented APIs are purely C++ based which really sucks: there is no language abstraction, and it purely depends on the vtable format as generated by the C++ compiler. They should have used an ORB (more preferably a CORBA compliant ORB), but they did not because it was too slow (from their side). This also leads to the FBC (Fragile Base Class) problem which makes it difficult to make the API evolves without breaking binary compatibility
      • They don't have library versionning like in UN*X, which cumulated with the FBC problem described above may lock the evolution capabilities drastically.
      All of this make BeOS API not that ideal. BTW it is also proprietary non-portable toolkit tied to a closed-source commercial OS.

      Personnally I wouldn't mind if someone worked on something like this, but open sourced, and improved.

      --
      Hub
    6. Re:Be by Anonymous Coward · · Score: 0

      *Excellent* points (not that I've seen the Be GUI API myself). I wonder what API(s) you would recommend? I am particularly interested in the GUI builder tool aspect. Also, portability would be nice, like to game consoles, even! Particularly good would be a source code source, where I could learn how to create such a monster myself.

    7. Re:Be by Adde · · Score: 1

      Well, get one then. Only running BeOS makes it well worth whatever you'll have to pay ;)
      Coding in BeOS is pure pleasure.

  18. GTK is the only choice by Anonymous Coward · · Score: 0

    Yep gtk is the only choice, but its docs really
    suck shit...

    I mean common! what complete sloppy documentation, its pathetic! what a joke.

    gtk.org page on doc project status, some docs have 50% complete status on them, you look at em, and theres hardly anything there...

    grade: F for docs
    B for code/api

    1. Re:GTK is the only choice by Zurk · · Score: 1

      would be nice if they documented nonworking calls to. i have at least 4 calls that were nonworking but produced no errors. searching geocrawler and the gtk mailing lists uncovered posts on them which confirmed they were broken. reference could be tidied up and tutorials need to be cleaned out. More help on the list would be nice too..i realise the GTK is under a lot of pressure to get the code out and stable..more developers needed i guess.

    2. Re:GTK is the only choice by warmi · · Score: 1

      Your comment clearly shows that you have never worked on sizable GUI based program using C.
      But you will learn, it will hurt but eventually you will learn ...
      (hint .. QT )

    3. Re:GTK is the only choice by Anonymous Coward · · Score: 0
      Quite true. Once a project exeedes some limit of complexity, C++ will definetiely make you work more efficently. My experience is that I made code with far less error and shorter debug cycles once I decided to go from C to C++ (I am in the position to decide this myself in our company)

      You may say that I am sloppy developer since I have got a better result with C++, but I know that I am not that special.

      Use C++ wherever you can and you will realize that your productivety will increase.

  19. Sounds like you didn't read the article by Jeffrey+Baker · · Score: 1
    I was going to mention Qt since I find it to be a very clean interface, but you've already decided. But I find it curious: you first say that license doesn't matter, then you blast Qt for having a "boring" license. What gives?

    If you read the article, he says that the license does matter.

    -jwb

  20. FOX by nas · · Score: 1

    It looks like a very nice toolkit if you don't mind using C++. Check it out:

    http://www.cfdrc.com/FOX/fox.html

    It is under the LGPL too.

    1. Re:FOX by Anonymous Coward · · Score: 0

      Mind you, FOX these days also has a binding to the Python language.

    2. Re:FOX by Anonymous Coward · · Score: 0

      And an Eiffel binding too. :)

  21. I once saw... by Hawke · · Score: 1
    I'm biased, because I worked for the company that produced this product and later went out of business, but it had/has some features I really wish someone would clone:

    Galaxy

    • Gui dialog designer that produced NO code. We stored dialog layouts as data that an object factory would then instantiate.
    • GUI dialog design with "springs and structs"(tm) to make resizing dialogs trivial.
    • A functionality-to-widget binding method that did not require the code to find a particular dialog item. You just needed to know the name of the widget and you bound your functionality to its name.

    Galaxy had its problems. The C++ interface was clunky. It tried to be a virtual OS instead of a GUI toolkit (maybe a feature for you, maybe a bug). It could be really slow, especially with the object-factory and RPC functionality built on top of the object-factory stuff.

    But in terms of "I need to smack a professional-looking interface on my product in 5 days" it was really sweet.

    1. Re:I once saw... by Compuser · · Score: 1

      >>Gui dialog designer that produced NO code. We stored dialog
      >>layouts as data that an object factory would then instantiate.

      So kind of like an XML file then?


      >>A functionality-to-widget binding method that did not require
      >>the code to find a particular dialog item. You just needed to know
      >>the name of the widget and you bound your functionality to its name.

      Berlin guys were discussing the "tasket" concept which seems to be
      what you are describing here. You may have valueable knowledge
      for that project.

    2. Re:I once saw... by kjz · · Score: 1

      Ah, yes. I remember Galaxy rather fondly. At my last job, I was tasked with evaluating a variety of GUI frameworks and toolkits for X11 development across Sun and SGI boxes. I looked at Zapp, Zinc, plain Motif (which the last version of the app had used), and a few free software frameworks which I don't recall at the moment. Galaxy stood heads and shoulders above all the competition.

      I was particularly fond of the spring and struts mechanism for putting together dynamically sizeable windows. The layout mechanism allowed you to specify fairly arbitrary constraints on any widget that got placed in a window or other component. I consider it an even better system than the fabulous layout managers we see in Java's AWT or Swing toolkits.

      The GUI designer was a wonder to work with as well. I managed to prototype our entire user interface in what seemed like no time at all. We were then able to take some screen shots, clean them up in Photoshop, and drop them straight into our design documents. Our clients loved it. The docs looked great, described the interface far better than prose alone could have, and we hadn't even written a single line of code!

      I see a great deal of potential along these lines with Glade (and libGlade). Storing the interface definition as an XML file is a fabulous idea. This gives you far more flexibility than Galaxy ever did, especially if you need to programmatically alter your interface, or perhaps translate it for internationalization purposes.

      Now if only we can get springs and struts into GTK+...

  22. 3 things to value in a GUI framework by Stiletto · · Score: 1

    1. Portability. Across different OS platforms and architectures. This one's a must. No excuse in this day and age for any library, GUI or not, to only run on Wintel.

    2. Language independance. I want perl bindings, C bindings, your-language-here bindings. I don't care if you wrote the GUI interface in C++, just don't make me use the bloody language if I don't want to.

    3. Simplicity. I want a toolkit, not a whole platform. Let me define my own data structures. Don't try to get me to use YourToolkitULONG when unsigned long works just fine. One thing that's annoyed me about some toolkits is that they want to "take over" the whole program in that way.

  23. Swing & Delphi by Visoblast · · Score: 1

    Swing is a rather nice setup, and its lower level base, the AWT, is pretty logically laid out. Its a very nice system that is based on what Delphi uses. So why should one think Swing is nice, but Delphi bad? If you examine Delphi's GUI libraries and compare to Swing, you'll find the two are quite similar.

    --
    "Luncheon meats make the sawdust in your stomach explode."
    • -- Crow T. Robot
  24. OPENSTEP AppKit by Anonymous Coward · · Score: 0

    Oh wait. But then you might have to learn a halfway decent language. Forget I mentioned it.

    1. Re:OPENSTEP AppKit by Anonymous Coward · · Score: 0

      I think Objective C syntax is kind of ugly actually. To bad more people use BASIC than O C nowadays. Apple isnt exactly promoting Yellow box as much as they originally were either.

    2. Re:OPENSTEP AppKit by Anonymous Coward · · Score: 0

      People use BASIC because they don't know any better and/or they are lazy. The same thing goes for using the proper 'Too' and punctuation. ;-)

      I think Apple is finally doing the right thing in letting Yellow Box sell itself. Most long-time Apple developers were freaking over the prospect of having to recode for Yellow Box. Voila, we get Carbon and they are happy. Check out StepWise though to see just how many quality Yellow Box Apps are already shipping for Mac OS X, an OS not even due to be delivered until early 2000. Too bad on the Yellow Box for NT licensing front though. I will personally bet that the problem there is Adobe and not Apple.

      Even if Yellow Box should tank the API is alive and well, getting stronger each day. Check out
      GNUStep or the GNUStep NewsWire for details. At bare minimum the fellow asking the original question needs to take a look at this.

  25. Mozilla XPFE by roca · · Score: 3
    Mozilla's XPFE has the potential to be the best GUI framework ever.
    • XML based (XUL)
    • XUL can include arbitrary HTML elements (want an MPEG in your menus? That's easy)
    • Write UI code in any supported scripting language (currently only Javascript though) using standard event model
    • Dynamically modify UI via standard DOM interfaces
    • Fast, powerful dynamic layout engine
    • Seamless Web integration (duh)
    • UI talks to backend components through language-independent XPCOM
    • Runs on all important (and many unimportant) platforms in various toolkit combinations (potentially KDE/GNOME agnostic)
    • Skinnable using CSS
    • Fully open source
    • Leveraging Web standards means it will grow with the Web (e.g. JPEG2000, MathML, SVG)
    Well, that's the plan. There's still some distance to go, but the basics are all there and working.
    1. Re:Mozilla XPFE by Anonymous Coward · · Score: 0

      I've been looking at some fairly recent mozilla builds and GUI seems very interesting indeed. I've been trying to convince my management to convert our Windoze product to a distributed web based one. I'd also bet that XML will the death of distributed object systems. (hopefully).


      I know the Gnome/KDE people are all gung ho about CORBA right now, but I think it is a BAD IDEA. At
      my previous employer I spent a great deal of time trying to de-CORBAtize a system. Not fun. Please look at what Mozilla and to some extent M$ is doing with XML. IIOP == evil. Please read this article. I have found it very eye opening http://www.sunlabs.com/technical-reports/1994/abst ract-29.html . What Waldo states here is very
      much applicable today.




    2. Re:Mozilla XPFE by Tupper · · Score: 1
      XML will the death of distributed object systems [...] I have found it very eye opening http://www.sunlabs. com/technical-reports/1994/abstract-29.html

      That is a very interesting report. But I'm not clear why you think XML will be a magic bullet, especially vis a vis IIOP. The central thesis of this article is that distributed computing is fundamentally harder than local computing in light of partial system failures and more difficult concurrency issues. They think this means we shouldn't even try to ever hide the locality of an object.

      In the few years since they wrote that article, distributed systems really have taken off in a big way; especially with the web. And unless you are running in the process space of the database, distribution of transactions is your problem. So many of the problems they see with distributed systems are things you have to deal with to some extent anyway (concurrency and partial failures not least).

      What has XML got to do with any of this? Its a resurgence of the message passing paradigm from a couple of shifts back. Maybe messages are better than objects--- so what. Its easy to map from one to the other so it can't be a big win. All the real issues are the same: settling on a happy DTD/IDL that people can live with, dealing with unstable servers, corrupted messages and partitioning the functionality among locations/ machines. In real life, they are both happier with one stateful server and a pile of (nearly) stateless clients.

      In none of these things is it obvious to me how XML is better than IIOP (unless you are using a OO database). CORBA of today seems to be doing a reasonable thing--- making it possible to do distributed objects across interfaces which you know might be remote.

    3. Re:Mozilla XPFE by Deven · · Score: 1

      I'd have to second this. The design behind the new layout engine in Mozilla is incredible. It looks to be REALLY powerful, flexible, yet potentially relatively simple for a GUI system. Clearly, it's still a work-in-progress, but the design appears to be very clean. It's also based on GTK+, which is getting a lot of support.

      I think it would be interesting to see if the Mozilla GUI could run on bare hardware (or more likely, GGI) as a replacement for X11. Okay, there's still a need for X11 compatibility, but there's probably better ways to do this stuff... (Berlin looks interesting too...)

      --

      Deven

      "Simple things should be simple, and complex things should be possible." - Alan Kay

  26. PowerPlant by Anonymous Coward · · Score: 0
    Although it is a commercial product, and it is single platform, PowerPlant by Metrowerks is a relatively good application framework.

    Following with true OOP, all of the core functionalities are mix in. If you want drag and drop in a window class, your window class simply inherits from LWindow and LDragAndDrop... Messaging is well defined, and window creation is extremly simple. (Made simpler because of resources on a macintosh)

    Moreover, all of the framework code is very easy to see and fairly well organized. I would love to see a framework such as this attached on top of a good multiplatform underpinnning. While GTK and QT go a long way to improve straightup X11 programming, there is still a great deal of room for a really well written application framework.

    1. Re:PowerPlant by hub · · Score: 1
      The problem with PowerPlant, is that it is intrinsicly tied to MacOS: it has been developped under MacOS for MacOS. This makes it a bad choice for cross-platform development.

      I know at least 2 app that use PowerPlant as a back end for a cross-platform development. One of these is Netscape...

      On the other side, CodeWarrior is developped using PowerPlant, the Windows version being ported using Mac2Win from Altura Software and the UN*X version being ported using Latitude. This means that it is used as a front-end and that Mac API are emulated.

      Other than that, once you understand how PowerPlant works, it is nice.

      --
      Hub
  27. Tk of Tcl/Tk is best by Anonymous Coward · · Score: 0

    Its very flexible, allows me to do whatever I need to, and is so goddamn simple I've never had a problem with comprehensibility, unlike other toolkits. Its so good, its been bound into languages like perl and python, can easily be called from C and C++... tk is the best.

  28. Agreed. by Anonymous Coward · · Score: 0

    I routinely write large C/C++ programs that call the Tcl/Tk library for the GUI and for portability (sockets and file handling.) 30-40K line programs compile unmodified on all versions of Unix and on Win95/98/NT. This allows me to do development on Linux, then ship an EXE file to the end user. Anything that savings me from having to program on a Win95/NT box is a winner in my book.

    I've tried Java, GTk, and Motif, which I like in approximately that order. But none of them come close to the speed and ease of use that Tcl/Tk provides.

    One other plus: The Tcl/Tk source code is the easiest to read and understand of anything I've ever seen in the Open Source world.

    1. Re:Agreed. by warmi · · Score: 1

      TCL is ugly like hell. It is like design straight from the hell ...

    2. Re:Agreed. by hobbs · · Score: 1

      And for this "ugly like hell" language the
      author (John Ousterhout) receives the ACM
      Software System Award? Of course, we can
      expect a level of noise in such unmoderated
      discussions, but at least justifying your
      comments would be appropriate. Perhaps it
      is because you cannot?

      I find Tcl to have a nice level of elegance
      for a scripting language. It does have an
      element of quoting hell, but once past this
      (relatively minor) curve point, it is quite
      easy and standard across the language. This
      extends to Tk, with which one can write very
      nice setups in almost zero investment time.

  29. If you want it done right, do it yourself by warrior · · Score: 1
    Well, I had been working on an app (modeler for building game worlds) for the past year and I recently updated to redhat 6.0. My closed source motif libs no longer worked. So, I began writing my own widget set, using minimal Xlib funcs. It was suprisingly easy. Making a custom "widget" is simple, so I just built whatever I needed (color picker, texture chooser, menus, etc). I even added a theming thing. All in all it took about two weeks to switch my gui from motif to my own stuff.

    Platform independence is not hard to achieve if you just want to port among *nix systems, just have your widgets draw themselves using X and GL, or your own software rendering. I don't know about other OSs (I dislike greatly the win32 API).

    Anyways, that's my 2 cents. I built my own toolkit that'll compile on any *nix system using X, and C++ in about two weeks. I do not consider myself a genious when it comes to programming (yet, heh), so to anyone not satisfied with current toolkits, build your own!

    Note: I don't suggest starting out on this if you have no prior GUI programming experience.

    Yet Another Note: When it's a little more mature I'll open source it (around christmas).

    --
    Intel transfer the difficult from Hadware to software, for get more power, programmer need more technology. -- chinaitn
    1. Re:If you want it done right, do it yourself by Zurk · · Score: 1

      you should have used LessTIF

    2. Re:If you want it done right, do it yourself by Anonymous Coward · · Score: 0

      if you do it yourself, you know how (or why it dosn't) work : I must agree with you. Of the platforms I've used, once I learn to draw to the screen, I do my own ui stuff. Of course, this is inefficient, not at all object oriented, and platform-centric. At least its easy to debug...

    3. Re:If you want it done right, do it yourself by spectecjr · · Score: 1

      Note: I don't suggest starting out on this if you have no prior GUI programming experience.

      Heck, I don't suggest starting out on this if you have no prior Localization experience; because if your stuff goes global, everyone who doesn't speak your language is screwed :)

      Okay.. so I'm partly kidding... but don't forget that not everyone speaks/reads/writes in English...

      Simon

      --
      Coming soon - pyrogyra
  30. A framework isn't a toolkit... by William+Tanksley · · Score: 1

    The things you're asking for are attributes of a toolkit, not a framework. Be careful not to get the two confused.

    -Billy

    1. Re:A framework isn't a toolkit... by Anonymous Coward · · Score: 0

      GIMP Toolkit (gtk). It insists on taking over the program (gtk_main, g* types, it has a C library provided in glib with hashing functions, string functions, and almost any function you would most likely reimplement). Gtk makes you use it's main looping function and become a "wait-for-GTK" type program instead of being a "grab-event-from-GTK" like xlib is.

    2. Re:A framework isn't a toolkit... by isenguard · · Score: 1

      I'm afraid you are incorrect about being forced to use the gtk_main() function. Have a look at gtk_events_pending() and gtk_do_iteration() to see how to dispense with gtk_main().

      I'm not sure what your complaint is about "g*" types being defined. It is difficult to conceive of a GUI library that doesn't define new types.

      glib has developed over time to include functionality common to several programs. Some of the stuff in glib is the sort of thing you would see in the C++ STL, while other things (like gmodule (used for plugins in the GIMP and Gnumeric, among other things)) provide really useful platform independent tools.

    3. Re:A framework isn't a toolkit... by azz · · Score: 1
      The types come from glib, upon which GTK is based. The main purpose of glib is to provide "modern" types like lists (OK, LISP had them in the 60s, but you know what I mean) and extendable strings, and the functions to deal with them safely; the other types, like gchar, simply provide a type system that's consistent between platforms and C compilers. Using glib is a good thing, even in non-GTK programs. And gtk_main isn't mandatory.

      "I want to use software that doesn't suck." - ESR
      "All software that isn't free sucks." - RMS

  31. Re:Tk of Tcl/Tk is (not) best by William+Tanksley · · Score: 1

    Tk is nice once you're used to it -- but it's terrible in many other ways.

    It's utterly bound to Tcl, for one thing. You have to link Tcl in in order to use Tk.

    There are many better toolkits, you just have to give them the same chance you gave Tk back when you first learned it.

    -Billy

  32. TurboVision by Bill+Currie · · Score: 1
    I started out with TurboVision (Borland, C++ version (later, used the Pascal version as well)) and though it was a little clunky (and buggy) I found it to be generally easy to understand and use (the formatted string view/wiget was the exception, wierd voodoo to get that working; you had to simulate the stack). I then cloned TV in both text/graphics, fixing the bugs and making a couple of design/interface changes (rectangle endpoints, mainly) and a few extensions (cooperative multitasking (put in for dos, left in for Linux) and it works quite well (I wrote an editor with the text version and I had a couple of toys for the graphics version). The graphics version is for DJGPP/Allegro and the text version works with both DJGPP and Linux (suid root :9). It's written in C++ and the text version has a python interface (I had a really cool MAP27/MPT1327 test app written with this setup). The biggest thing I like about my library is that I actually managed to make it (semi) driver agnostic. The tui and gui versions are even semi compatable (just the coordinates aren't, and the gui has some things that are hard to do in text), but the gui version doesn't really care what graphics lib is used (single class to handle such things) and the tui version uses a text mode lib that I wrote that I managed to port from dos to Linux without too much trouble.

    Anyway, what's good about my lib/turbovision is it's (general) ease of use and extensability. Coding for either is actually fairly clean. IMHO, Borland did a good job of designing TV and I feel that I copied their good bits and added a few of my own. For anyone who's interested, the dos/text version is availabe on my webpage (via the editor link), or you can email me.

    --

    Bill - aka taniwha
    --
    Leave others their otherness. -- Aratak

  33. My thoughts as a user not a programmer by johndoh · · Score: 1

    My feelings are that we buy/use/maybe make what
    we like. In my opinion motif sux and is a dinasour
    java has potential but is still slow on my machine
    and then there is Qt and GTK. How i see them is
    something that is good for those who program but
    it is not pretty from a user's standpoint. I am
    a linux only user just to note but windoze has a
    far superior feel than any of the X stuff. I
    mean KDE and Gnome are good but not drag all over
    and pretty as hell graphics. Dont make me out to be one sided on the issue, i think win has all kinds of problem. But i do feel that the look and feel of X is far behind.

    1. Re:My thoughts as a user not a programmer by pcburns · · Score: 1
      But i do feel that the look and feel of X is far behind.

      I keep missing some of the things that enlightenment has when I use windows. I miss the hard edges. I'm not sure what its called but the edges of the windows have resistance. I miss the virtual desktops. NT has virtual desktops too, I found a little pager in the sdk but it wasn't very good. I hate having my windows all in the one screen.

      I don't like the task bar in windows. The "start" button was a really bad idea. Why didn't they set it up like a menu. Then it would be nice and consistant and you wouldn't have to go through some maze of menus to start some program.

    2. Re:My thoughts as a user not a programmer by Anonymous Coward · · Score: 0

      But i do feel that the look and feel of X is far behind. Not that far behind: http://www.kde.org/kde2shots.html

    3. Re:My thoughts as a user not a programmer by Anonymous Coward · · Score: 0
      Dinasour(n):
      A species of dinosaur that leaves a bad taste in the mouth.

      -- Cowardy Custard
    4. Re:My thoughts as a user not a programmer by warmi · · Score: 1

      I completely agree with you. Windows GUI is by far the best GUi available out there.
      Troll made very smart move leveraging existing reserach that MS put into its widget set.

    5. Re:My thoughts as a user not a programmer by jafac · · Score: 1

      Windows GUI is awful, worthless ROT!

      Too much redundancy,
      Not enough customizability,
      Not enough uniformity,

      What research did MS put into it's widget set?
      "duh, Macs have this neato button that lets you close this window with one click - but lets put it in the other corner so they don't sue us."

      "duh, Macs have this cool menu that shows all the programs that are running - let's do that, but put it on the other side of the screen so they don't sue us."

      "duh, Macs have this cool icon that you can click on, and see all the stuff on your hard drive, but let's put it in the other corner so they don't sue us."

      "duh, Macs have this cool icon that you can drag files to that you don't want anymore, but it doesn't delete them so you don't actually delete stuff accidentally - but let's put it in the other corner so they don't sue us."

      "duh, Macs have this cool hierarchial menu that lets you select commonly used programs and functions - let's put ours in the other corner so we don't get sued."

      The result?
      Everything's BASSACKWARDS - unintuitive, hard to use, takes up more screen real estate, and ultimately, a big steaming pile of crap.
      Microsoft's problem is that it's research is done by it's marketing and legal department, not RESEARCH & DEVELOPMENT.

      "The number of suckers born each minute doubles every 18 months."

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
    6. Re:My thoughts as a user not a programmer by Adde · · Score: 1

      Why don't you check out BeOS. Clean, slick user interface that totally whips window$ ass.
      Ah, and it's API is PPP (Pure Pleasure Programming) to!

    7. Re:My thoughts as a user not a programmer by Anonymous Coward · · Score: 0

      Yes, X (even KDE and GNOME) are far behind. Having screen shots that look the same is not the issue. Most of the really nice features of Windows and Mac are still missing from the Linux GUIs: drag-and-drop between applications, for example. There are a lot of good individual GNOME and KDE apps, but there is still very little in the way of cross-application integration.

  34. doh. by prodeje · · Score: 1

    I guess you like coding programs that look butt ugly.
    ...

    --

    Bitchslapped? Give Rob a bitchslap from bitchslapped.com.

  35. Interviews and Fresco by Dym_ · · Score: 1
    Not necessarily the best or most practical, but very interesting from the design point of view: Interviews and Fresco.

    The "Design Patterns" book is based in part on the experience with Interviews.

  36. well.. by Zurk · · Score: 1

    it basically depends on the programmer. As a mainly C coder i'd love to see something like GTK with more motifish extensions/widgets and a more Java-like thread handling which would work with C or Java. Small, light, fast would be nice too.

    1. Re:well.. by warmi · · Score: 1

      Have you ever tried C++?
      From my experience somebody who develops GUI based software and proclaims that is a mainly C coder, has never tried C++ and simply doesn't realize how easy is to do stuff using properly created C++ GUI API ( Qt comes to mind.)

      C is perfect for some things but if you claim that one of them is GUI development then your are using wrong tool for the job.
      Try it ...

  37. GTK code is far too messy by Anonymous Coward · · Score: 0

    I think GTK code is far too ugly and complicated. I'm worried that GNOME uses GTK and worst of all, C.

    1. Re:GTK code is far too messy by Anonymous Coward · · Score: 0
      Function names:

      I have been using Motif for year and I thought that it could really not be made any worse than that. Well with GTK, I am not that sure anymore. (okay, this is a matter of taste of course)

  38. On the mac: PowerPlant by alehmann · · Score: 2

    PowerPlant is the best framework I've ever used. Pure, good C++, with multiple interitance and etc. It has a nice GUI builder which is not absolutely required but a real convinience.

    I wish there was a framework that good on X...

    Motif: Blech. Proprietary and ugly.
    Lesstif: Well, it's free, but it's still ugly and non-themable. I haven't looked into the API though.
    Qt: Looks ugly. I've heard bad things about the "keywords" it adds.
    Athena, Xlib, Xt: Yeah right... Maybe in the 70's.
    Gtk: I personally write programs in GTK. I don't really like its use of its own types but I relize that it kind of is necessary. The GUI looks respectable and is themable. But GTK is SLOOOW and a resource hog, especially when combinded with Imlib. The C interface is object-oriented - and as I C++ programmer I don't see the value of object oriented C, with all of the complexity that it adds. I know that there are other language bindings but they probably don't support multiple inheritance, and they definatwely stick with Gtk's concepts... i.e. packing boxes instead of aligning things on a grid in an interface builder.
    Java: Well, a very different solution. You need to learn a new language, although most people with Java experience say they would never go back to C++. The GUI toolkit sounds OK, and there are interface builders but AFAIK they are all proprietary (not acceptable). Java is still slow, regardless of what Sun claims (this is the present). And the Java software for Linux/BSD seems pretty weak. But Java is naturally cross-platform, and may be a C++ killer in 5 years. If so, the Java coders will already have the killer apps.

    1. Re:On the mac: PowerPlant by Anonymous Coward · · Score: 0

      PowerPlant sucks. The MacOS ToolBox is hell on earth with the fucking pascal strings everywhere, brainless structure and function names, old legacy code, etc. Mostly all the good features of PowerPlant are in beta (hiearchical lists, network classes, etc.) And anyway, you need to calls crappy QuickDraw API for drawing. Worse, there is no memory protection and it always crash. Maybe its extention faults? haha, no kidding, move to a real OS. I coded for 5 years on MacOS and I will only go back If someone want to kill me if i don't do it.

    2. Re:On the mac: PowerPlant by warmi · · Score: 1

      I think QT actually looks best of all the toolkits out here ...

      Bad things about "keywords" ?? There is nothing bad about it... Really, you should try it just like you tried GTK.

    3. Re:On the mac: PowerPlant by hub · · Score: 1
      I'm sorry but all you describe is NOT a PowerPlant problem but MacOS problem.

      Pascal strings are used widely in the toolbox that is why they are here. Monotasking is how MacOS works so is unprotected memory.

      The lack of drawing routines in PowerPlant it because it would have been to much overhead since it is designed to be a MacOS-only framework.

      --
      Hub
    4. Re:On the mac: PowerPlant by Anonymous Coward · · Score: 0

      I can't understand your dislikement about GTK+. There are very good concepts in GTK+, like it's signal handling stuff. Creating stuff in C instead of C++ makes it more cross platform than any other toolkit (GIMP on Win32 for example). C can do everything C++ can.

      The box-packing stuff is one of the things I like most about it, since it will avoid those "One size fits all" boxes like windows has.

      Arjan Molenaar

  39. Intermediary framework? by Anonymous Coward · · Score: 0

    What would be useful, is an intermediary between application and framework. such a thing would sit between the gui framework and the application, so that the application/os/user gets to decide what widget set to use to display the app... this could give X a more common interface (as users can select to use ONE framework throughout their system) and can opt for any framework that they like best, for whichever reasons. Also, it would allow compiling to be easier as you wouldnt need more than one widget set necessarily for all of your apps. :)

    1. Re:Intermediary framework? by panda · · Score: 1

      I suggest you try writing such a monster!

      See you in about 400 years....

      --
      Just be sure to wear the gold uniform when you beam down -- you know what happens when you wear the red one.
  40. Abstract the toolkit by heroine · · Score: 2

    Since there are so many frameworks on UNIX and they change so rapidly you're better off abstracting the toolkit from your applications with yet another layer.

    Then isolate the GUI code into its own classes as far from your main code as possible. When I started a project in 1997 there was no GTK, QT was much more restrictive than it is now, and everything looked like shit. A year into the project, GTK was finished and QT was relicensed but still very restrictive.

    A second year into the project direct GTK and QT access was phased out in favor of yet another layer above the toolkit. Now instead of interfacing the toolkit you really should interface a desktop library: Gnome lib or Kde lib. Now if you don't want to be stuck with one desktop you need to code that extra abstraction layer between your GUI code and the desktop library. Who knows how long KDElib and Gnomelib is going to stick around.

    1. Re:Abstract the toolkit by warmi · · Score: 1

      and then require user who want's to use one app to install whole shitload of libraries ?
      No thank you..

    2. Re:Abstract the toolkit by meridian · · Score: 1

      I think the idea is to avoid this problem in some ways. From what i read he was saying that your program could possible not rely on any one library but could be developed so it could use an available library that an interface had been written by you for your application. while there may be extra work involved at the start if you plan to keep your application working with possible the "best" libraries for it at the time, building this functionality in at the start elivates many headaches later

      but i guess if an answer is to write in library portibility, what would the best way to do this be

      --
      meridian at tha.net
    3. Re:Abstract the toolkit by panda · · Score: 1

      Go for it! }:-)>

      I wouldn't want to be on the team developing that App!

      You want me to interface with every available widget set and all the possible ways that they work and you still want me to ship this app on time? HA! I quit, find yourself another sucker.

      --
      Just be sure to wear the gold uniform when you beam down -- you know what happens when you wear the red one.
  41. MFC vs QT by Midnight+Coder · · Score: 5

    I think this article is baiting us, nevertheless here is my honest response.

    Firstly let me say I have nothing against GTK, I have little experience with it, but I constantly hear good things about it, and I've used some very nice GTK based apps.

    Personally I choose to use a C++ based library over a C library, (and I'm unimpressed with bindings in general). To give you some idea of where I coming from I have experience with QT and MFC, I use both on a daily basis at the moment, have about a years experience with MFC (spread over 3 years) and about 6 months experience with QT. (I also have about 3 months experience with each of Java AWT, raw WIN32 & WIN16 api programming, and the Harlequin Lisp GUI toolkit).

    QT is vastly superior to MFC. By coincidence the free software QT based development I have been doing is similar to (just from a GUI point of view) to the MFC development I have been doing, and this has given me the opportunity to compare the two.

    Here are some observations.

    Layouts
    QT has good support for layouts, MFC has none. This means it is much easier to create resizeable dialogs in QT than it is in MFC. This means i18n support is easier in QT than MFC (no need to tweak your dialog for each language you support).
    I especially like the QT grid layout that supports mutli-cell entries.

    Tooltips.
    Tooltips in MFC are a bit screwed, the MFC CToolTipCtrl isn't useful as is and you have to derive a class from CToolTipCtrl in order to use tooltips. This derivation isn't application specific exactly the same code is need in each app. Why? Quoting programming windows 95 with MFC "Late in the beta cycle, the Windows 95 designers recognized this problem and added some intellignece to tooltip controls so that the designers could do their own subclassing. Unfortunately, this feature was added too late to be incorporated into CToolTipCtrl". MFC programming tends to be like this, every simple little things requires a dozen lines of work before you start doing anything application specific. (There is a very good open source web site www.codeguru.com that has a collection of such code). QT doesn't suffer nearly as severely from this problem, QToolTip::maybetip lets you decide when to show a tooltip, where to put it, and what to put in it, just hook one up to a widget.

    Documentation.
    The documentation that comes (free) with QT is excellent, better than the MFC documentation I have. The 12 stage QT tutorial is excellent compared to say the MFC Scribble tutorial, I get the feeling that QT really is a toolkit whereas MFC is a framework. The QT class documentation has decent see also links (very useful!), and inline example code. Basically it is just of a higher quality than the MFC documentation. The QT source code itself is very readable and is a great source of documentation. (The MFC source code is not so useful)

    Signals/Slots
    The QT toolkit pioneered this concept and it is a good one. Basically they can be used to reduce code coupling and make it easier to create independent components. For high level stuff you don't have to derive a class and override a virtual method with a one line implementation, just connect a signal to slot. People hassle QT for extending the C++ language and this is a valid criticism, however in actual practice this has no drawbacks (you can still debug your programs with gdb and run make to compile all your source). MFC has a signal/slot equivalent "message maps", syntactically they are much uglier.

    QTL vs STL
    I'm all for standards, I really am. Neither MFC nor QT support the STL as a first class citizen. Unforunately there are compelling reasons for this when using (e)gcs. The egcs STL implementation is bloated and slow compared to the QTL. Syntactically the QTL is much simpler (eg container classes expose begin() and end() methods as well as providing external iterator classes). Still if you already know the STL this is an extra thing to learn.

    High quality widgets
    QListView is an awesome control unifying the TreeCtrl and ListCtrl concepts. In general QT widgets are done right.

    Basically using QT has helped me understand why people complain so bitterly about MFC, and proven to me that there is a better way.

    1. Re:MFC vs QT by warmi · · Score: 1

      Yep. GTK is being advertised as something so great, people seem to forget that what we have here is another C based toolkit ( hello, it is fucking 2000 not 1988) that tries to accomplish something that is given for free in C++. What kind of logic is that ?

      By the way, most of the "software" written in GTK is bunch of 200 line frontends to varius command line tools.

    2. Re:MFC vs QT by mangino · · Score: 1

      I personally write a lot of object oriented code, and I always use C. Why complain about the choice of language used for a toolkit, especially when there are C++ bindings available for it. Also, OO isn't free in C++. Remember that C++ was simply a preprocessor step for C orginaly. Anything reasonable that can be done in C++ can be done in C.

      --
      Mike Mangino
      mmangino@acm.org
    3. Re:MFC vs QT by lostpasswd · · Score: 1

      Yeah, little 200 line frontends like the Gimp, Gnumeric, Mozilla, Balsa, G3D, GIDE... good point.

  42. OpenStep by AT · · Score: 2

    Another library worth looking into is OpenStep; specifically the ApplicationKit. This toolkit is what NextStep has evolved into. Even though it is quite old as far as X11 toolkits go, it is surpisingly well designed, OO from the core up and very MVC.

    Warning though, the default bindings are in Objective C, an OO C derived language distinct from C++; ObjC has a distinctly Smalltalk flavor about it.

    GNUstep is a GPLed clone. I haven't tried it so I can't comment on the quality.

    Somewhat off-topic, the OpenStep Enterprise Object Framework is the best toolset/framework for working with databases I've seen.

    1. Re:OpenStep by Chris+Hanson · · Score: 1
      OpenStep is not an X11 toolkit, although GNUstep has a backend for X11.

      Also, OpenStep doesn't have "bindings" -- OpenStep is built in and for Objective-C explicitly. Other languages can connect up to OpenStep via the Objective-C runtime, but it's fundamentally an Objective-C framework.

      Finally, GNUstep is LGPL'd, not GPL'd. Big difference. :)

      Otherwise, right on! OpenStep and GNUstep are the way to go.

    2. Re:OpenStep by jafac · · Score: 1

      Recent list of cool stuff - now rotting carcasses in Steve Jobs' back yard:

      OpenDoc
      CyberDog
      >3 PCI slots in Macs
      Newton
      QuickDraw3d
      >1 button mouse
      Themes in 8.6


      Coming soon: Cross-platform ability of OPENSTEP/YellowBox/Cocoa


      "The number of suckers born each minute doubles every 18 months."

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
  43. GNUstep by Chris+Hanson · · Score: 5
    You'd have to code in Objective-C, but that's not exactly a detriment. The designers of the Standard C++ Library could learn a thing or two from the OpenStep FoundationKit, and the designers of the Java AWT probably should've followed the Netscape IFC team's lead and just reimplemented the OpenStep ApplicationKit.

    I strongly encourage you to take a look at the Mac OS X Server programming tutorials on Apple's developer web site (in particular the Discovering OPENSTEP tutorial), and then at the state of GNUstep. GNUstep is really picking up steam, and is an implementation of probably the most elegant object-oriented framework that ever made it into wide distribution.

    From a technical standpoint, the OpenStep frameworks really leverage the dynamic nature of Objective-C. People have written interfaces for other languages (Perl, Tcl, Python, Apple even did Java) to the OpenStep frameworks but by and large the best way to write OpenStep programs is to just use Objective-C. Since it's a strict superset of ANSI C, that's not so bad; you can even interface it with C++ code (though mixing C++ and Objective-C in the same file isn't generally supported yet; Apple's gcc supports it, but the changes haven't been merged).

    One of the best things about OpenStep is that your interfaces can be completely data-driven; you nevever have to write code saying "Put a window here, put a button in it, make the button send this message to this object..." You can code that way, but it's discouraged. NeXT's InterfaceBuilder generated "nib" files which could be read in with one line to create complete networks of interdependent objects that would just do the right thing. Work on an equivalent InterfaceModeller (which generates "gmodels" since Apple never specified the nib file format) for GNUstep progresses, and gmodels aren't too difficult to generate by hand.

    I think the best way to succinctly describe OpenStep is to say it is to software developers what the Macintosh is to normal users.

    1. Re:GNUstep by aheitner · · Score: 1

      I think the best way to succinctly describe OpenStep is to say it is to software developers what the Macintosh is to normal users.

      Considering I can't for the life of me figure out how to use a Mac (it doesn't have any nipples...it's not intuitive in my book and I couldn't find the man(1) command) I don't think I'd enjoy it.

      Seriously, the Mac's a pretty limiting environment. It's a padded room. Is that really where you want to be coding? I sure don't.

    2. Re:GNUstep by kris · · Score: 1

      The you should really have a look at MacOS X.
      It is a complete Unix environment with a Mac
      desktop on it. Open yourself a Terminal window
      and there it is, your man(1) command, your bash,
      your C-Compiler and your emacs.

    3. Re:GNUstep by jetson123 · · Score: 2
      and the designers of the Java AWT probably should've followed the Netscape IFC team's lead and just reimplemented the OpenStep ApplicationKit.

      That is exactly what Sun did with JFC/Swing. With Java 1.2, Sun also incorporated the OpenStep/DisplayPostscript imaging model, much of the WebObjects application server functionality, as well as extensive reflection capabilities.

      Sun has hired lots of OpenStep/ObjC folks, and they also have a number of Smalltalk, Self, and CommonLisp experts, so Java carries on those traditions.

  44. GUI framework.. by technos · · Score: 1

    This is a heavy one,and by my reckoning is probably three steps out of my league. I can but try.. Even though you seem to take an early lean away from swing (and AWT) it really has most of the qualities that one wishes; it is clean, logical, is easily and infinitly extensible, and in most cases anything produced will be nearly portable in unchanged form. Downside to swing is the damn interpretive layer inherent to Java. I've done a little poking into GTK+ recently, and it is one hell bent little fifty-bladed Swiss Army knife. Perl and GTK? Okay! Let's meld a little Pascal into c and slap a front end on it? Sure! Smidge around the widgets based on user preferences? Why not! (And the way it just falls into a good OO design. Stop me before I wet myself.) Unfortunatly, some of the 'features' are still being developed, and the docs would be lucky to be called 'scarce' (I've contemplated donating time to them, but I'm lucky to get time to shower anymore.) Since the suggestion was passed to contemplate other OS GUI framework, (what is the proper plural?) I'll hand out the short bit of wisdom a PM once gave me: 'If you want it quickly, VB. If you need it to be functional, Visual C or Delphi. If you need it to be stable, why the hell are you writing it for NT!!'

    --
    .sig: Now legally binding!
  45. Look at VDK by Anonymous Coward · · Score: 0

    I have lately been working with VDK. It was largely written by Mario Motta. Home page: http://www.programmers.net/artic/Motta/vdk VDK is a C++ OO wrapper for GTK. The current version is 0.6.5. There is a RAD tool (VDKBuilder) also. The license is LGPL. VDK will probably become the major competitor to Qt. (I only know a little about Qt, so I can't do a point by point comparison of the two. Is there anyone out there who would like to post one?) My general impressions so far: Surprisingly solid for so early in its development. I have yet to have a crash due to VDK. (I have had a few due to some obscure bugs in GTK or possibly glibc, however these were easily worked around.) The class library (or application frame work, if you prefer) seems well thought out. There has been a tremendous amount of work done on this. However, it seems a bit short on the "excessively cute" features. This may be seen as a positive or a negative. It is very nicely OO conformant. The RAD tool is still too early to do serious development yet. I use it often to get a feel for what I would like to see, then hand code it. Coding in VDK goes quite easily and smoothly, once you get the hang of it. As with any class library / app. frame works / API, it takes some time to understand how the author "thinks", once you get it, you can easily interpolate to anticipate how other features work. I rather like VDK. The documentation is a bit on the bad side. English is not Mario's first language. He has written a concise Class Reference Manual, however this is a bit rough for people who have little experience with this sort of thing. I am currently writing an "Informal Introduction to VDK". Contact me if you wish: John Harris jkharris_NO_SPAM_@swva_NO_SPAM_.net_NO_SPAM_

  46. What about usability? by Anonymous Coward · · Score: 0

    One thing very few comments seem to have touched on is the users' perspective.

    A wide variety of GUI frameworks is great from a programmer's perspective, but what about the poor user who has to learn yet another conflicting set of key bindings, menu layouts and controls?

    I notice everyone is quick to argue about the internal aspects of software, but the fact of the matter is a powerful piece of software is of no value if nobody uses it.

  47. GTK complaints? Look at VDK!!!! by Anonymous Coward · · Score: 0

    People with complaints about GTK should look at VDK!!!! (See my earlier comment on VDK.) VDK is a C++ OO wrapper for GTK. GTK *is* slow to code and very messy. VDK is quick, clean and easy. Give it a try!!!! John jkharris_NO_SPAM_@swva_NO_SPAM_.net_NO_SPAM_

  48. Sounds like OpenStep (was Re:I once saw...) by Chris+Hanson · · Score: 1
    OpenStep has all of these features, and its predecessor, NEXTSTEP, had these features in 1988.

    GNUstep is an Open Source (LGPL) implementation of OpenStep.

    Also, OpenStep's Objective-C programming interface is really elegant, and it performs pretty well.

    And since Objective-C is a strict superset of ANSI C, interfacing with C (and C++ code) and wrapping an interface around other code is really easy.

  49. Heh by warmi · · Score: 1

    Dude, you list requirements that of all mentioned toolkits are best served by QT and then you dismiss it with couple sentences.
    GTK C++ bindings cool ?? Better then QT ??
    Have you actually tried QT ?? I doubt that.

    You sound like somebody who mentions C++ simply because it is cool and hip but really at heart is a C programmer.

    1. Re:Heh by exa · · Score: 1

      Yeah, I tried QT. And I don't like it much. Reasons I said. But I do think it makes some elementary use of C++, and helps code simple apps. Now you'll say the KOffice apps and many KDE apps are quite complex and "hip". But guess what? I don't think so. QT is only as great as MFC. I see some similarity in their designs. *grin*

      And quite frankly, it's not because it's MS stuff. It's because it's gotten me much trouble. Not the same for QT, it runs great on my Debian system, and I wrote some small programs. But you can't push it too far with QT. Not very cheesy.

      About C++ stuff: I love C++ and its standard lib. well I think it's great for the 80's! but still g++ isn't fully ANSI C++ and the standard's only recently been completed. I just have to say that none of the proggies I wrote for the last 2-3 years depend on libc. They just need the C++ libs.

      --
      --exa--
  50. I wholeheartedly disagree by tomk · · Score: 1

    Probably the largest complaint about X (and certainly one of the most plainly obvious) is that every program looks like it was developed in a vacuum.

    This is bad.

    I'm not saying that every program should be cookie-cutter, but consistency is a virtue. Plus, don't forget that interfaces continue to evolve, and if you've used a standard toolkit, it is likely to evolve as well. Your program can probably take advantage of that evolution without needing to be manually updated.

    IMHO, there are a few reasons to make a new toolkit:

    1) There isn't a good one available (Motif probably started because of this)

    2) None of those available do what you need (Probably why Qt started). Nowadays, this argument doesn't hold water; with C++ toolkits, you can extend the toolkit easily, and with open-source toolkits, you can modify the source and benefit the whole community.

    3) None of those available have an acceptable license (Gtk).

    There are also a few reasons NOT to make a new toolkit:

    1) It would be cool / fun. Instead, concentrate on making your app cool / fun.

    2) It would be easy (as easy as using an existing toolkit? I doubt it). It's much more important for it to be easy for the user.

    3) You want to be famous / change the world. Sorry bub, it ain't gonna happen.


    Speaking from the standpoint of both a developer and a user, my advice is: stick with standards!


    Over and out.
    -TomK

    1. Re:I wholeheartedly disagree by Anonymous Coward · · Score: 0

      I think one of the worst things to do is tell someone how to spend their time.

      If you want to create a new GUI toolkit.. go for it. Create a new OS? Sure thing.. Linus did. Just stop telling people how to spend their time "wisely". Time is a personal thing. I don't want you to tell me what I should and should not do.

      The wheel was invented once. But the first invention is always the worst.

      Also, users can adapt to new interfaces very quickly. Once someone downloads x11amp/winamp they can instantly use it. And besides.. if you put a few GTK programs on the screen you will see many things not uniform (same with KDE/GNOME apps).

  51. Re:Tk of Tcl/Tk is (not) best by tomk · · Score: 1

    Not that I think Tk is all that great (in fact, I think it is ugly and slow.. but damn fast to develop in)... but you are wrong that you have to use Tcl in order to use Tk. You can get Perl/Tk in order to get the Tk GUI on the much more useful foundation of perl.

    BTW, if you thought Tcl/Tk was slow, wait until you see Perl/Tk.

    You can also use Tk directly from C / C++, although personally I've never done this because the documentation of how to do it was severely lacking.

    -TomK

  52. Reality Check by Luarvique · · Score: 2

    Well, let us first perform a reality check on what was said here before:

    1. If you look at the software available for Unix systems now, you will see that 99.99..% of it is written in C or C++. Not Java. Not Pascal. Not Ada9x mentioned by the original poster. What does this mean? This apparently means that any GUI framework worthy consideration probably has to support C/C++.

    2. If you look at any extensive GUI framework in C, you will immediately see that as the number of features grows linearly, the complexity of API grows exponentially. Both Motif and GNOME are good examples of this. Again, what is the cure? Well, C++ is the only known cure at the moment, AFAIK. Some people do not like C++, but it does help to organize GUI APIs better. Look at Qt/KDE, BeOS, or Borland C++Builder for examples. So, the suspicion is that whatever "best" GUI kit you choose, it should at least allow an extension into C++.

    3. The license must allow a person to sell programs written with the GUI kit. Period. LGPL doesn't cut it. If money is charged for the GUI kit itself, it must be in $100US range to allow us, the mere mortals, to buy the kit (>$1000US charged by Troll for its commercial Qt license is a bitter joke on programming community).

    4. It is really helpful to have some GUI designer or a layout tool. Fortunately, most widely used toolkits have got such tools by now.

    What does it leave us with? Well, basically, with nothing. Of well-known GUI kits, we are left with:

    1. Qt/KDE -- It's a very nicely organized C++ kit which definitely comes up on top (yes, I can live with MOC, it's ok), but it's LGPL/Troll/GPL licensing makes it difficult to write commercial software (commercial Qt license is beyond the reach of most "normal" people).

    2. BeOS -- Also a very nicely organized C++ kit, but we are talking Unix toolkits now, so no BeOS.

    3. C++Builder VCL -- One more nice C++ kit which may become a killer when ported to Unix (you can divide your code and GUI in C++Builder, it just requires common sense). So far, it is Windows-only though. Period.

    4. GTK -- The toolkit has become overblown, IMHO, both complexity an speed wise. It may be a result of too many people trying to develop it (KDE lacks this problem), but I think that it is rather a limitation of C (as opposed to C++).

    5. WINGS -- Very nice C-based toolkit, really easy to program with. Two problems here: 1) dependency on WMaker and 2) Lack of development. It is sure to hit the complexity threshold if it becomes extensive though.

    6. Java awt/sling/whatever -- You really can't expect people to use Java programs. Slow. Unstable. Incompatible between releases of Java. Require megabytes of Java installed. How many of you have deleted a program off your Windows system after finding out it is written in VisualBASIC and requires MSVBVM.DLL (or whatever it is called)?

    7. Delphi -- It is very nice. It is Pascal. Most contemporary programmers would expect compatibility with the C/C++ code though. So, use C++Builder. And still, Delphi is Windows-only.

    8. XForms -- Simple, easy to program C-based toolkit. Same problem as with WINGS: lack of active development. Same warning: at some point, it may become to complicated and require switching to C++.

    So, to summarize: There is still no ideal GUI toolkit for Unix right now. But Qt/KDE would probably quickly become and ideal toolkit if it allowed normal commercial usage, possibly for a modest fee.

    1. Re:Reality Check by warmi · · Score: 1

      I agree , QT is way to go.

      However, your compain about QT having "restrictive" license is , excuse me, complete bullshit !

      Lest's take a look:

      - you can develop free software , right ?
      - can have source code ( perfect when trying to implement your own widget ) !

      No, but you want to develop commercial software and benefit out of it but you deny the same right to Troll. What the fuck is that ?? How the hell they are suppose to stay in business ?

      I am absolutely sure that the they QT license is modified to allow free commercial usage, Troll people will have to start looking for other jobs ( which by the way woudn't be big deal for them as they are excelent professionals)

    2. Re:Reality Check by bcboy · · Score: 1

      >Well, C++ is the only known cure at the moment, AFAIK.


      Can you elaborate on this point? (I don't code gui's, so I know nothing about gui specific problems. But I've always found C++ pretty slow & useless.) What's the scoop? What is an example of the problem & how does C++ solve it?

    3. Re:Reality Check by scheme · · Score: 1
      Can you elaborate on this point? (I don't code gui's, so I know nothing about gui specific problems. But I've always found C++ pretty slow & useless.) What's the scoop? What is an example of the problem & how does C++ solve it?

      I think the original poster was refering to the problem that arises when you extend a data structure. For example:

      Suppose you have data structures foo and bar and function f that takes foo and bar and does something with them. Now suppose you decide to extend foo and bar to foo2 and bar2 and leave foo and bar around so existing code doesn't break. Now suppose you want to extend f to work with foo2 and bar2. This means you'll probably need 4 versions of f to handle the different combinations of foo, foo2, bar, and bar2 that can arise.

      With C++ you can either make foo and bar classes and derived foo2 and bar2 from them. This means that if function f deals with foo or bar pointers or references you can use the existing f without modifications. Or you can overload f to handle the different combinations. I believe the first solution limits you to the original functionality of the foo and bar classes but that may be okay. The second solution makes maintaining the library a little harder but the users of the library won't have to worry about which version of function f to use since the compiler takes care of it. There are probably other solutions involving virtual functions for classes foo and bar. INAC++ expert so take this with a grain of salt.

      --
      "When you sit with a nice girl for two hours, it seems like two minutes. When you sit on a hot stove for two minutes, it
    4. Re:Reality Check by Luarvique · · Score: 1


      Well, C++ is the only known cure at the moment, AFAIK.


      Can you elaborate on this point? (I don't code gui's, so I know nothing about gui specific problems. But I've always found C++ pretty slow & useless.) What's the scoop? What is an example of the problem & how does C++ solve it?


      The basic problem is that as you add new GUI elements and new features to each GUI element, you tend to multiply number of various functions. Look at Motif for example: you will see that many widgets have special functions associated with them, plus there are multiple properties set in a nightmarish way. Toolkit names grow and become untypable.

      With C++ you can encapsulate widgets into classes. Then properties and functions naturally become members of the class. Even better, you can use inheritance for widgets which are almost the same as parent, but differ in behaviour. And this also applies to other abstractions, such as Application, AppSettings, etc.

      As to C++ speed, it seems to strongly depend on how you use it. It is no slower than C if you know what you are doing, although there is place for screwups (most STL implementations seem to be screwups, but I may be wrong here).

    5. Re:Reality Check by Anonymous Coward · · Score: 0

      One more time: You can't develop free software with Qt if you're not prepared to allow modification and redistribution of your source code.

      Wanna become a slave to the Open Source movement? Use Qt.

    6. Re:Reality Check by bcboy · · Score: 1

      Ok, I'm getting some idea of the issue, but a real example would be cool.

      >It is no slower than C if you know what you are doing

      Yeah, it's that "knowing what you are doing" bit that gets me. It always seems that you have to pay a huge amount of attention to what the compiler is trying to hide from you (creating temporary variables, etc.), which kinda defeats the purpose, and ultimately is mounds harder than just coding in C. (In my limited experience ;)

    7. Re:Reality Check by Luarvique · · Score: 1


      It is no slower than C if you know what you are doing


      Yeah, it's that "knowing what you are doing" bit that gets me. It always seems that you have to pay a huge amount of attention to what the compiler is trying to hide from you (creating temporary variables, etc.), which kinda defeats the purpose, and ultimately is mounds harder than just coding in C. (In my limited experience ;)

      I believed so to. Then I tried to compile some sample code with GCC (get/set functions, virtual functions, etc.) and compared the resulting assembly with whatever was generated from analogous C code. When optimizations are off, the results are horrible. Nevertheless, the optimized version did not differ from C very much.

      I think that what happens most often is that people try to use library data types (String class, etc.). With C++ operator overloading, the code looks exactly the same as if base data types were used, but the speed now depends on the library perfomance, so the code looks "slower".

  53. Stability? by nitehorse · · Score: 2

    Ok, now I know I read it somewhere at the top. "I want speed and pretty graphics." But what happens when you get the speed, and the pretty graphics? I have yet to notice any toolkit which provides speed, pretty graphics, AND stability (which is my main point.) Stability, ladies and gents, is what it's all about. Who cares if your app is really fast and looks cool if it crashes in two seconds? (Nope, not making it up. gEdit refused to work for more than three seconds at a time until I removed GTK+ and reinstalled it.)

    The original Qt toolkit was a beauty as far as stability goes- versions 1.4x were all pretty decent as far as looks go, and they were STABLE beyond belief. KDE 1.1 still runs for days at a time on my system. But, sadly, it's not that fast on older legacy hardware- which is the famous old "Only two out of three" rule at stake. If you run Slack/KFortune, you've probably seen the rule "You can have it done fast, you can have it done cheap, and you can have it done well. But you can only have two of those at once." I think that's pretty much generally true- because I run Qt-2.0 on my system, and it is much prettier than the old version- but it's sacrificed more speed. And it seems to be just as stable, although I have only tested unstable versions of KDE2.0preAlpha on it; I get the feeling that the actual toolkit is still as stable. The apps crash, though not as frequently as some of the GNOME 1.0 ones.

    So it really comes down to what your pref is- I can live with stable/pretty. I know as well as everyone else here does, too- Motif sucks hard. It's none of the above- it's ugly, slow, and jittery like an old wooden rocking chair (regarding stability). Netscape, which IIRC is programmed with Motif, crashes hourly on my system- but then again, I'm waiting for the Opera browser to be released for Linux. Kfm is nice, and usable, but I like Java stuff and it seems to be kinda... Explorer-ish. Oh, and Mozilla, strangely enough, doesn't seem to like libc5/glibc2.07 (which is on my Slack system). Otherwise, I'd use it; but then again, personally I don't prefer the GTK+. (Could you tell?)

    So you want that fast, pretty, or stable?
    (Done right, done fast, or done cheap?)

    -Chris

  54. Re:Whoops! by Arandir · · Score: 2

    Sorry, I misread it.

    But I still wonder why a "boring" license is a concern? Is Qt too boring? I mean, people used to pull out the heavy artillery everytime it was mentioned here :-)

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  55. Don't hate me for this but... by HarveyOpolis · · Score: 1

    First, let me say that KDE is my favorite thing currently out there. I like the widgets more than any other... er... I don't want to say window manager.

    Without looking at the programming aspects, I find Windows NT/9x the nicest interface. This doesn't really deal much with the question at hand... but I wanted to state that. The Windows widgets are small, yet work well (when the OS chooses to run anyway:).

    I find too many borders and oversized task bars in Linux. I have a large monitor and run at 1280x1024 resolution... yet I still find the task bar and border space consuming.

    I am sitting here on my workstation, and comparing the UI to my Windows laptop.. maybe it's the font support, maybe it's the icon size.. I can't put my finger on it.

    And as far as the programming goes... I've really only used Perl/TK and hacked up various KDE apps. I have nothing to say about the code... I'd rather have my code fit in with the "window manager". That way one only needs to hack just one config file to make my apps look pleasing to them.

    --
    - Hugh Buchanan
    - Userfriendly.com
    1. Re:Don't hate me for this but... by Anonymous Coward · · Score: 0

      I find Windows NT/9x the nicest interface.

      You have apparently never used a Macintosh then. All other considerations aside it has by far the most intuitive, powerful, and attractive interface available.
      Drag and drop is inconsistent and incomplete in windows. If you change a file extension it doesn't know what application to use to open a file.
      comparing the UI to my Windows laptop.. maybe it's the font support, maybe it's the icon size..

      Font support in windows is a joke. It's not good under X either, but in windows all the text is hideous, pixelated and very ugly.
      There are any number of reasons to choose an OS, but strictly on appearance nothing comes close to the MacOS.

  56. Oh for the love of god! by invenustus · · Score: 1

    If you don't know what you're talking about, keep your mouth shut. You just end up looking dumb.

    Why does every other slashdot post begin with this?! Just because you don't agree with somebody, or you have had different experiences, you don't have to attack them.

    --
    grep -ri 'should work' /usr/src/linux | wc -l
    1. Re:Oh for the love of god! by poohbear_honeypot · · Score: 1

      The first poster did NOT know anything about what he was speaking...

      hello.c: (win32)
      #include "windows.h"
      int WinMain(void)
      {
      MessageBox("Hello", "Hello", MK_OK);
      ExitThread(0);
      }

      ... or something like that. The parameters are close but not exact.

      All the people yelling things like "use NCURSES!" are completely missing the point. The guy wants a *GUI* toolkit. GUIs have a place, as do CLIs.

      ---
      Joseph Foley
      InCert Software Corp.

    2. Re:Oh for the love of god! by Black+Cardinal · · Score: 1

      OK, that works. I wasn't thinking of doing that way. I was thinking of going through the full steps to create a window, set up the message pump, yada yada yada. All the steps you would normally go through for a normal Windows app, but then just output "Hello, world." Doing it the long way would take many, many more lines.

    3. Re:Oh for the love of god! by warmi · · Score: 1

      Yeah. Win API is kinda klunky and rather not that pleasant to code but on the other hand is extremely powerfull. You can do just about anything ( GUI stuff )

      As to the 70 lines - it is true if you want to have real window and set up message loop. On the other hand once you have this the rest is much more lean ...

    4. Re:Oh for the love of god! by spectecjr · · Score: 1

      OK, that works. I wasn't thinking of doing that way. I was thinking of going through the full steps to create a window, set up the message pump, yada yada yada. All the steps you would normally go through for a normal Windows app, but then just output "Hello, world." Doing it the long way would take many, many more lines.

      Alternatively, you could just do it as a windows console app :)

      Si

      --
      Coming soon - pyrogyra
    5. Re:Oh for the love of god! by Salamander · · Score: 2

      I think he was talking about something that could become the basis for a real program, not some throwaway POS that only reveals the poor programming practices of its author.

      --
      Slashdot - News for Herds. Stuff that Splatters.
    6. Re:Oh for the love of god! by /dev/niall · · Score: 1
      Why does every other slashdot post begin with this?! Just because you don't agree with somebody, or you have had different experiences, you don't have to attack them.

      I said "If you don't know what you're talking about, keep your mouth shut. You just end up looking dumb" because the original poster said "which planet are you from ?".
      If someone else wants to be a smartass they should expect smartass comments like mine.

      So there, smartass. ;)

      --
      --
  57. Yep , license is boring . .. by Anonymous Coward · · Score: 0

    Vey nice. It is boring cause you have to pay for the software if you want to make money with it? How fucking professional -> I wanna make money but I don't want troll to be able to do exactly the same. You people are nuts - GPL will have to disapear for the simple reason that it promotes pure communizm -> we will all work for the good of as all, everybody according to their skills. It sounds nice on the paper but is completely unworkable. If you still don't understand why , time to take economy 101.

  58. You're not using it right. by torpor · · Score: 1

    If you find that mice are a pain in the ass, can I humbly suggest that you re-evaulate how you're using your mouse?

    They're not supposed to go anywhere near your ass.

    --
    ; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
    1. Re:You're not using it right. by Mignon · · Score: 1
      That's funny, but I agree with the original poster: I much prefer to be able to navigate with the keyboard in a GUI. I very much enjoy Windows' Alt+underlined letters in menus and dialog boxes. I find that much faster than using the mouse.

      Does the fact that Netscape 4.51 on Linux doesn't seem to have similar keybindings stem from the toolkit they used to write it? Forgive my ignorance - I've never done any X programming.

    2. Re:You're not using it right. by Anonymous Coward · · Score: 0

      Yes. Netscape-on-Unix was originally developed using Motif. Motif supports keyboard bindings, drag and drop, and some other useful tricks.

  59. Ah yes, I remember VIBE. by torpor · · Score: 1

    Visix VIBE was one of the better JAVA-based quick development environments around 2 or 3 years ago. It really is sad that Visix went out of business before they could get VIBE brought up to modern JDK specs...

    You know, I wonder if there's any chance that the source code to VIBE might be made available to the public? I remember discussing this possibility with one of the engineers a few years back when I was quite entrenched in using VIBE as a development tool, and he said there was some interest in doing this...

    I suppose now with all the assets of Visix being traded around amongst banks and whatnot, the chances of this happening are pretty slim.

    Still, it was indeed a great toolkit - it had springs and struts before pretty much any other toolkit for Java based development had 'em...

    --
    ; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
  60. This is a religious question by aheitner · · Score: 4

    but I'll attempt to justify myself anyhow. I'm choosing to skip the whole display driver architecture question and focus on application programming.

    First of all, I don't believe XML/whateverML/Mozilla to be the answer. I don't want my application written in a scripting language. Running everything through your browser is a bad idea, and everyone except MicroSoft thinks so. Frankly, I haven't seen a browser that doesn't suck (except Lynx!) and I'm not convinced I ever will. I'm not that impressed (yet) by the Mozilla efforts, tho I support them.

    I'm only going to consider compiled widget toolkits, no Java. I'm sorry. Java sucks. It involves way too much typing, and it's slow. I don't approve of anything that makes code slow. The whole point is to be fast.

    What does that leave?

    1. Motif I once sat thru a college lecture on Motif. In an hour, the lecturer had managed to cover use of the clipboard. No function name was less than 20 characters, and it took 15 calls to get the most basic thing done. No wonder Netscape under Motif was ~1million lines. 'Nuff said.

    2. MFC MFC isn't really so bad as a design. It can be annoying, and it often lacks flexibility, but it's not completely unusable. However, I find that using MFC (specifically in VisualC++, which conveniently writes the hard/annoying parts for you) is a good way to kill a project. It forces you to use their class heirarchy and objects, and if the generated code gets screwed up you can be in real trouble. The usability is also heavily dependent on spotty MS documentation -- if the documentation is bad (eg. the MDI multimedia devices in VC5) figuring it out can be a chore. A mediocre choice at best. At least it has nice built in database drivers.

    3. Visual Basic has got to be the quickest way of throwing together a UI I've ever seen. I really like it, especially for prototyping. I have no speed problems (since it's compiled now and officially in my OK book), but BASIC can be a dreadfully limiting language. Writing the interface in VB and all the hard code in a DLL isn't a half bad idea, tho. At the very least useful for trying out interface designs on people.
    Some built in database drivers.

    4. PowerSoft Power++, Borland CBuilder I've only ever used Power++. It's really just a wrapper around MFC classes, but it cleans a lot of stuff up and does all the hard stuff. It still pushes you to use MFC-type objects, but they're quite a bit less ugly to work with, and the docs are better. But if the rest of you're code's not in Watcom, Power++ might cause compiler issues (which is why I eventually dropped it). I've never use CBuilder, but it's more popular than Power++ so likely as good or better. Both of these are probably very good, fast ways of getting an application written. Mad build in DB drivers.

    5. Gtk+ A very nicely written, madly flexible widget toolkit with the added benefit of almost no baggage. In other words, at no point do you subclass some dialog box to start writing code. It's C dammit, there's nothing to subclass! This has great advantages, even for a bigotted C++ coder like myself -- it means that my application's structure, instead of the widget toolkit's, determines the structure of the code. The result is a much more maintainably laid out project. I also find gtk+ quite fast to work with. You can pack the dialogs in code and know exactly how they will turn out, write your handlers and you're done. Unfortunately there is no built in DB support anywhere -- it's a pure widget set, and you're on your own. You could always use direct SQL, or pick up one of several DB libraries I've never used (any recommendations?). Also, the function names are kind of long...oh well. Another plus: Gtk+ has a bajillion language bindings.

    I've never used Qt so I'm afraid I can't comment...

    I'll choose Gtk+ as the preferred widgetset. Applications written with it (rather than around it like some others) end up far more maintainable IMHO, and that's the most important thing for app developers.

    1. Re:This is a religious question by warmi · · Score: 1

      You are avid C++ coder and using GTK ?? Never tried QT ?
      QT is C++ dream. It is soooo much more pleasant to code in than anything C based it is hard to describe. You have to try it to belive. I am being serious - I can understand people who are afraid of C+ and would rather stay with what they know best, but since you already know C++ I cannot understand why did you decide to settle on something like GTK ( which tries to be object oriented using C ... uhhh)

      I used Win32 API, MFC, MOtif and EZWGL and nothing comes even close to Qt...

      Don't be scared, try it and you will recognize what I am talking about.

    2. Re:This is a religious question by Anonymous Coward · · Score: 1


      You condemn Java but praise VB? Java is faster than VB at raw execution speed, and it certainly would be as fast as VB if it is controling native Win32 widgets ala VIBE or even AWT.

      What do you mean way too much typing? Oh, you mean you actually can't get away with bad coding practices like violating type rules, casting away constness, casting to void*, etc? Or, you mean you must actually handle errors and exceptions rather than ignore them?

      Whatever, it's clear you have no clue what you're talking about as anyone who has run recently benchmarks on the latest Java VM's like IBM's, or HotSpot, or TowerJ know that the linear execution speed is atleast 90% of what C/C++ is.

      Even if you don't like Java, you would do well to adopt it's class library architecture for a C++ GUI.

      Swing's architecture divides GUI components into 3 pieces: a proxy/controller, the model, and the view/delegate.

      For example, what is a Checkbox? A checkbox is something that you can check/uncheck, and receive events from. Conceptually, a checkbox can have millions of different looks and can act on millions of different kinds of data, so why HARDCODE the look of the checkbox and it's data storage into the checkbox?

      So in Swing, you create a JCheckbox object, you give it an icon and/or a label, a hotkey or shortcut, and hook an event handler up to it.

      The JCheckbox doesn't store the STATE of the checkbox (like a Boolean of whether it is pressed or not) and it doesn't know how to draw a checkbox either.

      The drawing is delegated to either MotifButtonUI, WindowsButtonUI, MacButtonUI, or JavaButtonUI (or any other pluggable look-and-feel)

      Likewise, the JCheckbox object doesn't have any fields storing the state of the Checkbox. It delegates that to a Model object, which could very well storage the state as a boolean, int, textfile, or database field.

      As a result, Swing is extremely flexible. You can feed XML, or an LDAP query, a directory reference, or a anything else to JTree, and you don't have to change any code on the rendering or event handling side.

      And you can just as easily feed tree nodes into a List, Combobox, Table, or other widget, sharing data structures and using Models to implement a mapping.

      This contrasts to GTK's GTKTree which forces everything to be a GTKTreeItem, bleh! Or even QT's List widget which forces everything to be a QTListItem.

      Essentially, a GUI widget has no business pretending to be a collection/data structure and managing the storage of items.

      If I've got a linked list, vector or tree, those classes should manage the datastructure, and the GUI widgets should merely be a "view" into these structures.

      GTK/QT are "too close" to their data. The force the creation of marshalling/demarshalling code that copies your STL collections into the format that they want. Bleh!







    3. Re:This is a religious question by Chandon+Seldon · · Score: 1

      I'm afraid of the QPL, not QT -- That ain't $1500/program, that's $3200/developer (if you want to take advantage of it's cross platform capabilities).

      That's just nasty. I wouldn't complain so bad if Troll allowed Cross platform free software, but no, it's X only free software.

      I don't like the idea of going to the trouble to wright somthing and then having to pay someone else thousands of $ to be able to fully use it - even if I'm giving it away.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    4. Re:This is a religious question by PigleT · · Score: 1

      Unfortunately there is no built in DB support anywhere -- it's a pure widget set, and you're on your own. You could always use direct SQL, or pick up one of several DB libraries I've never used (any recommendations?)

      Use perl and the DBI:: and DBD::whatever modules? Use C/C++ and ODBC?
      Me, I can't wait for glade to hook gtk+ into perl.

      Just a couple of ideas :)

      ~Tim
      --

      --
      ~Tim
      --
      .|` Clouds cross the black moonlight,
      Rushing on down to the circle of the turn
    5. Re:This is a religious question by PigleT · · Score: 1

      Unfortunately there is no built in DB support anywhere -- it's a pure widget set, and you're on your own. You could always use direct SQL, or pick up one of several DB libraries I've never used (any recommendations?)



      Use perl and the DBI:: and DBD::whatever modules? Use C/C++ and ODBC?

      Me, I can't wait for glade to hook gtk+ into perl.



      Just a couple of ideas :)


      ~Tim
      --

      --
      ~Tim
      --
      .|` Clouds cross the black moonlight,
      Rushing on down to the circle of the turn
    6. Re:This is a religious question by Anonymous Coward · · Score: 0

      That ain't $1500/program, that's $3200/developer

      According to the Trolls that would be 2390 for the Duopack without quantity discount.
      And what's more, it includes 1 year of support.
      So you tell me, how much is one year of unlimited developer support at M$ or Borland? $5000? $10k? $20k?
      Even the MSDN is more expensive.

      Granted, though, that a free edition for Windows would be nice.

    7. Re:This is a religious question by Chandon+Seldon · · Score: 1

      If it were "QPL for Free Software/Commercial Licence for Commercial Software", I wouldn't complain at all.

      I want to be able to buy my support seperately.

      Mabie If we all e-mail Troll Tech "Release Windows Qt under QPL too!"... err, Yea Right; Oh well.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
  61. Java, Jikes and Swing? by Anonymous Coward · · Score: 0

    Since the man obviously likes Java and Swing, but is concerned about speed, what is the current state of native Java compilers for Linux?

    I have heard that Jikes (from IBM) is a fairly nice compiler, could someone more knowedgable shed some light on this topic? I haven't used it myself. Is it native?

    The real speed issue comes from interpretation, I beleive. The language itself should be capable of running as fast as any other full-featured OO language, with a decent compiler.

  62. One more note: GNUStep by aheitner · · Score: 1

    Ian points out I didn't consider GNUStep. I'll do so now:

    It's called "Objectionable C" for a reason.

    Go code in C++ you weenies!

    (warned ya I was a bigot)

    1. Re:One more note: GNUStep by Eidolon · · Score: 2

      You don't *have* to use Objective C to write for GNUStep. It may still be preferred, but GNUStep will follow Apple's lead and you can do it in Java (if you must).

      The same people tend to not like Objective C who don't like Smalltalk... there's a lot of lip service given to OO lately, but most folks have forgotten about the OO-est language that ever was.

      FWIW, despite its popularity, there are some bogglingly-good coders out there who find that C++ is hackish and unreasonable, whereas Objective C is closer to being something usable. In terms of really being OO/providing the advantages that OO is meant to provide, Objective C is (arguably) a better solution. C++ is much more widespread, and (arguably) easier to learn. I guess it's all a matter of taste.

      Either way, trying to turn C (portable assembler) into a messaging, OO language is one of those "impossible" computer science problems that will probably never be adequately solved. To wit: OO and compilers don't mix. First person to come up with a weakly-typed, late-binding, polymorphic cross-compiler, wins.

  63. Re:Whoops! by warmi · · Score: 1

    I will tell you what bothers them. They do not want to pay for commercial license and still be able to develop software and financially benefit from that. " I can do that but if troll want's to do that - uhrrdd, greedy bastards" - this kind of mentality I am talking about.

  64. What's wrong with the registry? by Mignon · · Score: 1
    How do you handle user specific vs. computer specific settings in .ini files? Just wondering; it's been a while since I did that kind of stuff, but I leaned towards the registry.

    One nice thing for dealing with my users was that I could change single settings on their computers by sending them a .reg file with that setting. This wouldn't wipe out their other settings, as would happen if I sent them a new .ini file. Yes, I know this is very dangerous, but I tried to use my powers for good.

    1. Re:What's wrong with the registry? by Black+Cardinal · · Score: 1

      My main beefs with the registry are its binary format and its monolithic "single-file-does-everything" design. Fortunately it doesn't get corrupted often, but it does occasionally, and then I have to either take the time to repair it or revert to my app's default settings.

      I don't deal with user vs. machine settings issue because I develop machine vision software for a manufacturing environment, and we only have one "user" for each NT system. Even if we did have different users, using .INI files works fine because each user would need the same settings, anyway.

      A nice feature of using .INI files is that once I set up my options for the various products we manufacture, I can just grab the .INI files and copy them to another machine with my software. No need to reconfigure. Of course, I can export and import pieces of the registry, but it's much simpler to just copy a text file.

      I also have options buried in my .INI files that aren't accessible from within my program (special modes for running tests, etc.), and it's easier and quicker to edit with a text editor than use RegEdit.

      Finally, we archive our software and settings using a revision control system. Using .INI files makes it possible to isolate everything pertaining to a single application for this archiving.

  65. Separate Issues by Anonymous Coward · · Score: 0

    A good keyboard-use scheme and total keyboard configurability are indispensable for ANY program or environment, graphical or not, mousey or not. The problem with keyboard use on the Mac and in Windows is that they FORCE you to use proprietary, off-main-block keys and keystrokes. The GUI that allows 100% WordStar-like, vi-like, Emacs-like, or comparable keyboard-based operation is the GUI I will use. -- dski (gotta register on this account some time....)

    1. Re:Separate Issues by spectecjr · · Score: 1

      Heheheheh :) I thought that was you :)

      Ideally, you want some way of specifying standard keys for any given operation, and then have the system always bind that key in any app which can perform that operation.

      But that's for advanced users only ;)

      si

      --
      Coming soon - pyrogyra
    2. Re:Separate Issues by itascon · · Score: 1

      May I humbly suggest that the systems you mention are no longer the defacto standards? I'm all for any system which lets me tab and alt-tab through the day and let's me alt-whatever any underlined action. I think windows did a fairly nifty job of implementing a consistent set of hotkeys - OS/2 did a better job - you could minimize and move windows with ALT-FKey combos... but to think of emacs, vi, and wordstar as the be all end all hotkey references is not neccessarily the best way o' thinkin', I think (but, if those hotkeys came into being as the defactos for modern GUIs, I would learn them. I'm not picky - I just like to be able to use my keyboard for ANYTHING.)

      --
      keeping the world safe for prematurely grumpy old men for oh, about 7 years now
    3. Re:Separate Issues by CAIMLAS · · Score: 1
      Exactly. Like he said. That's the good stuff! Awww, yeah!

      -------
      CAIMLAS

      --
      ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
  66. What about usablity performance? by Anonymous Coward · · Score: 0

    One word: Threading God damn it, not a single GUI uses it. (or not enough) Doesn't it bother anyone that you get a 'grey square of anti-matter' whenever the process is busy? Never saw that on OS/2. Hell don't even think that happened on my old Amiga!

  67. What is that ? GTK add ? by Anonymous Coward · · Score: 0

    How funny. This guy sets out criteria, asks the question and then proceeds to provide answer (GTK) that is probably last compatible with his own criteria.

  68. HTML is fine, CGI, yeach by Anonymous Coward · · Score: 0

    It would be very convient to create quick, easy to use apps, by using an HTML, javascript style system.

    If only javascript didn't SUCK. And wasn't so SLOW. And had some sort of well defined, working implementation.
    $stupidthing =~ s/JavaScript/perl/g;

    Wishes again for perl and HTML without that *@#& CGI interface.

    1. Re:HTML is fine, CGI, yeach by kuro5hin · · Score: 1
      Er? I sort of agree with you, but I don't get your use of CGI here. CGI is Common Gateway Interface, which, to tell you the truth, I have no idea what that phrase is supposed to mean, but in any case, it's the stuff that runs on the server. JavaScript has nothing to do with CGI's, other than perhaps you could embed javascript in pages that your CGI returns. And that would be Dynamic HTML (DHTML), which I think is more what you're talking about.

      With that interpretation of your post, yeah, I'd agree with what you said. Javascript would be cool if it weren't... err... javascript. First browser that lets me use perl to do UI stuff in the browser wins, hands down! And I don't mean embperl or anything server-side, I mean a way I can code perl functions into my html page and call them with event handlers. That'd be glory. Damn. That might not even be all that hard, now that I think about it. Whip up a little window creator in GTK/perl that does the basic html interpreting, and also allows me to eval code that it finds in the page... Anyone think this sounds sorta do-able? Even, at least, for a demo/prototype kind of thing?

      --
      There is no K5 cabal.
      I am not the real rusty.
  69. OO GUIS by Anonymous Coward · · Score: 0

    I've written a GUI Hierarchy for a program I'm writing. The basic idea behind it is one base class (GUIElement) which defines a number of virtual functions process, update, isRelevant which I can call to get the heirarchy to update. There are subclasses like pixelLayout which contains a list of other elements each stored at a specific offset from its reference whose standard functions it calls. There is also an action class which has many derived classes that can be passed to those objects which support it along with a Condition subclass which evaluated a specific input and determines if the action should be run. I think this is a pretty standard method of implementing a GUI, but I don't really have much experience in them so I've made most of this up on my own.

  70. depends on application by jetson123 · · Score: 2
    Which one is "best" really depends on your specific needs. I generally use JFC a lot (I think it's a very well designed and very complete toolkit), and do some small hacks in Tcl/Tk.

    As for the C/C++-based toolkits, none of them are particularly fun to use, and I think that's really the fault of the underlying languages. Neither C nor C++ are particularly conducive to writing GUI applications (but with enough effort, anything can be done). Among the C/C++ toolkits, I like GTK+ best. Qt isn't bad, but because it's C++ based, its uses are more limited.

    OpenStep looks like a great system, and I have used small bits and pieces of it, but the lack of standardization of Objective-C and its limited availability make it an impractical choice for me.

    MFC/Win32, however, wins the prize for being the uniformly worst designed and worst implemented GUI toolkit I have ever used, but its popularity makes it unavoidable sometimes.

    So, I use multiple GUI toolkits, depending on what I need to do. And different people prefer different toolkits depending on their needs and constraints.

  71. Motif by Anonymous Coward · · Score: 0

    I wish you people wouldn't sell Motif short all the time. Suns, SGIs et. al. all run CDE motif, and new application development is still fairly prevalent in the hard science/military sector.

    Before everyone bitches at me, please recognize the following:

    1) A lot of apps work well and look okay under Motif. You have to be knowledgable about resource management to make it look good.

    2) It came out like 13 years ago. Before Linux. Before M$ windows (win 2.0 might have been out, not many people used it, and MS looked like shit compared to Motif). Before KDE. Before Gnome. Miguel de Icaza was like seven years old or something. Give some credit where credit is due, and maybe a little forgiveness.

    3) It made life a lot easier for programmers, since they were able to work at a substantially higher level than Xt.

    4) I like Doug Young's book. I can crank out Motif/C++ apps pretty fast now. Fully tested, in a few days. Granted, the quick ones are only several hundred lines of code, and I use a gui builder to do the geometry.

    5) I'm regularly in a room with over 90 SGI/Irix workstations, running Motif/OGL apps, and they rarely crash. As in: They run for months at a time, no problem.

    6) If you want to sell your apps, Motif or Borland are generally less expensive than KDE. I think you can distribute Motif apps statically linked for free, and the development CD is as low as $75 or so. With KDE, the development is free, but the commercial distribution rights are, what $1000?

    7) Pro-level engineering workstations ship with Motif. There's something special about a $20K engineering workstation, they just don't feel like a junky 'ol PC. They have sauce, or something.

    8) I prefer C++ (the language) but dislike it's zealots. They were never really that deep into C, if they actually hate it. A well designed struct, in a well designed environment is a beautiful thing.

    Well, I guess that's it. Motif has been around for awhile, and has fallen from grace, but it was first, and remains pretty cheap for commercial application development. If anything, the Open Group missed the boat on Open Source, it's done wonders for Linux, KDE and Gnome, but that's a different issue.

    I think some respect is due, others will disagree.

  72. Qt comparison to Motif, others by Anonymous Coward · · Score: 1

    I've programmed for years with Motif, and 2 years now with Qt. Using C-style callbacks with C++ is an intrinsic problem with all GUI toolkits, since by default C++ objects use a hidden "this" pointer which C callbacks do not support. So you have to do something to the effect of passing the object pointer as a parameter as a callback. The Qt toolkit hides all the details of this from the programmer in a nice way. Yes, moc is non-standard, but even Gtk+ in my opinion does not offer a better solution, because the amount of code required to make a GUI work with Qt is both easy to follow and small. As to Qt forcing you to program in a certain way, yes, that's true. A Qt program uses inheritance, abstraction and overridden functions in the way C++ should be used. This is the same way other toolkits, such as MFC++ and Borlands OWL for Windows work. If you're using C++ in any other way you're missing the point of OO programming. Our company is doing development using Qt for the additional reason that the apps we write can be quickly ported to/from Windows, Linux or other Unixes, and the executable is native to the OS as opposed to a Java type solution. Like it or not, that other OS is used by many people, and Qt gives us the ability to write for it using Linux, which is a by far better development environment. The HTML documentation for Qt is superior quality and highly usable. A new programmer can be up and running quickly and easily by following the tutorial. As far as KDE vs. Gnome, I don't have much experience with Gnome but I tried it on RedHat 6.0, thought it was OK but I prefer KDE. I admit I am biased, though.

    1. Re:Qt comparison to Motif, others by Anonymous Coward · · Score: 0
      It is very conveniant to come to the office, sit down, read slashdot, see an interesting topic and realize that someone has already said EXACTLY what I would have said.

      Going from Motif to Qt can't really be described. Everyting that was difficult/cumersome/frustrating in Motif is suddely simple. I can mention callbacks, widget types, widget creation, DND, etc..

      I have one problem though. We still ha a lot of Motif code that need maintenance from time to time. sigh...

  73. why are most in c++?/alternate language bindings by pixel+fairy · · Score: 1

    it seems like a lot of nice toolkits (especially
    fltk) are in c++ and force you to use c++. if
    you write the tool kit (or framework) in c then
    its users can use c or c++ (or python etc).

    this is a practical issue when dealing when doing
    things like writing a gimp plug in (which cannot
    be done in c, thus you cannot use fltk).

    id like to see a good GUI framework in c, themeable, and cross platform. fltk is light and
    cross platform, but its c++. gtk is c, but its
    heavy and only runs on unix. ok, so dont *really*
    care for windows or the mac, i still like having that choice and a well written cross platform
    toolkit could be good for things like berlin or Be.

  74. Merits of Java by randolfe · · Score: 2
    It continues to amaze me that the /.er community is so quick to trash Java. The attitude regarding Linux is certainly not mutual; although, perhaps it should be given the narrow minded attitude that prevails here. I especially took note of one comment above outright comparing Java to VB in terms of disgust. Puzzling.

    The AWT was decent given the enormous stride JavaSoft was attempting in cross platform VM architecture. Swing is another giant leap forward. Perhaps many of the PERL types around here don't like having to operate in a pure MVC architecture. However, my experience is that Swing results in much less code and great reusability and ease of debugging. It is still slow, but not too slow.

    I've implemented very large systems that hold up in a real-time environment in a major RBOC's network engineering and support center. Our Swing applications (not applets) function without flaw on Solaris, NT, BSD and RH Linux. We only had trouble with Macintosh.

    What I think many around here don't fully comprehend as that these polarizing, religious positions being taken are exactly the same kind of fractionalizing that tore the BSD community apart. If you continue to drive out differing opinions you'll end up with a real kick-ass system that no one serious uses. I, for one, think I'll take my efforts and ideas somewhere else more tolerant of diversity.

    1. Re:Merits of Java by Anonymous Coward · · Score: 0

      I love coding in java too, and hate perl (passionately...). I'm still trying to figure out why the linux community seems (for the most part around here anyway) so anti-java, pro-perl. Unix is a nice clean, easy, hi level sort of thing--windows only looks easier because they have an easier graphic front end to cover up the low level wackiness--java is a nice clean, easy, hi level sort of thing. The ugly "mongoloid retard" structure of perl actually reminds me more of something a M$ coder would dream up (perl mongoloid?monger? i forget). About the only time i'd ever prefer to use perl would be if i was entering an obfuscated code contest--i'd just enter the cleanest perl code i could find.

    2. Re:Merits of Java by ekstefan · · Score: 1

      I have to admit I don't particularly enjoy Java, even tho' it has a great many virtues compared most application programming languages in general use. Especially something like C++.

      I have the feeling one set of people don't like Java because its object-oriented at all and it's not directly compiled down to machine code -- on Linux these people will moan about the 'inefficiency' of garbage collection and advocate pure C -- another set don't like it because tho' object orientation is okay in small doses Java takes it way too far, plus enforces static typing, is too formal, and you have to compile it at all -- On Linux these people will advocate Perl, elsewhere they might favour VB.

      Yet more will complain that it looks too much like C, isn't dynamic or introspective enough, and you have to compile it at all -- these will probably advocate Lisp/CLOS/Scheme.

      Myself, I'm afraid I've irredemably been infected with Smalltalk, so I moan that Java has any sort of static typing at all, syntactically looks too much like C, you have to compile it at all, and isn't dynamic or introspective, or even object-oriented enough.. (-;

      Point is, Java hits a particular compromise position between a number of language styles which means that it inspires either great love for being the improved leading-edge and, most importantly, well supported (so you can persuade your boss to let you use it) successor to language-X you've always been waiting for, or great hatred as the unaccountably successful, horrible screwed up missed opportunity to bring all the neat features and advantages of favorite language-Y to the mainstream.

      obActualTopic...

      From my limited experience of Swing it has quite a nice design, but I'm not sure I'm convinced with the way the VC part of the MVC triad seems to have been merged.

      For a different take on an updated MVC, have a look at MVP at IBM or a somewhat simplified Smalltalk implementation at ObjectArt s

    3. Re:Merits of Java by randolfe · · Score: 1
      Your points are well taken, and I tend to agree with your analysis of the differing positions taken regarding Java. Myself, I was a C++ and Smalltalk'er in my pre-Java incarnation. I too believe that the Smalltalk/CLOS style object-based approach is theoretically superior. Problem is that in practice there are very few proficient Smalltalk engineers on Earth. Witness at least 3 failed multi-million $ Smalltalk projects at Ameritech Corp. earlier this decade. Hint: it wasn't necessarily the technology that failed. There are at least a few more *real* Java engineers on the planet.

      I guess that it comes down to a pragmatic versus theoretical debate. Java, as you point out, is a series of pragmatic compromises infused into a solid theoretical base. C/C++ syntax, strong typing, "hybrid" MVC, near-late binding injected into an Object-Based framework. My first impression was "VisualWorks+ObjectPascal(pre Delphi) with C-style control syntax".

      But, to again reiterate my original frustration: I cannot comprehend the outright animosity that spews forth from the ./-Linux community about Java. I realize Java is a "Corporate tool of The Man". But, at the same time it legitimizes Linux. It's fun to pontificate extreme ideological positions over a Guiness, but real life is a series of compromises. After you've been in this industry for a couple of decades you begin to need a spreadsheet to keep track of all the failed great technology movements. I fear this is the fate of Linux if its primary proponent base continues to drive out parallel, symbiotic tech trends. Java, BSD, CORBA, etc. all have a similar vector to Linux; and all will benefit from exchange of energies and ideas. Standing alone, these all will go in the failed-technologies spreadsheet on Bill Gate's Win2K laptop.

      FWIW

    4. Re:Merits of Java by MrChumple · · Score: 1

      I agree with you 100%. Java gets bashed on a little too much by the perl lovers. Especially by the slashdot perl lovers.


      I have no problem with either language, and actually prefer them both for different tasks. There are tasks that are wholly unsuited to Java, like simple text file processing and database population scripts. I usually just write those up in a matter of minutes with perl, because that is easier than having to use StringTokenizers, and the GNU's regexp package. Perl maps well to some problems, and Java to others. I prefer Java for large projects, because it is easier to build reusable frameworks, and interact with other technology standards, like CORBA.


      As an employed programmer, I prefer Java, because of the monetary benefits. Java developers are in high demand where I live, and fetch a better salary than the perl jobs around here.

    5. Re:Merits of Java by jafac · · Score: 1

      I think that the reason that the linux commmunity hates Java so much is that it claims to be cross platform and IS NOT.

      (is too)
      IS NOT
      (is too)
      IS NOT
      (is too)
      IS NOT
      (is too)
      IS NOT
      (is too)
      IS NOT
      (is too)
      IS NOT
      (is too)
      IS NOT
      (is too)
      IS NOT
      (is too)
      IS NOT
      (is too)
      IS NOT
      (is too)
      IS NOT
      NOT NOT NOT NOT NOT NOT NOT NOT 6.02*10^23 NOT!!

      "The number of suckers born each minute doubles every 18 months."

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
    6. Re:Merits of Java by Anonymous Coward · · Score: 0

      some facts to support your statements would probably be in order... (or are you just trolling? ;)

      i personally have written 3 non-trivial still-being-used applications in java (using jdk's 1.1.3 -> 1.2.1), and i can run each of them unaltered very successfully on 4 different platforms without a complaint about performance after the ibm vm came out for linux.

      (performance was quite to very good on every other supported platform)

      please, educate us...

    7. Re:Merits of Java by jafac · · Score: 1

      4 different platforms IS NOT cross-platform.

      Compared to how many platforms something like SmallTalk or Perl run on, Java is a joke.

      Can you implement the latest Java on Linux? How about Mac OS? How about Be? How about BSD? - anything on BSD?

      That's like, NT is cross platform. Lookee, we run on Intel 486, Pentium, PentiumII, PentiumIII, AMD, and Cyrix. Wowee!

      "The number of suckers born each minute doubles every 18 months."

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
    8. Re:Merits of Java by jafac · · Score: 1

      oops. Meant Squeak. Not SmallTalk, but I think SmallTalk is also more cross platform than Java. Not sure.

      "The number of suckers born each minute doubles every 18 months."

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
  75. 200 lines for a frontend by Chris+Pimlott · · Score: 1

    I have had no coding experience with either QT or GTK, but I have to say that being able to code a nice graphical UI in 200 lines sounds pretty good to me.

  76. Almost but not quite. by Malcontent · · Score: 1

    I agree mostly. Javascript needs to get much better. There needs to be some kind of mechanism for accesing the back end databases. There needs to be a little better control on the look and feel and positioning. Oh yea it's got to be browser independent (that's the killer!).

    The Mozilla thing sounds awsome I hope they pull it off.

    --

    War is necrophilia.

  77. LGPL does not cut it? by pixel+fairy · · Score: 1

    why does the LGPL not cut it?

    1. Re:LGPL does not cut it? by Anonymous Coward · · Score: 0

      Because: a) he has not read LGPL b) he failed to understand it c) he is thinking of GPL d) all of the above

  78. Re:Whoops! by Arandir · · Score: 2

    Qt2.0 (available now) is Free Software according to Richard Stallman, and Open Source according to Bruce Perens. You only have to buy a proprietary license if you intend to use it for proprietary applications.

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  79. Good but bad - more bad by CAIMLAS · · Score: 1
    Yes, it's simple, and very very portable, but, is it fast? I can't imagine running a GUI that takes several seconds to render on startup, after running through the interpeters. It doesn't seem at all practical. For some things, yes, like web-based applications, it makes a lot of sence. But I don't want it on my desktop.

    -------
    CAIMLAS

    --
    ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
    1. Re:Good but bad - more bad by Biff+Cool · · Score: 1

      Maybe I'm missing the point of separating the GUI from the application but what in addition to being slower doesn't that make the entire program more unstable, in someone just cutting up the HTML file and destroying the interface? (Sorry but I code for Windows so protecting the user has been deeply engrained in my brain as the Prime Directive)

      --

      Conscience is the inner voice which warns us that someone may be looking.
      -- H. L. Mencken

    2. Re:Good but bad - more bad by sugarescent · · Score: 1

      Maybe I'm missing the point of separating the GUI from the application but what in addition to being slower doesn't that make the entire program more unstable, in someone just cutting up the HTML file and destroying the interface?

      I don't suppose you've ever been concerned about Windows users destroying your DLLs, have you? What you speak of and wiping out C:\WINDOWS\SYSTEM are exactly the same thing. If the user wants to mess with the HTML interface files and screw them over, that's his/her problem. Besides, it offers more flexibility in that the user could even rearrange the interface if he/she wanted to. People who want to learn how to do this will. The majority of users will not care. And if the user goes into no man's land, he/she has to deal with the possible consequences.

    3. Re:Good but bad - more bad by Anonymous Coward · · Score: 0

      >Besides, it offers more flexibility in that the user could even rearrange the interface if he/she wanted to. People who want to learn how to do this will. On the Mac, people have been using ResEdit to do this for years. You can do a lot of customization with no programming knowledge what-so-ever.

  80. Re:Qt Comeliness by Arandir · · Score: 2

    Pre Qt2.0 used Motif or Windows style widgets. They were virtually identical to their counterparts. So don't blame Qt, blame Motif and Windows.

    Post Qt2.0 has fantastic styles! I mean WOW! It comes standard with Motif, Windows, CDE and Platinum styles and additional styles are extremely easy to add. For examples, check out some of the KDE2.0 screenshots.

    By the way, THEY'RE NOT KEYWORDS!!! If they were keywords, Qt apps wouldn't be able to compile under g++.

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  81. Re:Whoops! by Anonymous Coward · · Score: 0
    I'm really sick of the stupidity on Slashdot. Just take a look at the Open Source Definition and tell me if you still think that Qt is Free Software.

  82. Java does not exist by Alex+Belits · · Score: 1

    because right now all implementations of it are still unreliable -- the reliability of application should be limited by its developer's stupidity, not by bugs in the language implementation, and in Java so far the user has better chance to get burned by the JVM bug than by actual flaw in the program, even when program is very buggy.

    --
    Contrary to the popular belief, there indeed is no God.
    1. Re:Java does not exist by BrerBear · · Score: 1

      I've coded GUI frameworks for Java on Windows and Solaris day in and day out for going on three years. I haven't seen a VM bug in more than a year. JDK bugs, occasionally. Application bugs, of course. But not VM bugs.

    2. Re:Java does not exist by Anonymous Coward · · Score: 0

      i can very safely say that in every application i've ever had to support that was written in java, the SOFTWARE ENGINEERING OF OUR PRODUCTS (or third party products not being the virtual machine) were to blame for all failures, not the virtual machine itself.

      so, your statements need some significant support before i'll really slide toward your side of the argument...

    3. Re:Java does not exist by Anonymous Coward · · Score: 0

      FUD you fool FUD!

  83. Re:Whoops! by Anonymous Coward · · Score: 0

    So what could the Open Source Definition tell about free software? Free software is defined by RMS and according to him qt _is_ free software. Who cares about ERS's definition about Open Source anyway.

  84. The merits (and demerits) of Swing by SuperKendall · · Score: 1

    First, let me start off with saying I've only done a bit of raw Xt programming, some MFC, and Swing programming - so my experience with newer GUI toolkits other than Swing is definatley limited.

    That said, I'll list a number of benefits of Swing that I found. I designed and wrote (with a small group of other people) a rather large web distributed Swing application (not quite an applet, but almost) in Java 2, and touched on pretty much every aspect of Swing during development.

    Some of the benefits of Swing I found were:

    * Very easy to extend and alter behaviour of custom components (combo boxes with custom colors per item straight from a database? Easy!)
    * Extenions really are reusable, usually, and work well with other GUI components.
    * Very easy to follow MVC model in Swing development.
    * Layout managers (once understood) are great and make it easy to quickly build GUI's that will resize well.
    * Swing provided a great set of most GUI components for a base.
    * Swing and 1.2 was a very stable combination (once we rid ourselves of memory leaks, see below)

    Our target platform - P90's with 32MB of RAM. I won't say it was the snappiest GUI ever on that platform, but it did run acceptibly.

    The problems encountered:

    * Memory - that Swing app did take up a good deal of memory.
    * Memory Leaks - while we developed our Swing app, Swing did have a few memory leaks in the more fringe areas of use (like internal frames). We were able to work around and fix them though.

    I think to really take off for application deployment, you really need some sort of launcher that would run multiple Java apps in one VM. With one VM, a number of Swing apps wouldn't really be a problem but without such a launcher more than two or three swing apps would probably be too memory intensive.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  85. Java not unreliable by Anonymous Coward · · Score: 0


    Maybe on Linux. But on Solaris, NT, and AIX it's been *ROCK SOLID*

    My company runs a heavily trafficed server based on Java that has an uptime months (doesn't crash, just it's being updated with new features all the time)

    So quit yer-FUD. Yes, the VMs in the browsers suck, but JDK1.1.8 is super solid on Solaris and NT, and probably on all of IBM's platforms like OS/2, OS/390, etc.

    1. Re:Java not unreliable by Alex+Belits · · Score: 1

      So quit yer-FUD. Yes, the VMs in the browsers suck, but JDK1.1.8 is super solid on Solaris and NT, and probably on all of IBM's platforms like OS/2, OS/390, etc.

      Maybe safe-to-restart web backends can "survive" better than GUI applications. But show me _any_ implementation of Java that allows Hotjava to go through entire java.sun.com without crashing by some definitely not Java-level fatal error.

      --
      Contrary to the popular belief, there indeed is no God.
    2. Re:Java not unreliable by Anonymous Coward · · Score: 0

      heh, your statement dosent make any sense. what proof do you have that Hotjava crashes when viewing some pages because of bugs in the java implementation and not because of bugs in Hotjava itself? you really are looking to start a flame war aren't you, eithor that or you have begun to believe your own FUD.

    3. Re:Java not unreliable by Nabuchodonosor · · Score: 1

      Somehow I feel that even if I show you "an implementation of JAva that allows HotJava to go through entir...", most of slashdotters will find something else to complain about java. Somehow I feel even with a 100% reliable, and fast JVM they wouldnt even try to write a single line in Java. Why? Because is not C-or-Linux-or-Perl.

      (I say *most* of them, not *all* of them)

      --
      ---> Did you know Linux stands for Linux Is Not UniX ?
    4. Re:Java not unreliable by Alex+Belits · · Score: 1

      Because null pointer exception is not what Java program can generate by itself.

      --
      Contrary to the popular belief, there indeed is no God.
    5. Re:Java not unreliable by Anonymous Coward · · Score: 0

      of course it can, you probably haven't done much java have you, here's one class test { public void main (String argv[]) { Object myObj = null; System.out.println(myObj.toString()); } }

    6. Re:Java not unreliable by Alex+Belits · · Score: 1

      of course it can, you probably haven't done much java have you, here's one class test { public void main (String argv[]) { Object myObj = null; System.out.println(myObj.toString()); } }

      There were other things, too -- such as plain segmentation faults.

      --
      Contrary to the popular belief, there indeed is no God.
  86. REALbasic approach by Chris+Johnson · · Score: 2

    I can talk about the underlying structure of REALbasic, a rapid application development tool for the Mac.
    Essentially, the entry level is absurdly easy. RB has various controls that 'run themselves'- if you drag a button onto a project and immediately build it, the button knows how to be clicked, but doesn't do anything, and the project has a 'quit' menu item that has a 'command-Q' keyboard shortcut like a proper Mac app.
    When you write code (and you could make an IDE where you'd write C code this way), you go and open a code window where all the control objects reside (and separate methods, 'properties' (variables), that sort of thing), and there's a listbox- you select the button and open a disclosure triangle and there are various events, such as Action (button was clicked), mouse enter and exit events, etc. You mostly use the main ones like Action.
    Suppose you have a statictext object in the window, called StaticText1. You can give it characteristics in the IDE, but then to change it at runtime, you might have the button change it like so- in the Action event, it'd say-

    StaticText1.text = "Note, assignment operator in RB is just ="

    Then you just run the program and when you click the button that event fires and causes that code to execute. What happens after that is that the execution 'falls out the bottom of the method' and returns to the main event loop, and you never see the main event loop at all- to you, it's as if all the controls run themselves, and you write most of your code to work controls programmatically or be worked by them. Many programs end up totally centered around the 'Go' button, whatever that is- if there's a button that says 'Go' or 'Render' or 'Execute' then the bulk of the code is probably in there, the rest in methods, perhaps some in a separate thread (treated sort of like another control).
    The framework assumes everything will be based off of the GUI controls, and that half the hassle is making the controls be controls- so it implements them all, has them fully functional even if you write _no_ code (they just don't _do_ anything at all but actuate) and then you reference them with other code like
    if Checkbox1.value then
    RadioButton4.enabled = false
    end if
    ...that sort of thing. You can rename them- I just am using defaults to illustrate. The point is, everything is positioned as if it was a drawing application- nice slick GUI builder- then you can compile the mockup and actually run it, and begin adding code to controls bit by bit, constantly trying out the program to see how it's doing.
    The essence of this approach is the terms to which it can be reduced- you can drag simple controls onto the project, you can use the controls' simplest methods to do simple tasks- and a heck of a lot of programming tasks (ESPECIALLY for Unix!) only require _simple_ controls. You could do amazing housekeeping things in Unix with a project window, a statictext control, a editfield control with scrollbar, a button control, a file class (aka 'Folderitem' in RB), and a read-text-file and write-text-file method on the file class...
    This does gloss over some stuff- the string datatype in RB is very flexible and can dynamically scale up to gigs in size, in fact there IS no fixed length string, they are all the fancy dynamic (slower) type. But the point is approachability- and it's damned hard to beat REALbasic for approachability, even Visual Basic (somewhat the inspiration for RB) is far more cluttered with crud. RB is very clean- this limits, but it also makes simple tasks _real_ streamlined, and that has value too in an application framework. It's not going to be Mozilla- but it's worth seeing what it'll do.

  87. Re:Whoops! by Arandir · · Score: 2

    1) Free redistribution. Yes
    2) Source code. Yes.
    3) Derived works. Yes.
    4) Integrity of author's source sode. Yes.
    5) No Discrimination against persons or groups. Yes.
    6) No Discrimination against fields of endeavor. Yes.
    7) Distribution of license. Yes.
    8) License must not be specific to product. Yes.
    9) License must not contaminate other software. Yes.
    10) Example licenses. N/A

    To quote Bruce Perens, "Troll Tech released a fully Open Source license for Qt".

    So yes, I do still think that Qt is Open Source Software and I still think it is Free Software.

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  88. 1 line, 6 seconds, no 'code', in REALbasic by Chris+Johnson · · Score: 2

    *drag statictext to project window*
    *click in 'value' section*
    *type 'Hello World'*
    *run*
    That's on a Mac, but there's no reason this style of application framework couldn't be used on Linux. All it takes is someone to code it and keep things clean and uncluttered. 'Hello world' is not hard in a proper GUI builder. It shouldn't require _any_ code.

    1. Re:1 line, 6 seconds, no 'code', in REALbasic by spectecjr · · Score: 1

      *drag statictext to project window*
      *click in 'value' section*
      *type 'Hello World'*
      *run*
      That's on a Mac, but there's no reason this style of application framework couldn't be used on Linux. All it takes is someone to code it and keep things clean and uncluttered. 'Hello world' is not hard in a proper GUI builder. It shouldn't require _any_ code.


      Sounds like writing Visual Basic code... now the question is... what kind of code do you have to put together in C on the Mac to do the same thing? All a RAD tool does is hide the underlying architecture, which is good for somethings, but hopelessly useless when you want to break out of the sandbox it forces you to play inside of.

      Simon

      --
      Coming soon - pyrogyra
  89. Hark at all the programmers who have no *real*idea by Malc · · Score: 1

    It seems that most of the people who've posted a reply here are either programmers or at least extremely computer savy. Who cares how good a toolkit is (ok, I do!), it's how good the UI is for computer illiterate users that matters, and how quickly you can get a usable product to market.

    Then again, it all depends on your target audience. I'm into making software that makes me enough money to pay for all of my hobbies... that means targeting a mass audience. That means users who don't find computers intuitive like most of us on /. It also means most of the UIs that we use under X are no good to them. Some people can't handle Mac's, how the hell are they supposed to cope with AfterStep?

    I hate MFC (don't get me started on the programmatic problems with the design and API!), but I have to admit that it is really easy to write a UI that most people can use more easily. Most of the X UI's are just butt ugly (KDE, CDE, GNOME are changing things slowly) - has anybody been able to use X without a mouse (cursed thing)?? Doubt it.

    Platform independent GUI toolkits lead to UIs that are ugly, un-functional compared to native UIs and a pain to develop. I had the miss fortune of working with Neuron (Moron) Data's toolkit for a while. Now I run screaming at the slightest word of it. Java UIs are very clumsy (I work with Java, so I know), and it takes a lot of work to make them useful to unwilling or illiterate users.

  90. If you want to get _competitive_ ;) by Chris+Johnson · · Score: 2

    Open() //open event of app
    msgbox "Hello World"



    That's it- in REALbasic. I mean, if you're going to use a _messagebox_ then I don't even have to drag any controls into the project window at all. But I think that's cheating, it's not useful enough :)

    1. Re:If you want to get _competitive_ ;) by poohbear_honeypot · · Score: 1

      It's no more or less useful than printf("Hello, World!\n"); =)

      ---
      Joseph Foley
      InCert Software Corp.

  91. Newer versions of Swing1.1.1 and JDK1.3 fix by Anonymous Coward · · Score: 0

    Swing1.1.1 fixes a lot of the memory usage issues, and JDK1.3 (recently released beta on Win32 and Solaris) improves speed, startup time, and memory usage issues alot. see http://java.sun.com/products/jdk/1.3/docs/relnotes /features.html There is a *great* misconception among the Slashdot crowd about the speed of modern Java VMs. The 2D rendering library still has some performance problems, but the linear execution speed of raw Java is right up there with C++. Don't believe me? IBM rewrote Java's arbitrary precision arithmetic classes (the kind that can be used to build RSA cryptography for example), and the end result was a 5x speedup over the previous native C++ version. Only the GUI stuff is slow and only in certain areas, so it's merely a subjective impression that Java is slow. JDK1.2 with HotSpot, or IBM's VM will reach 90% C/C++ speed on raw execution speed (like say, an MD5 or DES algorithm)

    1. Re:Newer versions of Swing1.1.1 and JDK1.3 fix by renoX · · Score: 1

      > There is a *great* misconception among the
      > Slashdot crowd about the speed of modern Java VMs.

      Well, there is a reason for that: one year ago I developped a small application in Java/Swimg with the JDK 1.1.7 and then the Java2 platform, it's target was a P166 with 16 MB of RAM with Windows95 : it was toooo sloooow, I added 32 MB of RAM and it ran just slowly.

      > The 2D rendering library still has some performance problems
      Too bad, it's the part which is used by many application.

      > Only the GUI stuff is slow and only in certain areas, so it's merely a subjective impression that Java is slow.

      Sorry but we're talking about choosing a GUI toolkit here, so that's a bad point.

      Oh BTW did I say that printing in Java2 was incompatible with the printing with JDK1.1.7, that it was really sloooooww (many times, I thought that the process was dead but it wasn't!) and that it is really hard to print non trivial thing in Java (such as a formatted text page with some images in it)...

  92. Threading by Anonymous Coward · · Score: 0

    Addition: All of the BeOS' APIs are multithreaded, by design. :) Before I learned C++, I had this mental concept of each object "living" by itself, (in it's own thread) and in BeOS, I'm getting really close to a virtual world of living objects, thanks to the threading and messaging. I could never love another OS like I love the BeOS. :D /Jonas Sundström, s96j1su@csd.uu.se home.beoscentral.com/mirilla

  93. Re:Whoops! by Anonymous Coward · · Score: 0

    Anything that discriminates against commercial use is PER DEFINITION not Open Source software! Stop bending the rules.

  94. You can't write OO code in C by Malc · · Score: 1

    C as a language doesn't support the required features to allow you to program in an truly OO manner. The best that you can do is "object-based" programming. Unless you're doing lots of funky things such as using the preprocessor: which is one of the things that makes C/C++ bad languages for most programming. However, programming in C++ doesn't guarantee that you're programming in an OO manner either due to it's hybrid hacked together from C history. Bad non-OO programmers will still be bad. People who think ADTs are OO will still be object-based programmers, not OO ones.

    1. Re:You can't write OO code in C by Anonymous Coward · · Score: 0

      Define "truly OO manner". There is nothing in OO concepts that can't be expressed in C or any other programming language. OO is a mindset, not a language feature.

    2. Re:You can't write OO code in C by Avus · · Score: 1

      There is nothing in OO concepts that can't be expressed in C or any other programming language.

      You can't enforce data hiding and encapsulation, many kinds of compile-time type checking (let alone RTTI), no type-save, generic templates or containers, just macros that are processed by the preprocessor, thus making automatic type checking impossible and debugging very unpleasant (references are to the precompiler output, not the actual source code).

      Moreover, abstractions like overloaded functions and operators aren't possible.

      OO is a mindset, not a language feature.

      Sure, but unless you are ingenious, know all your structures and object hierarchies by heart and are not coding in a team, it is vital that OO be supported by language features.

      It's just like you can do anything by writing zeros and ones as well...

    3. Re:You can't write OO code in C by Salamander · · Score: 2

      >C as a language doesn't support the required features to allow you to program in an truly OO manner.

      Anything expressible in C++ is expressible in C. This was an explicit design decision for C++. Therefore, C supports every feature C++ does, and if that's not enough to do OOP in C then it's not enough to do OOP in C++ either.

      There's an old saying: a bad programmer can write bad FORTRAN in any language. I've seen C and even assembly code that is very object-oriented despite the limitations of those languages. OTOH, most of the worst and least OO code I've ever seen was in C++. We're talking about code that abuses statics and globals, that uses inheritance in unsavory ways (e.g. just to avoid having to type parameters) without any rational parent/child/peer model in mind, that uses overloading to make the code unreadable, etc.

      Using C++ does not make code OO, and in some ways even interferes with that effort. Criticizing something for being C rather than C++, without adressing whether it is or is not good OO, is a sure way to prove that you don't even know the difference.

      --
      Slashdot - News for Herds. Stuff that Splatters.
    4. Re:You can't write OO code in C by Malc · · Score: 1

      "Anything expressible in C++ is expressible in C",
      Surely it's the other way around. C++ was made backwardly compatible to C so as to make migration easier and lower the resistance to change of the existing C programmers. How do you safely express polymorphism in C?

      I agree with you about bad programmers. I wouldn't say whether C or C++ is better. It should be a choice of whichever is more suited for your problem, environment, team, etc.

      "Using C++ does not make code OO"
      I absolutely agree. But if you are capable of producing OO code, it is easier to express yourself in C++ than C.

      I've personally used C++ for several years and no longer like it that much due many of the problems it causes, especially if you have a team comprised of a large number of junior programmers, or programmers that don't THINK OO.

  95. Please look at Fresco; it needs support. by Anonymous Coward · · Score: 0
    Last fall I investigated Fresco and wrote a little program with it. It has what looks to my inexperienced, but well-read understanding, the most modern set of features of any GUI library. (Multi-platform (NT & Unix now), C++, Great Tex-style layout, good signaling, CORBA, structured-graphics (some 3D support) and editing, X11-style license, more.)

    The Berlin project is said to be incorporating many of its concepts

    Unfortunately, it's documentation, while very good is not extensive, there is no printing support, and it is said to have fewer widgets than some other libraries. It has only a few significant users and the current maintainter is not actively developing it.

    Give it a try. I think you'll be quite impressed by one of its several demos in which can make a copy of a drawing editor with another copy and work its buttons, etc, after rotating the whole copy.

    I hope someone can be found to keep it alive, improve its documentation, and help popularize it.

    Find an intro page with much more info about it at Fresco page of Gary's Encyclopedia

    1. Re:Please look at Fresco; it needs support. by exa · · Score: 1

      But it's abandoned I guess. Whould we really take off where it's left. It used to be in the motif distributions but now it's gone.

      hey, and it's motif!! hmmm. convert it so that it supports multiple platforms (gtk+qt+mfc) might be nice...




      --
      --exa--
  96. Crappy Quickdraw? You're nuts o_O by Chris+Johnson · · Score: 2

    Quickdraw rocks :) _somebody_ had to invent regions and fast graphics primitives! You do realise that _is_ where it all came from? Xerox PARC did _not_ have regions.
    I can hardly be too affronted, tho- what do you consider preferable, MFC? X? Face it, all software sucks- if you can't code on a tightwire don't code C/C++ for Mac, as you _do_ have to get everything right, and you _will_ be going *bam*bam*bam*bam* on the reset button. Hey, at least the registry won't corrupt from all the reset-bouncing! ;P Do please stay away from MacOS. It doesn't like you either.

    1. Re:Crappy Quickdraw? You're nuts o_O by Anonymous Coward · · Score: 0

      I prefer GDI over QuickDraw.

    2. Re:Crappy Quickdraw? You're nuts o_O by jafac · · Score: 1

      No, the registry won't corrupt, just your system preferences, PRAM, and desktop file.

      "The number of suckers born each minute doubles every 18 months."

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
  97. Keep it simple stupid: don't resize dialogs by Malc · · Score: 1

    "QT has good support for layouts, MFC has none. This means it is much easier to create resizeable dialogs in QT than it is in MFC."

    Look at most of the good dialogs in an MFC application: there is no need to resize them. If you find that you have a crowded dialog that needs resizing: simplify it. KISS. I haven't written a dialog that needed resizing since I was an entry-level programmer, but I still think that I have a lot to learn about making useful UIs. I also don't believe in hard and fast rules when it comes to these kind of things.

    1. Re:Keep it simple stupid: don't resize dialogs by Midnight+Coder · · Score: 1

      Look at most of the good dialogs in an MFC application: there is no need to resize them.

      Huh? Ever use windows? The fact is often dialogs benefit from being resizeable, and MFC doesn't support that well. The damn windows find file dialog is the classic example of a dialog that should be resizeable.

      Generally any dialog containing a listbox, listview, or (multi)line edit control benefits from being resizeable. Like the multiline edit control I'm typing in now (which isn't resizing with the window)!

      Maybe you are used to designing very simple dialogs.

  98. How much is USD 1000? by hta · · Score: 1

    I may be biased, but....

    if you're into software development full time, USD 1000 will pay for your time and expenses for several DAYS.

    If this is your hobby, use a free toolkit.
    If this is your job, it just ain't that much money.

    1. Re:How much is USD 1000? by Luarvique · · Score: 1


      I may be biased, but....
      if you're into software development full time, USD 1000 will pay for your time and expenses for several DAYS.

      Unfortunately, you are not only biased, but also wrong. It would still be nice if this statement were true though :)

    2. Re:How much is USD 1000? by Anonymous Coward · · Score: 0

      The correct figure is $1500 per developer. This is technically known as daylight robbery.

    3. Re:How much is USD 1000? by Avus · · Score: 1
      I may be biased, but....
      if you're into software development full time, USD 1000 will pay for your time and expenses for several DAYS.
      Unfortunately, you are not only biased, but also wrong. It would still be nice if this statement were true though :)

      So what's exactly wrong with this? If you don't engage in slave labour, you'll get around $4k a month, so $1k would be a week of work. When you take into account that you get 1 year of support for this money, this is very little.

      Or take the shareware case:
      I presume you are still thinking in the dimensions of the Windows world, where cheap shareware is very common.
      On UNIX, with all the powerful free tools, you won't be able to sell anything except rather sophisticated tools, say for ca. $100. So you'd have to sell 10 pieces for the license cost.

      (Note: TrollTech doesn't offer a shareware license for administration reasons. I guess a Qt version bundled with Delphi would be much cheaper).
  99. Somebody has to say it by Midnight+Coder · · Score: 1

    Remember that C++ was simply a preprocessor step for C orginaly

    Wrong, this is an often repeated fallacy. The original C++ frontend, CFront, fully parsed the input, it was a compiler (or translator both are equally valid). It did produce C output but that doesn't imply that it was just a preprocessor.


    1. Re:Somebody has to say it by pb · · Score: 2

      Umm... If it reads in C++ and outputs C, how could it be anything but a "preprocessor"?

      I realize that all the C preprocessor does is expand macros, include files, etc., but the word "preprocessor" itself is a bit more broad. A C compiler could be considered a preprocessor for an assembler. :)

      More to the point, basically all this means is anything you could write in C++ you could really be writing in C, I hope that point isn't in dispute here. (and anything you could write in C++ or C you could really be writing properly in assembler, object oriented or not, GUI or not... It just might take a bit longer. ;) )

      --
      pb Reply or e-mail; don't vaguely moderate.
    2. Re:Somebody has to say it by Midnight+Coder · · Score: 1

      Pages 66-68 of Design and Evolution of C++ by Bjarne Stroustrup (the designer and original implementor of C++) cover this issue.


      ...there has been a long history of confusion about what Cfront is. It has been called a preprocessor because it generates C, and for people in the C community (and elsewhere) this has been taken as proof that Cfront was a rather simple program - something like a macro preprocessor. People have thus "deduced" (wrongly) that a line-for-line translation from C++ to C is possible that symbolic debugging at the C++ level is impossible when Cfront is used, that code generated by Cfront must be inferior to code generated by "real compilers," that C++ wasn't a "real language," etc. Naturally, I have found such unfounded claims most annoying"


      Also see my related posting above on what is a compiler, and in response to the final paragraph I am aware of the concept of a Turing complete language.

  100. *Sigh* by Midnight+Coder · · Score: 1

    Anything that discriminates against commercial use is PER DEFINITION not Open Source software! Stop bending the rules.
    So Linux being GPL'd isn't open source software then?

    You're either a BSD type license advocate or just plain dumb, I'm guessing the later as you clearly don't know the difference between commercial and proprietary.

  101. Yes by Midnight+Coder · · Score: 1

    Look at The Approved Licenses list http://www.opensource.org/licenses/
    item number 7 is the QPL.

  102. Gui frameworks and interaction models by MosesJones · · Score: 2

    As someone who puts himself as being a GUI Designer on his CV (in the technical I write them rather than the draw pretty, useless, drawings on paper sort of way) one of the key things with all frameworks is a consistent interaction model, something many systems fall down on. When adding an element to the list the frame work should provide a list with a visible add method to which models can be added (yup I'm a firm fan of MVC) the system should be driven from the data. This doesn't mean database but the users view of the data. A Framework that allows the designer to specify the datamodel which then drives the interface in a consistent manner (because all Lists of Models use the same add method) means less hastle for the designer (who I assume is also the implementor) and the user. Too often GUI frameworks mearly provide a set of increasingly over colorized components that work in wildly different ways because someone somewhere thought it was a good idea and looked cool.
    For myself the key to a good GUI Framework is the interaction model, this should give the standard set of components, a standard model for the data and a standard interaction between the components and the data models (pet hate, why does windows have three different styles of file browser ?).

    Example. On many systems there is a requirement for a list (or tree) on the left hand side and the data from that node on the right. Adding elements to the list (or at a given level on the tree) is standard, and the rule connecting the selected item to the view on the left is also straight forward (model x has view b). Thus provide a framework that makes it easy to use this method. By enabling developers to ignore having to write this component each time you force a specific look and feel and create a consistent interface that is simpler to learn.

    When I wrote straight X I had to worry about pixels and windows and mice etc etc then Motif abstracted away to give a decent set of components with which to develop. The development of kits ontop of these components sets (which ever one you chose) was the next step. IMO the next is to ignore those sets more and more as the object model drives the screen design.

    --
    An Eye for an Eye will make the whole world blind - Gandhi
  103. Fresco's got threading. by Anonymous Coward · · Score: 0

    Plus CORBA, and a host of other modern concepts. It mostly lacks extensive documentation and users. Find intro at Fresco page of Gary's Encyclopedia.

  104. www.GNUstep.org by Anonymous Coward · · Score: 0

    You're right, one of the cleanest apis (and languages :-) I saw. Look at www.gnustep.org, the GNU implementation of it. It's finally nearing usable state with the 0.6 "dawn" release. Good luck to them.

  105. www.GNUstep.org by Anonymous Coward · · Score: 0

    You're right, one of the cleanest apis (and languages :-) I saw.

    Look at www.gnustep.org, the GNU implementation of it. It's finally nearing usable state with the 0.6 "dawn" release. Good luck to them.

  106. Oh for the love of gosh! by anatoli · · Score: 1
    # xconfirm -title "Omigosh" -t "Hello world" -B Ok

    So ok it is SGI's enhanced version.
    --

    --
    Industrial space for lease in Flatlandia.
  107. Answer by Midnight+Coder · · Score: 1

    Umm... If it reads in C++ and outputs C, how could it be anything but a "preprocessor"?
    Well, I think we agree CFront is a preprocessor. I am saying it is not just a preprocessor it is also a compiler.

    A compiler or translator is a program that translates a file from one language (the source language) into another (the destination language). This is the computer science definition of what a compiler is. You should be able to find it in any good compiler book, and this should be one of the first things taught in a class on compilers.

    The destination language need not be the machine language.

    A compiler or translator should be able to check that the contents of a file is a valid string in the source language. Because CFront could do this it was (is) a compiler.

    This is mentioned in D&E and I have heard Bjarne say it himself in person, in fact the propagation of this fallacy appears to one of his pet peeves.

    If it matters I believe g++ was the first native language compiler for unix.

  108. GTK/Perl ? by Anonymous Coward · · Score: 0

    Sorry, if i'm Off Topic, but is GTK/Perl a good choice ?

    I know WinAPI, and C++ but I'm a Perl Lover.

    I wonder is Perl will be a good choice for coding under X small application (Like Database Front End)

    1. Re:GTK/Perl ? by warmi · · Score: 1

      No.
      You know C++ then why are you asking about C toolkit ?

  109. What's wrong with FLTK? by Anonymous Coward · · Score: 0

    I've been using FLTK (www.fltk.org) at work and find it really nice to work with. It provides all the features you want (c++ language, platform independence, a GUI layout designer - fluid) and creates extremely lean executables in comparison to everything else out there. Also it's integration with OpenGL is best I've seen. BTW. since version 1.0 it is pretty solid too.

    Have another look at it.

    1. Re:What's wrong with FLTK? by Anonymous Coward · · Score: 0
      Here's a site where the author does side-by-side comparisons between the
      many GUI development environments/kits available. After reviewing this
      and reading whatever other comments I could find, I settled on FLTK
      myself. Mind you: I haven't done anything with it yet :-). (Other than
      install it and fool with it a bit.) And I am *not* an experienced GUI
      designer.

      For my near-term needs, I find Perl/Tk to be quite adequate. But I do
      intend to look at using FLTK for some possible projects.

      I chose FLTK for its "fast, light" aspect and for its cross-platform-ness
      (runs on Ms-Win* as well as *nix). I chose Perl/Tk because it gave me a
      graphical front-end to Perl when desired.

      Somebody once commented that FLTK "looked ugly." I wonder what they meant
      by that.

      Side note: I sure wish the *nix community would get it together wrt
      cut-n-past and drag-n-drop, don't you?

  110. QT is free (beer) software by Anonymous Coward · · Score: 0

    Read the subject. I hate people when they claim that QT is free software. This kind of free sucks. I want to write closed software and to sell it to my granny. But now I have no motivation to do it. I think that development libraries and tools (OSes, make, gcc, etc.) should be free to use for anyone. But it's not a perfect world. Yet another example of wonderful UNIX fragmentation.

    1. Re:QT is free (beer) software by warmi · · Score: 1

      Yeah. And why development tools should be free ?
      And for that matter why anything should be free ?
      I agree, I need source code most of the time but I don't mind paying for stuff. That's how market works you know ... you like to merchandise you pay.
      Of course you can create your own but you what happens most of the time - you end up with shity, half working imitation of the real thing.

  111. GTK+ appearance by azz · · Score: 1
    If you don't like the default GTK look---and I can't say I'm that keen on it either, although it's far nicer than Qt's Win95 look---try some of the themes available on gtk.themes.org. I'm currently using the Step theme, which along with WindowMaker gives me a very NeXTStep-ish interface.

    "I want to use software that doesn't suck." - ESR
    "All software that isn't free sucks." - RMS

    1. Re:GTK+ appearance by Anonymous Coward · · Score: 0

      I get pretty sick of the people that complain about how bad Motif looks, but then make excuses for other toolkits. That ugly blue Motif look is bad, but you can color schemes for Motif also. Ever seen an SGI? Think their windowing system is "butt ugly"? I work on one everyday, and never ceases to piss me off when I have to use windows: a true sacrifice of form over function.

  112. Use the Source, Luke! by azz · · Score: 1
    I agree. I maintain a simple GTK app, xhippo, a playlist manager which essentially has a status bar, three buttons and a listbox. The listbox is implemented as a (deprecated) GtkList, and I'm converting it to a GtkCList. In order to do this, I've had to consult the source for GTK several times. Fortunately it's well-written and very readable, but it would certainly be easier, particularly for new programmers, if the tutorial was rather more complete. Volunteers?

    "I want to use software that doesn't suck." - ESR
    "All software that isn't free sucks." - RMS

  113. sorry, but ARE YOU ON CRACK??? by Anonymous Coward · · Score: 0
    sure, tcl/tk is simple and you can put together small apps in a few lines and very quickly. but that's the nature of a scripting language. but tcl/tk has soooo many drawbacks, just to name a few:

    • Widgets are butt ugly (on unix)
    • the resource system sucks badly because of its incoherence -> you can't change the looks easily and reliably
    • language bindings suck. Of cource there is SWIG but you still have to use intermediate tcl.
    • the object model of tk sucks - simply no structure
    • it is cross platform, but there are subtle differences between the different platforms which are not hidden from the programmer
    these just came uo to my mind, i'm sure there are even more. tcl/tk IMO is only useful for small use once and throw away apps like installers or configuration panels but you don't want to use a tcl/tk app at daily work.
    1. Re:sorry, but ARE YOU ON CRACK??? by Anonymous Coward · · Score: 0

      So, Tcl/Tk is good only for "throw-away" apps, eh? Somebody tell that to NBC. The entire NBC television network (with over 200 local affiliates) is run with Tcl/Tk scripts, and that's just one of many examples of industrial apps. It has worked flawlessly.

      I thought Slashdot readers were supposed to be up to date on the latest technologies. Guess I was wrong.

    2. Re:sorry, but ARE YOU ON CRACK??? by Anonymous Coward · · Score: 0

      So, Tcl/Tk is good only for "throw-away" apps, eh? Somebody tell that to NBC. The entire NBC television network (with over 200 local affiliates) is run with Tcl/Tk scripts,...

      And there are even companies who run all of their business on, lord forgive me, *Windows*. Does that make Windows the superior sulotion???

      Dude, get a clue what you are talking about!

    3. Re:sorry, but ARE YOU ON CRACK??? by Anonymous Coward · · Score: 0

      1) Widgets - Beauty is in the eye of the beholder.

      2) Resource system - Pass on that one.

      3) Language Bindings - Pass again.

      4) Object model - I view this as a plus, lets you define your own object structure (Read McLennan's & Harrison's book, that is if you create your own composite widgets.

      5) Cross Platform - I agree 100% here. I notice some subtle (minor annoyances) among the different window managers on X (Blackbox, Wmaker, Fvvm95, etc) and Win'95 just isn't very snappy at all. I have no experience with Macs.

      I think that tcl/tk is very well suited for the small and throw away apps. However, if you follow the "small" part of the above, and create script libraries, this will definitely pay off after about... oh... say 1 application.

    4. Re:sorry, but ARE YOU ON CRACK??? by Anonymous Coward · · Score: 0

      The relevant question is not whether companies run their business with this or that software. The relevant question is how well the software works when companies run their business with it. And from all I have heard, Tcl/Tk cuts development time way down and works nearly flawlessly. Needless to say, the same cannot be said for Windows. Ironically, that smooth operation may be part of the reason that Tcl get so little publicity.

      It seems to me that most or all of the other "GUI frameworks" discussed in the original article are based on what are known as "systems programming languages," such as C++ and Java, as opposed to scripting languages, such as Tcl, Perl, and Python. John Ousterhout (the originator of Tcl) wrote an excellent paper explaining why scripting languages are becoming more and more important, and not just for "throw-away" apps. I suggest slashdot readers educate themselves on this important concept.

  114. ... Yes, consitent keyboard support ! by big · · Score: 3

    This seems to be the most overlooked issue with the gui 'environments' for unix. Imagine if ^X ^C ^V were different in every app? Windows drives me crazy with different keys being mapped to nearly the same function between apps. The Mac gui seems to hate supporting the keyboard but at least there are a few keyboard shortcuts that are common between apps. (there weren't even arrow keys on the original macs!) I haven't used enough KDE/GNOME apps to see if they have a well thought out keyboard shortcut & navigation scheme but from what I've seen I'd have to say NO and that makes me very concerned. ( I can't even navigate the directory tree (+/-) in gnome using midnight commander. I want to simply tab to the tree structure and press my arrow keys to open/close directories. Am I missing something here? ) Common functions (cut/copy/paste/close-win/ min-win/cycle-wins/file-save,open/etc..) should all be the same in each app and it would be nice if the user could map the keys. Keyboard Nav (tab, text selection,menu nav, button press , etc...) needs to be consistent well supported. Modifier keys need to modify consistently. Not alt here, control here, shift-alt for no reason. And finally any GUI needs to remember where the windows were and what they looked like. (this needs to be built into the gui toolkit because programmers rarely support this) I don't want to search all over my file system in and open/save dialog because the programmer didn't want to keep track of the last used/visted directory. When I open a folder (or link to) the file manager should remember the window size and file layout. (even windud does this)

  115. This is a FUD article by Anonymous Coward · · Score: 0

    He asks what toolkit he should be using as if he is a newbie then proceeds to slam everything but Gtk+. It sounds like he is already familiar with programming and is using Gtk, and is just using this as a platform to FUD everything else.

    1. Re:This is a FUD article by exa · · Score: 1

      I'm just trying to get people thinking over the subject. I did some brainstorming and wrote what popped up. I really want to sum it up better next time, because this is a question I'd like an answer to.

      --
      --exa--
  116. Qt's Licencing for Windows doesn't cut it. by Chandon+Seldon · · Score: 1

    What you're missing is that it makes you pay for a licence if you want to port your free app to Windows. Now, they've already put the work in to get Qt to work on Windows, I want to be able to wright my app once and have it portable to windows just by changing the direction of some slashes in the config file!

    --
    -- The act of censorship is always worse than whatever is being censored. Always.
    1. Re:Qt's Licencing for Windows doesn't cut it. by Avus · · Score: 1

      It's once again the topic of "Why should development tools be free when the OS is proprietary?"
      It's a nuisance for a small fraction of developers (those who are interested in developing cross-platform open-source GUI apps), but most people just don't care. And then,you can still implement the GUI part (usually lt 10% code) in, say, MFC, like AbiWord.

      No, they realy want the money, and won't let you use Windows Qt without paying $1000+.
      I'd guess writing native Win32 support is quite an additional effort, and thus probably worth the money.
      One possible short-term solution: Making Qt apps work on a free Windows X server. This shouldn't be too much effort, and AFAIK the QPL doesn't fobid that either.
      Does anyone know of a free X server coming with devel libs (MI/X is AFAIk binary only, and XFree not available for Windows)?

    2. Re:Qt's Licencing for Windows doesn't cut it. by warmi · · Score: 1

      You want free ... hmm , everything must be free ..
      And how the hell Troll is supossed to make money ?
      If they go out of business that's it. The best GUI lib is gone and you guys are free to play with GTK and various frontends to whois etc.. ( seems like that's what GTK is being mostly used for)

    3. Re:Qt's Licencing for Windows doesn't cut it. by warmi · · Score: 1

      Thats their stuff . They casn do whatever they won't - this fucking "free free free or bust" mentality is driving me nuts. Linux is doomed if the likes of RMS take over.
      The only reason Linux is gaining in the market right know is because commercial products like Sybase, Oracle etc are slowly being ported to the OS.
      Without that is nothing !

    4. Re:Qt's Licencing for Windows doesn't cut it. by ivan_13013 · · Score: 1

      I use Linux/GNU commercially on many public and internal servers and workstations. The only non-free software I have used on these systems is Netscape, which I'll replace with a free browser when I find one that does what I need.

      Who needs proprietary commercial databases with weird licenses and fees? PostgreSQL, GPL'd, has been providing excellent performance and 100 percent reliability for our multi-user database containing millions of records.

      Sybase and Oracle can bite me.

    5. Re:Qt's Licencing for Windows doesn't cut it. by mill · · Score: 1

      Lay down, close your eyes, take a deep breath and say after me. "C++ is not the end and be all of programming languages. C++ is not equivalent with OOP. gtk+ is not an instance of evil."

      *sigh*

      /mill - who at the moment is enjoying libsigc++ and gtk--

    6. Re:Qt's Licencing for Windows doesn't cut it. by warmi · · Score: 1

      GTK+ is not an instance of evil , yeah, it is simply another boring C based toolkit.

      C++ is not equivalent with OOP but what what do you call something written in C that tries very hard to emulate C++ with bunch of terribly unreadable code ?

    7. Re:Qt's Licencing for Windows doesn't cut it. by mill · · Score: 1

      If you prefer C++ use Gtk-- instead.

      I call it flexible. I am not forced to use C++'s object model. Too bad you don't understand C and have to hold that against the language itself. I find Haskell far more readable than C++ so I guess I should run around screaming how C++ sucks then. Bringing it up whenever possible (relevant or not).

      *sigh*

      /mill

    8. Re:Qt's Licencing for Windows doesn't cut it. by warmi · · Score: 1

      I don't understand C ?? I spent 5 years doing C and only recently moved to C++ - and you know what ? For GUI work , I would never ever go back to C .. it is not the best tool for this kind of work - simple as that.

    9. Re:Qt's Licencing for Windows doesn't cut it. by warmi · · Score: 1

      You are studying CS .. hmm, that explains your fascinatin with C. Once you are forced to implement something larger than CS asignements you will recognize the truth. You will ..

    10. Re:Qt's Licencing for Windows doesn't cut it. by mill · · Score: 1

      Who said I am fascinated with C? It is YOU that are fanatical about C++. I don't go around claiming that C++ sucks or that Qt is an abomination.

      If you stopped taking shots at gtk (you even complain about the looks even though you can change it) in every damn post you wouldn't come through as a walking flame bait.

      /mill - ending his participation in this thread

    11. Re:Qt's Licencing for Windows doesn't cut it. by Chandon+Seldon · · Score: 1

      RMS is right, for many reasons.

      Qt would be a Realy Good Thing (TM) if it was QPL'd for Windows too!

      They've done a lot of work on Qt, if they won't let the "community" take advantage of their work porting Qt to Windows, then, well, they arn't being nice.

      Didn't their mothers teach them to play nice and share when they were little kids? =P

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    12. Re:Qt's Licencing for Windows doesn't cut it. by Chandon+Seldon · · Score: 1

      Troll Tech is supposed to make money on Commercial Software being developed on top of Qt.

      If people are wrighting free software for Windows they ain't gonna pay $1500 for a UI toolkit, they're gonna use GTK+ or even (pah) MFC. Better for Troll if they are using Qt, even if Troll isn't making money on that project, because they may pay for a commercial licence for future commercial product that they are making, yes?

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    13. Re:Qt's Licencing for Windows doesn't cut it. by Chandon+Seldon · · Score: 1

      One possible short-term solution: Making Qt apps work on a free Windows X server.

      That's a nasty kludge.

      Troll Tech has already done the porting work, and they should be nice and share! =P

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
  117. Qt's Licencing for Windows doesn't cut it. by Chandon+Seldon · · Score: 3

    What you're missing is that it makes you pay for a licence if you want to port your free app to Windows. Now, they've already put the work in to get Qt to work on Windows, I want to be able to wright my app once and have it portable to windows just by changing the direction of some slashes in the config file!

    No, they realy want the money, and won't let you use Windows Qt without paying $1000+. If it weren't for this, I'd not have problems with Qt any more than I have problems with GPL'd libs (Not LGPL'd, GPL'd). The only reason that I can see to only give access to the X version is 'cause they know that a commerical propriatary lib won't cut it on Linux, but they think they can get developers to want to use Qt enough to buy a licence to port their... Argghhh!!! I'm just repeating myself now, but am tired, hungry, and this cheasy psudo-free library pisses me off! Paraphrasing RMS: "Propriatary librarys can cause more damage to the Free Software Movement than propritary Apps can".

    --
    -- The act of censorship is always worse than whatever is being censored. Always.
  118. GTK - Get all 3! by Chandon+Seldon · · Score: 1

    I want it fast, pretty, and stable. GTK seems to be close enough to that for me!

    --
    -- The act of censorship is always worse than whatever is being censored. Always.
  119. Re:Lazurus & the Free Pascal Compiler by Anonymous Coward · · Score: 0

    The guys doing Lazurus have done exactly this. You can use FPC to copile some delphi code for GTK on Linux, GTK on Win32 or a native Win32 interface.

    It's a work in progress, but what they have, works. Have a seach on freshmeat for the home page

  120. Why even use curses by Anonymous Coward · · Score: 0

    Why even use curses? You could bypass the whole screen manipulation and use straight print and let the screen scroll away.

    1. Re:Why even use curses by Anonymous Coward · · Score: 0

      Hey, no curses mocking!!!! I think it satisfied every one of the requirements of this article. What is more multi-platform? Heck, you can even run it with a vt100 terminal! It has, I would dare say, the smallest library footprint, can interface with multiple laguages (don't know if there is a C++ interface), runs anywhere with a consistant look and feel (except when those non-purists use funky character sets to resemble window borders! stop that crap! hash marks are good enough for the user!). I even heard the PlayStation was originally written to use Curses, but some marketing guy made em choose otherwise. And Moria & NetHack, can any graphic system really compete with how curses was used in these games? I think not. They try, but are mere shadows of Curses.

    2. Re:Why even use curses by jafac · · Score: 1

      Hey, why not CWorthy then?
      (the old Novell Console interface)

      "The number of suckers born each minute doubles every 18 months."

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
  121. Nobody mentions ViewKit! by Anonymous Coward · · Score: 0
    ViewKit, the fantastic C++ wrapper for Motif, available for several platforms (free for non-commercial use on Linux) is just what you are looking for.

    Look: www.viewkit.com

    As for the outdated appearance of Motif, all I can say is that a) it depends on the window manager (no, you don't need MWM), and SGI's demonstrate how nice Motif can look when you bother to use a nice color scheme. For some reason people will let ugly defaults slide with other toolkits, but not Motif.

  122. No. Just No. by aheitner · · Score: 2

    A language without excellent, maintainable, preferrably native C/C++ bindings is useless.

    I can't walk into a contract job, inform them that I'll code their solution in Obj-C, and then do it and split. I'd be leaving them with something they have no prayer of maintaining or extending.

    Java is unacceptable -- too slow, no particular reason for existence.

    Obj-C is unacceptable -- if it's as good as Smalltalk, it probably belongs in the same catagory (along w/ML and others) of academic languages of no practical value.

    Tell me what Obj-C does so much better than C++ that it's worth the cost of conversion.

    1. Re:No. Just No. by Anonymous Coward · · Score: 0
      Judging by the replies you've posted to this discussion, you must be a really closed-minded individual. I wonder how you got your permanent +2 rating.

      Anyway, for more info on Objective C, try this link.

  123. Re:RedHat 6.0 by Anonymous Coward · · Score: 0
    Redhat 6.0 breaks Xi Motif (and probably others) because of one simple, small, replaceable file. I had problems with my OpenGL programs/GL widgets until I read the FAQ at Xi's site. It took two seconds to fix, once I new what to do.

    I like Motif, using ViewKit C++ wrapper. I need compatibility between work/home (Irix/Linux) and so I still use Motif. If it ain't broke, don't fix it. SGI's 4Dwm makes Motif apps look very nice, as well as using their color schemes.

  124. More Slashdot bias by Anonymous Coward · · Score: 0

    This guy obviously made up his mind what toolkit he likes, and cuts down every other toolkit. He obviously knows the different toolkits yet Slashdot "editors" post this as a fake newbie question. What a load of FUD.

  125. Athena Widgets by Andy · · Score: 1

    I don't think that the X/Xt/Xaw framework has been improved upton by any of the relative new comers. We should go back to our roots.

  126. What about QXtWidget (Motif + Qt) for legacy apps by Anonymous Coward · · Score: 0

    Have you tried QXtWidget with allows mixing of Motif/Xt and Qt widgetsfor a smoother transition?
    I'd be interested how well this works.

  127. Dead can still mean good by eidolon1138 · · Score: 1

    I realize that NeXT is officially dead. I've been to the wake, I shed my tears, I moved on. However, I believe that a discussion about elegance of GUI frameworks MUST at least mention NEXTSTEP.

    The framework was OO from top to bottom. All of the components in the framework were extensible by the developer, and the documentation didn't suck! Display Postscript allowed for some amazing flexibility (as long as you speak RPN :^), and it made the acronym WYSIWYG true because the screen was rendered with the same engine as hard copy.

    Swing is very good, I've been using it for a few months now, but the UI's created with it are dumb'ed down. The Swing framework is designed to make it easy to create a UI programatically. Bravo, it is very good at that, but the results look like shit. NeXT's 10 year old (yes, proprietary) GUI builder, InterfaceBuilder.app, is still better than any of the other products out there. I've used JBuidler and VisualCafe, and I've glanced at VisualAge, and none of those GUI builders stack up to what NeXT offered.

    If you are looking for a good framework, check out what NeXT did over the last decade. It may be dead, but that doesn't mean it wasn't good.

    - Dave

    --
    David Goodman
    Citadel Investment Group, LLC
    david_goodman@iname.com

  128. Nope. Qt is free. Plain and Simple. by Anonymous Coward · · Score: 0

    You're being cynical, are you?

    In fact, the QPL is better for free software than the LGPL (free sw is preferred), and still companies are happy because they can get proper commercial support.

    But, alas, anti-TrollTech trolls apparently never die...

  129. Re:JDK 1.3 beta Swing is supposed to really rock. by Trith · · Score: 1

    They say they found that their ideal design for swing wasn't so ideal and have done a complete rewrite. I just hope that maybe we can get Linux versions soon. Granted, we don't have a 1.2 release yet; however, if 1.3 has lots of rewrites of 1.2 stuff maybe we can just skip over implementing it that redone part of 1.2 and get a 1.3 somewhat soon.

    The article, change log, and some good comments are here.

    http://www.javalobby.com/servlet/News?action=dis playStories&xsl=comment.xsl&format=full&id =500300000000563

    jawa is da one
    Civ CTP is awesome! Thanks Loki!
    Romans 10:9-10

  130. MFC by SteveX · · Score: 1

    Okay, I'm a bit of a Windows guy so this might be a tainted viewpoint, but there are some good lessons to learn from MFC and Visual Studio.

    First, keep the framework simple - extensible is incredibly important but if the framework itself is easy to understand and doesn't require intense knowledge of the latest C++ tricks (like so many I've seen) then it will be a lot easier for programmers (especially folks who know C) to start using it.

    The other important lesson is that good tool support is vital. Visual Studio isn't the tool you're going to use to maintain your classes in a million line mega-app, but it's an awesome tool for doing up quick GUIs for simple apps, or even medium-sized apps. And don't just make your GUI-builder dump out code, it has to be able to go back and let you make changes to it (add message handlers, etc). MFC isn't so good at this.

    My two cents.

    - Steve


  131. Re:Color Schemes by Droog · · Score: 1

    The thing that irritates me about Motif is not the color scheme, but the way it handles radio buttons and checkboxes. Instead of drawing a nice easy to see dot or check or x in the checkbox or radio button, Motif makes the button look depressed.

    It is much harder to tell what option you have selected with the "depressed" look rather than with the checkmark or x look. Especially in monochrome.

  132. Sigh² by Anonymous Coward · · Score: 0

    I really really really cannot believe how dumb you are. Does the GPL discriminate against commercial use? Can I use Linux to run a commercial website? Can I SELL my own Linux distribution?

    If you can't see the difference between the QPL and the GPL I'm not goint to waste my time with you.

    1. Re:Sigh² by Midnight+Coder · · Score: 1

      Well I must be dumb then. The QPL does not discriminate against commercial use anymore than the GPL. I can use QT to run a commercial website (actually you really can QT supports networking). And you could SELL your own QT distribution.

      I see no difference between the QPL and the GPL in this regard.

  133. BeOS the king of GUI. by Anonymous Coward · · Score: 0

    I dont think this can be disputed. Everyone who has had the pleasure to use the BeOS interface has fallen in love with how elegant and quick everything can be done. This is an example of what to do. It's very fast, very slick, and just gives you a nice warm fuzzy feeling. Gnome, GTK, etc are all a HUGE pain in the ass as far as Linux goes. I have yet to get an Enlightenment release working since DR10 due to lack of documentation and the fact GTK libs just wont install/cant be found anywhere. We need simple setup.exe programs for Linux before any of this can even be commented on being a good framework/gui. If 70% of the people cant install or use it, it just isnt worth it, IMO.

  134. Perl/Tk is an excellent choice for GUI development by Dr.+R.M.+Holston · · Score: 1

    I've been using Perl/Tk for over a year now, and have co-written a 15,000 line Perl/Tk application for commercial use which is completely cross-platform. I would highly recommend Perl/Tk to anyone doing GUI development, especially if it needs to be portable. Just my thoughts on the topic.

    --
    R.M. Holston, Ph.D. Cyberneticist & Director of IT R&D RJL Systems, Inc.
  135. No framework framework by Anonymous Coward · · Score: 0
    The framework I would really like to see would have no programming framework, but simply parse my own code and generate the necessary widgets. My only intervention is for the layout. Something that would take:

    enum Color { white, black, red };
    struct Data
    {
    char name[64];
    Color color;
    int coffee : 1,
    tea : 1,
    water : 1;
    };

    And produce a string widget, a pop-down list and a serie of checkboxes. I once wrote such a thing, but it was a run-time affair, thus slow. A parser that produced a resource-like file that I only have to add struts and springs, and feedback functions, that'll be nice.

  136. wxWindows hands down by fantastico · · Score: 1

    In my mind, wxWindows is the best app framework out there. Uses C++ natively, but python bindings are available too. Supports everything you'd expect a modern app framework to have, plus a lot of extras people have added along the way. It's very similar in feel to MFC, with event tables and all, but the API is much cleaner, much more consistent. Best of all, it's cross platform: I can recompile and run my app without changing a line of code on Win32 and Linux, and there's Mac and Be ports on the way. The documentation is very complete and well organized (take that GTK), and my questions to the mailing list tend to be answered by one of the developers within a few minutes. It's distributed under a modified form of the L-GPL which allows you to build non-GPL applications using it, so long as you don't change any of the code in the library itself. Go to www.wxwindows.org and see for yourself.

  137. Re:What are "springs and struts"? by Misagon · · Score: 1

    What are "springs and struts"?

    I don't know, but it does sound a little bit like a feature of a GTK+ widget I am working on.
    It is a GtkTable, where each row and column is weighted, like HTML relative widths. You can specify that one row is twice the width than another row, etc.

    I have also subclassed the widget and added
    resizebars between the rows and columns.

    --
    "We mustn't be caught by surprise by our own advancing technology" -- Aldous Huxley
  138. You forget, this is C++... by MenTaLguY · · Score: 1

    One day they will run out of reserves and they'll have two choices. 1) Don't add any more features, no matter how important they may be or 2) break existing programs and change the layout.

    or, 3) subclass the existing interfaces


    Berlin-- http://www.berlin-consortium.org
    --

    DNA just wants to be free...
  139. It's Still There by Anonymous Coward · · Score: 0

    It's alive and well and living in South America: http://www.ambiencia.com

  140. Have you actually used VC++? by DLPierson · · Score: 1
    It sounds like you're an MFC programmer who's never used VC++? If you have used it how can you possibly say that an application full of dialogs with one line by 40ish character edit controls designed to edit 100+ character strings doesn't need resizeable dialogs?

    (For the fortunate souls who haven't used VC++, I'm referring to the dialogs that contain such things as the list of libraries to link.)

    What really gets me is that I've talked to the MFC designers about this in the past. Their consistent response is:

    1. Beginning programmers have a hard time understanding constraint based layout.
    2. It's hard to write GUI editors that support constraint based layout.


    Of course this is based on the implication that it's perfectly OK to cripple the tools available to the competent, experienced customer if it makes it easier to con more VB programmers into thinking that they too can be instant C++ programmers! After all there are more suckers and wannabes than there are real C++ programmers so the customer base is larger.
    1. Re:Have you actually used VC++? by Malc · · Score: 1

      "For the fortunate souls who haven't used VC++, I'm referring to the dialogs that contain such things as the list of libraries to link"

      That thing is a royal pain in the arse. The dialog doesn't need to be resizable... M$ just need to do it another way rather than using that particular control.

  141. Tk by Rozzin · · Score: 1

    In my experience doing Tk/Python, the Tk API isn't too bad. 8.0 had some apparent problems, though, like not being able to deal well with very long strings.

    Tk real appeal, of course, is that it's got a presence in X, MS Windows, and Mac OS--the three most popular window-systems.

    --
    -rozzin.
  142. we need consensus by hugg · · Score: 1

    While we bicker and argue about Motif vs. Qt vs. GTK+ vs. ncurses, Microsoft weenies are still using the bloated yet ubiquitous MFC/Win32 API and still own the desktop. Is there a message here?

  143. Widget-sets under MS Windows by Rozzin · · Score: 1

    (d) Wouldn't it be nice if Windows gave you a *choice* of widget sets?
    -----

    0] Why are we suddenly ranting about how bad MS Windows is?
    1] There are a few different widget-sets that function under MS Windows. They don't all come with the OS, but, ish..., I'm not going to go into that.

    --
    -rozzin.
    1. Re:Widget-sets under MS Windows by jafac · · Score: 1

      0] I've always ranted about how bad MS Windows is.

      I started out with Quarterdeck as my GUI of choice, then hated windows with a passion, and when the 95 GUI came out, I hated it even worse, and bought a Mac - not knowing ANYTHING about Macs. I personally find the Mac to be much less annoying, cleaner, and more aesthetically pleasing than MS's GUI. Why do I hate MS's GUI? All the aweful redundancy, the close box adjacent to the (unnecessary) maximize box. The fact that Netscape and IE and the Outlook mail editor all have proportional live scrollbars, and their flagship Word-Processor/awesome document viewer does NOT. The concept of only having a menubar take up real estate if that app's window is on top is great (I wish button-bars of non-active apps would also disappear, what would be great would be a standard shared button bar). The fact that this gives all Mac applications a very uniform feel, is a little totalitarian, but functionally great. The Mac isn't DA BOMB as far as minimalist widgets go - IMHO, the re-size button can be done away with, I find myself using the WindowShade feature a lot, but I almost wish it was more of an iconization than a simple "make everything but the title-bar dissapear". But then, you wouldn't be able to distinguis between several closed windows. Screen tabs are great, spring-loaded folders is the best concept to hit the GUI since the icon. Lack of Contextual Menus never bothered me, but with it's implementation in OS 8, it was done RIGHT. It's fast, and totally customizable by dinking with the folder structure (if you use FinderPop). Tear-off menus are a GREAT thing, but there doesn't seem to be an implementation on the Mac that works with OS 8.6. I hope it's a feature of OS X. PLUS - Themes that actually are THEMES. Unlike MS Windows, - you can change shapes, textures, colors of every windowing component (Kaleidoscope). If only they hadn't Steved themes in 8.6, but the fact that it's doable is very, very cool, and only equalled by the nifty stuff I see going on in the Unix world with stuff like Enlightenment, etc.
      Then there's Drag n Drop - unified across all apps. Not just in Finder (File System editor), but you can drag text clippings, graphics selections, and with QuickDraw3d, even 3d objects. (too bad they Steved QD3D).
      What does Mac need? A docking bar! But of course, OS X would have inherited that had that not also been Steved.

      Ah yes, there's the rub.
      Apple has some great stuff, but still gets hosed from time to time by inexplicable, pig-headed business decisions.

      I tried to learn programming on the Mac, and all I can say is after the chapter on memory managment, and all the hoops one has to go through to make sure memory is allocated, locked in the right spot, unlocked and freed, it's a major wonder that any apps run on Macintosh at all. This of course is solved with OS X and Cocoa. (I don't know what the Carbon situation is, but if you still have to designate allocations as moveable and nonmoveable, and all that crap - forget it!)

      1] forget alternate widget sets in MS Windows. Do you really want to install something that breaks everything else? What good is that?

      "The number of suckers born each minute doubles every 18 months."

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
  144. Yep people who run /. are constantly promoting GTK by Anonymous Coward · · Score: 0

    This pseudo-question is very unprofesional. If "ex" or whoever is a GTK bigot - his problem. But why pretend that one is asking a question when he/she already decided on the answer ?

  145. Re: Galaxy... ouch by Anonymous Coward · · Score: 0

    Well, I once worked for a company that tried to use Galaxy to get their product out the door on time. I'm not about to blame Galaxy because the programmers were piss-poor, but Galaxy was also one lumbering giant of a system. The Columbus project was supposed to bail the company out of some serious problems, they were put together to create the "next generation" product in competition with whatever it was that our one competitor would produce. It didn't help much that the company was always late for marketing deadlines, and it didn't help much that there was no clear definition of what it was they were creating. It was decided that Galaxy was this wonderful product that would cut production time, enable rapid application development and just make things that much easier. I'll be the first to admit that the original product (before Galaxy) needed a Multi-processor Sparc20 or better, 512 to 1024MB of RAM, and some monstrous swap space (also between half to a GB.) Then Galaxy was added to the mix and suddenly the company didn't own a single machine that would *compile* the end result, much less run it. Yikes. Bloatware is not the word for it, more along the lines of everything *and* the kitchen sink. I took a look at Galaxy, or at least what Columbus had done with it. What I saw was incomprehensible. Oh yeah, and quite similar to the makers of Galaxy, the afore-mentioned company does not exist any more. alaric alaric@portone.com

  146. Qt doesn't solve all the worlds problems. by Midnight+Coder · · Score: 1

    Qt 2 free edition is fully free, not pseudo free.

    Qt 2 free edition is not available for the Windows platform, or the Mac or Beos or OS/2 or Nextstep or the Commodore 64. QT 2 free edition won't house the homeless or feed the starving.

    If Qt 2 free edition was distributed under the GPL or even the LGPL license the situation would be exactly the same.

    If you really want QT free edition for windows port it, you are free to do so, however you will have to fork the development as troll tech will not support you.

    1. Re:Qt doesn't solve all the worlds problems. by jetson123 · · Score: 2

      GTK, however, is being ported to Windows, and it's good enough already to use Gimp on Windows with it.

    2. Re:Qt doesn't solve all the worlds problems. by Chandon+Seldon · · Score: 1

      They've already done the porting work to windows, and they can't expect people who are wrighting free software for *any platform* to be able to or be willing to pay $1500 for a licence for a UI toolkit.

      Didn't their mothers teach them to play nice and share when they were little? =P

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
  147. OpenStep by Anonymous Coward · · Score: 0

    I'm actually Puppybane, but I forgot my password and have not been able to put up my mailserver yet (my hub died).

    email intelligent comments to:
    My current address

    email stupidity to:
    An address at my old mailserver... :)

    Someone already said it, but they were too bitter to extol the virtues to the ignorant... So I will.

    The OpenStep AppKit Framework (as well as its FoundationKit framework) is very well designed and easy to use. Getting an application from algorithm to GUI usually involves little or no work.

    1) The frameworks are in a very powerful, yet easy to use OO language: Objective C. HOWEVER, for those of you who don't wish to learn a language which has traditionally been the realm of NeXT developers, the frameworks now work in Java and C++. In fact, you can intermingle AWT and Appkit bits in your app. I would say that C++ support is not yet up to par, but it's coming soon (less than 1 year), and I think you're better of to use ObjC anyway.

    2) Appkit is completely platform agnostic. The only big problem is that Apple owns the rights to the stuff, so the only hope right now for x-p stuff is either Darwin (Apple's open source stuff) or GNUStep, which is getting much closer to a fully functional system. OpenStep, though, still runs on Windows (95 or NT) and Solaris. (Rhapsody runs on PowerPC). The only thing you need to do to make your program run on the other platforms is tell the compiler to compile for them. You can even change the GUI depending on which OS will run it (so Windows users get "Exit" instead of "Quit", etc).

    3) The AppKit is very easy to understand, with a clear inheritance hierarchy, and excellent modularity. Also, ObjC makes it easy to change any class you don't like, or need more functionality from. Just Subclass it! This is actually how you do a large portion of the specific interface code. If you write a Document-based application, you just subclass NSDocument (all of the AppKit classes start with NS...NeXTStep) class, implement 2 functions, optionally add some stuff to execute when the document is loaded, and it's done! The system is simple because it relies on sending specific messages to each object, and you can choose whether or not to intercept each message. Most of the boring stuff is implemented for you: New Document, Open Document, differences between Save/Save As... It blows me away everytime I use it.

    4) Ummm... I don't know what MVC is, but writing an AppKit program is very straightforward.

    5) The license, as I mentioned, is one sticking point. BUT, NeXT published the OpenStep standards a while back, so someone just has to wait for GnuSTEP to finish (Note, I'm too lazy to look up the exact capitalization for gnustep, openstep, nextstep). I do urge people who are interested to email Steve Jobs to devote serious time and money to find a good licensing strategy for the Windows version of the framework (Note: this is not a call for flames. Nothing good comes from weighing down a mailserver with malice). For the people interested in an X11/Linux version, visit The GNUstep Page

    6) I know for certain that the AppKit is mostly thread-safe, and uses TCP/IP. Though that may also depend on the underlying OS, which has to use threads and TCP/IP. As for JPEG files, I don't know, though I bet that if it's not built in, OmniGroup probably wrote an add-on to do it for you...

    Gosh, I've been going on forever here, but I only have a little more to go:

    This Framework is very well documented. The native development tools allow easy access to the definitions and instructions for use for all of the classes in the AppKit (as well as the FoundationKit).

    Anyway, as a disclaimer of sorts:

    1) I am not a very experienced programmer (I didn't get serious about it until 3 years ago). I don't have experience with any other GUI framework, other than the normal Macintosh Toolbox, which is not OO.

    2) I have only been using the OpenStep frameworks since April, 1999 (when I recieved my copy of MacOS X Server).

    3) I have been a big fan of Macintosh since I was too little to understand the differences, and since Apple now owns this framework, I may be biased.

    Ok. I'm done, now.

  148. Event handlers are not OO by Anonymous Coward · · Score: 0

    If all you do is propogate calls to another procedure (probably in a separate object file) then your maintenance becomes much simpler.

    Somewhat, but it's still not much better. This still results in the GUI and the application being too tightly coupled. Event handlers the way they are typically used are evil. A lot of people think having an event handler function is a good OO design since they can make the handler virtual and override it in derived classes. This is WRONG! A much better approach is to use the Command pattern (see Design Patterns by Gamma et al.) This lets you abstract the call-back mechanism the underlying GUI uses and reduce coupling, not to mention getting rid of ugly if and switch statements.

  149. Re:why are most in c++?/alternate language binding by HarpMan · · Score: 1

    Well, you can use Qt/Python.

    --
    Stephen Molitor steve_molitor@yahoo.com
  150. They've confused the licensing. Forget it! by Anonymous Coward · · Score: 0
    If you care about licensing, you won't touch this. They've thrown the old X11-type license text together with some L-GPL text and thrown in a little of their own. Maybe you can figure out the results of all these conflicting licensing terms; I can't and won't try.

    When people want to prevent people from "highjacking" their code with a different license, why do they feel no qualms about doing it with other people's X11-type licensed code? It might be legal (though I have some good arguments why the way most people do it it isn't legal), but it sure is hypocritical.

  151. Disappearing comments... by Anonymous Coward · · Score: 0

    I posted twice on this story about exa and both have disappeared (even on -1)... This is not an impartial "Ask Slashdot" by a newbie, btw...

  152. GUI toolkit for dummies by Anonymous Coward · · Score: 0

    I used to work for Zinc years ago. We had a very nice xplat toolset and framework. I would use it again. But my favorite system was the NeXT AppKit and FoundationKit, and the Interface Builder and Project Builder tools. This is where I first learned OOP, and what a joy it was to learn. It was harder to build an app that didn't conform to NeXT's delightful human interface specification than it was to build one that did. Part of the problem with Linux and its GTK, QT, etc., is that (1) they are not object-based and (2) their designers were more interested in flexibility than ease of use. This means competent programmers and sysadmin types can modify looks and feels to their heart's content, but that everyone else has too difficult of a time doing so. Linux has already surpassed the quality of most Unix kernels--now we need an open source object system that surpasses NeXTstep. [ kris magnusson ]

  153. Frameworks by SEGV · · Score: 1

    If you search on the net, you'll find a page dedicated to GUI frameworks and toolkits. It lists millions of them! Unfortunately, I don't have the URL on me.

    Also, there's quite a difference between a framework and a toolkit. GTK+ is a widget toolkit, whereas Swing, PowerPlant, and even MFC are application frameworks. They provide more than just graphical widgets for menus, buttons, and sliders.

    I think it would be interesting to see an exact port of Swing to C++, say to X11 directly.

    --

    --
    Marc A. Lepage
    Software Developer
  154. GtkTable by Sharkeys-Day · · Score: 1

    But does it support wrapping (multi-line) text in a cell yet?

  155. Coose your battles carefully by Genus+Marmota · · Score: 1
    The simple fact is that X is stable and works marvelously. Performance gains are going to come from hardware for the most part. New widget libraries come along all the time and can happily coexist with one another, making your desktop look like a salvador dali painting or anything else you can think of. If you want to fight the good fight and advance the penetration of open-sourced systems (which mostly means X as the low level graphics layer) you have to address two really important application-level issues:
    • Threading. One of the most obvious qualities of an app, even to a novice, is whether the GUI remains responsive when the application is doing stuff. This is something that MS is committing heavy resources to, and it's a big reason why their apps look and feel as good as they do.
    • Interoperability. Lots and lots of freeware apps don't even support cut and past, while MS now allows you to embed a foo in every bar and stream video while the paperclip dances. But in some ways it's easier to do it on *nix systems. Repeat after me: "CORBA is a protocol, and COM is a binary format..."

  156. Coral is C++, X & Win32, and well designed by Anonymous Coward · · Score: 0

    The only drawback of Coral is that it does not currently have themes.

  157. tk by Sharkeys-Day · · Score: 1

    Yeah, TK has some really great features.
    I love how it does event binding.

    (Scripting languages are the future.)

  158. Python with Tk/GTK/Qt anyone? by spboulet · · Score: 1

    How about using Python (or for that matter perl) with one of the GUI toolkit bindings? Can you use them for "serious" apps, maybe writing in parts that need speed in C?

  159. here here by Anonymous Coward · · Score: 0

    I agree wholeheartedly. I could really go off on this, but no-one here is going to listen. If you step back you will notice how Apple and Microsoft have done their damage to all these people already. It doesnt HAVE to be the way it is now.

  160. Re:Commercial Okay, Proprietary Not by Arandir · · Score: 2

    The **OLD** Qt license forbade commercial use, but the new one, called QPL, does not. Thus, it follows the Open Source Definition. No rules were bent.

    Don't argue with me about it. Talk to Bruce Perens.

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  161. Re:Qt Free for Windows Too... by Arandir · · Score: 2

    Yes folks, you heard me right. Qt is free for use on Windows. Not the Windows version though :-)

    But you certainly can port the whole X version to Windows if you'd like. Nothing is forbidding this.

    Just in case you don't know, there is a very, very important reason why the Windows version is not Free: Windows users don't pay for Free Software. If Troll Tech released it to Windows for free, their entire cash flow would disappear overnight. And don't talk about supporting it through support. Qt users don't need any support.

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  162. Power Plant by GuavaBerry · · Score: 1

    I disagree strongly with the assertion that 'speed is everything,' and if 'too much typing' were a concern to any developer, then I would wonder why anything but Perl would be used.
    In truth, I've never seen OpenStep/GNUStep in action, and a quick glance at the tutorials for both show me a lot (albeit in Objective-C) of what I have already seen accomplished by Metwowerks Power Plant. Although it's platform (Mac) specific, it is an elegantly designed framework built from the ground (Mac Toolbox) up in perfectly readable C++. What browsing through docs need to be done is quick (all you need is written into a fat pdf 'Power Plant book' supplied to whomever buys the product) and easy. Moreover, Constructor lets you do that 'drag and drop' layout promised by OpenStep/GNUStep, so the details of implementing your program are neatly separated from managing the state of your program. I'm a big fan of that.
    Just thought I'd put in a word or two for the lonely mac developers out there.
    MFC sucks. Hard.

  163. HTML5? by Anm · · Score: 1

    One of the major problems of HTML is the limited set of form objects. And HTML5 is going to attempt to fix this. HTML 5 will divide the HTML spec into several groups, including a completely reworked Forms architecture. This new forms architecture is suppose to allow new components to be called up, similar to loading applets up except they have the added bonus of interacting with the forms event and scripting system.

    Of course, none of this has even hit the level of public spec, so we all have to wait and see.

  164. OO isn't a C language feature by Jherico · · Score: 1

    Anything expressible in C++ is expressible in C. This was an explicit design decision for C++. Therefore, C supports every feature C++ does, and if that's not enough to do OOP in C then it's not enough to do OOP in C++ either. Anything expressible C++ is also expressible in assembly. I don't think that the poster who said you can't code is OO in C was really talking about whether or not some or all OO features can be implemented in C, but rather whether they were implicit in the language. Virtual functions, for instance, would have to be layered on top of C with an entire application level framework to support it, and based on the arguments made in the C++ FAQS here, if you don't use or at least understand virtual functions, you're not working in OO, you're wanking.

    --

    Jherico

    What can the average user can do to ensure his security? "Nothing, you're screwed"

    1. Re:OO isn't a C language feature by Salamander · · Score: 2

      >Virtual functions, for instance, would have to be layered on top of C with an entire application level framework to support it, and based on the arguments made in the C++ FAQS here, if you don't use or at least understand virtual functions, you're not working in OO, you're wanking.

      That's sort of my point, actually. People have been doing the equivalent of virtual functions for years in C and even assembler, using function pointers and dispatch tables. Some other people think they're more advanced programmers because they use C++, but don't have the faintest clue what virtual functions are or what they're good for. That's just hogwash. C++ is not an option for kernel work in many environments - notably just about any flavor or UNIX, whereas NT actually supports in-kernel C++ quite well and even requires it in some cases (e.g. filesystems) - but it's still entirely possible to write very OO code in those situations.

      Going back to what I said originally, criticizing a GUI framework for having a C rather than C++ style native interface, without addressing the usefulness of its object model (or whether it even has one) is - to borrow your own phrase - just wanking. If it's decently OO but expressed in C, C++ wrappers are a trivial exercise. If it's lousy OO but expressed in C++, there's no easy way to fix it.

      --
      Slashdot - News for Herds. Stuff that Splatters.
  165. Re:Reality Check(alleged C++ performance problems) by Jherico · · Score: 1

    >Yeah, it's that "knowing what you are doing" bit that gets me.

    What? Do you use the infinite monkeys with typewriters method of coding? You have to learn the language you're using.

    In my experience C++ does not "hide" things from you, although depending on what environment you're coding in (VC++ with MFC [nudge nudge wink wink]) they you are going to find a lot of voodoo and black magic behind the scenes.

    But the language itself and even the STL (if the implementation conforms to the performance requirements) does not do anything unexpected. You take a performance hit on virtual functions and sometimes on templates, mostly becuase of their extensive use of virtual functions (in my experience). If you're taking a performance hit on temporary variable initialization you're using a bad design. Most such temp vars occur on function call boundries and can be resolved with the effective use of const references in passed class paramaters and plain references in returned classes.

    Anyone else know any other unavoidable performance hits in C++ that are language related as opposed to compiler related?


    --

    Jherico

    What can the average user can do to ensure his security? "Nothing, you're screwed"

  166. OS/2 Warp and the WorkPlace Shell (WPS) by Anonymous Coward · · Score: 0

    Put away your toys, boys and girls, and upgrade to the WorkPlace Shell (WPS) GUI of OS/2 Warp. It's clearly the top GUI.

  167. Re:Tk of Tcl/Tk is (not) best by William+Tanksley · · Score: 1

    Perl/Tk is the exception which tests the rule, of course -- and the rule happens to hold. Look at the Perl source; what happens is that Perl tears apart Tcl and Tk sources to get the Tk into a state usable without Tk.

    So you _can_ use Tk without Tcl -- if you use Perl OR if you're willing to tear apart the Tcl/Tk sources every time you compile.

    -Billy

  168. Do you use Gtk--? It sucks. by Anonymous Coward · · Score: 0

    What C++ code have you written? If you did seriously use the two toolkits you would know that Gtk-- is just a lame wrapper upon Gtk+, not a fully integrated set of classes. Wrappers suck, even the Gtk-- authors said so.

    1. Re:Do you use Gtk--? It sucks. by mill · · Score: 1

      ..and Qt is just a lame wrapper around Xlib. Using moc hacks and QTL to accomplish things that gtk-- does with standard C++.

      Ahh, the joys of FUD. If I could only be so lame to hide my identity too.

      /mill

    2. Re:Do you use Gtk--? It sucks. by warmi · · Score: 1

      You need to learn more. It will come with the age.
      Moc is not a hack ,gtk C++ wrapper is wrapper around C which in turn tries to wrap Xlib and Win32 code. It is ugly and makes your fucking life miserable when things start getting out of hand ( it is generally around 10 000 line of code)


    3. Re:Do you use Gtk--? It sucks. by Alex+Zepeda · · Score: 1

      Oh blah. Have you ever used the STL? It's AWFUL and it bloats the overall size of your program hugely. It generates god awful warnings, and it isn't all that fast. Have you used the QTL? It's really a godsend, and it will work on more C++ compilers. Blah :)

      --
      The revolution will be mocked
  169. The wrong approach by abes · · Score: 1

    Just decided to throw my two cents in since I've been working on related code. I cannot comment on all toolkits I have seen since I only have so much time in my life. However, many of the frameworks I have seen seem to be almost the same thing, but packaged a little differently.
    I beleive what is really needed is a new approach to the problem. Instead of requiring the whole program be encapsulated into the graphical interface, it would be much nicer if you could write your program first, THEN tie in the graphical parts.
    After having worked with MFC, I have seen an approach that definately does not work. Its not that the document/view model will never work, but rather that it might not be the correct model for everyone. It makes it very hard to take an already existing program and transform it into a graphical counterpart.
    Don't get me wrong, I love OOP. C++ is one of my favourite languages (Scheme is about the same rank). But instead of creating a framework that both the program, and the GUI must be wrapped around, it makes more sense to have a more distributed approach (i.e. only involve the GUI when it is needed, associate enough code with the widget set that it can act on its own, but limit it so that it is reusable for almost any situation).
    And on a final note, the things wrong I have seen with QT: 1) deviation from C++. C++ is a very rich and expressive language. Not as expressive as PERL perhaps, but this can be a Good Thing (tm). Any time I see extensive uses of macros in C++, I will immediately give up on any hope (MFC and QT are the biggest offenders). 2) Virtual functions are cool. They're great in fact. But it seems a very limiting approach to use them to handle events. You are limiting yourself because you must handle those events regardless. You do have the ability to just do a return, but then theres a lot of extra code. Virtual functions are supposed to save us from work, not create more! There are other ways besides virtual functions (C has managed all this time).

  170. Programmers and Users by srussell · · Score: 1

    It is annoying that the most programmer friendly APIs seem to produce the least friendly user friendly interfaces. MUI on the Amiga was, by far, the best GUI API I've ever seen.

    I like the design of Swing (for Java). Fresco uses a novel design, but it is slow. GTK is slower than QT, so I prefer QT as a user, but GTK (IMHO) is more attractive.

    Overall, I think we can count ourselves lucky that we have such a variety to choose from. The programmers for some OSes don't have the option to choose style over speed, or a nicer API.

  171. How about BeOS? by grappler · · Score: 2

    I hear from others the BeOS is an EXTREMELY nicely designed environment to program in, since they had the advantage of wiping the slate clean and starting over. I hear that code is very reusable, and the applications can communicate through a messaging protocol, and that the toolkit is a very clean design. I hear that application development is very rapid and that usually the end product ends up running like a dream.

    Can anyone comment on this?

    --
    Vidi, Vici, Veni
    1. Re:How about BeOS? by Adde · · Score: 1

      Well, what can i say?
      BeOS is everything you mentioned and lots more!
      Multithreaded C++ GUI API with compact well-designed framework.

  172. Why not mention where they stole ideas from? by Anonymous Coward · · Score: 0

    I'm not going to say it, you figure it out.

    1. Re:Why not mention where they stole ideas from? by Anonymous Coward · · Score: 0

      And your point is? - The TicK of OpenProjects.Net

    2. Re:Why not mention where they stole ideas from? by Anonymous Coward · · Score: 0

      Some might want to use the original rather than the imitation. Newer is not necessarily better.

    3. Re:Why not mention where they stole ideas from? by WillAdams · · Score: 1

      At a guess, this would be NeXT/OPENstep. www.next.com aliases to Apple's Enterprise software site. If one can score an old machine or copy of the OS, Apple is giving out free updates to NeXTstep 3.3 or OPENSTEP 4.2. William

      --
      Sphinx of black quartz, judge my vow.
  173. No PRACTICAL value? by Stu+Charlton · · Score: 1

    Did you know that many large systems, including banks & power grids & embedded devices, are running under Smalltalk?

    This also goes for Java. It was good enough for VISA international's smartcard system.

    --
    -Stu
  174. MVC == Model View Controller by Stu+Charlton · · Score: 1

    a pattern that AppKit implements very well, I might add.

    --
    -Stu
  175. That's funny! by Anonymous Coward · · Score: 0

    The one that Swing stole most of its ideas from was written in C++!

  176. These kids want to reinvent the wheel... by Anonymous Coward · · Score: 0

    Instead of learning from what's been done before.

  177. Re:Tk of Tcl/Tk is the best by hobbs · · Score: 1

    Tk is by no means tied to Tcl, which is why you see bindings for it in Python, Perl, Scheme, Guile, and a couple others. On the flip side, Tcl is easy to integrate with C or Java, which is why people have placed it in apps that use Motif, Gtk, MFC, etc...

    Also, Tk is cross-platform and requires no recompiling, which none of the other mentioned toolkits can claim. There is an elegance and simplicity there that is just not matched.

  178. U R A DUMBASS by Anonymous Coward · · Score: 0

    Anything reasonable that can be done in C++ can be done in C

    Yeah, and evrything that can be done in C can be done in Assembler. Please refrain from posting such BS until you get a clue what you are talking 'bout.

  179. Re:Reality Check(alleged C++ performance problems) by Anonymous Coward · · Score: 0

    Anyone else know any other unavoidable performance hits in C++ that are language related as opposed to compiler related?

    have a look at kuck & assoc. website. they have a few code snippets that most C++ compilers choke at while the C compiler does well right away. it has to do with the complex data dependencies and integrity that the C++ compiler has to preserve and that prevent aggressive optimization. its kind of the same reason why simple numerical kernels are way faster in FORTRAN than their naive C conterparts.

  180. Re:Tk of Tcl/Tk is the best by William+Tanksley · · Score: 1

    Tk is ties to Tcl -- all of the languages you mention require Tcl to be installed in order to use Tk.

    The exception is Perl, which does a massive parsing of the Tcl and Tk sources to hack its way into Tk.

    (Programs written in) Tk does require recompilation, of course. I don't know what you could be attempting to say which could result in your statement being true.

    And wxWindows works on FAR more platforms than Tk, and is smaller, simpler, and FAR faster.

    Tcl/Tk utterly and completely lacks any approach to elegance and simplicity. We should all jump at a chance to get rid of the albatross of Tcl being linked into every program we distribute merely in order to do basic graphics.

    -Billy

  181. It depends. by Roberto · · Score: 1

    CFront and its ilk do *not* implement private members at the C level.

    I am not saying it can't be done, I am saying that saying CFront did everything C++ requires in C is simply false.

  182. Re:Sounds like your jizz is scalding hot by Anonymous Coward · · Score: 0

    Hmm.

  183. DBM for multiple fields? by Roberto · · Score: 1

    Do yourself a favour and use one of the excellent DB libraries written by Konstantin Knizhnik, that you can find at http://www.geocities.com/SiliconValley/Orchard/580 2/

    These are *gems* and not nearly as known as they should

  184. Re:Reality Check(alleged C++ performance problems) by Zagadka · · Score: 1


    Yeah, it's that "knowing what you are doing" bit that gets me.


    What? Do you use the infinite monkeys with typewriters method of coding? You have to learn the language you're using.


    I think he's referring to the fact that C++ tries to hide a lot of things from you with the intention of being "easy", but it often ends up doing things you hadn't intended.


    In my experience C++ does not "hide" things from you, although depending on what environment you're coding in (VC++ with MFC [nudge nudge wink wink]) they you are going to find a lot of voodoo and black magic behind the scenes.

    But the language itself and even the STL (if the implementation conforms to the performance requirements) does not do anything unexpected. You take a performance hit on virtual functions and sometimes on templates, mostly becuase of their extensive use of virtual functions (in my experience).


    Huh? Templates and virtual functions are completely orthogonal. The performance hit with templates tends to be more related to template bloat (ie: every instantiation is yet another copy of essentially the same code). Most of the template code I've seen actually made very little use of virtual functions.


    If you're taking a performance hit on temporary variable initialization you're using a bad design. Most such temp vars occur on function call boundries and can be resolved with the effective use of const references in passed class paramaters and plain references in returned classes.


    I'm not sure how you're going to reduce temporary instantiation by returning plain references. I'd like to see an example of this. Do you mean passing plain references as "out" paramaters instead of having a return value? That works, but results in harder to read code in many situations, and essentially precludes the use of operator overloading.

    A lot of these performance hits can be avoided. The problem is, often the clearest way of writing the code has serious performance problems that aren't even obvious to the average C++ programmer. Typical C++ programs are filled with unnecessary temporary objects. Removing them requires that you rewrite the code to be much harder to read. For example, a set of matrix and vector classes with + and * operators is only encouraging people to use a coding style that creates lots of useless temporary objects. Yes, it's bad design. Bad language design.

    That said, I still use C++ for some of my own "solo" projects. I think C++, like Perl, is too nasty to use for large projects with more than one developer though. It just makes it too easy for people to create unmaintainable, or plain stupid code.

    Java works well for larger projects. Yes, it isn't quite as fast as C or C++, but modern JVM's are very fast. A lot of the places where Java is marginally slower are places where it does things like array-bounds checking. I'm quite glad that it does do this though. I'd rather my software let me know when something's broke, rather than just acting weird, or opening up security holes (think buffer overflow).
  185. It's more than just a color scheme by cameldrv · · Score: 1

    SGI changed how a lot of the Motif widgets look. Sun did too, but I think SGI's take on it is nicer. Unfortunately, if you just get the stock Motif like all linux apps are compilied with, it looks like crap.

  186. I'm glad Galaxy is dead - worst library I've seen by Anonymous Coward · · Score: 0

    You may find this Galaxy critisism harsh, but keep in mind our company shelled out over $100,000 for this garbage library...

    To say the C++ interface was clunky is a huge understatement -- it sucked ass bigtime. I doubt you guys at Visix even knew you could pass arguments to C++ constructors. Also, nice vsCRAP and vstring "classes" - the only string class in the C++ world you had to clean up after. Your object memory model was completely baffling - no-one ever knew what you were responsible for destroying or what the toolkit was resposible for: I guess this was in large part due to the extremely poor documentation. I could go on and on forever on how bad this GUI library was, but I doubt Slashdot has the disk capacity.

    In the end Visix died because of their complete abandonment of their C and C++ support (even for _paying_ customers!) and due to the creation of the lame-ass "Vibe" product which no-one wanted to use because it was contaminated with Galaxy.

    Thank you for posting.

    I've never had such a good laugh as when I read your Galaxy post. Your strings and struts are not welcome here.

  187. Yes, Swing runs equally poorly on ALL platforms by Anonymous Coward · · Score: 0

    Now that's what I call "write once run as slow as crap everywhere!" Do they just make shit up as they go along at Sun or do they actually have a plan?

  188. Delphi by Anonymous Coward · · Score: 0

    I don't see why Delphi is in any way superior because it's written in Delphi. Delphi strength: it handles window resizing very well, unlike VB. Oh, and it compiles to Intel code. VB strength: Intellisense code completion is way more usable than the Delphi equivalent. Plus, COM integration is way easier (though less granular). -Kevin

  189. Re:Tk of Tcl/Tk is (not) best by Anonymous Coward · · Score: 0

    Tcl/Tk slow!!!? I was a VB and Delphi programmer until I saw the light of tcl/tk. My development times went up by an order of magnitude, and the apps definately are not ugly, or slow. I have a host of apps running day in, day out on multiple platforms that really buzz along. Methinks you need to look again. GordonJ

  190. Superior GUI API by Adde · · Score: 1

    If any of you ever tried the BeOS GUI API, we wouldn't even have this discussion.
    Superior compact, well-designed C++ framework with hooks being handled in pure C++ by overriding virtual functions. It simply ROCKS!
    BTW, i totally agree with the author in the MFC-issue, it's not even worth considering when looking for a descent GUI API.

  191. Re:Qt Free for Windows Too... by Chandon+Seldon · · Score: 1

    Come on... The porting work has already been done. Troll Tech should play nice and share.

    This is one of the major things about Free Software -> Work gets done *once*. If it gets done again it's to improve it. Porting X Qt to windows would just be a waste.

    I highly doubt that Troll Tech is making very much money off of free software for Windows - The're making money off of *Commercial Software* for both Windows and X. I am going to make a token attempt to stay away from KDE until eithor Koffice gets RPM'd, KDE2.0 comes out, or Troll Tech releases Qt under Windows under the QPL for free software projects.

    --
    -- The act of censorship is always worse than whatever is being censored. Always.
  192. About GTK/QT thing by exa · · Score: 1

    Fýrst, it's been a long time since I posted this. The QT license was not revised (it's now DFSG compliant I guess) back then. And I say that the license does matter. GUI stuff is very basic and I'd like it the "free" way.

    Second, I know it's been quite biased ýn favor of GTK, but I couldn't help. By the way, although GTK seems better designed, the implementation has a very steep learning curve, someone said it's a resource hog.

    After I posted the question, it didn't appear for quite a long time, so I had to revise it. However, the rev. version is not here. Sorry. I had removed the "license is boring" part. And added that interpreted languages should be considered.

    --
    --exa--
  193. Interpreted languages are great at GUI development by exa · · Score: 1

    I also think that tcl/tk helps us code decent GUI stuff. It seems that interpreted code is very suitable for GUI development. Gives you a quick dev. cycle.

    Carl Sassenrath had said that interpreted languages for GUIs must be two-way: code->gui, gui->code. I suppose he meant it for the GUI libs of his language called rebol (and prononunced rebel)

    --
    --exa--
  194. QT/KDE is not bad, but has its disadvantages by exa · · Score: 1

    When you're doing it straightforward, QT is handy. A variety of applications were written with QT. Plus, it undergoes massive coding. I cannot catch up with all the new stuff in QT releases. I haven't been able to code with QT2.x at all.

    But it's a bit restrictive. And the moc ýs no good. I don't like a preprocessor that limits the host language. From the C++ perspective, it's insufficient. And QString is a good idea only for a language which doesn't have a string class in its standard lib.

    --
    --exa--
  195. Re:I'm glad Galaxy is dead - worst library I've se by Anonymous Coward · · Score: 0

    right on brother ! galaxy - great gui layout tool - piss poor set of c++ classes wrapped around a set of c libraries ( vchar, vstr , etc ... ) - dog slow interprocess communication via vscrap classes

  196. What about an abstraction toolkit (framework) ? by exa · · Score: 1

    I think you have a point in there. I also had to struggle with a framework: called MFC ;) I remember that in the technical report I had claimed that isolation (thus abstraction) of MFC dependency was an advantage.

    Now, what about an abstraction library? A framework that categorizes and abstracts every known kind of object might be done. It could abstract away the desktop, messaging, GUI, multithreading, IPC.

    I think some of the multiplatform libraries already have similar design. But I don't recall that an abstraction library with no particular toolkit in mind has been programmed. (except Java to a degree)

    --
    --exa--
  197. Re:I'm glad Galaxy is dead - worst library I've se by Anonymous Coward · · Score: 0

    Pete, is that you?

  198. Swing is not pure MVC. by exa · · Score: 1
    At least, swing developers wrote so in Java World. I'm somehow subscribed to it ;), though I'm not sure if the mag's called Java World.

    Nevertheless, the swing developers wrote that Java Swing libraries manipulate the original design pattern so that you don't have a model, view and controller object but a model and UI delegate. Well, or something like that. I think they have a reason for that: this way you have many benefits of separating model and UI code but it's still pretty simple to write apps. Hope I approximated the main theme in that article.

    Here's an article at javaworld that will do the job.

    --
    --exa--
  199. Advocating crappy wrappers is FUD by Anonymous Coward · · Score: 0

    Again, Gtk-- is crap. The API sucks. Just because it is C++ does not make it a good API.

  200. Erm, QString is Unicode... by Anonymous Coward · · Score: 0

    That is why it is good ;-)

  201. Because GUI coding in C is hell by Anonymous Coward · · Score: 0

    Almost every other platform has recognized this and hardly any code GUI apps in C anymore. As far as signals, Qt had that *years* before Gtk existed.

  202. No beauty sleeping? by exa · · Score: 1

    Some prince would come up with this all new magnicient kiss to warp the whole GUI programming experience into a glorious age. Unfortunately, nothing like that.

    Seems Java is armed and ready for a big bang of swing apps. On the other hand, ýnterpreted languages such as tcl/tk make a strong alternative.

    The technical side of graphical programming is a huge problem space that is being constantly breached by the frameworks/toolkýts in question. For the free software developer, it is currently reasonable to tap into the CORBA'ed worlds of GNOME or KDE, while it is not clear which solution is better for the developer of non-free software. Besides, a better path may be that of abstraction more ambitious than even Java libs.

    In addition to GNOME/KDE, there are many libs under development. Some day, one of the newer efforts mýght result ýn a framework richer and more efficient than we are used to. It may be the underlying components (object model, messaging, language bindings, ýmage processing, design patterns) that need to be revised.

    Nevertheless, it's difficult to decide which GUI framework/toolkit to use on the X with the more traditional languages lýke C/C++. Perhaps, there lies an unsolved problem, a beauty that can't yet escape sleep.

    --
    --exa--
  203. Reality ReCheck by exa · · Score: 1

    Some points I think should be reconsidered:

    1) C++ is the leading OO lang., but nothing lives forever. That's why I wrote Ada9x, I didn't want to be a C++ snob. Though, I prefer C++ over any other lang. currently.

    2) About that exponential growth, I might say it's an upper bound (as a CS person ;) Beside the fun part, I think you can provide the almost "linear" growth in source code size by utilizing any true OO language. Any lang. that gives you properties of an OO lang. (like abstraction, inheritance, etc.) and some extra (like genericity) would do. I don't, for instance, see why Ada9x is incapable. Personally, I dislike Java, but then swing is really praised by many coders.

    --
    --exa--
  204. Didn't that almost become JavaStep? by exa · · Score: 1

    I see that I've skipped OpenStep project entirely, and I know I should've mentioned it. Hmm, though I never got to run any OpenStep app in working order. Perhaps they must take better care of install/build scripts and manuals.

    I also think that the obj-c makes a great OO environment, but from what I read at apple's web sites on Mac OS X I remember that the whole interface is going Java. They don't really stress obj-c. I wonder if that's going to drive the OpenStep project and mac os x stuff in different directions. Just what I recall...

    --
    --exa--
    1. Re:Didn't that almost become JavaStep? by AT · · Score: 1

      Apple/Next has written a layer that allows a seamless Java interface. Under the hood, its still ObjC, but you can safely ignore it.

  205. This isn't a newbie question by exa · · Score: 1

    It took me some years to realize that this question had to be asked, this is obviously not a newbie question and I already collected a lot of useful feedback. Please stay on topic.

    --
    --exa--
  206. No GTK elephant here by exa · · Score: 1

    It was not my intention to promote GTK at all. I'd like to get an answer to my question, because I don't know it. That's basically why I posted this as a question and not a criticism/review of various toolkits/frameworks.

    --
    --exa--
  207. IBM Open Class Lib on Linux? by exa · · Score: 1

    VisualAge on Linux? Anything like that? It'd be great if we had a "free" version. Gotta look into that.

    --
    --exa--
  208. MFC QT by exa · · Score: 1

    True. The reasons make QT superior to MFC. At least I can do it on X11! But what about threads? In MFC threading is no big thing. you have both worker and ui thread models. Also, recognition of standard lib is important. The standard lib in g++ is vastly superior to anything that QT or MFC can supply.

    --
    --exa--
  209. Alleged C++ performance problems by Jherico · · Score: 1

    With an admittedly less than complete understanding of the nature of the problem, I still have to say I suspect much of that has to do with compiler design. Could you perhaps go into more detail on what is information must be preserved that prevents such aggresive optimization. Without an full understanding of the problem I might continue to labor under my misapprehension that C++ is a better language than FORTRAN.

    Additionally, I'm not going to scour the Kuck & Assoc website for these snippets. If you're going to reference external info please provde an actual URL.

    --

    Jherico

    What can the average user can do to ensure his security? "Nothing, you're screwed"

  210. YOU ARE ON CRACK! by Anonymous Coward · · Score: 0
    The relevant question is not whether companies run their business with this or that software. The relevant question is how well the software works when companies run their business with it. And from all I have heard, Tcl/Tk cuts development time way down and works nearly flawlessly.

    Dude! D00D!!!#$*! Tcl/Tk may cut down initial development *time* for small to medium sized apps. The results are very often shoddy products. But he real drawback comes, when the time has come to extend the code and the original programmers are no longer at hand. Tcl/Tk simply doesn't cut the cheese here. Its total lack of structure is a nightmare. Its semantics are straight outta hell. BTW, these "features" make Tcl/Tk the favotite baby of commercial "software consultants". Its easy to come up with s/th that alomst gets it right (low initial cost for the consultant) and later guarantees you the joys of endless code fixing for the customers.

    Re:sorry, but ARE YOU ON CRACK??? by Anonymous Coward on Friday August 27, @01:10PM EDT (#) The relevant question is not whether companies run their business with this or that software. The relevant question is how well the software works when companies run their business with it. And from all I have heard, Tcl/Tk cuts development time way down and works nearly flawlessly. Needless to say, the same cannot be said for Windows. Ironically, that smooth operation may be part of the reason that Tcl get so little publicity. It seems to me that most or all of the other "GUI frameworks" discussed in the original article are based on what are known as "systems programming languages," such as C++ and Java...

    Dude! Java and C++ are no "systems programming languages". Get a clue what you are talking about.

    John Ousterhout (the originator of Tcl) wrote an excellent paper explaining why scripting languages are becoming more and more important, and not just for "throw-away" apps.

    John Ousterhout is a dumbass in this respect. He just wrote a shameless plug for his newborn commercial baby. And you are an even bigger dumbass if you actually really buy his words. Scripting languages are not the solution for complex program systems with big data structures and complicated UIs. Scripting languages are for scripting small programs that get the task at hand done, and for doing it quickly. Thats why they are interpreted and highly dynamic, and don't enforce good programming style because everything else would only get in the way for this purpose.

    1. Re:YOU ARE ON CRACK! by Anonymous Coward · · Score: 0

      I feel like I am wasting my time arguing with a high school student, but here goes:

      Yes, Java and C++ *are* system programming languages, not because they are used for operating systems, but because they have strong typing and are intended for building and manipulating complex data structures from scratch.

      You are partially correct when you claim that Tcl and other scripting languages are not intended for large applications, but if you had actually read Ousterhout's paper you'd know that Tcl is really a "glue" or "systems integration" language that is great for integrating components written in systems languages like Java and C++.

      Tcl/Tk is also extensible, so that you can write your own commands in any other language, such as Java and C++. Furthermore, [incr Tcl] is an object-oriented extension of Tcl that extends the scalability of Tcl without requiring the user to write his own extensions.

      The problem with arrogant Bozos like you is that you think a GUI should be written in a systems language, and you are just plain wrong. But don't take my word for it, continue on your merry way, and wake up in 10 years to find out how much of your time you've wasted. And if your GUIs are too complicated for Tcl, they are most likely too complicated, period. I Pity your poor users (not to mention the poor schmuk who gets stuck maintaining your code)!

    2. Re:YOU ARE ON CRACK! by Anonymous Coward · · Score: 0
      1. It's a definition thing. Java and C++ are definitely not designed to build everything from scratch. You may, if you want to, but there are powerful prebuild and standardized libraries provided with every halfway decent system. They both just seperate core language functionality and semantics from library provided containers and algorithms. This is a big plus in terms of usability.
      2. I read Ousterhout's paper long ago because I interested me. I suggest *you* should read it again. He says Tcl is a "glue" language. In the real world this translates to "only suited for quick hacks". The paper is also highly buzzword compatible, semms like you buyed into it. The mixing of statically typed and compiled languages with something like Tcl ist just plain evil. You get the disadvantages of both without the advantages of any of the two. Plus a lot of headaches.
      3. The extensibility is a no no. Mixing with compiled code is a bad thing. See above. The extensions like incr Tcl or Tix also further reduce comprehesiblity and maintainability. Plus they introduce subtle annoyances. And some multi part multi megabyte runtime system for just a few lines of "glue" is just plain nonsense. It would be tolarable if the unique nrevisions of Tcl/Tk and its extensions were fully backwards comatible, but they are not. And porting large Tk GUIs to an new Version is usually a major PITA - because of its hidden dynamic references and the non existant debuggers. Tcl Error messages, especially in a mixed code app, are plain worthless - at best.
      4. Man! Currently I waste most of my programming time trying to interface a complex program system with some funky Tk GUI. It just sucks. Mixed Tcl/Tk + C++ Code is simply unreadable.
      5. Complex Programs require complex GUI coding. Not complicated GUIs themselves, see the point? Its more like the other way around. To make the GUI easy and powerful you have to employ some really complex underlying control code. This is a very hard thing to archieve with the unstructered ad hoc philosophy of Tcl/Tk. And the maintainability of the resulting code is usually below zero.
    3. Re:YOU ARE ON CRACK! by Anonymous Coward · · Score: 0

      Well, that was a more reasoned response. Thanks for not getting personal (like I did).

      It sounds to me like you are saying that scripting is basically useless for industrial-strength GUIs. If so, that's news to me. But I'll give it some thought. Thanks for the input.

      BTW, I am not on crack. Just garder-variety dope!

  211. Tk is best: fastest, most powerful by John+Ousterhout · · Score: 1
    What makes a good GUI toolkit boils down to two simple issues: how fast can you develop GUI applications, and how powerful are that GUIs that you can develop with the toolkit? Everything else is just a means to one of these ends.

    By these metrics, Tk wins hands down. You can develop GUI applications 5-10x faster with Tk than with any other toolkit around (especially those based on C, C++, or Java). Check out http://www.scripti cs.com/people/john.ousterhout/scripting.html for data to back up this claim. Tk also contains canvas and text widgets that allow you to do surprisingly powerful things by associating scripts with graphical elements. I understand that GTK tries to emulate Tk's canvas widget, but without an interpreted scripting language you can't get the same powerful dynamic behaviors.

    Tk also has other advantages such as portability between Windows, Unix, and Macintosh, but the big deal is that you can create powerful GUIs amazingly quickly.

    1. Re:Tk is best: fastest, most powerful by josepha48 · · Score: 1

      Only if you are talking of writing C code using the TK API. From a Tcl/Tk developer, Tk is not athat fast, unless you use TK-C code.

      --

      Only 'flamers' flame!