tothttpd

tothttpd = The One HTTP Daemon (web server) to rule them all.

Project envisioned by tkosiak and probably many others before (that's why there is so many tcl-only web servers)

Currently I'll have

I seek volunteer to continue that work. There are 2 experienced persons (my and my college) who previously investigated this area. There was written an master degree dissertation about AJAX application support by webserver done in my company DAC System by student from The Faculty of Electronics, Telecommunications and Informatics ETI of GdaƄsk Technical University (http://www.eti.pg.gda.pl/ ) .


Below is temporarily withdrawn proposal for Google Summer of Code 2008

Embeddable HTTP/1.1 web server and client library in pure Tcl

   https://wiki.tcl-lang.org/20887 - tothttpd = TheOneTclHTTPD (''the one to rule them all'')

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. CMcC I don't believe this is true.

They usually have no support for handling multipart/form-data POSTs, CMcC Wub and tclhttpd supports these

HTTP methods other then GET/HEAD/POST, CMcC Simple added for Wub and tclhttpd

international encodings, CMcC Wub supports these.

other auth schemes than basic, CMcC tclhttpd supports Digest (I wrote it) Wub supports neither (because they are useless.)

custom errors CMcC Wub supports these

and multi-threading, CMcC Both Wub and tclhttpd support multithreading

Even established Tcl-only projects like TclHttpd and Wub doesn't 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). CMcC This is false. Wub supports all of these but byte ranges. tclhttpd supports 1.0 persistent connections

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. CMcC thinks this is not true.

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) I and my former student (who analyzed those problems in his last year master degree dissertation) CMcC would like to see the masters' degree dissertation which claims Wub hasn't these facilities.

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). CMcC points out that there is a Wub client too.

  • 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 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 fully 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 [L1 ]

vtk I think a much better exercise and use of your time would be creating good documentation for existing servers. Everybody wants to do programming (including me) :) but no one has the time to create documentation because it's time consuming and boring. So what if you create another server and it will take you 5 years and by that time it will be obsolete and nobody will use it anyway because no one will know how to use it. Pardon my cynicism. :)

nb I'd like to echo vtk's points above. I for one want to start using wub instead of tclhttpd, but time constraints never allow it, so I just keep using the former. A jump start/migration tutorial would help me, probably others as well (not to be taken as criticism of existing wub docs Colin). I also question the Benefit to community unification statement referenced above. You will probably find that one uses what is required for the job, whether tclhttpd, wub, or, sigh, apache. When we use aolserver we use the resident ns_db calls... when tclhttpd, we load nstcl and do the same.... good luck, and regards