Title: TclTk 2003
1Tcl/Tk 2003
2Using Starkits for Easy Deployment of Server
Applications
- Mark Roseman
- courseforum
- T E C H N O L O G I E S
3The 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
4That 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!
5If 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 Terminal.app, type sudo vi
/etc/httpd/httpd.conf - Remove the leading from these lines
- LoadModule php4_module libexec/httpd/libphp4.so
- AddModule mod_php4.c
- Modify the DirectoryIndex line to read
- DirectoryIndex index.html index.php index.htm
index.php3 index.cgi
6And 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
7Oh, but the fun has just begun!
- Better set up MySQL for your Wiki
- /usr/local/mysql/bin/mysql -uroot -p mysql gt
grant select, insert, update, delete, lock tables
on wiki. to wiki_at_localhost identified by
'password' gt create database wiki gt \q - . Hack hack hack hack hack.
- . Tell PHP about it.. Hack hack
- Modify the Wiki code to include the database
hack hack hack hack.
8Glad we spent all that time developing our
application.
9A 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
10Deploying 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
11The 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 Tcl2000
- Steve Landers Tcl2002
- Gets you pretty far (e.g. wikit)
12CourseForum / 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
13(No Transcript)
14Dependencies
- Typical Wiki Apache/IIS, scripting engine, other
libraries, external database, CVS, - Trend is towards more layers (app servers)
- Barriers to entry
- Initial install (dont 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 youre running in
15Reducing 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, lt 2mb
16Installation
Next
Next
- Install copy
- Uninstall delete
- Well maybe
Next
Next
Next
Next
Next
Next
17Configuration
- Get rid of the text based configuration files!
- Web-based configuration
18Starting and Stopping
- Start the application, stop the application
- Consider a simple GUI for this yes, even for a
server! - New Users
- Feedback
- Choosing ports
19Running as a Daemon
- Different than initial use
- Unix rc.d / inittab
- Windows services
- Mac OS X StartupItem
- more later
20Unix Platform Issues
- Not a lot of extra issues here
- Running as setuid
21Windows Platform Issues
- Start / Stop GUI
- Installers / Uninstallers
- Windows Services
- TclSvc
- Tcl Dev KitService Mgr
- FireDaemon
22Mac 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!
23Mac OS X GUI
- Tk not quite there yet (sniff!)
- Small Cocoa app
- 200 lines ObjC
- InterfaceBuilder
- A few hoursto develop
24Mac OS X Application Bundles
- App is a directory
- Cocoa launcher
- Starpack guts
- Communicate via Unix pipes (!)
- Setuid
25Mac 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
26Other Issues
- Integration
- Avoiding port conflicts
- Firewalls
- Proxy / Virtual Hosting
- Branding
- Development Process
- Builds
- Testing
- Code obfuscation (procomp / tbcload)
27CourseForum / ProjectForum
- Full power of Tcl, Metakit, etc.
- With Starkit, drop development tree on users
machine - Small app, quick to download, code protected
- Runs like native apps, easy to setup and use
28Remember that OReilly Article?
- Ive got one of those if-only-Id-known-that-befo
re sort of feelings - Nice work. You're right, it couldn't be simpler.
29Deployment 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!
30Thanks!
- www.markroseman.com/tcl
- www.courseforum.com
- And announcing
- tcl.projectforum.com
- Free, powerful collaborative workspaces for
Tcl/Tk based open source projects and their
teams. - Yes its easy to install but we do hosting too!