<!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>
    <p>
        <b>Apache Rivet</b>

 is a powerful, flexible, consistent,
		  		fast, and robust solution to creating web applications:
			            </p>
    <img src="../picts/Rivetlogo_tiny.png" class="floatright"/>
    <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 
		  <sitereference href="templates">Rivet templates</sitereference> or
		  with pure <sitereference href="scripts">Tcl scripts</sitereference>
	    </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%2d3.html">11 Nov 2017: Rivet 2.3.5 released</a>
        </li>
        <li class="navitem">
            <a href="html/rn%2d3%2d0.html">18 Nov 2018: Rivet 3.0.3 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>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>

