**Google Summer of Code 2008** This is the central location for proposing ideas for the Summer of Code [http://code.google.com/soc]. ''A mailing list (tcl-soc2008 at lists.sourceforge.net) has been created for discussions of project ideas and other conversations about Tcl/Tk SoC. Students, Mentors, Potential Students, and Potential Mentors should join. Details are available at https://lists.sourceforge.net/lists/listinfo/tcl-soc2008.'' The 2008 Tcl/Tk SoC Coordinator is Matthew Burke (mmburke monkey-paw gwu full-stop edu). Contact him if you have any questions. ***Students*** If you are a student interested in getting paid to develop open source software using Tcl/Tk, we encourage you to apply. Why should you want to do this? Tcl/Tk is perhaps the most mature of the dynamic languages, dating back to 1988. The evolution of the language over the last 20 years has been marked by passionate preservation of the balance between maintaining simplicity and utility with the adoption of new ideas and new techniques based on accumulated experience. Tcl/Tk is used in a number of prominent software systems including DejaGnu (e.g. used for testing the gcc compiler), Expect and AOLserver. The language is used by many scientific organizations including NASA as well as being used extensively in the commerical and financial sectors. Please see Google's SoC FAQ [http://code.google.com/soc/2008/faqs.html] for more information on the program. There are several good sources of advice for choosing a project to which you should apply [http://code.google.com/p/google-summer-of-code/wiki/AdviceforStudents], expectations of student participants [http://wiki.python.org/moin/SummerOfCode/Expectations], how to write a compelling application [http://drupal.org/node/59037], and proposing your own project [http://summer.cs.pdx.edu/propose]. ****Added incentive for students**** Any project completed before the 2008 Tcl/Tk Conference will be accepted for presentation in the conference Technical Track. ***Mentors*** If you have an idea, please include it in the list below. Put "MENTOR REQUIRED" in the mentor line if you are unable to serve as mentor for the project. Contact Matthew Burke (see above) with any questions. Also see the [Organization Application for Google Summer of Code 2008] ---- ***Projects*** **Graph Manipulations** * [Matthew Burke] * Difficulty: easy to medium The tcllib package provides functionality for creating and manipulating graph data structures in Tcl/Tk [http://tcllib.sourceforge.net/doc/graph.html]. Although the package is fairly flexible (e.g. allows attaching arbitrary attributes to graphs, arcs, and nodes), there are a number of useful functions that could be added such as finding connected components, determine (shortest) path between two nodes, etc. Integration with Nauty [http://cs.anu.edu.au/~bdm/nauty/] is another desirable feature. * '''Benefit to student''' Gain experience in writing language extensions. Learn some graph theory. * '''Benefit to community''' More powerful graph handling capabilities. ---- **Improved HTTP/1.1 support in the core** * [Jeff Hobbs] * Difficulty: easy Drawing together mixed implementations that are available, this would require a student with an interest in protocols and a good eye for compliance and discipline for test-driven development. * '''Benefit to student''' Gain experience in developing language extensions, develop deeper understanding of HTTP. * '''Benefit to community''' More consistent and powerful functionality for manipulating HTTP requests and responses in Tcl/Tk scripts. ---- **Megawidget development** * [Jeff Hobbs] * Difficulty: easy(-ish) Based on the soon-to-be-core TclOO extension, translate and update the plethora of megawidgets into a single, unified megawidget system that can be "core" blessed. Would involve extensive use of OO, x-platform UI, event-driven coding, etc. * '''Benefit to student''' Practical experience in design and implementation of a widget framework. * '''Benefit to community''' A consistent widget system making use of new core functionality. ---- **Update Tk test system** * [Jeff Hobbs] * Difficulty: easy The Tk test system still uses primarily tcltest v1, and would benefit from an update to tcltest v2 and a full reexamination of out-dated tests (based on specific font characteristics, etc.). * '''Benefit to student''' Gain experience in developing language extensions. Learn about testing frameworks. * '''Benefit to community''' Improved testing capabilities. ---- **AOLserver-libpurple integration** * [Matthew Burke] * Difficulty: easy to hard (depending on scope and approach) The goal for this project is to develop an AOLserver module which enables the server to generate instant messages in response to HTTP requests and to evaluate resource scripts in response to instant messages. An easy approach would be to create a separate thread which monitors two queues: one for incoming instant messages and one for responses to be sent out as instant messages. A more comprehensive approach would be to develop a request handling framework for instant messages that works like AOLserver's other protocol handlers. Information on libpurple can be found at [http://developer.pidgin.im/]. * '''Benefit to student''' Learn about AOLserver internals, multi-threaded programming, instant message protocols. * '''Benefit to community''' Allow application developers to easily adapt their services to communicate with users over additional channels with minimal duplication of effort. ---- **Tcl FireFox Scripting and DOM access ** * [Colin McCormack] * Difficulty: medium-hard Firefox has recently been extended to permit scripts in languages other than JavaScript to appear in