Tcl/Tk 2002. Ten Years of Rapid Development Mark Roseman University of Calgary TeamWave Software...

49
Tcl/Tk 2002 Tcl/Tk 2002

Transcript of Tcl/Tk 2002. Ten Years of Rapid Development Mark Roseman University of Calgary TeamWave Software...

Tcl/Tk 2002Tcl/Tk 2002

Ten Years of Rapid DevelopmentTen Years of Rapid Development

Mark Roseman

University of Calgary

TeamWave Software Ltd.

Sonexis Inc.“Independent Developer”

Welcome to AOL Digital City…Welcome to AOL Digital City…

Yeah ok, maybe not.Yeah ok, maybe not.

Them

Us(not to scale)

Benefit from the Pain of OthersBenefit from the Pain of Others

• Tcl experience papers• Range of systems• Growing systems• Development practices• “Soft” issues

In a nutshell…In a nutshell…

Tcl/Tk good.

You can convince others of that.

But it really helps if you know what you’re doing!

Even for bigger systems.

Today’s TalkToday’s Talk

• Development phases– Prototyping (GroupKit)

– Desktop apps (TeamRooms/TeamWave Workplace)

– Web apps (various)

• Growing pains / solutions• Tcl in the Hot Seat

– Integration, Configurability, Reliability, Scale

– Strengths, Misconceptions, Roadblocks

Collaborative SystemsCollaborative Systems

• Groupware• Conferencing• Highly interactive• Networking• Usability• People issues

When did you discover Tcl/Tk?When did you discover Tcl/Tk?

• 1992 @ U Calgary• Prototypes - TK / BYO• … oops, better finish

that damn thesis!• Tcl-DP

GroupKitGroupKit

• Prototyping shared applications

• Internal/external use• Lots of

experimentation

Tcl/Tk BenefitsTcl/Tk Benefits

• Learning curve

• Higher level programming — faster

• Rich widget set

• Cross-platform

Typical Prototyping Usage…Typical Prototyping Usage…

• Prototypes, small apps

• Small number of developers, even novices

• Limited time

Problems solvable more quickly and easily by individuals & small groups.

TeamRoomsTeamRooms

• “Real” app• Rooms • Tools• Client-server• Cross-platform

TeamWave WorkplaceTeamWave Workplace

• Spin-off company• 2-3 developers• Rapid changes• < 50k loc

So far so good…So far so good…

• Ad hoc development practices– Coding style– Modularity– Testing

• Some bleeding-edge gotchas

• Some performance issues

Onwards…!Onwards…!

Starting to GrowStarting to Grow

• Modest financing– 5-10 developers

• Moving to the web– Users in education, virtual communities– Download a deterrent

Rewrite in Java?Rewrite in Java?

• Keep code base (time to market)

• Client-side Java risky

• Still a small team, tight schedules

• Rapid change

– Virtual community– Music sharing– E-Learning

– Web presentations– Online meetings– Etc.

Tk LibraryProxy Tk Java Applet

Proxy TkProxy Tk

Tcl Application Code

Tk API

OS Windowing System

User’s Workstation Server

Tcl Application Code

Tk API

AWT

Proxy Tk Library

Get all that?Get all that?

• Application code moves to server

• Still uses Tk API

• Tk implementation replaced by Proxy Tk

• Messages sent to Java applet on client

• Events sent from Java back to server

Proxy Tk Java Applet

Tcl Application Code

Tk API

AWT

Proxy Tk Library

Web Site ManagementWeb Site Management

• Application Service Provider model

• Manage accounts, rooms, scheduling…

• Originally cgi.tcl

• Later AOLserver

• Centralized Metakit datastore

Growing PainsGrowing Pains

• Growing code base– 90k loc Tcl, 35k loc C, 10k loc Java

• Ramping up new developers– Tcl learning curve still okay– Finding integration points– Coding styles– Breakage

• Not exactly a shock

Software Engineering… with Tcl?Software Engineering… with Tcl?

Development Practices:Development Practices:Coding StyleCoding Style

• Lots of advantages to using one

• Pick anything

• Tcl Engineering Manual / Style Guide

• Tcl code base as example

Development Practices:Development Practices:ModularityModularity

• Namespaces, objects, …

• Follow commands like ‘file’, ‘string’– Toplevel parsing routine (entry point)– Dispatch to other internal procedures– Naming, variable access, etc.

Development Practices:Development Practices:Automated TestingAutomated Testing

• Tcl excels here• Benefits• Tcltest• Single language• Other automation…

Development Practices:Development Practices:SummarySummary

• Traditional approaches work well in Tcl

• This will slow you down (a bit…)

• Better than the alternative!

Tcl in the Hot Seat!Tcl in the Hot Seat!

Obvious StrengthsObvious Strengths

• Higher level programming

• Cross platform

• Easy licensing

Common MisconceptionsCommon Misconceptions

• Tcl is unstructured

• Tcl is hard to hire for

• Tcl is unsupported

Larger Systems IssuesLarger Systems Issues

• Integration

• Configurability

• Reliability

• Performance and Scalability

IntegrationIntegration

• “Glue”

• Extensions

• COM

• Web services

ConfigurabilityConfigurability

• Adjust for different customers– Feature sets– Extensions– Appearance changes– Branding

ReliabilityReliability

• AOLserver • Two language solution

– Application features in Tcl– Core engine in C

• Multiple process model– Easy in Tcl– Fault tolerant

Performance and ScalabilityPerformance and Scalability

USER

USER

USER USER

USER

USER

USER

USER

USER

USER

USER

USER

USER

USER

USER

USER

USER

USER

USER

USER

USER

USER

USER

USER

Performance and ScalabilityPerformance and Scalability

• AOLserver • Monitoring performance

– Add telemetry– Scalability test harness

• Migration to C

• Multiple processes (vs. threads)

Scalability ResultsScalability Results

• Approximately 1000 users

• 2500 Tcl interpreters!

Many legal bills later…Many legal bills later…

Bottom LineBottom Line

• Tcl worked for us

• From prototypes to robust/scalable commercial apps

With Tcl, could take this work much further on fewer resources than if using conventional development tools.

PitfallsPitfalls

• Interactive web applications

• Web site development

• Tcl best practices?

• Image problem?

Still Great to be a Tcl DeveloperStill Great to be a Tcl Developer

• Core Tcl/Tk• Tcllib• Activestate• Tclhttpd• Metakit• Tclkit/Starkit• Wiki• …

Shameless PlugShameless Plug

• CourseForum– Wiki + discussion for education– Multiple areas, users, versions, tracking…– Ease of use – Easy deployment

• Uses “a little bit”of Tcl

Grab a Beta Version @ Grab a Beta Version @ www.courseforum.comwww.courseforum.com

SummarySummary

Tcl/Tk good.

You can convince others of that.

But it really helps if you know what you’re doing!

Even for bigger systems.

Questions? Questions?

Comments?Comments?

Entertaining War Stories?Entertaining War Stories?

www.markroseman.comwww.markroseman.com