<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!-- $Id$ -->
<html>
  <head>
    <title>Apache Tcl News</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <? title ?>
    <table class="main">
	<tr>
	  <? navbar ?>
	  <td valign="top">
	    <h2>News and Status</h2>

	    <p>
	      <b>24 March 2006</b> Minor updates of this site to reflect
	      source move to Subversion.
	    </p>

	    <p>
	      <b>5 March 2006</b> Websh 3.6.0b4 has been released. Visit
	      the <a href="/websh/">Websh project home page</a> for details.
	    </p>
	    
	    <p>
	      <b>16 October 2005</b> All Apache Tcl projects moved from
	      CVS to SVN (Subversion).

	    </p>

	    <p>
	      <b>7 February, 2004</b> Rivet 0.3 released.  Visit the
	      Rivet site at <a
	      href="rivet/">http://tcl.apache.org/rivet/</a> to get
	      the latest code.
	    </p>

	    <p>
	      <b>10 June, 2003</b> <a
	      href="http://www.undersky.ru">Undersky.ru</a> issues a
	      press release (in Russian) about their decision to use
	      <a href="http://tcl.apache.org/rivet/">Rivet</a> as a
	      replacement for PHP.  Available here: <a
	      href="http://www.ageofweb.ru/dir/index.cgi?action=show_press&id=893">http://www.ageofweb.ru/dir/index.cgi?action=show_press&id=893</a>
	    </p>

	    <p>
	      <b>28 May, 2003:</b> New site live.  Rivet has
	      officially superceded mod_dtcl and NeoWebScript,
	      although those pages will of course still be accessible
	      for the time being.
	    </p>

	    <p>
	      <b>18-21 November, 2002:</b> Come join us at <a
	      href="http://www.apachecon.com">ApacheCon</a>!  David
	      Welton will be speaking about Apache Tcl, and it would
	      be great to see a lot of people there who are interested
	      in the project(s).
	    </p>

	    <p>
	      <b>6 August, 2002:</b> The <a href="websh/">Websh</a>
	      and <a href="rivet/">Apache Rivet</a> projects are now
	      live on the new web site.  A big thankyou to <a
	      href="http://www.covalent.net">Covalent</a> for hosting
	      us for the past couple of years!
	    </p>

	    <p>
	      <b>29 January, 2002:</b> All Apache Tcl mailing lists
	      are now on-line at <a
	      href="http://www.apachelabs.org">www.apachelabs.org</a>.
	      Thanks to Justin Erenkrantz!
	    </p>

	    <p><b>11 October, 2001</b>
	      There are a fair amount of visitors from .jp addresses.
	      If any of you would like to work on a translation of the
	      site in Japanese, the help would be welcome.
	    </p>

	    <p><b>13 August, 2001</b>
	      New Why Tcl? Page on line.
	    </p>
	    <p><b>13 August, 2001</b>
	      ApacheCon Europe has been cancelled, unfortunately, due
	      to financial difficulties on the part of the promoter.
	    </p>
	    <p><b>10 July, 2001</b>
	      David Welton will be appearing at <a
	      href="http://www.apachecon.com">ApacheCon Europe</a> in
	      Dublin, in October.  Hope to see you there!
	    </p>

	    <p><b>2 June, 2001</b>
	      Some updates to the look and feel of the site - more to
	      come, hopefully. Suggestions welcome!
	    </p>

	    <p><b>17 April, 2001</b>
	      tcl.apache.org was down over the weekend as covalent
	      moved to their new office.  Many thanks to them for
	      hosting the site!
	    </p>

	    <p>
	      <b>10 March, 2001</b> <a href="http://tcl.apache.org/neowebscript/">NeoWebScript</a>
	      joins the Apache Tcl project.
	    </p>

	    <p><b>12 February, 2001</b> <a
	    href="apache-tcl-press-release.txt">Press release</a>
	    discussing Apache Tcl sent out.
	    </p>

	    <p>
	      <b>21 December, 2000</b> tcl.apache.org was unavailable
	      for a few days due to problems with Covalent's ISP.
	      They deserve thanks for the resources this site runs on:-)
	    </p>

	    <p>
	      <b>07 December, 2000</b> tcl.apache.org is now linked
	      from <a href="http://www.apache.org">www.apache.org</a>.
	    </p>
	    <p>
	      <b>24 July, 2000:</b> Apache Software Foundation passes
	      a motion to create Apache Tcl Project.  <a href="http://www.apache.org/foundation/records/minutes/2000/board_minutes_2000_07_24.txt">Link</a>
	    </p>
	  </td>
	</tr>
    </table>
    <? powered ?>
  </body>
</html>
