donaldp 02/03/01 17:52:56 Modified: proposal/myrmidon/src/xdocs todo.xml Log: Style and get rid of top "getinvolved" section Revision Changes Path 1.3 +213 -231 jakarta-ant/proposal/myrmidon/src/xdocs/todo.xml Index: todo.xml =================================================================== RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/xdocs/todo.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- todo.xml 27 Feb 2002 13:19:40 -0000 1.2 +++ todo.xml 2 Mar 2002 01:52:56 -0000 1.3 @@ -1,237 +1,219 @@ <document> -<properties> -<author email="[EMAIL PROTECTED]">Adam Murdoch</author> -<title>Get Involved</title> -</properties> - -<body> -<section name="Get Involved"> - -<p>There are plenty of things you can do to help out with Myrmidon. The Todo -list below describes items which still need to be done. Of course, since -this is an open-source project, there's plenty of scope for experimentation, -and you can pretty much make up your own items to work on.</p> - -<p>Some things that are worth reading if you do want to get involved:</p> -<ul> -<li>The <a href="http://jakarta.apache.org/ant/ant2/">Ant 2</a> goals and requirements.</li> -<li>The <a href="http://jakarta.apache.org/ant/ant2/actionlist.html">Ant 1.9 Action List</a>.</li> -<li>The Jakarta Project's <a href="http://jakarta.apache.org/site/getinvolved.html">Get Involved</a> page.</li> -</ul> - -<p>There is no Ant 2 or Myrmidon mailing list yet, so direct any questions -or comments you have to the ant-dev mailing list.</p> - -</section> - -<section name="Todo List"> - -<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> - -<subsection name="Self Hosting"> - -<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> - -</subsection> - -<subsection name="Ant 1.x Compatibility"> - -<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> - -</subsection> - -<subsection name="Virtual File System"> - -<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> - -</subsection> - -<subsection name="File Data-Types and Tasks"> - -<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 condition -> file selector adaptor, so that arbitrary conditions - can be used to select files.</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 Name Mappers: - <ul> - <li>Add a file name mapper interface, and port the current Mapper - implementations to it.</li> - </ul></li> - <li>File Sets: - <ul> - <li>Add a file set implementation that uses a mapper to transform a nested - file set.</li> - <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 using 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>File Filters: - <ul> - <li>Add a file filter interface, and use it in the copy task.</li> - <li>Add a filter implementation that applies the token replacement that - the old copy task provides.</li> - <li>Add a filter that does cr/lf translation.</li> - <li>Add a gzip/gunzip filter.</li> - <li>Add a filter that applies character set encode/decode.</li> - </ul></li> - <li>Copy task: - <ul> - <li>Implement 'preservelastmodified', 'overwrite', and 'includeemptydirs'.</li> - <li>Support a file name mapper.</li> - <li>Support file filters.</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> - -</subsection> - -<subsection name="Command-line and Configuration Files"> - -<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> - -</subsection> - -<subsection name="Documentation"> - -<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> - -</subsection> - -<subsection name="Miscellaneous"> - -<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>Add a custom task to the build to generate antlib descriptors from source. -It would wrap XDoclet, and replace <code>antlib.xml</code>.</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).</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>Unit tests.</li> -</ul> + <properties> + <author email="[EMAIL PROTECTED]">Adam Murdoch</author> + <title>Get Involved</title> + </properties> + + <body> + + <section name="Todo List"> + + <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> + + <subsection name="Self Hosting"> + + <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> + + </subsection> + + <subsection name="Ant 1.x Compatibility"> + + <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> + + </subsection> + + <subsection name="Virtual File System"> + + <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> + + </subsection> + + <subsection name="File Data-Types and Tasks"> + + <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 condition -> file selector adaptor, so that arbitrary conditions + can be used to select files.</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 Name Mappers: + <ul> + <li>Add a file name mapper interface, and port the current Mapper + implementations to it.</li> + </ul></li> + <li>File Sets: + <ul> + <li>Add a file set implementation that uses a mapper to transform a nested + file set.</li> + <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 using 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>File Filters: + <ul> + <li>Add a file filter interface, and use it in the copy task.</li> + <li>Add a filter implementation that applies the token replacement that + the old copy task provides.</li> + <li>Add a filter that does cr/lf translation.</li> + <li>Add a gzip/gunzip filter.</li> + <li>Add a filter that applies character set encode/decode.</li> + </ul></li> + <li>Copy task: + <ul> + <li>Implement 'preservelastmodified', 'overwrite', and 'includeemptydirs'.</li> + <li>Support a file name mapper.</li> + <li>Support file filters.</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> + + </subsection> + + <subsection name="Command-line and Configuration Files"> + + <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> + + </subsection> + + <subsection name="Documentation"> + + <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> + + </subsection> + + <subsection name="Miscellaneous"> + + <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>Add a custom task to the build to generate antlib descriptors from source. + It would wrap XDoclet, and replace <code>antlib.xml</code>.</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).</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>Unit tests.</li> + </ul> -</subsection> + </subsection> -</section> + </section> -</body> + </body> </document>
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
