&| <<< 2008 | [Google Summer Of Code%|%Home] | [Project Ideas for Google Summer of Code 2010%|%2010 >>>] |& A part of [Google Summer of Code]. ---- **Google Summer of Code 2009 (aka GSoC 2009)** There is also GSoC 2009 official news at our main website http://www.tcl.tk/gsoc which leads to one slide info about GSoC [http://ub0.cc/X/22] - meant to help us advertise GSoC and Tcl/Tk participation among students at the universities worldwide. [GSoC 2009 Executed Projects] ---- <> ---- 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/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 -OK [WJG] (27-Mar-09) * 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: [Jeff Hobbs] ([JH]) * 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 (i.e. so that when matching the RE, we can do it a character at a time, and then fetch that character by asking a callback function to supply it). '''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. ---- ***Tk Demo Expansion*** * mentor: [Donal Fellows] or [Jeff Hobbs] ([JH]) The current Tk demos show a basic overview of the widgets without helping the user develop their Tk code or see the true depth of Tk's potential. The project would be to extend the Tk demo framework with small applications that show good coding practice while also demonstrating how to deal with tricky aspects of Tk programming. The demos should be engaging (possibly a small game or three) as well as relevant (a small text editor). '''Benefits for the student''' <
> The student would become familiar with the Tk widget set. This is an easier project that beginners could get into and would give an opportunity to work on code that would ship with the Tk core. '''Benefits to the community''' <
> Improved demos and tutorials in the core for better out-of-box experience. '''Difficulty''' <
> Easy-Medium. A student should have some knowledge of Tcl/Tk, but need not be expert. ---- ***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]) See [GSoC Application Server Project] for more details. 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. '''Note''' -- it is envisioned that this would be done completely in Tcl, no C/C++ experience should be required. 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. ---- [GSoC Idea: Tk - Factor Photo Image Handling] ---- ***Tk Photo Image Manipulation*** Improve [photo] [image] processing features in Tk to add simple rotation, floating point scaling, tinting, and other easy graphics routines. '''Benefits for the student''' <
> An opportunity to extend their familiarity with "C" code manipuations of photo images, 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 adds value to the Tk photo core that is used by many. '''Notes''' * The estimated difficulty is '''medium'''. * The mentor for this should have knowledge of or strong interest in Tk internals and/or photo manipulation routines. ---- ***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*** * Mentor: Pat Thoyts, backup [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. ---- ***SCORM Compliant Content Packaging for Wiki-based Content Development *** * Mentor: [Gustaf Neumann] * Difficulty: low to high (depending on scope and approach) [DotLRN] is a powerful open source learning management system based on [OpenACS]. The xo*-familiy of packages (xotcl-core, xowiki and xowf) established itself as a flexible, generic, object oriented toolkit for OpenACS, enabling rapid development of arbitrary applications for both OpenACS and DotLRN. XOWiki is one of the most flexible wiki-frameworks, supporting advanced concepts like for example structured wiki features, multiple access policies, flexible application integration and workflows. In the e-elearing context, XOWiki can be used as a single tool for content-development for (adaptive) content presention, blog style content distribution and assessement. SCORM is a collection of standards and specifications adapted from multiple sources to provide a comprehensive suite of e-learning capabilities that enable interoperability, accessibility and reusability of Web-based learning content. (http://www.adlnet.gov/scorm/)" '''Goal''' <
> The main part of this project is an implementation of the import and export mechanisms for SCORM content packages, as well as the development of a SCORM compliant run-time environment and authoring plattform based on xowiki. '''Minimum Requirements''' * Import of SCORM content packages generated by the odp2cp converter based on the example files * Web based manipulation of the imported content packages using xowiki * SCORM compliant export of the manipulated content package '''Base materials and links''' * http://www.adlnet.gov/scorm/20044ED/Index.aspx * http://media.wu-wien.ac.at/download/xowiki-doc/ * http://drive1.f4.fhtw-berlin.de/mocca/odp2cp/webservice.php?sStep=hints * http://inka.fhtw-berlin.de/Herzog/HOME/2_Publikationen/2009-02-27%20HD%20ODP2CP%20WI2009%20Wien.pdf * http://nm.wu-wien.ac.at/research/publications/b766.pdf '''Requirements for Student''' <
> Experience with .LRN, [XOWiki], [XOTcl]; High Motivation '''Benefits for the student''' <
> Gain experience with e-learning standards, object oriented web 2.0 development frameworks and systems integration '''Benefits for the community''' <
> Provide users of the elearning environment DotLRN flexible means to import and export learning content to/from other frameworks such as Moodle; provide means for community sites based on XOWiki or some of its derived packages to exchange materials with e-learning environments; provide means for collaborative, wiki-based content development and delivery based while adhering to the exchange format standards ---- ***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