source: other-projects/trunk/gs3-release-maker/apache-ant-1.6.5/docs/ant2/requested-features.txt@ 14627

Last change on this file since 14627 was 14627, checked in by oranfry, 17 years ago

initial import of the gs3-release-maker

File size: 20.5 KB
Line 
1Status:
2=======
3
4The committers have cast votes on all items (except those that came in
5too late) and the results are listed below - the next step will be a
6design phase.
7
8This list of items will be summarized into an Ant2 specification soon.
9
10I. Things that don't affect the core but are requests for new tasks or
11enhancements of existing tasks.
12======================================================================
13
14[ACCEPTED] for a task doesn't mean that task will be core tasks (or
15even be supplied by a voter), just that having them (as optional
16tasks) would be acceptable.
17
18* Add a new datatype filterset to group token-filters
19
20 [ACCEPTED]
21
22* make usage of particular filters/filtersets explicit in copy tasks
23
24 [ACCEPTED]
25
26* make facade tasks for things like javac (JikesImpl, ModernImpl etc)
27
28 One candidate is jar with implementations for fastjar
29 for example.
30
31 [ACCEPTED]
32
33* unify multiple similar tasks to use similar forms (ie all the javacc
34 type tools)
35
36 [ACCEPTED]
37
38* Obfuscating task
39
40 [ACCEPTED]
41
42* Add an <ant> task that will find build files according to a fileset
43 and invokes a common target in them.
44
45 <anton>?
46
47 [will need more discussion because of votes by Peter Donald and
48 Stefan Bodewig]
49
50 [finally ACCEPTED]
51
52* Add a JavaApply task that executes a given class with files from a
53 fileset as arguments - similar to <apply>.
54
55 [will need more discussion because of votes by Peter Donald and
56 Stefan Bodewig]
57
58 [finally ACCEPTED]
59
60* Include some more sophisticated loggers with the Ant distribution -
61 especially for sending emails. Make the existing one more flexible
62 (stylesheet used by XmlLogger).
63
64 Could be part of the same module tasks would be developed in?
65
66 [will need more discussion because of vote by Conor MacNeill]
67
68 [finally ACCEPTED]
69
70* make the default logger's output clear, informative, and terse.
71
72 Actually, this is a little bit abstract, but doesn't apply to the
73 core either.
74
75 [will need more discussion because of vote by Conor MacNeill]
76
77 [REJECTED - vetoes by Conot MacNeill and Stefan Bodewig]
78
79* Better docs.
80
81 More examples. Tutorials, beginner documents, reference sheets for
82 tasks, printable version.
83
84 [ACCEPTED]
85
86* RPM task.
87
88 [ACCEPTED]
89
90* add an attribute to <property> to read in an entire file as the
91 value of a property.
92
93 [will need more discussion because of vote by Peter Donald]
94
95 [REJECTED - veto by Peter Donald]
96
97* Task for splitting files (head/tail/split like functionality).
98
99 [ACCEPTED]
100
101* Task to create XMI from Java.
102
103 [ACCEPTED]
104
105* socksified networking tasks, SSH tasks.
106
107 [Peter Donald expressed some legal concerns that might be overcome,
108 depending on the implementation]
109
110* a reachable task that works much like available for network URLs.
111
112 [ACCEPTED]
113
114* make PATH handling consistent. Every task that has a PATH attribute
115 must also accept references to PATHs.
116
117 [will need more discussion because of vote by Stefan Bodewig]
118
119 [REJECTED - vetoes by Conor MacNeill, Glenn McAllister and Stefan Bodewig]
120
121* Task to extract classes from a JAR file that a given class depends
122 on.
123
124 Based on <depend> or IBM's JAX for example.
125
126 [ACCEPTED]
127
128* Unify <available> and <uptodate> into a more general <condition>
129 task, support AND/OR of several tests here.
130
131 [will need more discussion because of vote by Peter Donald]
132
133* jsp-compilation task
134
135 Sounds like a candidate for a facade task.
136
137 [ACCEPTED]
138
139* URL-spider task that checks links for missing content or server errors
140
141 [ACCEPTED]
142
143II. Abstract goals that need to be abstract until we get into design
144decisions.
145======================================================================
146
147During discussion it became obvious, that some things from this list
148are goals for Ant and some should be guidelines for developers,
149therefore there are two flavors, [ACCEPTED] and [ACCEPTED AS GUIDELINE].
150
151* Provide a clear mission statement for Ant.
152
153 [ACCEPTED]
154
155* Main goals: Simplicity, Understandability, Extensibility
156
157 [ACCEPTED]
158
159* remove magic properties if at all humanly possible
160
161 [ACCEPTED]
162
163* remove as much dependency on native scripts as possible.
164
165 [ACCEPTED]
166
167* clean object model (ie Project/Target/Task)
168
169 [ACCEPTED]
170
171* good event model to integrate well with IDE/GUI/whatever
172
173 [ACCEPTED]
174
175* use a consistent naming scheme for attributes across all tasks
176
177 [ACCEPTED]
178
179* keep build file syntax as compatible to Ant1 as possible -
180 i.e. don't break something just because we can.
181
182 [ACCEPTED]
183
184* keep the interface for Tasks as similar to the one of Ant1 as
185 possible - i.e. don't break something just because we can.
186
187 [ACCEPTED]
188
189* Ant should be cancelable
190
191 [ACCEPTED]
192
193* no commit of new features without documentation
194
195 [ACCEPTED AS GUIDELINE]
196
197* no commit of new features without testcases
198
199 [ACCEPTED AS GUIDELINE]
200
201III. Things that are simple, easy to implement, where we expect the
202committers to agree
203======================================================================
204
205* namespace support so different concerns can occupy different namespaces
206 from ant (thus SAX2/JAXP1.1)
207
208 [ACCEPTED]
209
210* Java2
211
212 [ACCEPTED]
213
214* remove all deprecated methods, attributes, tasks
215
216 [ACCEPTED]
217
218* allow all datatypes to be defined anywhere - i.e. as children of
219 project as well as of target.
220
221 [ACCEPTED]
222
223* make properties fully dynamic, i.e. allow their value to be reassigned
224
225 [will need more discussion because of vote by Glenn McAllister and
226 Conor MacNeill]
227
228 [finally ACCEPTED]
229
230* unify the namespace of all data types (ie properties + filesets +
231 patternset + filtersets).
232
233 [ACCEPTED]
234
235* add a user defined message if a target will be skipped because the
236 if/unless attribute says so.
237
238 [ACCEPTED]
239
240* allow user-datatypes to be defined via a <typedef> similar to <taskdef>.
241
242 [ACCEPTED]
243
244IV. Things we probably agree upon but need to discuss the details or
245decide between several possible options.
246======================================================================
247
248[ACCEPTED] means, the goal/idea is fine, not that a decission on a
249particular implementation has been made.
250
251* The ability for GUI/IDE tools to integrate easily with object model
252 without reinventing the wheel and writing their own parser (which
253 antidote was forced to do).
254
255 Two suggested solutions were allowing GUI developers to extend
256 object model (ie GUITask extends Task) or to have Task as interface
257 (ie GUITask implements Task). This way the GUI tasks could be W3C
258 DOM Elements, have property vetoers/listeners etc.
259
260 [ACCEPTED]
261
262* support for numerous frontends - from command line over GUI to servlets
263
264 corollary of the above?
265
266 [ACCEPTED]
267
268* Fully interpreted at runtime. This almost requires some form of
269 abstraction/proxy that stands in place of tasks till it is
270 interpreted. This can be hashtables/simple dom-like model/whatever
271
272 [ACCEPTED]
273
274* provide utility classes to aid in building tasks. ie like up-to-date
275 functionality abstracted
276
277 Need to become more specific here.
278
279 [ACCEPTED]
280
281* make ant-call a low cost operations so it can certain
282 optional/template-like operations
283
284 corollary of "fully interpreted at runtime"?
285
286 [ACCEPTED]
287
288* allow facilities to build projects from multiple sources. ie CSS+xml
289 or XSLT+ XML or Velocity+text or database or from inside jars or normal
290 build.xmls etc.
291
292 allow the project tree to be built dynamically.
293
294 [ACCEPTED]
295
296* move to a system that allows docs to be generated - doc snippets
297 should be included with the tasks they document.
298
299 Which DTD? Which tools for generation?
300
301 [ACCEPTED]
302
303* allow tasks to be loaded from jars. tasks should be indicated by
304 either xml file in TSK-INF/taskdefs.xml or manifest file.
305
306 [ACCEPTED]
307
308* allow documentation to be stored in .tsk jars
309
310 corollary of the two points above?
311
312 [ACCEPTED]
313
314* better scripting/notification support so the hooks are available to
315 send notifications at certain times.
316
317 Which hooks and where?
318
319 [will need more discussion because of vote by Peter Donald and
320 Simeon Fitch]
321
322 [REJECTED - vetoes by Conor MacNeill, Peter Donald and Simeon Fitch]
323
324* separate tasks into .tsk jars somehow. (Probably via function - ie
325 java tasks, file tasks, ejb tasks).
326
327 Decide on categories.
328
329 [will need more discussion because of vote by Conor MacNeill]
330
331 [finally ACCEPTED]
332
333* make separate build files easy (ala AntFarm) and importing different
334 projects a breeze
335
336 [ACCEPTED]
337
338* provide support for user defined task configurations - i.e. give
339 users the ability to specify a default value for attributes (always
340 use debug="true" in <javac> unless something else has been
341 specified).
342
343 Three ideas so far: a CSS like language, a <taskconfig> element,
344 properties following a specific naming scheme.
345
346 [ACCEPTED]
347
348* support more control over the properties that are going to be passed
349 to subprojects (modules)
350
351 [ACCEPTED]
352
353* Ask for a new CVS module for Ant tasks.
354
355 We need to define rules for this to work - maybe the rules proposed
356 for the commons project could give us a start.
357
358 [will need more discussion because of vote by Conor MacNeill]
359
360 [REJECTED - vetoes by Conor MacNeill and Glenn McAllister]
361
362* It should be possible to modify details of the actual build (e.g. classpath,
363 used compiler) without the need to change the build specification.
364
365 Do build.compiler and build.sysclasspath cover everything or do we
366 need to add more stuff like this?
367
368 [will need more discussion because of vote by Conor MacNeill]
369
370 [REJECTED - veto by Conor MacNeill]
371
372* Task to prompt for user input.
373
374 Does affect core as we need a means to request input from the Frontend.
375
376 [ACCEPTED]
377
378* Add cvs login feature.
379
380 Requires handling of user input.
381
382 [ACCEPTED]
383
384* Easier installation process. GUI - maybe webstart from the homepage.
385
386 This includes asking the user whether he wants to use optional tasks
387 and downloads the required libs. Automatic upgrades and so on.
388
389 Self-extracting jar installer: java -jar jakarta-ant-1.3-bin.jar.
390 Prompts for destination directory, extracts archive, fixes all
391 text files with fixCRLF task; on UNIX, makes scripts executable.
392 Could also modify ant scripts with the location of ANT_HOME.
393
394 [ACCEPTED]
395
396* Logo for Ant.
397
398 [ACCEPTED]
399
400* detach Ant from System.err/.in/.out.
401
402 Beware of problems with spawned processes.
403
404 [ACCEPTED]
405
406* better subproject handling
407
408 Whatever that means in detail.
409
410 [will need more discussion because of vote by Conor MacNeill]
411
412 [REJECTED - vetoes by Conor MacNeill and Stefan Bodewig]
413
414* build files should be declarative in nature
415
416 [ACCEPTED]
417
418V. Things we probably don't agree on.
419======================================================================
420
421[DISC] Datatypes
422----------------
423
424 * Allow mappers to be genericised so that particular features can be modified
425 during mapping. Something similar to
426
427 <fileset ...>
428 <include name="*.sh"/>
429 <mapper type="unix-permissions">
430 <param name="user" value="ant"/>
431 <param name="group" value="ant"/>
432 <param name="mod" value="755"/>
433 </mapper>
434 </fileset>
435
436 [REJECTED - vetoes by Stefan Bodewig and Conor MacNeill, not enough
437 positive votes anyway.]
438
439 * Allow include/exclude tow work with multiple characteristerics of a file.
440 ie include into fileset if file is readable, modified after 29th of Feb,
441 has a name that matches patter "**/*.java" and the property "foo.present"
442 is set. Something similar to
443
444 <include>
445 <item-filter type="name" value="**/*.java"/>
446 <item-filter type="permission" value="r"/>
447
448 <!-- could optionally be directory/or some other system specific features -->
449 <item-filter type="type" value="file"/>
450 <item-filter type="modify-time"
451 operation="greater-than"
452 value="29th Feb 2003"/>
453 </include>
454
455 [ACCEPTED]
456
457* provide datatypes through property tag and remove need for separate free
458 standing entities. ie
459 <property name="foo">
460 <fileset dir="blah">
461 <include name="*/**.java" />
462 </fileset>
463 </property>
464
465 [REJECTED - only one +1 vote]
466
467* provide support for non-hardwired (ie loadable) low-level
468 components (mappers/itemset-filters/converters). Allow them to be
469 loaded in either global or a new classloader.
470
471 [ACCEPTED]
472
473* provide support for non-hardwired (ie loadable) converters.
474
475 Q: What is a converter? Is this an implementation detail?
476 A: Not an implementation detail but a way to extend the engine
477 to convert more data types. Currently we have fixed set that is
478 expanded on occasion (ie includes primitive types + File). Instead
479 of spreading converting code through out tasks it can be centralized
480 into one component and used by engine. This becomes particularly
481 relevent if you build ant based testing systems and use ant in certain
482 web-related areas.
483
484 [ACCEPTED]
485
486* Make all datatypes interfaces to allow them to be customized in many
487 ways.
488
489 [REJECTED - vetoes by Conor MacNeill, Peter Donald and Stefan Bodewig]
490
491* Set arithmetic for fileset/patternset/*set
492
493 [ACCEPTED]
494
495* inheritance of ant properties/datatypes/context etc in project hierarchy
496
497 [ACCEPTED]
498
499* inheritance of between ant datatypes. ie fileset A inherits from fileset B (includes
500 all entries in A).
501
502 [REJECTED - vetoes by Conor MacNeill, Peter Donald and Stefan Bodewig]
503
504* Homogenize notion of PATHs and filesets.
505
506 [REJECTED - vetoes by Conor MacNeill, Peter Donald and Stefan Bodewig]
507
508[DISC] Ant's goals
509------------------
510
511* make it possible to reuse taskengine for other things. ie
512 Installshield type app, Peter's cron-server and other task based
513 operations.
514
515 [REJECTED as a primary goal - only two +1 votes]
516
517* provide support for CJAN
518
519 Q: In what way?
520 A: Probably by supplying a set of tasks that download versioned
521 binaries and their associated dependencies, caching the downloads
522 in a known place and updating binaries when required. ("When required"
523 being indicated by a change in property values).
524
525 [REJECTED as part of Ant's core - veto by Conor MacNeill, no single +1]
526
527[DISC] class loading
528--------------------
529
530 * force resolution of classes on loading to identify classloader
531 issues early. (At least in global classloader).
532
533 [REJECTED - only one +1 vote]
534
535* Ignore any classes contained in the damned ext dirs of a JVM - possibly by launching
536 with something like jar -Djava.ext.dir=foo -jar ant.jar
537
538 [REJECTED - vetoes by Conor MacNeill, Glenn McAllister and Stefan
539 Bodewig, ACCEPTED if optional]
540
541
542[DISC] workspace/subbuild issues
543--------------------------------
544
545* create the concept of workspace so that projects can be built in a
546 DAG and thus enable projects like catalina/tomcat to have an easy
547 build process. It also helps CJAN to a lesser degree and would
548 partially solve the JARs in CVS thing.
549
550 [ACCEPTED]
551
552* Project inheritance
553
554 What's this?
555
556 [REJECTED - vetoes by Conor MacNeill, Peter Donald and Stefan Bodewig]
557
558* Target inheritance. ie The ability to include targets from other
559 project files overidining them as necessary (so cascading project
560 files).
561
562 [REJECTED - vetoes by Conor MacNeill, Peter Donald and Stefan Bodewig]
563
564* Add an attribute to <ant> to feed back the environment (properties and
565 taskdefs) from the child build to the parent.
566
567 [REJECTED - vetoes by Conor MacNeill, Peter Donald, Simeon Fitch and
568 Stefan Bodewig]
569
570* Allow a target to depend on a target which is in another buildfile.
571
572 [ACCEPTED]
573
574* Allow a target to reference properties defined in another buildfile.
575
576 [REJECTED - only one +1 vote]
577
578[DISC] documentation system
579---------------------------
580
581* generate docs by anakia/XSLT
582
583 Corollary of "move to a system that allows docs to be generated"?
584
585 [ACCEPTED - with no decision on which system to use]
586
587[DISC] Task API
588---------------
589
590* tasks provide some way to identify their attributes from the
591 outside.
592
593 Possible solutions include a special method like getProperties(), an
594 external describing file shipping with the task class or special
595 javadoc comments parsed by a custom doclet. Whatever the method it
596 should not impose any cost on runtime as it is only used a small
597 proportion of the time (design-time).
598
599 [ACCEPTED]
600
601* tasks should have access to its own XML representation.
602
603 [REJECTED - vetoes by Christoph Wilhelms, Conor MacNeill and Simeon Fitch]
604
605* Task level if and unless attributes.
606
607 [REJECTED - no single +1 vote]
608
609* Allow tasks to find out, whether another task has completed successfully.
610
611 [REJECTED - vetoes by Conor MacNeill, Glenn McAllister, Peter Donald
612 and Stefan Bodewig]
613
614* provide failonerror like functionality to all tasks. (Provide this as an aspect??
615 much like logging aspect or classloader aspect).
616
617 [ACCEPTED]
618
619[DISC] logging
620--------------
621
622* allow build file writers to modify logging (verbosity for example)
623 on a target by target or task by task basis.
624
625 [ACCEPTED]
626
627* Make loggers configurable via build.xml.
628
629 [ACCEPTED]
630
631[DISC] multithrading
632--------------------
633
634* Multithreaded execution of tasks within the same target.
635
636 [ACCEPTED]
637
638* Multithreaded execution of targets.
639
640 [REJECTED - vetoes by Conor MacNeill, Glenn McAllister and Stefan Bodewig]
641
642[DISC] procedural versus purely declarative
643-------------------------------------------
644
645* Simple flow control (if-then-else, for)
646
647 [REJECTED - vetoes by Conor MacNeill, Glenn McAllister, Peter Donald
648 and Stefan Bodewig]
649
650* targets should be like methods including a return value
651
652 [REJECTED - vetoes by Conor MacNeill, Glenn McAllister, Peter Donald,
653 Simeon Fitch and Stefan Bodewig]
654
655* build files should be purely declarative
656
657 [REJECTED - veto by Stefan Bodewig]
658
659[DISC] Properties
660-----------------
661
662* Ability to manage scopping of properties in general (ie target/project/workspace).
663
664 [ACCEPTED]
665
666[DISC] Templates
667----------------
668
669* it should be possible to provide general /(template?)/ build
670 specifications, and to declare for a concrete item that it should be
671 built according to such a general specification.
672
673 [REJECTED - vetoes by Conor MacNeill, Glenn McAllister, Peter Donald
674 and Stefan Bodewig]
675
676[DISC] XML issues
677-----------------
678
679* a built-in mechanism to include build-file fragments - something
680 that doesn't use SYSTEM entities at all and therefore is XSchema
681 friendly, allows for property expansions ...
682
683 [ACCEPTED]
684
685* Let Ant ignore - but warn - if unknown XML elements or attributes
686 occur in a build file.
687
688 [REJECTED - vetoes by Conor MacNeill, Glenn McAllister, Peter Donald
689 and Stefan Bodewig]
690
691* Allow ant to farm out attributes and elements that are NOT in the ant
692 namespace to other components. ie hand doc: elements to the Documentation
693 component or log: attributes to Log policy component etc
694
695 [ACCEPTED]
696
697[DISC] core extensions
698----------------------
699
700* Allow named tasks to be defined by <script> elements.
701
702 [REJECTED - only one +1 vote]
703
704* specify an onfail task or target that runs in case of a build
705 failure.
706
707 [REJECTED - vetoes by Glenn McAllister, Peter Donald and Stefan Bodewig]
708
709* allow sequence to be specified in depends attribute or enhance
710 antcall to work with current list of executed targets
711
712 [ACCEPTED]
713
714* Support nesting tasks into other elements - not just as children of
715 target - as proposed by Thomas Christen in
716 <http://marc.theaimsgroup.com/?l=ant-dev&m=98130655812010&w=2>.
717
718 [ACCEPTED]
719
720* Make if/unless attributes to check for the value of a property, not
721 only its existance.
722
723 [REJECTED - vetoes by Glenn McAllister and Stefan Bodewig]
724
725* check for more than one condition in if/unless attributes.
726
727 [REJECTED - vetoes by Glenn McAllister, Peter Donald and Stefan Bodewig]
728
729* provide a way to define the order in which targets a given target
730 depends upon get executed.
731
732 [ACCEPTED]
733
734* define task contexts that define various common aspects (logging,
735 failure handling ...) and assign them to tasks.
736
737 [ACCEPTED]
738
739[DISC] organization
740-------------------
741
742* separate CVSes and code hierarchies for
743 - task engine [ org.apache.task.* ]
744 - project engine (ie model of targets/projects/workspaces) + support/utility classes
745 [ org.apache.ant.* ]
746 - core tasks (ie tasks supported by ant contributors) [ org.apache.??? ]
747
748 [REJECTED - vetoes by Conor MacNeill and Glenn McAllister]
749
750[DISC] misc
751-----------
752
753* internationalization
754
755 [ACCEPTED]
756
757VI. entries that have been submitted too late
758=============================================
759
760* Integration of the depends task and javac tasks
761
762 [REJECTED - only two +1 votes]
763
764* recursive property resolution( ie resolving ${dist.${name}.dir} )
765
766 [REJECTED - veto by Peter Donald]
Note: See TracBrowser for help on using the repository browser.