*** [Tomasz Kosiak] Sandbox *** Below is my sandbox --[tkosiak] Click [Formatting Rules%|%here%|%] for more info on formatting rules or http://wiki.tcl.tk%|%here%|% to go to the home page ---- *** Embeddable HTTP/1.1 web server and client library in pure Tcl *** http://wiki.tcl.tk/20887 - tothttpd = TheOneTclHTTPD (''the one to rule them all'') * [Tomasz Kosiak] * Difficulty: easy - medium Using Tcl you can construct simple web server in hundred lines of code so in this wiki there are many examples of such simple HTTP servers. [TclHttpd] and [Wub] are fairly complex web servers written in pure Tcl which aspire to be general purpose HTTP servers. There are also quite a few [Apache] modules which allow to build dynamic websites in Tcl. Finally there is [AOLserver] - developed in C, multithreaded, Tcl-enabled, high performance web server used for large scale, dynamic web sites. The problem is that simple Tcl-only web servers are rather feature-crippled. They usually have no support for handling multipart/form-data POSTs, HTTP methods other then GET/HEAD/POST, international encodings, other auth schemes than basic, custom errors and multi-threading, Even established Tcl-only projects like [TclHttpd] and [Wub] doesn't support fully support HTTP/1.1 advanced mechanisms like persistent connections, request pipelining, chunked encoding, byte ranges, deflate & [gzip] transfer encodings, resource caching headers (e-tag, if-modified-since, expire). [AOLserver] on the other hand is overkill for embedding into application. So there is a need for another Tcl-only HTTP server suitable for easy web enabling application. Nowadays it has to support rich web applications (build with [AJAX] & Flex) that often require mentioned capabilities to achieve best user experience. Therefore this summer (2008) [tkosiak%|%I%|%] and my [phreaman%|%former student%|%] (who analyzed those problems in his last year master degree dissertation) plan to further enhance prototypes we've already build - unfortunately only as a part time assignment. We seek highly motivated student to join our team (full time) so we could direct to him/her implementation of selected problems. His role would be also to write automated test cases so in this process we expect to refine standard Tcl HTTP client library to fully support HTTP/1.1 (see [http]). * '''Requirements for students''' Medium experience in web app development (for example with [PHP]), basic knowledge of Tcl & HTTP. Earlier HTTP/1.1 standard self studies. Being able to meet personally in the early stages of the project or communicate in polish is a big plus. * '''Benefit to student''' Gaining very practical insight into HTTP/1.1 protocol internals and its usage in [RIA], mastering advanced Tcl coding techniques, especially network programming. * '''Benefit to community''' Unification of existing Tcl-only servers into HTTP/1.1 functional one. We will try to provide compatibility API for AOLserver ns_* so any application could be upsized to full blown web server in C if needed. Further Tcl-only HTTP/1.1 client library advancement (we plan to start with http2.6 from [tclsoap] project at [http://tclvfs.cvs.sourceforge.net/tclvfs/tclvfs/http2.6/] ---- ** Cross-platform framework for database application UI development based on Tcl/Tk/Tile *** http://wiki.tcl.tk/20889 * [Tomasz Kosiak] * Difficulty: easy - medium Tcl/Tk toolkit with [Tile] (theming support) allows building cross-platform GUI with native look & feel for MS Windows, Linux & Mac OS X. Recent "TIP #308: Tcl Database Connectivity (TDBC)" [http://www.tcl.tk/cgi-bin/tct/tip/308.html] proposes standard SQL database API for Tcl. Selection of high quality tabular widgets combined with excellent retrospection capabilities of Tcl allowing to effortlessly create (like in Ruby on Rails) editing forms provides basis for a framework for building database applications and their user interface [UI]. Unlike in popular [RAD] (like Borland Delphi) we would like to build UI by code not visually - as this is recommended way to create GUI with Tcl/Tk. First step in this project is to gain real life experience in cross platform Tk/Tile development by building simple time tracker like [http://mg.pov.lt/gtimelog/ %|%gtimelog%|%] (used further to track project progress). Next step is an attempt to port selected fragments of quite complex business application UI build with RAD to Tcl/Tk/Tile. This process should lead to choosing appropriate widgets, showing how to use and glue them together. Mentioned commercial database application will be provided be a mentor, who has full access to its source code and its primary authors. * '''Requirements for students''' Experience with some king of RAD, good SQL knowledge, basic Tcl & Tk knowledge. Being able to meet personally in the early stages of the project or communicate in polish is a big plus. * '''Benefit to student''' Getting to know Tcl/Tk toolkit with native widget support by Tile extension (integrated in Tk as ttk::* namespace). * '''Benefit to community''' Verification and consolidation of separate components needed to build very common kind of application. ---- *** Unified HTTP/1.1 server and client library in pure Tcl *** http://wiki.tcl.tk/20887 - tothttpd = TheOneTclHTTPD (''the one to rule them all'') * [Tomasz Kosiak] * Difficulty: medium Using Tcl you can construct simple web server in hundred lines of code so in this wiki there are dozens examples of such simple HTTP servers. TclHttpd and Wub are fairly complex web servers written in pure Tcl which aspire to be general purpose HTTP servers. There are quite a few Apache modules which allows Finally there is AOLserver high performance webserver developed in C with ... Tcl is used to enhaced application with scripting - it can be used to web enabled by sourcing pure Tcl HTTPd implementation. Elegent implementation for minimum feature complete applications server modular design extensible with modules to handle complexity There is missing simple - feature - crippled there are many possible tasks in that area for students - clarification - sistematization - writing test cases testing features and implementation - like db what is [AOLserver] what is [GD] what we've got and where where is a problem to be solved possible tasks Consolidate best practices from existing custom-built Tcl web servers into one multiplatform (unix/windows/embedded) embeddable, multi-threaded 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 or counterpart of above [tothttpd]) This problem is already discussed in the wiki [http]. There is also an implementation http2.6 in [tclsoap] project at [http://tclvfs.cvs.sourceforge.net/tclvfs/tclvfs/http2.6/] * '''Benefit to student''' Experience in HTTP protocol internals, developing an Tcl API for very common problem, multi-threaded development in Tcl Practical insight into HTTP/1.1 protocol internals. Building API in Tcl to solve very common problem. Network programming. * '''Benefit to community''' There will be one fully functional HTTP server to embed in Tcl application instead of many non functional ones. Web application written to it's API could be ported to [AOLServer] (fully blown web server developed in C) as we plan to provide with compatibility API. Currently Tcl http library supports only HTTP/1.0. Supporting HTTP/1.1 out of the box will allow to easily use from Tcl advanced mechanism like streaming, chunk transfer encoding, persistent connection, etc. ---- ** Cross-platform framework for database application UI development based on Tcl/Tk/Tile *** http://wiki.tcl.tk/20889 * [Tomasz Kosiak] * Difficulty: medium based cross platform framework for development of database application UI (like build with RAD's such as Borland Delphi)** Tcl/Tk/Tile 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 with native look & feel. * '''Requirements for students''' Medium experience in web app development (for example with [PHP]), basic knowledge of Tcl & HTTP. Earlier HTTP/1.1 standard self studies. Being able to meet personally in the early stages of the project or communicate in polish is a big plus. * '''Benefit to student''' Getting to know Tcl/Tk toolkit with native widget support by Tile extension (integrated in Tk as ttk::* namespace). * '''Benefit to community''' Consolidation of separate components needed to build very common kind of application. ---- THIS IS stolen TEMPLATE for GSoC 2008 ***HTTP Server in pure Tcl (the one to rule them all)*** [tothttpd] TheOneTclHTTPd * [Tomasz Kosiak] * Difficulty: medium what is [AOLserver] what is [GD] what we've got and where where is a problem to be solved possible tasks * '''Benefit to student''' * '''Benefit to community''' ---- !!!!!! %| enter categories here |% !!!!!!