<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Apache Rivet</title>
    <link rel="stylesheet" href="templates/wondrous/styles.css" type="text/css" />
</head>

<body>
    <div id="container">
        <div id="header">
            <h1><a href="index.html">Rivet</a></h1>
            <h2 id="slogan">Webscripting for Tcl'ers</h2>
            <div class="clear"></div>
        </div>
        <div id="body">
            <div id="content">
                <h2>Apache Rivet</h2>
                <div class="floatright"><img src="picts/Rivetlogo_tiny.png" /></div><div>
    <!--div id="announces">
		  <div>
		    01-Dec-2012: <sitereference href="rn-2-0">Rivet 2.0.6</sitereference> and
		    <sitereference href="rn-2-1">Rivet 2.1.0</sitereference> released.   
		  </div>
		</div -->
    <p>
        <b>Apache Rivet</b>

 is a powerful, flexible, consistent,
		  fast, and robust solution to creating web applications:
		            </p>
    <p>
        <b>Powerful</b>

: Apache Rivet puts the Tool Command
		  Language in the hands of the programmer, allowing him or
		  her to manipulate data easily and concisely.  Millions
		  of lines of Tcl code already exist - all you have to do
		  is glue them together to create unique and useful
		  applications. Rivet unites this power with the Apache
		  web server.
		            </p>
    <p>
        <b>Flexible</b>

: The original design constraints for Tcl
		  required that it be flexible enough to be inserted and
		  function in an extreme variety of environments. That's
		  still true today, and makes Tcl, and as a consequence,
		  Apache Rivet, easy to integrate into your business to
		  leverage existing systems.
		            </p>
    <p>
        <b>Consistent</b>

: The Tool Command Language is
		  integrated with Apache Rivet in such a way as to provide
		  you with an easy-to-learn interface that won't surprise
		  you.  Because of this, you can use the same, elegant
		  programming language for your web applications, GUI's
		  (with the Tk toolkit), and quick'n'dirty system
		  administration tasks.  Very simple!
	                </p>
    <p>
        <b>Fast</b>

: A dedicated team of programmers works to
	      make sure Apache Rivet locks in tightly with both Tcl
	      and Apache, ensuring that you get as much performance as
	      your hardware can handle.  Where you need to squeeze out
	      the last bit of speed, the Tool Command Language
	      provides you with a high-quality C API which lets you
	      write Tcl extensions in no time.
	                </p>
    <p>
        <b>Robust</b>

: Created in the late 80's by U.C. Berkeley
	      professor John Ousterhout, Tcl has stood the test of
	      time, being used in such notable companies as IBM,
	      Oracle, Cisco, AOL, and many, many others.  There is a
	      core group of maintainers who oversee the development
	      and maintainance of the Tool Command Language, so that
	      it continues to improve, yet maintains its rock-solid
	      nature.
	                </p>
    <p>
		  Rivet can be used in two different ways: in 
		  <a href="html/templates.html">Rivet templates</a>

 or
		  with pure <a href="html/scripts.html">Tcl scripts</a>
    </p>
</div>



                <div class="contentbottom">
                    
                </div>
            </div>

            <div class="sidebar">
                <ul>
                    <li id="news">
    <h4>News</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a href="html/rn%2d2%2d1.html">3 Mar 2014: Rivet 2.1.4 released</a>
        </li>
        <li class="navitem">
            <a href="html/rn%2d2%2d2.html">5 Dec 2015: Rivet 2.2.4 released</a>
        </li>
        <li class="navitem">
            <a href="html/rn%2d2%2d3.html">11 Nov 2017: Rivet 2.3.5 released</a>
        </li>
        <li class="navitem">
            <a href="html/rn%2d3%2d0.html">9 Feb 2018: Rivet 3.0.1 released</a>
        </li>
    </ul>
</li>
 
                </ul> 
                <ul>
                    <li id="home">
    <h4>Rivet</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a title="A home for Rivet" href="index.html">Rivet Homepage</a>
        </li>
        <li class="navitem">
            <a title="Home of Apache Tcl related stuff" target="asf" href="http://tcl.apache.org/">Apache Tcl Home</a>
        </li>
        <li class="navitem">
            <a title="Getting Rivet" href="html/download.html">Getting Rivet</a>
        </li>
        <li class="navitem">
            <a title="Hello World!" href="html/hello%5fworld.html">Examples</a>
        </li>
        <li class="navitem">
            <a title="The Rivet development team" href="html/about.html">About Us - Contact</a>
        </li>
    </ul>
</li>
<li id="tcl">
    <h4>Tcl/Tk</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a title="The Tcl Developer Xchange" target="tclxchange" class="extern" href="http://www.tcl.tk/">
                The Tcl/Tk Language
                </a>
        </li>
        <li class="navitem">
            <a title="Tcl community wiki site" target="tclwiki" class="extern" href="http://wiki.tcl.tk/">Tcl'ers Wiki</a>
        </li>
    </ul>
</li>
<li id="manual">
    <h4>Rivet Documentation</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a title="Rivet 2.1 Manual" target="rivetman2.1" href="http://tcl.apache.org/rivet/manual2.1/">Rivet 2.1</a>
        </li>
        <li class="navitem">
            <a title="Rivet 2.2 Manual" target="rivetman2.2" href="http://tcl.apache.org/rivet/manual2.2/">Rivet 2.2</a>
        </li>
        <li class="navitem">
            <a title="Rivet 2.3 Manual" target="rivetman2.3" href="http://tcl.apache.org/rivet/manual2.3/">Rivet 2.3</a>
        </li>
        <li class="navitem">
            <a title="Rivet 3.0 Manual" target="rivetman3.0" href="http://tcl.apache.org/rivet/manual3.0/">Rivet 3.0</a>
        </li>
    </ul>
</li>
<li id="support">
    <h4>Support</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a title="Apache Rivet Bugzilla" class="extern" href="https://issues.apache.org/bugzilla/buglist.cgi?quicksearch=Rivet">Bug Reports</a>
        </li>
    </ul>
</li>
 
                </ul> 
                <ul>
                    <li id="acknowledgments">
    <h4>Acknowledgments</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a href="http://www.apache.org/foundation/thanks.html">ASF Sponsorship</a>
        </li>
    </ul>
</li>
 
                </ul> 
            </div>
            <div class="clear"></div>
        </div>
    </div>
    <div id="footer">
        <div class="footer-content">
            <p><a href="http://www.apache.org/">Apache Software Foundation</a> | Design by <a href="http://www.spyka.net">Free CSS Templates</a> | <a href="http://www.justfreetemplates.com">Free Web Templates</a></p>
        </div>
    </div>
    <div style="text-align: center; font-size: 0.75em;">Design downloaded from <a href="http://www.freewebtemplates.com/">free website templates</a>.</div></body>
</html>

