**Google Summer of Code 2009 (aka GSOC 2009)** '''Student applications are accepted Mon, March 23, 12pm – Fri, April 3, 12pm.''' (Pacific Timezone). ---- <> ---- This is the central location for proposing ideas for the Tcl Summer of Code [http://code.google.com/soc]. We have been '''accepted''' by Google in 2009 as mentoring organization - see http://socghop.appspot.com/org_app/show/google/gsoc2009/tcltk. ''Last year a mailing list (tcl-soc2008 at lists.sourceforge.net) was used 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.'' ''This year we've just setup new mailing list (tcl-gsoc at lists.sourceforge.net) at https://lists.sourceforge.net/lists/listinfo/tcl-gsoc. So please use this new mailing list but keep an eye on the old one as for a while some discussion may take place there.'' The 2009 Tcl/Tk SoC administrator is [Matthew Burke] (`mmburke'''at'''gwu'''full-stop'''edu`). As backup administrator will act [Tomasz Kosiak] (`tkosiak'''at'''gmail'''full-stop'''com`). Contact them both if you have any questions. ***Students*** If you are a student interested in getting paid to develop open source software using Tcl/Tk (http://www.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 commercial and financial sectors. Please see [http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs%|%Google's SoC FAQ] 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], [http://wiki.python.org/moin/SummerOfCode/Expectations%|%expectations of student participants], [http://drupal.org/node/59037%|%how to write a compelling application], and [http://summer.cs.pdx.edu/propose%|%proposing your own project]. '''Added incentive for students''' Any project completed before the [Sixteenth Annual Tcl/Tk Conference (2009)] (Sept 28 - Oct 2 in Portland, OR, USA) 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 2009]. Note that many of the '''Project Ideas for the Future''' [http://wiki.tcl.tk/20832#pagetoc64574769] from [Project Ideas for Google Summer of Code 2008] are still relevant for GSoC 2009, as are many of the things listed on [Google Code of Summer 2007 Proposals]. [tkosiak]: [Matthew Burke] submitted our application long before the deadline. Now we have to wait for Google and improve this page meanwhile. I think that exact wording of our application should be put on the wiki at [http://wiki.tcl.tk/22713] to replace the version I have crafted just before the deadline. [AK]: This page is becoming to big. I propose to split out proposals to their own page, and have a table here linking to the individual idea pages. As part of the refactoring the proposals can be cleaned as well. [tkosiak]: I think that we should not split this page but clean up headers like "Benefits ..." "Notes" and insert an index consisting of anchors in the page body. [AK]: I agree that an index would help ... Hm. I believe I should ask [jdc] if the wiki markup supports either intra-page links, or has some type of coding which would insert a nicely formatted table of contents into the rendered page. The latter being preferred. [tkosiak]: I made some formatting cleanup to our ideas list - mostly to get rid of superfluous headers like "Benefits ..." "Notes" - converted them to bold text. ---- **Project Ideas:** ---- ***Better string sentence and title case handling*** * mentor: William J Giddings ([WJG]) NEED CONFIRMATION * difficulty: easy - medium [string totitle] doesn't do what it says on the tin and is regularly confusing to people who're used to it working by capitalizing each word [http://coding.derkeiler.com/Archive/Tcl/comp.lang.tcl/2004-08/1000.html] rather than only the first character of the string entire. On the [Tcl'ers Chat], it was noted that proper sentence and title handling would be heavily [locale]-dependent, as vastly different conventions apply to various languages; let alone right-to-left languages. This project would create a Tcl extension for conversion of strings according to locale rules to appropriate sentences and document titles. '''Notes''' <
> [WJG] (31/12/08) Creating correctly capitalized titles isn't too difficult. Here's something I posted to the wiki a couple of years ago. Rather than determining what to capitalize, it works on the principle that certain words are traditionally not capitalized. Naturally, capitalization exception lists will vary from language to language. [http://wiki.tcl.tk/15751] [DKF]: This is a somewhat tricky project, because it'd be producing production-ready code. (We would also want it to be possible to extend what is done so that we can handle other things like collation ordering for '''[lsort] -dictionary''', etc.) It's not that the coding is itself difficult, but it would need to be done to a higher quality than that done by most students. The design phase is difficult though, since very few people have enough exposure to the full nuances involved and so hence miss out on features that are important in some languages. ---- ***Regexp engine cleanup*** * mentor: primary MENTOR REQUIRED as [Donal K. Fellows] ([DKF]) and [Jeff Hobbs] ([JH]) will only help * difficulty: medium - hard [Regular expressions] are an integral part of Tcl, not only through the dedicated [regexp] and [regsub] commands, but also as helpers in numerous other places, most notably the [lsort] and [switch] commands. The current engine, written by [Henry Spencer] and used since Tcl 8.1, has several advantages: * It supports [Unicode]. * It relies on finite automata, and is thus [http://swtch.com/~rsc/regexp/regexp1.html] far more resilient against [DoS] attacks through pathological search patterns than the backtracking engines used in some other communities. Still, there are things about it which should be improved: '''Fixed character width''': The code assumes the text being searched is a C-vector of ''chr''s, i.e., the bytewidth of characters is fixed (in normal builds to 2 bytes), despite regular expression matching in principle being content with sequential access. One disadvantage of this is that data to be matched frequently has to be converted from Tcl's primary UTF-8 string representation to a monowidth representation. Another disadvantage is that this blocks some approaches for extending Tcl's Unicode support to characters beyond the BMP. '''Coding style''': When originally incorporated into the Tcl core, further upstream development of the regexp engine was expected, and so it was admitted despite not adhering to the [Tcl Style Guide] and not being as readable as the Tcl core in general. Today there is no upstream development, so it would be nice if the regexp engine could be brought in line with the rest. ''(Note that some progress has already been made (when?) on this; the RE engine is a ''lot'' closer to Tcl's standard style than it used to be.)'' '''Stream interface''': Make it possible to run the engine on streams of characters being delivered by a callback. '''Lookbehind constraints''': The engine supports lookahead constraints `(?=...)`, but not lookbehind constraints `(?<=...)`. It would be nice to support both. '''Reversion''': The reverse of a regular language is also a regular language, so there is a theoretical foundation for an RE syntax or option meaning "this regexp is to be read backwards". Reversion has a practical application in backwards searches. ''[[Feel free to add more.]]'' '''Benefit for the student''' <
> Reworking the regular expression engine gives practical experience with a concrete full-featured implementation of a very classical piece of Computer Science (namely, the theory of regular expressions and finite automata). '''Notes''' <
> [AMG]: It's interesting to mention both lookbehind constraints and reversion. I once worked around the absence of lookbehind constraints by reversing the input string to [regexp] (actually, [regsub]). Find the code on [SYStems]'s hijacked Wiki page. :^) ---- ***Printing*** * mentor: [Clif Flynt] ([CF]) [CF] The first step to being able to print Tk graphics is to extract the drawing information from Tk and render the windows in a printable format. Krysztof Blicharski did the first step of this for the 2008 GSoC with a package that will render all standard widgets except the 'text' widget as PDF files. This work is available at: [http://www.assembla.com/wiki/show/tktopdf] . I've used it for one of my projects, and it is functional. The package is incomplete because the text widget lacks introspection capability to determine exactly where text wraps (and perhaps other formatting decisions that are made within the widget that I haven't run into yet), and the TTK widgets lack complete introspection functionality. The next step to generate PDFs for all Tk widgets will require delving into the Tk "C" layer to: 1. Extend the text widget introspection capability. 2. Extend the TTK framework for more introspection and reporting of theme values. '''Benefits for the student''' <
> An opportunity to extend their familiarity with "C" code, to work with a large body of code they didn't write themselves, and to work within a previously defined framework. An opportunity to work with experts. '''Benefits to the Tcl Community''' <
> This is another step towards full printing support. '''Difficulty''' <
> Difficult. Will require knowledge of C, Tcl/Tk, X11/Unix, Windows and Mac OS. Clif Flynt is willing to mentor this work, and Joe English has agreed to assist with the TTK details. If someone familiar with the text widget internals would like to step forward, they'd be more than welcome to join the party. ---- ***TkTutor -- WITHDRAWN --*** * mentor: [Clif Flynt] ([CF]) [CF] Google specifically excludes documentation projects from the GSoC projects. http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs#doc_proposals [CF] TclTutor has been available for many years and provided the base material for the Tcl tutorial at www.tcl.tk. I've written a half-dozen Tk tutorials to go with the engine and never had time to finish them and make them available. The project would be to write TclTutor lessons for each of the Tk widgets. These lessons will demonstrate how to use the widgets in simple cases and how to use the more esoteric options and commands. The TkTutor html pages could be used to expand the Tutorial section of www.tcl.tk. '''Benefits for the student''' <
> The student would become familiar with the Tk widget set. This is a simple project that an undergrad could work on. Getting your name on a package that sees thousands of downloads a year. '''Benefits to the community''' <
> Improved documentation and tutorial package. '''Difficulty''' <
> Easy. A student should have some knowledge of Tcl/Tk, but need not be expert. Clif Flynt is willing to mentor this project, but can mentor only 2 projects. ---- ***XLS Read/Write*** * mentor: [Clif Flynt] ([CF]) [CF] CSV Files are sufficient for transmitting data from a Tcl/Tk application to an analyst, but are insufficient for exporting a [tktable] with multiple pages, color or font information. The [perl] folks have a module that will read/write XLS files. Having this package in the [tcllib] would enhance Tcl/Tk's usefulness. '''Benefits to Student''' <
> Experience with writing pure Tcl code. Experience in reading and understanding a language spec. Writing code with a strong potential for moving into commercial/industrial use. '''Benefits to Community''' <
> Expanding Tcl's functionality and ability to play with others. '''Difficulty''' <
> Moderate. Student should know Tcl moderately well and be able to read the XLS specifications and design an API. Clif Flynt is willing to mentor this project, but can mentor only 2 projects. ---- ***Tcl Application Server*** * mentor: [Gerald Lester] ([GWL]) and [Colin McCormack] ([CMcC]) Develop, using [WUB] as a base, of a Tcl Application Sever for web based applications (both WSDL and Rest based) and Tcl 8.6. This would be similar to JBoss or Zend. Such a server would implement: * Management API ** Installation of an service ** Authentication and Authorization specification for a service ** Access control on a service * Servlet API which will include ** Hibernate-integration for persistence programming ** [TDBC%|%TclDBC%|%] ** Log message handling (file, email, service call) '''Benefits to Student''' * Experience with writing pure Tcl code. * Experience with web services technologies. * Defining and document APIs. * Writing code with a strong potential for moving into commercial/industrial use. '''Benefits to Community''' <
> A start of an n-tier enterprise application server for Tcl based applications. [Gerald Lester] and [Colin McCormack] are willing to mentor this project. ---- ***Tclhttpd refurbish*** * mentor: [Steve Huntley] ([SEH]) * difficulty: medium Last spring there was discussion of an initiative to collect various patches and best-practice code commonly applied in the wild to [tclhttpd] (see comp.lang.tcl thread: [http://groups.google.com/group/comp.lang.tcl/tree/browse_frm/thread/596899f8582bc87a/5a1b971b62ccb7cd?rnum=21&q=tclhttpd&_done=%2Fgroup%2Fcomp.lang.tcl%2Fbrowse_frm%2Fthread%2F596899f8582bc87a%2Fcca8962ed4ad6ddd%3Ftvc%3D1%26q%3Dtclhttpd%26#doc_96e9b86988408b96]) which would make it more robust and suitable for use in hostile real-world environments. Said initiative doesn't appear to have gone anywhere. It would be instructive for a student to analyze a package like tclhttpd (which is generally quite standards-compliant, robust and useful) for the weaknesses that manifest in real-world use, and gather, evaluate and apply the existing solutions to the official code base; as well as create solutions that aren't already available. A better tclhttpd would be quite useful to the many existing users of the application, as well as a benchmark for successor products as they appear. ---- ***Curses implementation of Tk*** Tcl has had a couple of implementations of "Tk for the terminal" in the form of [ctk] [http://www.ma.utexas.edu/restricted-resources/utma-doc/tcl-tk/html/README/Ctk ] (for Tk 4.0b ) and [ck] [http://www.ch-werner.de/ck] (for Tk 8.0 ); however, for current versions of Tk nothing is available (other than the tcllib term package(s) which is rudimentary and does not offer the advantages that (n)curses provides). Can you imagine what a selling point this would be for TCL? Having the ability to use a GUI on a desktop and then using the same program via a serial port would be a boon to sysadmins. How many times have you heard things like "We want a Swing UI since its Java its multi-platform". What about Tcl/Tk? Its multi-platform AND you can use the same program in a ssh terminal session or over a serial line when no windowing system is available. An extension like this would add serious value to Tcl/Tk and make it a contender. This could be accomplished quickly given that there are implementations to study and possibly borrow code from. The Ck is the most complete and would be an excellent starting point. ---- ***Tk Factor Photo Image Handling*** Factor the [photo] [image] handling and processing out of Tk, make it independent of presence of [X11] and other graphics core (leave only the absolutely minimal graphics-dependent part in Tk). ''([DKF]: Note that in 8.6 there is already some splitting of the image code into manipulators and renderers. ''I think'' that, of the code that isn't doing rendering, the only part that is critically related to having a GUI is color name parsing. See also Tk FRQ 783802 [https://sourceforge.net/tracker/?func=detail&aid=783802&group_id=12997&atid=362997%|%Tcl'2003: Split photo masters into Tcl package].)'' '''Benefits for the student''' <
> An opportunity to extend their familiarity with "C" code, to work with a large body of code they didn't write themselves, and to work within a previously defined framework (namely the TK Image infrastructure). '''Benefits to the Tcl Community''' <
> This makes an important part of graphical operations available to display-less applications, like report generators, web servers (on-the-fly graphics), etc. '''Notes''' * The estimated difficulty is '''high'''. * The mentor for this should have good knowledge of Tk internals. ---- ***Tk Icon Themes*** Create a package to create, manage and use '''icon themes'''. This came out of a recent thread on `tcllib-devel` about a package wrapped around the famfam silk icons for easy physical access. This promptly started talk about logical access, plugins and themes. See that thread for more on this idea ... (TODO: get sourceforge url to the thread, or other archive of that mailing list) ... '''References''' * http://freedesktop.org/wiki/Specifications/icon-theme-spec, * http://freedesktop.org/wiki/Specifications/basedir-spec, * http://freedesktop.org/wiki/Specifications/icon-naming-spec * http://www.satisoft.com/tcltk/icons/ '''Notes''' * We have pieces for this already, like Tcllib's [ini] package to handle .ini files (The theme information is stored in such files). * This is something which can be written entirely in Tcl, no C required. * The estimated difficulty is '''medium''' to '''low''', IMHO ([AK]). * I ([AK]) am willing to mentor this. '''Benefits to the Tcl Community''' <
> Making it easier to create applications which fit into the KDE and Gnome Desktop Environment '''Benefits for the student''' <
> ??? ---- ***Gnocl*** I would like to see [Gnocl] get some help. That is the most promising non-Tk framework for Tcl. '''Benefits for the student''' * An opportunity to extend their familiarity with "C" code, to work with a large body of code they didn't write themselves, and to work within a previously defined framework (namely the popular Gnome and GTK+). * An opportunity to work with experts. '''Benefits to the Tcl Community''' <
> This gives another full GUI toolkit for the community to use in building their Tcl applications. '''Notes''' <
> [RLH] I would like to second this one. [WJG] (12-FEB-09) As the current maintainer of Gnocl I'm really pleased to see interest being taken in the project. Whilst a lot of work has been done and many exciting features will be available in the next release (e.g. window masking and a bag of megawidgets) there is still much to do. Any one interested in contributing to the project will be warmly welcomed. So, let me know what features your interested in and see how these can be added to Gnocl. ---- ***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 [TclOO] (Tcl's built-in object system), 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. * A good base for further building of custom widgets in pure Tcl code by the whole community. '''Notes''' <
> [DKF]: I want more [megawidget]s, I want to know how good Tk 8.6 is for building megawidgets, I'd love to see a set of [TclOO] base classes for megawidget support, and I'm very keen on learning what things need to be added at the [Tk C API%|%C level%|%] to make megawidgets easier/better. This is an ideal thing for a GSoC project, as it doesn't need a lot of complicated programming and the return on the student's effort is very immediate. [LV]: at the very least, it would be beneficial for someone to do a review of several existing megawidget frameworks (both within the Tk community and outside), producing a set of requirements for a framework which, when eventually implemented, would provide a set of megawidgets which are more Tk (or perhaps more [Ttk]?) like. ---- ***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