|
- <!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>
- <li> <a href="./ant1compat.html">Ant1 Compatibility Layer</a>
- </li>
- <li> <a href="./differences.html">Differences to Ant1</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="Security Manager"><strong>Security Manager</strong></a>
- </font>
- </td></tr>
- <tr><td>
- <blockquote>
- <p>Add the ability to run java programs that call System.exit() by adding a
- security manager. Should look something like:</p>
- <div align="left">
- <table cellspacing="4" cellpadding="0" border="0">
- <tr>
- <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- </tr>
- <tr>
- <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- <td bgcolor="#ffffff"><pre>
- public class MyrmidonSecurityManager
- extends SecurityManager
- {
- public void checkExit( final int status )
- {
- throw new ExitException( status );
- }
-
- public void checkPermission( final Permission permission )
- {
- }
- }
- </pre></td>
- <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- </tr>
- <tr>
- <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- </tr>
- </table>
- </div>
- </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="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="Validation Pass"><strong>Validation Pass</strong></a>
- </font>
- </td></tr>
- <tr><td>
- <blockquote>
- <p>Consider calling validate() on task prior to execute(). This would allow
- us to have a "make -k" mode that actually did basic validation and would also
- encourage task writers to do validation properly.</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="Paths"><strong>Paths</strong></a>
- </font>
- </td></tr>
- <tr><td>
- <blockquote>
- <p>Consider allowing the user to configure the ant system by setting the
- following path types.</p>
- <ul>
- <li>ant.type.path: path that is used to search for the type libraries</li>
- <li>ant.ext.path: path that is used to search for "Optional Packages"
- or extensions.</li>
- </ul>
- <p>
- The default search path will probably include a per-user path element,
- a workspace path element and a system path elemtn that are searched in
- that order. Some possible defaults;
- </p>
- <ul>
- <li>Unix Per-user: ${user.home}/.ant/lib, ${user.home}/.ant/ext</li>
- <li>Windows Per-user: ${user.home}/ant/lib, ${user.home}/ant/ext</li>
- <li>MacOSX Per-user: ${user.home}/Library/Ant/lib,
- ${user.home}/Library/Ant/ext</li>
- <li>Unix System-wide: /opt/ant/lib, /opt/ant/ext</li>
- <li>Unix System-wide: /usr/local/ant/lib, /usr/local/ant/ext</li>
- <li>Windows System-wide: %SYS_DRIVE%/Program Files/ant/lib,
- %SYS_DRIVE%/Program Files/ant/ext</li>
- <li>MacOSX System-wide: /Library/Ant/lib, /Library/Ant/ant/ext</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="Ant 1.x Compatibility"><strong>Ant 1.x Compatibility</strong></a>
- </font>
- </td></tr>
- <tr><td>
- <blockquote>
- <p>The Ant1 Compatibility layer is still in early stages of development.
- </p>
- <ul>
- <li>Get a version of <code><ant></code> and
- <code><antcall></code> working.</li>
- <li>
- Provide hooks between Ant1 references and Myrmidon properties.
- May use converters for adapting Ant2 objects (like Ant2
- <code><path></code> or <code><fileset></code>)
- as Ant1 types.
- </li>
- <li>Handle differences between Ant1 if/unless on targets,
- and Myrmidon <if> task.</li>
- <li>
- Write tests for the various bits that rely on Myrmidon
- functionality:
- <ul>
- <li>Simple sanity test</li>
- <li>if/unless on targets: check that behaviour complies with Ant1</li>
- <li>Make sure properties are shared between Ant1 and Myrmidon tasks.</li>
- <li>Make sure that <ant1.property> behaves as per Ant1</li>
- </ul>
- </li>
- <li>Get GUMP runs going using Myrmidon.</li>
- <li>i18n messages</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="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>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 available to other jars via the extension mechanism.
- </li>
- <li>Change <code>DefaultPropertyResolver</code> to ignore '$${'.</li>
- <li>Add a <code>--type</code> command-line option, to allow
- the project builder to be manually selected.
- </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 -->
-
-
-
|