Tcl97 Future/Plans

Subject:      UPDATE: Tcl'97 Tcl Update Talk
From:         jhobbs@cs.uoregon.edu (Jeffrey Hobbs)
Date:         1997/07/16
Newsgroups:   comp.lang.tcl


This message is an attempt to summarize John's big talk at Tcl'97
about what happened (and will happen) with Tcl for the conference.
He's talking as I write this, so it's as fresh as you can get.

7.5p1/4.1p1 was the current release as of Tcl'96

7.6/4.2 added dialogs and some other minor stuff

The predicted 7.6plug/4.2plug && 7.7/4.3 && 8.0 were merged into 8.0

Tcl8:
Bytecode compiler: 2-20x speedup
Namespaces
Binary data and I/O (integrated into regular commands)
        bin data won't be allowed *everywhere* in Tcl
serial devices for Unix & Windows
new event notifier: coexist with Xt
random numbers (in expr)
windows registry (as a package)
HTTP support (as a package)
safe-tcl improvements

Tk8:
native LAF for Windows/Mac
        no core support for selecting LAF, but you can do it yourself
        (requires some hacking)
        by vote, it was shown that the great majority require just
        good LAF on a given platform, rather than consistent (Motif) LAF
        on all platforms (about 100+ vs 10)
new font implementation
new menu system
application embedding (incomplete, except under Unix)
image support in text widgets
safe-tcl support

question arose about some new platform specific packages (ie - registry)
        response was that in general Tcl/Tk tries to find the best
        middle ground to support (like common file dialogs).  However,
        sometimes there are such important platform specific features
        (like the registry), that Tcl should provide access to it in
        order to not die due to its limitations of the least common
        denominator on all platforms.

Tcl/Tk8 release status:
B2 release June 30, 1997
Final release expected early August

Primary development release vote: (what version is your primary version)
8.0:            12
7.6/4.2:        80
7.5/4.1:        15
7.4/4.0:        8
earlier:        1
Number who have to maintain earlier 3rd party extension software: 20

Why note upgrade (to 8.0):
no need:                2
product life cycle:     20
incompats:              35
docs (lack of):         5
other (stability, win mem leaks):       10

Major extension poll to upgrade to 8.0:
TclX:           ready
incr Tcl:       end of August (it will be dynamically loadable)
BLT:            almost
expect:         works now, waiting for better obj/bin support in core
syb/oratcl:     ready, but uses old (non-obj) interface
                (obj interface late fall)
Tix:            works, but not obj'ed
DP:             getting there
ObjectTcl:      late fall

Browser Plugin:
1.0 released Oct 96
2.0 adds man new features:
        customizable security policies
        access to frames
        HTTP access
        JavaScript access
        beginnings of trust models
Currently a2, b1 imminent
final release expected september/october (month or two after 8 goes final)
about 100,000 downloads of plugin
2.0 plugin runs outside the web browser (with small stub inside browser)
allows substitution of your own wish

SpecTcl GUI Builder:

1.0 released January 1997
1.1 expect July 1997; many bug fixes
Overall results disappointing:
	took too long to complete
	not enough functionality
	didn't work with existing apps
	not clear what to do:
		already too easy to create GUIS
Will discontinue development/support after 1.1

Other Projects:
WebTk authorin system: beta release Dec 96
Web server:
	written entirely in Tcl
	embeddable, for management apps
	uses scotty to manage legacy SNMP devices
	serves sunscript.sun.com
	recently released

FTP Stats:
5000-8000 downloads/week from fp.sunlabs.com of Tcl (not Tk)
expecting more when 8.0 goes final
last year: 2000/week
Platform breakdown (by ftp download):
	UNIX:		50%
	Windows:	40%
	Macintosh:	10%
Plugin 1000-2000 download/week (>100,000 total)
Total worldwide developer community: 500,000?

During polling it was noted:
	most people use Unix for primary development, but most
	have Windows as a supported platform
	about a dozen switched to Windows for primary development,
	none switched to Unix
	win32s has little need (2 hands), 8.0 might be the last
	version to support win32s (a pain).

What they didn't do: (all are remaining on "the list")
Megawidgets
image revision
text improvements
threads
debugger
profiler
drag and drop
OLE/ActiveX support

The SunScript Saga:
Goal: build a business community around Tcl and Tk
Summer/Fall 96: talked with SunSoft and JavaSoft.
	Not a good fit
November 96: Eric Schmidt (former Sun CTO)
	suggests and independent business group
Winter 96-7: prepare SunScript business plan
Feb 97: business plan approved, began recruiting
April 30, 97: SunScript announced

Bad News:
April 97: Eric left for Novell
April-May 97: without Schmidt, management support waned
June: decision was made to drop business group, do development

Looking forward:
Bad News: commercial efforts on hold
	no selling of products
	no commercial support
good news:
	projects continue, headcount = 14
	new efforts in Java integration
	ALL SOFTWARE WILL BE FREE
		plugin
		spectcl
		web server
		java tools (this includes Jacl)

Future:
Tcl and Java:
Tcl and Java are symbiotic, not competitive
Java for system programming
	create components, complex algorithms and data structures
	cannot succeed without scripting language
Tcl for scripting
	gluing, sytem integration, component assembly
	cannot succeed without a good component language
SunTcl goal: integrate Tcl and Java to provide best of both worlds

Bring Java to Tcl:
Use JRE to embed Java virtual machine in Tcl apps
Use JDK 1.1 reflection to find Java classes, invoke methods:
	set o [java::new string foo]
	set o2 [$o concat bar]
Provide new Java class to invoke scripts, define new Tcl commands:
	i = new.Interp();
	i.Eval("button .b");
	i.CreateCommand("thread", threadCmdObj);
This will provide smooth integration over to Java (from C or Tcl)

Tcl/Tk as Universal Container:
embed JavaBeans components in Tcl/Tk apps, invoke from Tcl
also embed OLE/ActiveX components
use Tcl as glue between JavaBeans and ActiveX
the goal for Tcl is to glue EVERYTHING

Bring Tcl to Java:
reimplement Tcl interpreter in Java
derived from Cornell Jacl work
Same Tcl-level facilities as when Java is embedded in Tcl
allows Tcl commands to be used in 100% Pure Java environment:
	web browsers
	Java stations
speed will be as good as the JIT compilers

Tcl/Tk 8.1 releases:
Goal: finish by January 1998
Main purpose: compiler consolidation
	finish object conversion of Tcl
	convert Tk to use compiler objects
	fix bugs
A few additional features
	INTERNATIONALIZATION (Unicode done with UTF-8)
		99% backwards compatible (\x.. not OK)
	send for windows/mac
	new modular parser for Tcl scripts
		tcl scripts that parse tcl scripts
		better introspection

Other possible changes:
thread support		60
megawidgets		15
drag and drop		25
OLE/ActiveX support	10
Additional widgets	70 (people are ignorant of the uses of megawidgets)
	combobox
	tree widget
	notebook tabs
printing support	40
rewrite of regexp (I18N, binary data, Perl features)		15
text widget cleanup (smooth scrolling, etc)			5
canvas overhaul (dash patch stuff)				15
image overhaul (more formats, optional dithering, etc)		40
split core into packages					45
continue supporting win32s?					1
continue supporting Mac?					10
CGI (core support)						2
suport extensions						25
plus patches							5