Report on Tcl projects in the Google Summer of Code

Notes on the Tcl2008 Thursday morning panel reporting on the Tcl communities participation in the Google Summer of Code, comprised of Matthew Burke, Tomasz Kosiak and Clif Flynt.


Google pays for students to contribute to open source projects (in their Google Summer of Code program). ~150 organizations. 1125 students; 83% successfully completed projects (overall). $5000/student; $4500 to the student, $500 to their mentor (usually). All Tcl mentors are donating their stipend to the Tcl Association. Projects are both proposed by mentors and by (potential) students. Organization ranks proposals; Google indicates how many proposals they will fund.

Every year around March Google announces whether they will do the program that year; they have for four years in a row--assumed they will continue to do so. The main goal from Google's point of view is that they want to get students involved in open source projects (but really for the long term). They want to see the student complete the summer project and continue to be an active participant in the open source community.

What got funded? See:

  • Loading shared libraries from memory; Daniel Hans/Andreas Kupries
  • Tcl FUSE; Alexandros Stergiakis
  • TclDTrace; Remigiusz Modrzejewski; Daniel A. Steffen
  • ...

What didn't get funding?

  • ...
  • Open/ACS/.LRN international standards integration
  • Tcl/Tk browser plugin: User-privileged security
  • Graph manipulations
  • Tcl FUSE

Why so many slots? Tcl originally allocated 4, ended up with 9. In comparison KDE had 47, Apache Software Foundation 30, FreeBSD 20, PHP 10, TeX 3, Subversion 2, Ruby 9, LLvm 3, Adium 4. Thomas, Matthew and Jeff Hobbs each successfully wrote to Google's coordinator and argued what we were an umbrella application (AOLserver, OpenACS, XOTcl, Tcl, Tk, aMSN), hence the extra 5 projects. Tcl's first year participating--9 very good.

The criteria for getting a check at the end of the summer? Mentor selects the yes radio button rather than the no. Two evaluation points: mid-way through and at the end of the summer. All of our students finished. Too early to tell if the students will continue actively in the community or whether there code is widely adopted.

What didn't go well? Little participation by students in the public fora (i.e., comp.lang.tcl)--some limited participation in the chat. Some problems with mentor/mentee communication. Didn't get invited to the mentor summit ("my fault").

For next year:

  • More potential projects (and fleshed out more)
  • More projects geared towards beginners
  • Mentor pairs (at least two per student)
  • Admin doesn't mentor
  • More pressure to get students to participate in the community (mailing lists, newsgroup, chat) at least over the summer--hopefully for the long haul



Felt that we had 4 very capable Polish students.

Some of the most interesting projects:

  • Tcl/Tk Printing Support (TkPrint).
  • Loading shared libraries from memory (interesting, but not a full success). RTLD library (part of FreeBSD dynamic linker) to Linux and trying to make it work with Linux dynamic linker (successfully). Why RTLD? Its license is compatible with Tcl so it could be bundled. Results: it can load simple dynamic shared libraries but cannot load from memory (fix might be simple or complex; no diagnosis). It required high degree of expertise on shared library linker internals that wasn't already available within the Tcl community, so the student was mostly working on his own. To accomplish this project, some other options: Don't create our own linker, but help to put memory load feature into native linkers on supported platforms. Alternatively, use some workarounds to use native linkers (put shared library in /dev/shm on BSD, FUSE on Linux, Windows ____???)
  • Update Tk Test Systems . Goals were 1) to convert syntax from tcltest version 1 to tcltest version 2. 2) Re-examination of why many tests fail. 3) Independence from the system's settings--revisiting constraints. 4) Individual test case independence--admin setup/cleanup. Inherently requires a lot of mentor support (person new to Tcl/Tk cannot become tktest expert without extensive help from mentors). Goal 1 is formally accomplished. Goals 2-4 partially completed. Maybe 50% of effort was spoiled. (JH said: Spoiled is too strong; she came up with questions about tests, but the tests were over 10 years old and no one knows/remembers what the test/why it was done). No Tile tests touched (project was not called TtkTests--intended?)
  • Tcl Bindings to DTrace . "The most successful project from Polish students." Student had all the required skills: C programming, good sysadmin skills with OpenSolaris, and good kernel understanding. Mentor (DAS) was very helpful--tested on unavailable platform (Mac OS X). Mentor and mentoree in almost the same time zone (Poland--Switzerland).

Tomasz Kosiak's background:

Motivation to be involved in GSoC 2008:

  • I hire graduates from Technical University of Gdansk after they prove themselves in internships in the summer
  • GSoC provided funding and mentorship to work on projects which didn't benefit DAC System directly
  • Organizing work is my daily job--I'm quite good at making things happen

Tcl GSoC 2008 Impressions:

  • Communication is a key but it doesn't always work out of the box (language, cultural issues)
  • We need reasonable projects with committed mentors
  • What can we expect from a student? C programming, some motivation and no more!
  • What are student expectations (except Google hype). Doable project and mentor devotion first, money second
  • Shall we bother at all with Tcl 2009 GSoC?
  • IMHO GSoC is important way to bring in new Tcl developers (commercial Tcl usage at Tcl based companies is another one)

Clif Flynt:

Tcl/Tk Printing Support project. Clif mentored Krzysztof Blicharski. Project goals:

  • Create pure Tcl/Tk package to convert Tk graphics to printable format
  • Package must allow easy extension for new widgets
  • package must allow easy extension for new printing formats
  • Support 90 degree rotation and scaling
  • Support splitting a large image into multiple pages
  • Support location on page for PDF output, size of page, margins, etc.

Stage 1: package to convert Tk widget into a machine neutral format and a package to convert neutral format to PDF. The machine neutral format decided upon is a dict of Tk options and values. Status: what is done works. Most of 8.5 widgets supported. Supports for location on page, rotations, scaling to fit on page, and split into multiple pages for manual cut and paste. More work is needed to support panedwindow and text widgets. (Text widget doesn't support enough introspection yet). Need to resolve problems with some fonts. Need more test suites and testing, more commenting in the code (Clif says the code is clean). Needs HOWTO and docs/examples.

(... showed sample code and screen captures/print outs ...)

The student is interested in doing more with this.

(... via the chat Gerald represents that Pascal volunteers to help with font embedding ...)

New Tk functionality needed:

  • Text widget: introspection for if/where lines wrap
  • Paned windows: introspection for location of sashes
  • Introspection of styles for Ttk (a confession elicited by DGP)

(Bugs, feature requests needed to be filed in the Tk trackers at SF still!)

Why should you mentor?

  • A good chance to get a project done without writing code
  • Good students to work with
  • Nifty T-Shirt
  • Satisfaction
  • Opportunity to corrupt children