Google Code of Summer 2007 Proposals

A part of Google Summer of Code.

This page serves as "Project Ideas" for Tcl/Tk Community participation as mentoring organization in Google Summer of Code 2007.

As far as I can tell, Tcl is not amongst the list of projects that were accepted:

FWIW: on a SoC discussion group it was mentioned that about 130 of 330 applicants were accepted.

Preparation for GSoC 2008 ought to start now.

Tcl/Tk Community handles enhancement to Tcl/Tk code base with TIPs (Tcl Improvement Proposals - for details see ) and Tracker for Bugs/Feature requests/Patches - see ). There are also plenty ideas floating in this Tcler's Wiki ( ) so you are encouraged to browse these links to see what is currently needed.

You will probably find a mentor for any reasonably defined project inspired by browsing mentioned resources. But this particular page is for mentors to publish outlines for proposed projects. That way it would be simpler for students to discuss, choose and apply with Tcl as mentoring organization. It would be best if goals of the Google Summer of Code 2007 student project will be finally described in TIP like fashion. But lets start with just the ideas which we've got now. For further project details contact the following mentors:

tkosiak <tkosiak at gmail dot com>

  • Consolidate best practices from existing custom-built Tcl web servers into one multiplatform (unix/Microsoft windows/embedded) embeddable multithreaded application web server in pure Tcl - modular, supporting http/1.1 mechanisms like pipelining, caching, streaming data. Something like Mongrel for Ruby or Simple for Java. wub and tclhttpd should be considered in the plan.
  • Full HTTP/1.1 support in core http library (smaller part of above)
  • Create full Tcl bindings for DDEML (Dynamic Data Exchange Management Library - MS Windows IPC used in many SCADAs). It will allow easy creation of data providers/consumers (dde servers/clients) doing for example serial communication with particular device type and DDE with HMI suide. What previously has to be accomplished by have commercial products - see [L1 ]
  • Efective implementation of serial Tcl channel for Windows using overlapped I/O so handling of 50 or more serial ports in Tcl under MS Windows will be no more a problem for modern PC hardware
  • Tcl/Tk framework for building form-based database application as pioneered by Borland Delphi. Project aim is to compose sample application from available components, integrating it and showing how to use and glue them together to accomplish database UI application in Tcl.
  • Building tool which can reliably run Tcl applications as MS Windows services. There are a few example code base to borrow best ideas XYZNTservise/winserv/tclsvc. Project should also emphasize slick user experience by enabling easy deployment with multithreaded starkit/starpack and showing application presence in system tray.
  • nstcl/nsdlib/mod_aolserver integration and tweaking AOLserver to allow it to be started from tclsh/wish as a package require
  • Debug and fix poor AOLserver connection handling on oversaturated client links where Apache do it the right way

JH is always full of more ideas than time:

  • Add background exec (BLT's bgexec) to core Tcl (I have some code for this)
  • Font fallback mappings
  • Font alias control
  • Process signalling ([pid signal])
  • Support for named colors (similar to the existing named fonts, but potentially allow for things like patterns)
  • A full remapping of the plethora of wm transient/state/parent/etc into [wm attributes] options
  • [image put] support of "" for transparent pixels
  • Port tkdnd to OS X. X11 and Windows are done - OS X may or may not map into the existing API well.
  • Work on fine-grained locking/mutex issues in conjunction with pthread_atfork on linux/unix


I'd really like to see someone look at how to move Tk's text widget towards supporting the full CSS2 box model (even if not with the same syntax, and definitely *without* the HTML parsing!) That would be useful for so many things.

Either that or a webservice container (including a decent amount of security support infrastructure) as a starkit/starpack so I could just add services and key-pairs to make a full system, ready to go. That'd be really cool, and interesting to me in my professional capacity as well as my Tcl-hacker capacity.

Another thing would be to contribute more image formats (e.g. jpeg2000 or MNG) or faster image reader code to tkimg; I'm sure that would be appreciated, and it could all be done by leveraging other open code (which mustn't be GPL for license reasons), which is a Summer-of-Code sort of thing to do.

Another nice GUI thing would be to add support for automatically animating a GIF to core Tk; in theory, it should be fairly simple to do using timer events, though I've no idea about how hard it is in practice.

SEH 20070312 -

  • Integrate javascript with Hv3
  • Complete fuse vfs kernel module Tcl interface so it is fully read-write rather than read-only
  • Replace ical's C module with cross-platform Tcl script
  • Replace TkRat's C module with cross-platform Tcl script (thus making Postilion usable as well)
  • Update Minkowsky and replace its C server with cross-platform Tcl script

Accomplishment of the last three would instantly make Tcl/Tk a leader in personal productivity software.

Goodwin <goodwin dot lawlor at ucd dot ie> 13-Mar-2007

  • A Vista theme for Tile (Ttk)
  • Make ZipVFS fully writable/appendable

  • A Gtk theme for Tile

  • [BitTorrent] client in Tcl

tkosiak I realized that this page could be better titled as Project Ideas for Google Summer of Code 2007 and probably at GSoC2007 site we should refer to it by PURL. I'm going to move this page content to this new page and setup purl if we will be accepted by Google.

Maybe it's worth taking a look at OpenACS/dotLRN ideas at or Jabber Foundation where there are also some Tcl related projects.

The application emphasises the point that mentor/project leads that will be actively involved are a requirement for participation. Are there those in the Tcl community able to commit time-wise to this endeavor? It would be less than useful to start something like this and then not provide sufficient supervision.