You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by do...@apache.org on 2002/03/02 02:52:56 UTC

cvs commit: jakarta-ant/proposal/myrmidon/src/xdocs todo.xml

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="adammurdoch@apache.org">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>&lt;fileset&gt;</code> and
  -<code>&lt;path&gt;</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>&lt;move&gt;</code>, <code>&lt;delete&gt;</code>,
  -    <code>&lt;touch&gt;</code> and <code>&lt;mkdir&gt;</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="adammurdoch@apache.org">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>&lt;fileset&gt;</code> and
  +                <code>&lt;path&gt;</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>&lt;move&gt;</code>, <code>&lt;delete&gt;</code>,
  +                    <code>&lt;touch&gt;</code> and <code>&lt;mkdir&gt;</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:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>