<!--
 * weinre is available under *either* the terms of the modified BSD license *or* the
 * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 * 
 * Copyright (c) 2010, 2011 IBM Corporation
-->

<p>The source repository for weinre is maintained at 
<a href="https://github.com/pmuellr/weinre">GitHub</a>.

<p>To build the current version of <span class="weinre">weinre</span>, you will 
probably want to use Eclipse.  If that's not an option, there is some 
experimental support in the main ant build script to compile the Java code 
outside of Eclipse.  Explore the <tt>build.xml</tt> file to see how that's
done.

<p>At development time, <span class="weinre">weinre</span> consists of 5 Eclipse
projects.  See the file <tt>README.md</tt> in the
<tt>weinre.build</tt> project for more instructions on
how to perform a build.

