Complete.Org: Mailing Lists: Archives: freeciv-dev: December 1999:
[Freeciv-Dev] Freeciv abstract toolkit (long)
Home

[Freeciv-Dev] Freeciv abstract toolkit (long)

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] Freeciv abstract toolkit (long)
From: Vasco Alexandre Da Silva Costa <vasc@xxxxxxxxxxxxxx>
Date: Wed, 29 Dec 1999 21:23:07 +0000 (WET)

Restarting an old thread, i'm collecting toughts on the Freeciv abstract
toolkit matter.

=== Intro

For those of you not remembering/present we discussed in this mailing list
at the time i originally submitted the GTK+ port of the client that we
probably should create an abstract toolkit to make porting the client to
other platforms easier.  It was Mitch who originally proposed the idea in
the first place if i recall correctly.  Anyway i'll tell you the reasons
which made me come with this topic now.


== Motivation

Originally i didn't botter much with the abstract toolkit option because i
didn't see that many client ports around, and i considered that the GTK+
Win32 port probably should work well (my mistake) and after all there was
a BeOS GTK+ port on the works.

I failed to see the onslaught of ports that ensued.

Right now we have 3 different toolkit ports in CVS: xaw, gtk+, mui
We probably will have a couple more soon: mac, win32, beos.

This leads to painfull work in keeping the clients up to date when changes
are made.  So far this hasn't been much of a problem but this may well
change.


=== Design issues...

Q: Why an abstract toolkit?  It probably would be better (and more
usefull) to just port GTK+ to all those other platforms?

A: People like to see programs in their platform with the native platform
feel.

* So the toolkit should use native platform widgets when possible imho.

* Which language should we use?  C, C++, Java, ...

C is the obvious answer since it's the most supported language around.
Java would solve most of the issues but it's slow, not equally supported
in all platforms.

The problem comes when someone thinks of making a client using Tcl/Tk,
Java or some other bizarre (i.e. not C) option.

* Probably the following platforms should be supported initially:
  xaw, gtk+, win32


Another option would be to create a new language, write the client in that
and then port the language to every required platform (oh wait, that's
Java) :-)

The toolkit portability problem also seems to apply to other stuff as
well:

* communications support (BSD sockets, TLI, XLI, OpenTransport, etc)
* timers



Please send me your comments on this, i'd be especially interested to hear
from the people behind the Mac, Amiga/Mui and BeOS ports.

Can you make a native client for your OS using C only?  Mui is based in C
as far as i can remember, Win32 stuff can be programmed in C only as long
as we skip MFC's.

As for the Java people: please send your comments also ;-)

---
Vasco Alexandre da Silva Costa @ Instituto Superior Tecnico, Lisboa



[Prev in Thread] Current Thread [Next in Thread]