From b7287193401f94c03545941205cf4f9fdfe5793a Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Sat, 2 Mar 2002 01:52:56 +0000 Subject: [PATCH] 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 --- proposal/myrmidon/src/xdocs/todo.xml | 450 +++++++++++++-------------- 1 file changed, 216 insertions(+), 234 deletions(-) diff --git a/proposal/myrmidon/src/xdocs/todo.xml b/proposal/myrmidon/src/xdocs/todo.xml index 3dd3fde97..9d1cc3845 100644 --- a/proposal/myrmidon/src/xdocs/todo.xml +++ b/proposal/myrmidon/src/xdocs/todo.xml @@ -1,237 +1,219 @@ - -Adam Murdoch -Get Involved - - - -
- -

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.

- -

Some things that are worth reading if you do want to get involved:

- - -

There is no Ant 2 or Myrmidon mailing list yet, so direct any questions -or comments you have to the ant-dev mailing list.

- -
- -
- -

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.

- - - -

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).

- -
- - - -

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.

- -
- - - -

The VFS needs plenty of work:

- -
    -
  • Move and copy files/folders.
  • -
  • Search through a file hierarchy, using Ant-style wildcards.
  • -
  • Search through a file hierarchy, using a Selector interface.
  • -
  • 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. -
  • -
  • Capabilities discovery.
  • -
  • Attributes and attribute schema.
  • -
  • 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). -
  • -
- -
- - - -

The file data-types, such as <fileset> and -<path>, are some of the most widely used parts of Ant 1.x. -Unfortunately, they aren't particularly extensible.

- -
    -
  • Redesign the file data-types, replacing them with an interface-based - API, plus a set of implementations. The API should use the VFS file - FileObject, rather than java.io.File. - This process has started, in the antlib.vfile package. -
  • -
  • File Selectors: -
      -
    • Change AbstractNameFileSelector to use Ant 1 style patterns - matches, rather than Globs patterns.
    • -
    • Add 'defaultexcludes' to DefaultFileSet. Also add a - file selector implementation that matches everything except the default - excludes.
    • -
    • Add a condition -> file selector adaptor, so that arbitrary conditions - can be used to select files.
    • -
    • Add a name selector that loads patterns from a file.
    • -
    • Add more selector implementations: size and last-modified comparisons, - checksum comparison, byte-wise content comparison.
    • -
  • -
  • File Name Mappers: -
      -
    • Add a file name mapper interface, and port the current Mapper - implementations to it.
    • -
  • -
  • File Sets: -
      -
    • Add a file set implementation that uses a mapper to transform a nested - file set.
    • -
    • 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).
    • -
    • 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.
    • -
  • -
  • Paths: -
      -
    • Add path implementations that evaluate to the system classpath, - and the ant runtime classpath. Or, more generally, combine this with - ClassLoaderManager 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).
    • -
  • -
  • File Filters: -
      -
    • Add a file filter interface, and use it in the copy task.
    • -
    • Add a filter implementation that applies the token replacement that - the old copy task provides.
    • -
    • Add a filter that does cr/lf translation.
    • -
    • Add a gzip/gunzip filter.
    • -
    • Add a filter that applies character set encode/decode.
    • -
  • -
  • Copy task: -
      -
    • Implement 'preservelastmodified', 'overwrite', and 'includeemptydirs'.
    • -
    • Support a file name mapper.
    • -
    • Support file filters.
    • -
  • -
  • Implement the <move>, <delete>, - <touch> and <mkdir> 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.
  • -
- -
- - - -

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.

- -
    - -
  • Load configuration from system (from $ANT_HOME) and user (from $HOME) -configuration files.
  • - -
  • Allow the following via config files: -
      -
    • Add (or override) the lib and ext directories.
    • -
    • Enable more than one listener, and configure the listeners from - the conents of the config file.
    • -
    • Import libraries, and set properties.
    • -
    • Execute tasks.
    • -
    • Install and configure runtime services.
    • -
    -
  • - -
- -
- - - -

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:

- -
    -
  • 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.
  • - -
  • 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.
  • - -
  • 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.
  • - -
- -
- - - -

A completely unordered list of items, big and small:

- -
    -
  • Search through the code for 'TODO' items and fix them.
  • -
  • Add a custom task to the build to generate antlib descriptors from source. -It would wrap XDoclet, and replace antlib.xml.
  • -
  • Tidy-up CLIMain so that it calls System.exit() with a non-zero exit code, -if the build fails.
  • -
  • Tidy-up the 'build failed' message, so that the stack trace is only -printed out if the log level is verbose/debug.
  • -
  • Allow service factories to be configured from the contents of the -ant-services.xml descriptor.
  • -
  • Route external process stdout and stderr through the logger.
  • -
  • Add verbosity level to ProjectListener LogEvent
  • -
  • Fire ProjectListener events taskFinished(), targetFinished() and -projectFinished() events on build failure, adding indicator methods to -ProjectEvent.
  • -
  • Fire ProjectListener events projectStarted() and projectFinished() -events on start and finish of referenced projects, adding indicator methods -to ProjectEvent.
  • -
  • Convert PropertyUtil to a non-static PropertyResolver service.
  • -
  • 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).
  • -
  • Detect duplicate type names.
  • -
  • 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.
  • -
  • Unit tests.
  • -
- -
- -
- - + + Adam Murdoch + Get Involved + + + + +
+ +

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.

+ + + +

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).

+ +
+ + + +

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.

+ +
+ + + +

The VFS needs plenty of work:

+ +
    +
  • Move and copy files/folders.
  • +
  • Search through a file hierarchy, using Ant-style wildcards.
  • +
  • Search through a file hierarchy, using a Selector interface.
  • +
  • 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. +
  • +
  • Capabilities discovery.
  • +
  • Attributes and attribute schema.
  • +
  • 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). +
  • +
+ +
+ + + +

The file data-types, such as <fileset> and + <path>, are some of the most widely used parts of Ant 1.x. + Unfortunately, they aren't particularly extensible.

+ +
    +
  • Redesign the file data-types, replacing them with an interface-based + API, plus a set of implementations. The API should use the VFS file + FileObject, rather than java.io.File. + This process has started, in the antlib.vfile package. +
  • +
  • File Selectors: +
      +
    • Change AbstractNameFileSelector to use Ant 1 style patterns + matches, rather than Globs patterns.
    • +
    • Add 'defaultexcludes' to DefaultFileSet. Also add a + file selector implementation that matches everything except the default + excludes.
    • +
    • Add a condition -> file selector adaptor, so that arbitrary conditions + can be used to select files.
    • +
    • Add a name selector that loads patterns from a file.
    • +
    • Add more selector implementations: size and last-modified comparisons, + checksum comparison, byte-wise content comparison.
    • +
  • +
  • File Name Mappers: +
      +
    • Add a file name mapper interface, and port the current Mapper + implementations to it.
    • +
  • +
  • File Sets: +
      +
    • Add a file set implementation that uses a mapper to transform a nested + file set.
    • +
    • 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).
    • +
    • 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.
    • +
  • +
  • Paths: +
      +
    • Add path implementations that evaluate to the system classpath, + and the ant runtime classpath. Or, more generally, combine this with + ClassLoaderManager 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).
    • +
  • +
  • File Filters: +
      +
    • Add a file filter interface, and use it in the copy task.
    • +
    • Add a filter implementation that applies the token replacement that + the old copy task provides.
    • +
    • Add a filter that does cr/lf translation.
    • +
    • Add a gzip/gunzip filter.
    • +
    • Add a filter that applies character set encode/decode.
    • +
  • +
  • Copy task: +
      +
    • Implement 'preservelastmodified', 'overwrite', and 'includeemptydirs'.
    • +
    • Support a file name mapper.
    • +
    • Support file filters.
    • +
  • +
  • Implement the <move>, <delete>, + <touch> and <mkdir> 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.
  • +
+ +
+ + + +

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.

+ +
    + +
  • Load configuration from system (from $ANT_HOME) and user (from $HOME) + configuration files.
  • + +
  • Allow the following via config files: +
      +
    • Add (or override) the lib and ext directories.
    • +
    • Enable more than one listener, and configure the listeners from + the conents of the config file.
    • +
    • Import libraries, and set properties.
    • +
    • Execute tasks.
    • +
    • Install and configure runtime services.
    • +
    +
  • + +
+ +
+ + + +

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:

+ +
    +
  • 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.
  • + +
  • 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.
  • + +
  • 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.
  • + +
+ +
+ + + +

A completely unordered list of items, big and small:

+ +
    +
  • Search through the code for 'TODO' items and fix them.
  • +
  • Add a custom task to the build to generate antlib descriptors from source. + It would wrap XDoclet, and replace antlib.xml.
  • +
  • Tidy-up CLIMain so that it calls System.exit() with a non-zero exit code, + if the build fails.
  • +
  • Tidy-up the 'build failed' message, so that the stack trace is only + printed out if the log level is verbose/debug.
  • +
  • Allow service factories to be configured from the contents of the + ant-services.xml descriptor.
  • +
  • Route external process stdout and stderr through the logger.
  • +
  • Add verbosity level to ProjectListener LogEvent
  • +
  • Fire ProjectListener events taskFinished(), targetFinished() and + projectFinished() events on build failure, adding indicator methods to + ProjectEvent.
  • +
  • Fire ProjectListener events projectStarted() and projectFinished() + events on start and finish of referenced projects, adding indicator methods + to ProjectEvent.
  • +
  • Convert PropertyUtil to a non-static PropertyResolver service.
  • +
  • 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).
  • +
  • Detect duplicate type names.
  • +
  • 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.
  • +
  • Unit tests.
  • +
+ +
+ +
+ +