Why Develop SurfIt!?

Why has SurfIt! been developed? Here's a discussion in question-and-answer format.
Q. tkWWW has been around for ages, why re-invent the wheel?
A. tkWWW is getting pretty old. Last time I checked on the Tcl archive site it was still at version 0.12 (circa June 1994), though I have seen references to a 0.13 prerelease. It doesn't even do inline images! However, it does offer HTML editing, and has most of the usual browser functions (bookmarks, etc).

tkWWW is implemented using the W3C Common Library Code. In essence, a Tcl interface has been written for this library, and all of the network protocols, HTML parsing and document rendering are performed using C code.

I didn't want to mention it (since it might sound like sour grapes ;-) but just about everyone I've spoken to thinks tkWWW is pretty seriously broken. I, and many others, have had trouble even getting it to compile, etc, etc.

SurfIt!, on the other hand, performs all network protocol handling, HTML parsing and document rendering using Tcl scripts. This should make it more easily ported to other platforms. It is being designed to support hypertools and applets. As far as browser features go, well... it's still only an alpha release ;-) But I'm catching up fast!

Since SurfIt! has no C code there are no compilation problems and no portability problems (in and of itself, that is). Just point it at a suitable wish and it will run.

Q. Hot Java looks pretty cool, why use Tcl/Tk for active message content (aka "applets")?
A. Well, why not? In fact, there's no reason why the two can't co-exist. There is already a Tcl interpreter class available in Java. In the long-term I'm hoping that the two technologies will merge, and that an applet developer will be able to mix Tcl/Tk & Java code in the same way that an application developer can mix Tcl/Tk & C code today. Generally speaking, UI development tends to be quicker and easier using a scripting language such as Tcl, rather than a 3GL derivative, such as Java.

The real problem is going to be the choice of windowing toolkit.

I believe that the Tk toolkit is more mature than Java's AWT (A Windowing Toolkit). Almost all of Tk has been made available to applets - applets can create top level windows for example. I've haven't been able to do much comparison to AWT since the documentation is not readily available yet (as at 4/9/95). However, AWT is being aggressively developed so the situation may soon change.

SurfIt! also includes support for hypertools - applications which can interoperate by sending Tcl code to each other. As far as I know, Java doesn't have this capability.

If you disagree with my thoughts on this subject, or if you can provide a knowledgeable, impartial and informed comparison/essay on the subject then please contact