Browse Source

Style and get rid of top "getinvolved" section

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271657 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 23 years ago
parent
commit
b728719340
1 changed files with 216 additions and 234 deletions
  1. +216
    -234
      proposal/myrmidon/src/xdocs/todo.xml

+ 216
- 234
proposal/myrmidon/src/xdocs/todo.xml View File

@@ -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>

</subsection>

</section>

</body>
<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>

</section>

</body>
</document>

Loading…
Cancel
Save