| <!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 and copy files/folders.</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>Capabilities discovery.</li> |
| <li>Attributes and attribute schema.</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>Tidy-up CLIMain so that it calls System.exit() with a non-zero exit code, |
| if the build fails.</li> |
| <li>Tidy-up the 'build failed' message, so that the stack trace is only |
| printed out if the log level is verbose/debug.</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>Convert PropertyUtil to a non-static PropertyResolver service.</li> |
| <li>Validate project and target names in DefaultProjectBuilder - reject dodgy |
| names like "," or "", or " ". Probably want to exclude names that start or |
| end with white-space (though internal whitespace is probably fine). We also |
| want to reserve certain punctuation characters like . , : ? [ ] { }, etc for |
| future use.</li> |
| <li>Similarly, validate property names, using the same rules.</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>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 --> |
| |
| |
| |
| |