<!DOCTYPE HTML>
<html lang="en">
<head>
          
    <meta name="keywords" content="Apache Tcl Webprogramming">
    <meta name="description" content="Website for the Tcl related projects within the Apache Software Foundation">
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>Apache Tcl</title>
	
	<!-- Le styles -->
    <link href="templates/ydotm/bootstrap3.css" rel="stylesheet"> 
    <link href="templates/ydotm/style.css" rel="stylesheet">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">

	<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
	<!--[if lt IE 9]>
	  <script src="/assets/js/html5shiv.js"></script>
	<![endif]-->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js" type="text/javascript"></script>
		         
</head>

<body>
<div id="wrapper">
	<div id="main">
		<nav class="navbar navbar-default tcl-navbar">
			<div class='container'>
				<div class="navbar-header">
					<button class="navbar-toggle collapsed" 
                            type="button" 
                            data-toggle="collapse" 
                            data-target="#tcl-navbar-collapse" 
                            aria-controls="tcl-navbar-collapse"
                            aria-expanded="false">
						<span class="sr-only">Toggle navigation</span>
						<span class="icon-bar"></span>
						<span class="icon-bar"></span>
						<span class="icon-bar"></span>
					</button>
					<div id='logo'>
				 		<a href="index.html" 
                            class="navbar-brand nav-logo ">Apache Tcl</a>
				 	</div>
				</div>
				<div class="collapse navbar-collapse" id="tcl-navbar-collapse">
					<ul class="nav navbar-nav navbar-right">
						<li>
							<a href="index.html">Home</a>
						</li>
						<li>
							<a href="http://tcl.apache.org/rivet/">Rivet</a>
						</li>
						<!-- li>
							<a href="http://tcl.apache.org/websh/">Websh</a>
						</li -->
						<!-- li><a href="http://tcl.apache.org/mod_tcl/">mod_tcl</a></li -->
						<li>
						 	<a href="html/about.html">About Us</a>
						</li>
					</ul>
				</div><!-- /.navbar-collapse -->
			</div><!-- /.container -->
		</nav>
		<div class="container container-tcl-main">
			<div class="row">
				<div class="col-xs-12 col-sm-12 col-md-4 col-md-offset-1 col-lg-4 col-lg-offset-1">
					<img class="img-responsive img-center"
                         src="templates/ydotm/apachetcl.gif">
				</div>
				<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
					<div class='tcl-main-intro'>
						<div class='intro-header'>Tcl and Apache HTTP webserver Integration</div>
						<div class='intro-body'>
							<p>
	                  	        Apache Tcl is home to the Tcl-Apache integration efforts. The purpose of
	                            our project is to combine the power of the Apache web server with the 
	                            capabilities of the mature, robust and flexible Tcl scripting language.
	                        </p>
							<p>
								New to Tcl?  Curious about its advantages? 
								Have a look at <a href="html/why.html">Why Tcl?</a>
							</p>
						</div>
					</div>
				</div>	
			</div>
		</div>
		<div class="container-tcl-body">
			<div class='container'>
				<div class="row">
					<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
						<div class='tcl-main-body'>
							<h2>Introduction</h2>
					          <p>
              Apache Tcl was born to coordinate and stimulate the
              development of tools integrating the Tcl programming language
              with the Apache HTTP web server. Our aim was to 
              combine the power of the Apache 
              web server with the capabilities of the mature, robust
              and flexible Tcl scripting language.
            </p>

<p>
              New to Tcl?  Curious about its advantages?  Have a look
              at <a href="html/why.html">Why Tcl?</a>
</p>

<h3>Current Projects</h3>

<p>	
            	We are currently developing and supporting 
            	<a href="http://tcl.apache.org/rivet/" target="_blank">Apache Rivet</a>.
            	Rivet was meant to be a replacement of mod_dtcl and neowebscript. The best
                feature of these past projects were taken to design it.
            	Apache Rivet provides a content
            	generator module (mod_rivet) which runs Tcl scripts and Rivet
            	templates. Rivet templates are pages written in a way similar to PHP pages,
                where Tcl code can be embedded within the HTML. 
</p>

<p>
            	Apache Rivet extends the Tcl language with new commands aimed at
            	providing a program interface to the web server and several 
            	utilities that usually come handy in web programming. 
            </p>

<p>                 
                Current version <a href="http://www.apache.org/dyn/closer.lua/tcl/rivet">3.1</a> 
                of Rivet runs on Apache 2.4 and builds on both Windows and 
                any reasonably recent version of Unix-like operative systems. 
                Previous version 2.3 is still supported but builds
                only on Unix and it requires Apache to run the 
		        <a href="http://httpd.apache.org/docs/2.4/mod/prefork.html">prefork</a> MPM.
</p>

<h4>Dismissed Projects</h4>

<p>
            	We sadly announce the we discontinued development and support also for
                <a href="http://tcl.apache.org/websh/" target="_blank">Websh</a>

 (Nov 6th 2015).
                If anyone willing to take up this project and bring it
                back to life within the Apache Tcl project please let us know
                </p>

<p>
                In recent years we also dismissed
                <a href="http://tcl.apache.org/mod_tcl/" target="_blank">mod_tcl</a>
</p>


						</div>
					</div>
					<div class='col-xs-12 col-sm-12 col-md-4 col-md-offset-1 col-lg-4 col-lg-offset-1'>
						<div id="sidebar">
							<ul class='list-unstyled'>
				                <li id="base">
    <h2 class="sidebar-title">Apache Tcl</h2>
    <ul class="sidebar-inner-list list-unstyled">
        <li class="navitem">
            <a href="html/why.html">Why Tcl?</a>
        </li>
        <li class="navitem">
            <a href="html/contributing.html">Contributing</a>
        </li>
        <li class="navitem">
            <a href="html/tcl.html">Tcl Information</a>
        </li>
        <li class="navitem">
            <a href="html/about.html">About Us - Contact</a>
        </li>
    </ul>
</li>
<li id="projects">
    <h2 class="sidebar-title">Projects</h2>
    <ul class="sidebar-inner-list list-unstyled">
        <li class="navitem">
            <a href="http://tcl.apache.org/rivet/">Rivet</a>
        </li>
    </ul>
</li>
<li id="acknowledgments">
    <h2 class="sidebar-title">Acknowledgments</h2>
    <ul class="sidebar-inner-list list-unstyled">
        <li class="navitem">
            <a href="http://www.apache.org/foundation/thanks.html">ASF Sponsorship</a>
        </li>
    </ul>
</li>

							</ul>
						</div><!-- end #sidebar -->
						<div style="clear: both;">&nbsp;</div>	
					</div>
				</div>
			</div>
		</div>	
	</div>
</div>
<footer class="footer">
    <div class="container">
		<div class='text-center'>Copyright © 2015 Apache Software Foundation. All rights reserved. | 
			Site template created by Jasen Kim (<a href="http://www.ydotm.com">YDOTM</a>)</div>
    </div>
</footer>
<script src="templates/ydotm/bootstrap3.js" type="text/javascript"></script>

</body>
</html>

