You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

requested-features.txt 18 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635
  1. Status:
  2. =======
  3. The items in the first four categories have been voted upon with votes
  4. coming from Peter Donald, Simeon Fitch, Conor MacNeill, Nico Seessle,
  5. Stefan Bodewig and Glenn McAllister. The items that didn't get the
  6. required number of positive votes - or received negative votes - will
  7. need to be discussed in detail.
  8. The items in category five are under discussion right now on the
  9. ant-dev mailing list.
  10. I. Things that don't affect the core but are requests for new tasks or
  11. enhancements of existing tasks.
  12. ======================================================================
  13. [ACCEPTED] for a task doesn't mean that task will be core tasks (or
  14. even be supplied by a voter), just that having them (as optional
  15. tasks) would be acceptable.
  16. * Add a new datatype filterset to group token-filters
  17. [ACCEPTED]
  18. * make usage of particular filters/filtersets explicit in copy tasks
  19. [ACCEPTED]
  20. * make facade tasks for things like javac (JikesImpl, ModernImpl etc)
  21. One candidate is jar with implementations for fastjar
  22. for example.
  23. [ACCEPTED]
  24. * unify multiple similar tasks to use similar forms (ie all the javacc
  25. type tools)
  26. [ACCEPTED]
  27. * Obfuscating task
  28. [ACCEPTED]
  29. * Add an <ant> task that will find build files according to a fileset
  30. and invokes a common target in them.
  31. <anton>?
  32. [will need more discussion because of votes by Peter Donald and
  33. Stefan Bodewig]
  34. * Add a JavaApply task that executes a given class with files from a
  35. fileset as arguments - similar to <apply>.
  36. [will need more discussion because of votes by Peter Donald and
  37. Stefan Bodewig]
  38. * Include some more sophisticated loggers with the Ant distribution -
  39. especially for sending emails. Make the existing one more flexible
  40. (stylesheet used by XmlLogger).
  41. Could be part of the same module tasks would be developed in?
  42. [will need more discussion because of vote by Conor MacNeill]
  43. * make the default logger's output clear, informative, and terse.
  44. Actually, this is a little bit abstract, but doesn't apply to the
  45. core either.
  46. [will need more discussion because of vote by Conor MacNeill]
  47. * Better docs.
  48. More examples. Tutorials, beginner documents, reference sheets for
  49. tasks, printable version.
  50. [ACCEPTED]
  51. * RPM task.
  52. [ACCEPTED]
  53. * add an attribute to <property> to read in an entire file as the
  54. value of a property.
  55. [will need more discussion because of vote by Peter Donald]
  56. * Task for splitting files (head/tail/split like functionality).
  57. [ACCEPTED]
  58. * Task to create XMI from Java.
  59. [ACCEPTED]
  60. * socksified networking tasks, SSH tasks.
  61. [Peter Donald expressed some legal concerns that might be overcome,
  62. depending on the implementation]
  63. * a reachable task that works much like available for network URLs.
  64. [ACCEPTED]
  65. * make PATH handling consistent. Every task that has a PATH attribute
  66. must also accept references to PATHs.
  67. [will need more discussion because of vote by Stefan Bodewig]
  68. * Task to extract classes from a JAR file that a given class depends
  69. on.
  70. Based on <depend> or IBM's JAX for example.
  71. [ACCEPTED]
  72. * Unify <available> and <uptodate> into a more general <condition>
  73. task, support AND/OR of several tests here.
  74. [will need more discussion because of vote by Peter Donald]
  75. * jsp-compilation task
  76. Sounds like a candidate for a facade task.
  77. [ACCEPTED]
  78. * URL-spider task that checks links for missing content or server errors
  79. [ACCEPTED]
  80. II. Abstract goals that need to be abstract until we get into design
  81. decisions.
  82. ======================================================================
  83. During discussion it became obvious, that some things from this list
  84. are goals for Ant and some should be guidelines for developers,
  85. therefore there are two flavors, [ACCEPTED] and [ACCEPTED AS GUIDELINE].
  86. * Provide a clear mission statement for Ant.
  87. [ACCEPTED]
  88. * Main goals: Simplicity, Understandability, Extensibility
  89. [ACCEPTED]
  90. * remove magic properties if at all humanly possible
  91. [ACCEPTED]
  92. * remove as much dependency on native scripts as possible.
  93. [ACCEPTED]
  94. * clean object model (ie Project/Target/Task)
  95. [ACCEPTED]
  96. * good event model to integrate well with IDE/GUI/whatever
  97. [ACCEPTED]
  98. * use a consistent naming scheme for attributes across all tasks
  99. [ACCEPTED]
  100. * keep build file syntax as compatible to Ant1 as possible -
  101. i.e. don't break something just because we can.
  102. [ACCEPTED]
  103. * keep the interface for Tasks as similar to the one of Ant1 as
  104. possible - i.e. don't break something just because we can.
  105. [ACCEPTED]
  106. * Ant should be cancelable
  107. [ACCEPTED]
  108. * no commit of new features without documentation
  109. [ACCEPTED AS GUIDELINE]
  110. * no commit of new features without testcases
  111. [ACCEPTED AS GUIDELINE]
  112. III. Things that are simple, easy to implement, where we expect the
  113. committers to agree
  114. ======================================================================
  115. * namespace support so different concerns can occupy different namespaces
  116. from ant (thus SAX2/JAXP1.1)
  117. [ACCEPTED]
  118. * Java2
  119. [ACCEPTED]
  120. * remove all deprecated methods, attributes, tasks
  121. [ACCEPTED]
  122. * allow all datatypes to be defined anywhere - i.e. as children of
  123. project as well as of target.
  124. [ACCEPTED]
  125. * make properties fully dynamic, i.e. allow their value to be reassigned
  126. [will need more discussion because of vote by Glenn McAllister and
  127. Conor MacNeill]
  128. * unify the namespace of all data types (ie properties + filesets +
  129. patternset + filtersets).
  130. [ACCEPTED]
  131. * add a user defined message if a target will be skipped because the
  132. if/unless attribute says so.
  133. [ACCEPTED]
  134. * allow user-datatypes to be defined via a <typedef> similar to <taskdef>.
  135. [ACCEPTED]
  136. IV. Things we probably agree upon but need to discuss the details or
  137. decide between several possible options.
  138. ======================================================================
  139. [ACCEPTED] means, the goal/idea is fine, not that a decission on a
  140. particular implementation has been made.
  141. * The ability for GUI/IDE tools to integrate easily with object model
  142. without reinventing the wheel and writing their own parser (which
  143. antidote was forced to do).
  144. Two suggested solutions were allowing GUI developers to extend
  145. object model (ie GUITask extends Task) or to have Task as interface
  146. (ie GUITask implements Task). This way the GUI tasks could be W3C
  147. DOM Elements, have property vetoers/listeners etc.
  148. [ACCEPTED]
  149. * support for numerous frontends - from command line over GUI to servlets
  150. corollary of the above?
  151. [ACCEPTED]
  152. * Fully interpreted at runtime. This almost requires some form of
  153. abstraction/proxy that stands in place of tasks till it is
  154. interpreted. This can be hashtables/simple dom-like model/whatever
  155. [ACCEPTED]
  156. * provide utility classes to aid in building tasks. ie like up-to-date
  157. functionality abstracted
  158. Need to become more specific here.
  159. [ACCEPTED]
  160. * make ant-call a low cost operations so it can certain
  161. optional/template-like operations
  162. corollary of "fully interpreted at runtime"?
  163. [ACCEPTED]
  164. * allow facilities to build projects from multiple sources. ie CSS+xml
  165. or XSLT+ XML or Velocity+text or database or from inside jars or normal
  166. build.xmls etc.
  167. allow the project tree to be built dynamically.
  168. [ACCEPTED]
  169. * move to a system that allows docs to be generated - doc snippets
  170. should be included with the tasks they document.
  171. Which DTD? Which tools for generation?
  172. [ACCEPTED]
  173. * allow tasks to be loaded from jars. tasks should be indicated by
  174. either xml file in TSK-INF/taskdefs.xml or manifest file.
  175. [ACCEPTED]
  176. * allow documentation to be stored in .tsk jars
  177. corollary of the two points above?
  178. [ACCEPTED]
  179. * better scripting/notification support so the hooks are available to
  180. send notifications at certain times.
  181. Which hooks and where?
  182. [will need more discussion because of vote by Peter Donald and
  183. Simeon Fitch]
  184. * separate tasks into .tsk jars somehow. (Probably via function - ie
  185. java tasks, file tasks, ejb tasks).
  186. Decide on categories.
  187. [will need more discussion because of vote by Conor MacNeill]
  188. * make separate build files easy (ala AntFarm) and importing different
  189. projects a breeze
  190. [ACCEPTED]
  191. * provide support for user defined task configurations - i.e. give
  192. users the ability to specify a default value for attributes (always
  193. use debug="true" in <javac> unless something else has been
  194. specified).
  195. Three ideas so far: a CSS like language, a <taskconfig> element,
  196. properties following a specific naming scheme.
  197. [ACCEPTED]
  198. * support more control over the properties that are going to be passed
  199. to subprojects (modules)
  200. [ACCEPTED]
  201. * Ask for a new CVS module for Ant tasks.
  202. We need to define rules for this to work - maybe the rules proposed
  203. for the commons project could give us a start.
  204. [will need more discussion because of vote by Conor MacNeill]
  205. * It should be possible to modify details of the actual build (e.g. classpath,
  206. used compiler) without the need to change the build specification.
  207. Do build.compiler and build.sysclasspath cover everything or do we
  208. need to add more stuff like this?
  209. [will need more discussion because of vote by Conor MacNeill]
  210. * Task to prompt for user input.
  211. Does affect core as we need a means to request input from the Frontend.
  212. [ACCEPTED]
  213. * Add cvs login feature.
  214. Requires handling of user input.
  215. [ACCEPTED]
  216. * Easier installation process. GUI - maybe webstart from the homepage.
  217. This includes asking the user whether he wants to use optional tasks
  218. and downloads the required libs. Automatic upgrades and so on.
  219. Self-extracting jar installer: java -jar jakarta-ant-1.3-bin.jar.
  220. Prompts for destination directory, extracts archive, fixes all
  221. text files with fixCRLF task; on UNIX, makes scripts executable.
  222. Could also modify ant scripts with the location of ANT_HOME.
  223. [ACCEPTED]
  224. * Logo for Ant.
  225. [ACCEPTED]
  226. * detach Ant from System.err/.in/.out.
  227. Beware of problems with spawned processes.
  228. [ACCEPTED]
  229. * better subproject handling
  230. Whatever that means in detail.
  231. [will need more discussion because of vote by Conor MacNeill]
  232. * build files should be declarative in nature
  233. [ACCEPTED]
  234. V. Things we probably don't agree on.
  235. ======================================================================
  236. [DISC] Datatypes
  237. ----------------
  238. * Allow mappers to be genericised so that particular features can be modified
  239. during mapping. Something similar to
  240. <fileset ...>
  241. <include name="*.sh"/>
  242. <mapper type="unix-permissions">
  243. <param name="user" value="ant"/>
  244. <param name="group" value="ant"/>
  245. <param name="mod" value="755"/>
  246. </mapper>
  247. </fileset>
  248. * Allow include/exclude tow work with multiple characteristerics of a file.
  249. ie include into fileset if file is readable, modified after 29th of Feb,
  250. has a name that matches patter "**/*.java" and the property "foo.present"
  251. is set. Something similar to
  252. <include>
  253. <item-filter type="name" value="**/*.java"/>
  254. <item-filter type="permission" value="r"/>
  255. <!-- could optionally be directory/or some other system specific features -->
  256. <item-filter type="type" value="file"/>
  257. <item-filter type="modify-time"
  258. operation="greater-than"
  259. value="29th Feb 2003"/>
  260. </include>
  261. * provide datatypes through property tag and remove need for separate free
  262. standing entities. ie
  263. <property name="foo">
  264. <fileset dir="blah">
  265. <include name="*/**.java" />
  266. </fileset>
  267. </property>
  268. * provide support for non-hardwired (ie loadable) low-level
  269. components (mappers/itemset-filters/converters). Allow them to be
  270. loaded in either global or a new classloader.
  271. * provide support for non-hardwired (ie loadable) converters.
  272. Q: What is a converter? Is this an implementation detail?
  273. A: Not an implementation detail but a way to extend the engine
  274. to convert more data types. Currently we have fixed set that is
  275. expanded on occasion (ie includes primitive types + File). Instead
  276. of spreading converting code through out tasks it can be centralized
  277. into one component and used by engine. This becomes particularly
  278. relevent if you build ant based testing systems and use ant in certain
  279. web-related areas.
  280. * Make all datatypes interfaces to allow them to be customized in many
  281. ways.
  282. * Set arithmetic for fileset/patternset/*set
  283. * inheritance of ant properties/datatypes/context etc in project hierarchy
  284. * inheritance of between ant datatypes. ie fileset A inherits from fileset B (includes
  285. all entries in A).
  286. * Homogenize notion of PATHs and filesets.
  287. [DISC] Ant's goals
  288. ------------------
  289. * make it possible to reuse taskengine for other things. ie
  290. Installshield type app, Peter's cron-server and other task based
  291. operations.
  292. * provide support for CJAN
  293. Q: In what way?
  294. A: Probably by supplying a set of tasks that download versioned
  295. binaries and their associated dependencies, caching the downloads
  296. in a known place and updating binaries when required. ("When required"
  297. being indicated by a change in property values).
  298. [DISC] class loading
  299. --------------------
  300. * force resolution of classes on loading to identify classloader
  301. issues early. (At least in global classloader).
  302. * Ignore any classes contained in the damned ext dirs of a JVM - possibly by launching
  303. with something like jar -Djava.ext.dir=foo -jar ant.jar
  304. [DISC] workspace/subbuild issues
  305. --------------------------------
  306. * create the concept of workspace so that projects can be built in a
  307. DAG and thus enable projects like catalina/tomcat to have an easy
  308. build process. It also helps CJAN to a lesser degree and would
  309. partially solve the JARs in CVS thing.
  310. * Project inheritance
  311. What's this?
  312. * Target inheritance. ie The ability to include targets from other
  313. project files overidining them as necessary (so cascading project
  314. files).
  315. * Add an attribute to <ant> to feed back the environment (properties and
  316. taskdefs) from the child build to the parent.
  317. * Allow a target to depend on a target which is in another buildfile.
  318. * Allow a target to reference properties defined in another buildfile.
  319. [DISC] documentation system
  320. ---------------------------
  321. * generate docs by anakia/XSLT
  322. Corollary of "move to a system that allows docs to be generated"?
  323. [DISC] Task API
  324. ---------------
  325. * tasks provide some way to identify their attributes from the
  326. outside.
  327. Possible solutions include a special method like getProperties(), an
  328. external describing file shipping with the task class or special
  329. javadoc comments parsed by a custom doclet. Whatever the method it
  330. should not impose any cost on runtime as it is only used a small
  331. proportion of the time (design-time).
  332. * tasks should have access to its own XML representation.
  333. * Task level if and unless attributes.
  334. * Allow tasks to find out, whether another task has completed successfully.
  335. * provide failonerror like functionality to all tasks. (Provide this as an aspect??
  336. much like logging aspect or classloader aspect).
  337. [DISC] logging
  338. --------------
  339. * allow build file writers to modify logging (verbosity for example)
  340. on a target by target or task by task basis.
  341. * Make loggers configurable via build.xml.
  342. [DISC] multithrading
  343. --------------------
  344. * Multithreaded execution of tasks within the same target.
  345. * Multithreaded execution of targets.
  346. [DISC] procedural versus purely declarative
  347. -------------------------------------------
  348. * Simple flow control (if-then-else, for)
  349. * targets should be like methods including a return value
  350. * build files should be purely declarative
  351. [DISC] Properties
  352. -----------------
  353. * Ability to manage scopping of properties in general (ie target/project/workspace).
  354. [DISC] Templates
  355. ----------------
  356. * it should be possible to provide general /(template?)/ build
  357. specifications, and to declare for a concrete item that it should be
  358. built according to such a general specification.
  359. [DISC] XML issues
  360. -----------------
  361. * a built-in mechanism to include build-file fragments - something
  362. that doesn't use SYSTEM entities at all and therefore is XSchema
  363. friendly, allows for property expansions ...
  364. * Let Ant ignore - but warn - if unknown XML elements or attributes
  365. occur in a build file.
  366. * Allow ant to farm out attributes and elements that are NOT in the ant
  367. namespace to other components. ie hand doc: elements to the Documentation
  368. component or log: attributes to Log policy component etc
  369. [DISC] core extensions
  370. ----------------------
  371. * Allow named tasks to be defined by <script> elements.
  372. * specify an onfail task or target that runs in case of a build
  373. failure.
  374. * allow sequence to be specified in depends attribute or enhance
  375. antcall to work with current list of executed targets
  376. * Support nesting tasks into other elements - not just as children of
  377. target - as proposed by Thomas Christen in
  378. <http://marc.theaimsgroup.com/?l=ant-dev&m=98130655812010&w=2>.
  379. * Make if/unless attributes to check for the value of a property, not
  380. only its existance.
  381. * check for more than one condition in if/unless attributes.
  382. * provide a way to define the order in which targets a given target
  383. depends upon get executed.
  384. * define task contexts that define various common aspects (logging,
  385. failure handling ...) and assign them to tasks.
  386. [DISC] organization
  387. -------------------
  388. * separate CVSes and code hierarchies for
  389. - task engine [ org.apache.task.* ]
  390. - project engine (ie model of targets/projects/workspaces) + support/utility classes
  391. [ org.apache.ant.* ]
  392. - core tasks (ie tasks supported by ant contributors) [ org.apache.??? ]
  393. [DISC] misc
  394. -----------
  395. * internationalization
  396. VI. entries that have been submitted too late
  397. =============================================
  398. * Integration of the depends task and javac tasks