tcl tk 2003
Skip this Video
Download Presentation
Tcl/Tk 2003

Loading in 2 Seconds...

play fullscreen
1 / 30

Tcl/Tk 2003 - PowerPoint PPT Presentation

  • Uploaded on

Tcl/Tk 2003. Using Starkits for Easy Deployment of Server Applications. Mark Roseman course forum T E C H N O L O G I E S. The Canonical Tcl Server App. socket -server Accept $portnum proc Accept {sock args} { fconfigure $sock -blocking 0

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'Tcl/Tk 2003' - albert

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
using starkits for easy deployment of server applications

Using Starkits for Easy Deployment of Server Applications

Mark Roseman



the canonical tcl server app
The Canonical Tcl Server App

socket -server Accept $portnum

proc Accept {sock args} {

fconfigure $sock -blocking 0

fileevent $sock readable “Readable $sock”


proc Readable {sock} {

#… do something interesting


that was easy on to the next application
That was easy! On to the next application….
  • Ummm….forgetting something?
  • Oh yeah, better post it on SourceForge so others can take advantage of my brilliance!
if it was hard to develop it should be hard to install
“If it was hard to develop, it should be hard to install!”
  • Download the latest source
  • Unpack in Sites directory of your home dir
  • Configure Apache
    • Open, type “sudo vi /etc/httpd/httpd.conf”
    • Remove the leading “#” from these lines:
      • LoadModule php4_module libexec/httpd/
      • AddModule mod_php4.c
    • Modify the DirectoryIndex line to read:
      • DirectoryIndex index.html index.php index.htm index.php3 index.cgi
and so on
And so on…
  • Keep configuring Apache…
    • AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
    • Then ‘sudo apachectl restart’
  • Install MySQL (luckily someone packaged that up nicely.. Download it here…)
    • Check if its running:
    • /usr/local/mysql/bin/mysqladmin status
    • Oh yeah and set a root password on it
    • /usr/local/mysql/bin/mysqladmin -u root password sniggle
oh but the fun has just begun
Oh, but the fun has just begun!
  • Better set up MySQL for your Wiki
  • /usr/local/mysql/bin/mysql -uroot -p mysql > grant select, insert, update, delete, lock tables on wiki.* to [email protected] identified by 'password'; > create database wiki; > \q
  • …. Hack hack hack hack hack….
  • …. Tell PHP about it….. Hack hack…
  • Modify the Wiki code to include the database… hack hack hack hack….
a new breed of server apps
A New Breed of Server Apps
  • Personal / Small Group Server Apps
  • SOHO market adopting:
    • Broadband, WiFi, Bluetooth…
    • Windows XP, Mac OS X
  • Weblog, Wiki, webmail, file sharing, calendars, MP3 streaming, document management…
  • Normal users, not network admins
deploying tcl server apps
Deploying Tcl Server Apps
  • The Starkit story so far
  • Deployment Requirements
  • Dependencies
  • Installation / Configuration
  • Starting and Stopping
  • Platform Issues
    • particularly Mac and Windows
  • Miscellaneous Issues

- packaging, builds, obfuscation, integration…

the starkit story so far
The Starkit story so far
  • Tclkit: Tcl, Tk, incr Tcl, Metakit, TclVFS
  • Starkits and Starpacks
    • Platform-neutral or platform-specific
    • Package up your whole development tree
    • Way beyond simple code wrapping
  • Jean-Claude Wippler [Tcl’2000]
  • Steve Landers [Tcl’2002]
  • Gets you pretty far (e.g. wikit)…
courseforum projectforum
CourseForum / ProjectForum
  • Wiki-like app
  • Non-tech users
    • Education
    • Business
  • Cross-platform
    • Unix, Win, OS X
    • Web Browser
  • Easy to use tool
  • Try before you buy
  • Typical Wiki: Apache/IIS, scripting engine, other libraries, external database, CVS, …
    • Trend is towards more layers (app servers)
  • Barriers to entry
    • Initial install (don’t screw up!)
    • Upgrade can break your app
  • Tradeoffs must be taken into account early!
    • Developer benefit from external packages
    • Increased complexity for end users
    • Understand the context you’re running in
reducing dependencies
Reducing Dependencies
  • Solution #1: bundle everything
    • Setup script to automate install
    • Can make sense for larger systems
  • Solution #2: roll your own (subsets):
    • TclHttpd (or mini-variants)
    • Metakit (or SQLite)
    • Build subset libraries (e.g. version control)
  • CF/PF: one file, no externals, < 2mb



  • Install = copy
  • Uninstall = delete
  • Well maybe…







  • Get rid of the text based configuration files!
  • Web-based configuration
starting and stopping
Starting and Stopping
  • Start the application, stop the application
  • Consider a simple GUI for this — yes, even for a server!
    • New Users
    • Feedback
    • Choosing ports
running as a daemon
Running as a Daemon
  • Different than initial use
  • Unix: rc.d / inittab
  • Windows: services
  • Mac OS X: StartupItem
  • more later…
unix platform issues
Unix Platform Issues
  • Not a lot of extra issues here
  • Running as ‘setuid’
windows platform issues
Windows Platform Issues
  • Start / Stop GUI
  • Installers / Uninstallers
  • Windows Services
    • TclSvc
    • Tcl Dev KitService Mgr
    • FireDaemon
mac os x
Mac OS X
  • “Unix for the Masses”
  • Opportunity for smaller developers
    • Rewards innovation
    • Culture of supporting small shops
    • Actually pay for software
    • Easy to get the word out
    • Free High-Quality Developer Tools and Docs
  • Beware — “port” is a four letter word!
mac os x gui
  • Tk not quite there yet (sniff!)
  • Small Cocoa app
    • ~200 lines ObjC
    • InterfaceBuilder
    • A few hoursto develop
mac os x application bundles
Mac OS X Application Bundles
  • App is a directory
  • Cocoa launcher
  • Starpack “guts”
  • Communicate via Unix pipes (!)
  • Setuid
mac os x packaging
Mac OS X Packaging

So we have a Starpack[a virtual file system in a file] in an Application Bundle[which looks like a file system in a file], inside a Disk Image[a virtual file system in a file] … yikes!!!

  • Application Bundles
  • Disk Images
  • Installers if needed
  • StartupItem
    • Known location
    • Shell scripts
    • Run (Unix-style) executable
other issues
Other Issues
  • Integration
    • Avoiding port conflicts
    • Firewalls
    • Proxy / Virtual Hosting
    • Branding
  • Development Process
    • Builds
    • Testing
    • Code obfuscation (procomp / tbcload)
courseforum projectforum27
CourseForum / ProjectForum
  • Full power of Tcl, Metakit, etc.
  • With Starkit, drop development tree on user’s machine
  • Small app, quick to download, code protected
  • Runs like native apps, easy to setup and use
remember that o reilly article
Remember that O’Reilly Article?

“I’ve got one of those if-only-I’d-known-that-before sort of feelings…

Nice work. You're right, it couldn't be simpler.”

deployment is a tcl strength
Deployment is a Tcl Strength
  • Cross platform
  • Easy to embed/extend
  • Code hiding when needed
  • Starkit goes way beyond simple wrapping
  • Network server apps run by end users
    • Important new niche
    • Tips here to ease deployment further
    • Start thinking about deployment early!

And announcing…

Free, powerful collaborative workspaces for Tcl/Tk based open source projects and their teams.

Yes it’s easy to install — but we do hosting too!