|
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
- <!-- Content Stylesheet for Site -->
-
-
- <!-- start the processing -->
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
-
- <meta name="author" value="Adam Murdoch">
- <meta name="email" value="adammurdoch@apache.org">
-
- <title>Apache Myrmidon - Get Involved</title>
- </head>
-
- <body bgcolor="#ffffff" text="#000000" link="#525D76">
- <table border="0" width="100%" cellspacing="0">
- <!-- TOP IMAGE -->
- <tr>
- <td> <td colspan="2">
- <a href="http://jakarta.apache.org"><img src="http://jakarta.apache.org/images/jakarta-logo.gif" align="left" border="0"/></a>
- </td>
- </td>
- <td valign="bottom"><div align="right"><b><font size="+3" color="#525D76">Apache Myrmidon</font></b></div></td>
- </tr>
- </table>
- <table border="0" width="100%" cellspacing="4">
- <tr><td colspan="2">
- <hr noshade="" size="1"/>
- </td></tr>
-
- <tr>
- <!-- LEFT SIDE NAVIGATION -->
- <td valign="top" nowrap="true">
- <p><strong>Myrmidon</strong></p>
- <ul>
- <li> <a href="./index.html">Introduction</a>
- </li>
- <li> <a href="./getinvolved.html">Get Involved</a>
- </li>
- <li> <a href="./user.html">Building Myrmidon</a>
- </li>
- <li> <a href="./todo.html">Todo List</a>
- </li>
- </ul>
- <p><strong>User Guide</strong></p>
- <ul>
- <li> <a href="./buildfile.html">Build file</a>
- </li>
- <li> <a href="./vfs.html">Virtual File System</a>
- </li>
- </ul>
- <p><strong>Extending Ant</strong></p>
- <ul>
- <li> <a href="./task.html">Task Writers HOWTO</a>
- </li>
- <li> <a href="./classloader.html">ClassLoader HOWTO</a>
- </li>
- <li> <a href="./librarys.html">Library HOWTO</a>
- </li>
- </ul>
- <p><strong>Container Design</strong></p>
- <ul>
- </ul>
- </td>
- <td align="left" valign="top">
- <table border="0" cellspacing="0" cellpadding="2" width="100%">
- <tr><td bgcolor="#525D76">
- <font color="#ffffff" face="arial,helvetica,sanserif">
- <a name="Todo List"><strong>Todo List</strong></a>
- </font>
- </td></tr>
- <tr><td>
- <blockquote>
- <p>The broad goal is to grow Myrmidon from a prototype task engine into a fully
- fledged build system, that can serve as the basis for Ant 2. The following
- sections describe some of the many things which still need to be done to
- achieve that goal. This list is currently under construction.</p>
- <table border="0" cellspacing="0" cellpadding="2" width="100%">
- <tr><td bgcolor="#828DA6">
- <font color="#ffffff" face="arial,helvetica,sanserif">
- <a name="Self Hosting"><strong>Self Hosting</strong></a>
- </font>
- </td></tr>
- <tr><td>
- <blockquote>
- <p>Myrmidon must be able to build itself. Currently, it is built using
- Ant 1.x. Ultimately, Myrmidon should be able to build itself from exactly the
- same build file. To start with, however, there is no need for Myrmidon to be
- able to do this. Myrmidon should also be able to be bootstrapped (that is, be
- able to be built from scratch, without using Ant 1.x at all).</p>
- </blockquote>
- </td></tr>
- </table>
- <table border="0" cellspacing="0" cellpadding="2" width="100%">
- <tr><td bgcolor="#828DA6">
- <font color="#ffffff" face="arial,helvetica,sanserif">
- <a name="Ant 1.x Compatibility"><strong>Ant 1.x Compatibility</strong></a>
- </font>
- </td></tr>
- <tr><td>
- <blockquote>
- <p>There are 2 parts to this broad topic: Allow Ant 1.x build scripts to be
- executed by Myrmidon, and allow Ant 1.x tasks to be executed unmodified
- by Myrmidon.</p>
- </blockquote>
- </td></tr>
- </table>
- <table border="0" cellspacing="0" cellpadding="2" width="100%">
- <tr><td bgcolor="#828DA6">
- <font color="#ffffff" face="arial,helvetica,sanserif">
- <a name="Virtual File System"><strong>Virtual File System</strong></a>
- </font>
- </td></tr>
- <tr><td>
- <blockquote>
- <p>The VFS needs plenty of work:</p>
- <ul>
- <li>Move files/folders.</li>
- <li>Recursive folders copy.</li>
- <li>Search through a file hierarchy, using Ant-style wildcards.</li>
- <li>Search through a file hierarchy, using a Selector interface.</li>
- <li>The in-memory caching mechanism is pretty rudimentary at this stage.
- It needs work to make it size capped. In addition, some mechanism needs
- to be provided to release and refresh cached info.
- </li>
- <li>Convert files/folders into local files, for handing off
- to external commands, or legacy tasks.</li>
- <li>Refactor the replication mechanism out of ZipFileSystemProvder,
- and make more general pluggable.</li>
- <li>Capabilities discovery.</li>
- <li>Attributes and attribute schema.</li>
- <li>Handle file canonicalisation better (for cases like case-insensitive
- file systems, symbolic links, name encoding, etc).</li>
- <li>File system layering. That is, the ability for a file system to
- sit on top of another file system, or a file from another file system
- (e.g. Zip/Jar/Tar file systems, gzip/encoding file systems, virtual file
- systems).
- </li>
- </ul>
- </blockquote>
- </td></tr>
- </table>
- <table border="0" cellspacing="0" cellpadding="2" width="100%">
- <tr><td bgcolor="#828DA6">
- <font color="#ffffff" face="arial,helvetica,sanserif">
- <a name="File Data-Types and Tasks"><strong>File Data-Types and Tasks</strong></a>
- </font>
- </td></tr>
- <tr><td>
- <blockquote>
- <p>The file data-types, such as <code><fileset></code> and
- <code><path></code>, are some of the most widely used parts of Ant 1.x.
- Unfortunately, they aren't particularly extensible.</p>
- <ul>
- <li>Redesign the file data-types, replacing them with an interface-based
- API, plus a set of implementations. The API should use the VFS file
- <code>FileObject</code>, rather than <code>java.io.File</code>.
- This process has started, in the <code>antlib.vfile</code> package.
- </li>
- <li>File Selectors:
- <ul>
- <li>Change <code>AbstractNameFileSelector</code> to use Ant 1 style patterns
- matches, rather than Globs patterns.</li>
- <li>Add 'defaultexcludes' to <code>DefaultFileSet</code>. Also add a
- file selector implementation that matches everything except the default
- excludes.</li>
- <li>Add a name selector that loads patterns from a file.</li>
- <li>Add more selector implementations: size and last-modified comparisons,
- checksum comparison, byte-wise content comparison.</li>
- </ul></li>
- <li>File conditions:
- <ul>
- <li>Add more condition implementations that perform checks on files.
- One that searches a path for a file would be useful.</li>
- </ul></li>
- <li>File Name Mappers:
- <ul>
- <li>Change FileNameMapper.mapFileName() to take vfs.FileName objects.</li>
- <li>Move the current mapper implementations across to antlib.</li>
- </ul></li>
- <li>File Sets:
- <ul>
- <li>Add a file set implementation that provides the union of several
- nested file sets (that is, a file set that merges several file sets
- together).</li>
- <li>Add a file set implementation that filters files that are up-to-date
- WRT some other file. Alternatively, this might be better done as a
- file selector.</li>
- </ul></li>
- <li>Paths:
- <ul>
- <li>Add path implementations that evaluate to the system classpath,
- and the ant runtime classpath. Or, more generally, combine this with
- <code>ClassLoaderManager</code> to evaluate to the classpath of any
- 'library' (e.g. system classpath, ant runtime, tools.jar,
- an antlib, an installed extension, or the system classes of another JVM
- for cross-compiling).</li>
- </ul></li>
- <li>Port across the Ant 1 file filter proposal, once it is complete.</li>
- <li>Copy task:
- <ul>
- <li>Implement 'preservelastmodified', 'overwrite', and 'includeemptydirs'.</li>
- <li>Support a file name mapper.</li>
- <li>Support file filters.</li>
- <li>Detect and handle destination file name collisions.</li>
- </ul></li>
- <li>Implement the <code><move></code>, <code><delete></code>,
- <code><touch></code> and <code><mkdir></code> tasks on top
- of the VFS and the new file data-types. Might be some scope for generalising
- 'touch' and 'mkdir' into a single task.</li>
- </ul>
- </blockquote>
- </td></tr>
- </table>
- <table border="0" cellspacing="0" cellpadding="2" width="100%">
- <tr><td bgcolor="#828DA6">
- <font color="#ffffff" face="arial,helvetica,sanserif">
- <a name="Command-line and Configuration Files"><strong>Command-line and Configuration Files</strong></a>
- </font>
- </td></tr>
- <tr><td>
- <blockquote>
- <p>One of the goals of Ant 2 is to allow the user to easily customise and
- extend Ant. The command-line and local configuration files, are two places
- where this would be done. Currently, Myrmidon some customisation from the
- command-line, but does not support configuration files.</p>
- <ul>
-
- <li>Load configuration from system (from $ANT_HOME) and user (from $HOME)
- configuration files.</li>
-
- <li>Allow the following via config files:
- <ul>
- <li>Add (or override) the <code>lib</code> and <code>ext</code> directories.</li>
- <li>Enable more than one listener, and configure the listeners from
- the conents of the config file.</li>
- <li>Import libraries, and set properties.</li>
- <li>Execute tasks.</li>
- <li>Install and configure runtime services.</li>
- </ul>
- </li>
-
- </ul>
- </blockquote>
- </td></tr>
- </table>
- <table border="0" cellspacing="0" cellpadding="2" width="100%">
- <tr><td bgcolor="#828DA6">
- <font color="#ffffff" face="arial,helvetica,sanserif">
- <a name="Scripting"><strong>Scripting</strong></a>
- </font>
- </td></tr>
- <tr><td>
- <blockquote>
- <p>Add the ability to extend Ant using languages other than
- Java:</p>
- <ul>
- <li>Define a task using a scripting language such as Javascript.</li>
- <li>Use Rhino's ability to implement Java interfaces, to
- implement and define types, such as FileSelector, or
- Condition.</li>
- <li>Define a task using template.</li>
- <li>Add some lightweight scripting tasks.</li>
- </ul>
- </blockquote>
- </td></tr>
- </table>
- <table border="0" cellspacing="0" cellpadding="2" width="100%">
- <tr><td bgcolor="#828DA6">
- <font color="#ffffff" face="arial,helvetica,sanserif">
- <a name="Documentation"><strong>Documentation</strong></a>
- </font>
- </td></tr>
- <tr><td>
- <blockquote>
- <p>Everyone loves writing documentation, and so a goal for Ant 2 is to
- generate a lot of reference documentation for tasks and other types directly
- from the source. Unfortunately, there's still plenty of tutorial material
- to write. In particular we need these:</p>
- <ul>
- <li>User documentation - describing things like the build file format,
- how properties work, how to use references, how sub-builds work, how to customise
- Myrmidon, and so on.</li>
-
- <li>Task writer documentation - describing things like an overview the task API,
- how configuration works, task lifecycle, how to assemble an antlib, a catalog
- of the runtime services, and so on.</li>
-
- <li>Myrmidon developer documentation - a broad outline of the architecture,
- how to build, how to test, and so on. Also, this todo list needs plenty
- of filling out.</li>
-
- </ul>
- </blockquote>
- </td></tr>
- </table>
- <table border="0" cellspacing="0" cellpadding="2" width="100%">
- <tr><td bgcolor="#828DA6">
- <font color="#ffffff" face="arial,helvetica,sanserif">
- <a name="Miscellaneous"><strong>Miscellaneous</strong></a>
- </font>
- </td></tr>
- <tr><td>
- <blockquote>
- <p>A completely unordered list of items, big and small:</p>
- <ul>
- <li>Search through the code for 'TODO' items and fix them.</li>
- <li>Allow service factories to be configured from the contents of the
- <code>ant-services.xml</code> descriptor.</li>
- <li>Route external process stdout and stderr through the logger.</li>
- <li>Add verbosity level to ProjectListener LogEvent</li>
- <li>Fire ProjectListener events taskFinished(), targetFinished() and
- projectFinished() events on build failure, adding indicator methods to
- ProjectEvent.</li>
- <li>Fire ProjectListener events projectStarted() and projectFinished()
- events on start and finish of referenced projects, adding indicator methods
- to ProjectEvent.</li>
- <li>Detect duplicate type names.</li>
- <li>Add fully qualified type names, based on antlib name and type shorthand name.
- Allow these to be used in build files in addition to the shorthand names.</li>
- <li>Move the <code><http></code> and <code><socket></code>
- conditions to an antlib. Need to resolve how these will be passed a logger.</li>
- <li>Make the <code><uptodate></code> task a condition, and move to
- an antlib.</li>
- <li>Split up <code><is-set></code> condition into is-set and is-true conditions.</li>
- <li>Allow the <code><if></code> task to take any condition implementation.</li>
- <li>Add an else block to the <code><if></code> task.</li>
- <li>Split the <code><available></code> condition into separate conditions
- that test for the availability of a class, or a resource.</li>
- <li>Move <code>crimson.jar</code> to <code>bin/lib</code> in the distribution,
- and make to other jars via the extension mechanism.</li>
- <li>Unit tests.</li>
- </ul>
- </blockquote>
- </td></tr>
- </table>
- </blockquote>
- </td></tr>
- </table>
- </td>
- </tr>
-
- <!-- FOOTER -->
- <tr><td colspan="2">
- <hr noshade="" size="1"/>
- </td></tr>
- <tr><td colspan="2">
- <div align="center"><font color="#525D76" size="-1"><em>
- Copyright © 2000-2002, Apache Software Foundation
- </em></font></div>
- </td></tr>
- </table>
- </body>
- </html>
- <!-- end the processing -->
-
-
-
|