This is not necessarily the current version of this TIP.
| TIP: | 13 |
| Title: | Web Service for Drafting and Archiving TIPs |
| Version: | $Revision: 1.5 $ |
| Authors: |
Don Porter <dgp at users dot sourceforge dot net> Donal K. Fellows <fellowsd at cs dot man dot ac dot uk> |
| State: | Draft |
| Type: | Process |
| Vote: | Pending |
| Created: | Tuesday, 21 November 2000 |
This document proposes the TCT provide a service on the World Wide Web for drafting and archiving TIPs and for providing TIPs in a variety of formats. A reference implementation is provided, and its server requirements are outlined.
It has been proposed (see TIP #2) that the TCT manage its projects and procedures through a set of public documents known as Tcl Improvement Proposals, or TIPs. A format for TIPs has been approved (see TIP #3), and although final approval of TIP #2 is still pending, several TIPs have been submitted, discussed, and revised, and a few have been approved, so acceptance of TIPs in some form seems likely.
A prototype system has been provided by Donal Fellows <fellowd at cs dot man dot ac dot uk> at http://www.cs.man.ac.uk/fellowsd-bin/TIP/ that delivers TIPs to visitors in a variety of formats. However, that system lacks archiving of each revision of each TIP, and offers no interface (through the web or otherwise) for making revisions to TIPs.
The TIP format was inspired by the format used by the Tcl'ers Wiki (http://www.purl.org/thecliff/tcl/wiki/). The true power of the Tcl'ers Wiki, though, is not in the particular format it uses, but in the fact that it empowers the whole Tcl community to contribute to a common set of resources. The Tcl'ers Wiki shows that valuable resources can arise out of the unrestricted efforts of volunteers from the community.
The Fellows web interface to the TIP Document Collection (http://www.cs.man.ac.uk/fellowsd-bin/TIP/) offers valuable browsing access to TIPs in a variety of formats. It accomplishes the important goal of making TIPs public. However, it suffers from two significant shortcomings:
Revisions are only possible through the TIP Editor:
Currently the only way to revise a TIP is to e-mail a new revision to the TIP Editor and wait for it to replace the old revision. As more TIPs are submitted, and as each TIP is more frequently revised, this bottleneck will not be tolerable.
Discussion about TIPs currently takes place in Usenet newsgroups and on mailing lists, but because there is no easy access to revising the TIPs themselves, the new information and viewpoints arising in these discussions are not being folded back into the TIPs. This means the TIPs are failing in their intended role to present a full history of an issue to later readers. It also means newcomers to a TIP cannot receive a full briefing in one place, but must chase down discussions in mailing list and Usenet archives. Few people do that, but instead repeat points already made. The discussions about TIP #6 reflect this problem.
An archive of each revision of each TIP is not maintained:
Although TIP #2 refers to TIPs as being stored in a revision control system, probably a CVS repository, the Fellows TIP collection is not maintained in such a system. Since a TIP is an archive of a public discussion of an issue, it is important to be able to access the history of changes to each TIP.
The ability to retrieve and restore earlier revisions of a TIP will be especially important if public revision is permitted, so that any TIP contents that are incorrectly removed, whether by accident or malice, can be restored.
An improved system for archiving and revising TIPs is proposed:
TIPs will be archived in a CVS repository.
Anyone with the power to call a TYANNOTT vote will have commit access to this repository through either :pserver: or ssh access. With this access, they will be able to revise any part (header or body) of any TIP (whether in State: Draft or not). Everyone having this access will be trusted to modify TIPs only in conformance with the TIP format and the TCT procedures.
An enhanced version of the Fellows TIP rendering engine will display an [Edit] link at the bottom of each TIP rendered in HTML.
For any TIP in state Draft, and for which a vote is still pending, the [Edit] link will lead to an HTML form for submitting a revised TIP. For other TIPs, the [Edit] link will lead to a message stating that the TIP may not be edited through the web interface.
The HTML editing form will display the TIP header, but will not make it available for editing. The HTML form will require that an e-mail address be entered, and will allow a name to be entered as well. A <TEXTAREA> will be initialized to hold the current TIP body. Users of the form will revise the body, then submit the form.
The TIP rendering engine will receive the revised TIP body, and will use CVS client commands to merge the revision with other revisions and commit the revised TIP to the TIP CVS repository. If a conflict occurs during a merge, the TIP body including the conflicts will be returned to the user in another HTML form to resolve the conflict.
Note that the CVS commit function of the TIP rendering engine implies that the CGI process in which the TIP rendering engine runs must have a user ID with commit access to the TIP CVS repository.
In the revised TIP checked in to CVS the submitter of the revision will be added as an Author in the header of that TIP.
An enhanced version of the Fellows TIP rendering engine with the capabilities proposed above is available at http://math.nist.gov/~DPorter/tcltk/tipweb/tipweb.tar.gz
Note that the reference implementation reference just above is now out of date with the implementation being tested. After some more debugging, the current implementation will be submitted as a Patch to the tiprender project at SourceForge, see http://sourceforge.net/projects/tiprender/ .
For what it's worth, this TIP was created primarily within a web browser, making revisions through the web interface provided by the reference implementation.
One remaining shortcoming of the reference implementation is that it provides no mechanism for uploading images to the TIP repository. Images would still need to be submitted through the TIP Editor, or someone else with commit access to the TIP CVS repository.
The reference implementation imposes the following requirements on a server:
The server provides an HTTP server that serves the public Internet, and supports the CGI interface. (The reference implementation has been tested with tclhttpd).
CVS client software must be installed on the server.
The CVS repository containing TIPs must be on the server itself. This is due to a CVS limitation that loginfo scripts run on the machine housing the CVS repository, and the reference implementation uses a loginfo script to keep the TIPs presented through the web up to date with the commits to the repository.
The CVS repository must offer commit access over the Internet using either :pserver: or ssh to everyone with authority to call a TYANNOTT vote.
The user under which the HTTP server runs its CGI processes must have commit access to the TIP CVS repository. This may have security implications.
Once the TIPs are housed in a CVS repository, other services should be easier to implement. Another browsing interface could be provided using cvsweb (http://stud.fh-heilbronn.de/~zeller/cgi/cvsweb.cgi/) to allow anyone in the community to browse TIP history. Another loginfo script could provide e-mail notices when a TIP is revised to users who registered their interest in that TIP.
If this TIP is accepted by the TCT, the following matters must be resolved in order to implement its proposals:
A server must be provided meeting the server requirements established above.
Some more eyeballs should look over the reference implementation, and some more users should put it through its paces before it "goes live".
It might be a good idea to make the Abstract into a seperate <textarea> and treat that specially; I've been applying the rule that a TIP's abstract should be a single paragraph (it is implicit in the way I generate XML for instance) and that would be much easier to enforce through this route. It would also have the advantage of discouraging people from placing their whole rationale in the abstract - which I've seen in several first drafts by people who shall remain nameless - and prompting the creation of TIPs more in keeping with the general concept of publishable documents.
It would also be nice if each page had a way of viewing the TIP's revision history (by a link to a suitably setup CVSweb URL?) The way that SourceForge does its CVS-over-the-web is very nice indeed...
Donal K. Fellows <fellowsd at cs dot man dot ac dot uk>
Add a link to TIP #3 on the edit page
OK.
This document has been placed in the public domain.
This is not necessarily the current version of this TIP.