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.

todo.html 26 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <!-- Content Stylesheet for Site -->
  3. <!-- start the processing -->
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
  7. <meta name="author" value="Adam Murdoch">
  8. <meta name="email" value="adammurdoch@apache.org">
  9. <title>Apache Myrmidon - Get Involved</title>
  10. </head>
  11. <body bgcolor="#ffffff" text="#000000" link="#525D76">
  12. <table border="0" width="100%" cellspacing="0">
  13. <!-- TOP IMAGE -->
  14. <tr>
  15. <td> <td colspan="2">
  16. <a href="http://jakarta.apache.org"><img src="http://jakarta.apache.org/images/jakarta-logo.gif" align="left" border="0"/></a>
  17. </td>
  18. </td>
  19. <td valign="bottom"><div align="right"><b><font size="+3" color="#525D76">Apache Myrmidon</font></b></div></td>
  20. </tr>
  21. </table>
  22. <table border="0" width="100%" cellspacing="4">
  23. <tr><td colspan="2">
  24. <hr noshade="" size="1"/>
  25. </td></tr>
  26. <tr>
  27. <!-- LEFT SIDE NAVIGATION -->
  28. <td valign="top" nowrap="true">
  29. <p><strong>Myrmidon</strong></p>
  30. <ul>
  31. <li> <a href="./index.html">Introduction</a>
  32. </li>
  33. <li> <a href="./getinvolved.html">Get Involved</a>
  34. </li>
  35. <li> <a href="./user.html">Building Myrmidon</a>
  36. </li>
  37. <li> <a href="./todo.html">Todo List</a>
  38. </li>
  39. </ul>
  40. <p><strong>User Guide</strong></p>
  41. <ul>
  42. <li> <a href="./buildfile.html">Build file</a>
  43. </li>
  44. <li> <a href="./vfs.html">Virtual File System</a>
  45. </li>
  46. <li> <a href="./ant1compat.html">Ant1 Compatibility Layer</a>
  47. </li>
  48. <li> <a href="./differences.html">Differences to Ant1</a>
  49. </li>
  50. <li> <a href="./task.html">My First Task</a>
  51. </li>
  52. </ul>
  53. <p><strong>Extending Ant</strong></p>
  54. <ul>
  55. <li> <a href="./classloader.html">ClassLoader HOWTO</a>
  56. </li>
  57. <li> <a href="./librarys.html">Library HOWTO</a>
  58. </li>
  59. </ul>
  60. <p><strong>Container Design</strong></p>
  61. <ul>
  62. </ul>
  63. </td>
  64. <td align="left" valign="top">
  65. <table border="0" cellspacing="0" cellpadding="2" width="100%">
  66. <tr><td bgcolor="#525D76">
  67. <font color="#ffffff" face="arial,helvetica,sanserif">
  68. <a name="Todo List"><strong>Todo List</strong></a>
  69. </font>
  70. </td></tr>
  71. <tr><td>
  72. <blockquote>
  73. <p>The broad goal is to grow Myrmidon from a prototype task engine into a fully
  74. fledged build system, that can serve as the basis for Ant 2. The following
  75. sections describe some of the many things which still need to be done to
  76. achieve that goal. This list is currently under construction.</p>
  77. <table border="0" cellspacing="0" cellpadding="2" width="100%">
  78. <tr><td bgcolor="#828DA6">
  79. <font color="#ffffff" face="arial,helvetica,sanserif">
  80. <a name="Optional Dependencies"><strong>Optional Dependencies</strong></a>
  81. </font>
  82. </td></tr>
  83. <tr><td>
  84. <blockquote>
  85. <p>Extend Myrmidons library management facilities so that optional
  86. dependencies may be declared for a library. ie The library will still
  87. operate in absence of such libraries but can provide further features
  88. if these libraries are present. Most likely this will be done via a
  89. new manifest entry "Optional-Extension-List:" that behaves similar
  90. to "Extension-List:" except that the extensions are optional.</p>
  91. </blockquote>
  92. </td></tr>
  93. </table>
  94. <table border="0" cellspacing="0" cellpadding="2" width="100%">
  95. <tr><td bgcolor="#828DA6">
  96. <font color="#ffffff" face="arial,helvetica,sanserif">
  97. <a name="Mail tasks"><strong>Mail tasks</strong></a>
  98. </font>
  99. </td></tr>
  100. <tr><td>
  101. <blockquote>
  102. <p>Convert the ant1.x Mail tasks to myrmidon.</p>
  103. </blockquote>
  104. </td></tr>
  105. </table>
  106. <table border="0" cellspacing="0" cellpadding="2" width="100%">
  107. <tr><td bgcolor="#828DA6">
  108. <font color="#ffffff" face="arial,helvetica,sanserif">
  109. <a name="Security Manager"><strong>Security Manager</strong></a>
  110. </font>
  111. </td></tr>
  112. <tr><td>
  113. <blockquote>
  114. <p>Add the ability to run java programs that call System.exit() by adding a
  115. security manager. Should look something like:</p>
  116. <div align="left">
  117. <table cellspacing="4" cellpadding="0" border="0">
  118. <tr>
  119. <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
  120. <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
  121. <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
  122. </tr>
  123. <tr>
  124. <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
  125. <td bgcolor="#ffffff"><pre>
  126. public class MyrmidonSecurityManager
  127. extends SecurityManager
  128. {
  129. public void checkExit( final int status )
  130. {
  131. throw new ExitException( status );
  132. }
  133. public void checkPermission( final Permission permission )
  134. {
  135. }
  136. }
  137. </pre></td>
  138. <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
  139. </tr>
  140. <tr>
  141. <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
  142. <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
  143. <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
  144. </tr>
  145. </table>
  146. </div>
  147. </blockquote>
  148. </td></tr>
  149. </table>
  150. <table border="0" cellspacing="0" cellpadding="2" width="100%">
  151. <tr><td bgcolor="#828DA6">
  152. <font color="#ffffff" face="arial,helvetica,sanserif">
  153. <a name="Self Hosting"><strong>Self Hosting</strong></a>
  154. </font>
  155. </td></tr>
  156. <tr><td>
  157. <blockquote>
  158. <p>Myrmidon must be able to build itself. Currently, it is built using
  159. Ant 1.x. Ultimately, Myrmidon should be able to build itself from exactly the
  160. same build file. To start with, however, there is no need for Myrmidon to be
  161. able to do this. Myrmidon should also be able to be bootstrapped (that is, be
  162. able to be built from scratch, without using Ant 1.x at all).</p>
  163. </blockquote>
  164. </td></tr>
  165. </table>
  166. <table border="0" cellspacing="0" cellpadding="2" width="100%">
  167. <tr><td bgcolor="#828DA6">
  168. <font color="#ffffff" face="arial,helvetica,sanserif">
  169. <a name="Validation Pass"><strong>Validation Pass</strong></a>
  170. </font>
  171. </td></tr>
  172. <tr><td>
  173. <blockquote>
  174. <p>Consider calling validate() on task prior to execute(). This would allow
  175. us to have a "make -k" mode that actually did basic validation and would also
  176. encourage task writers to do validation properly.</p>
  177. </blockquote>
  178. </td></tr>
  179. </table>
  180. <table border="0" cellspacing="0" cellpadding="2" width="100%">
  181. <tr><td bgcolor="#828DA6">
  182. <font color="#ffffff" face="arial,helvetica,sanserif">
  183. <a name="Paths"><strong>Paths</strong></a>
  184. </font>
  185. </td></tr>
  186. <tr><td>
  187. <blockquote>
  188. <p>Consider allowing the user to configure the ant system by setting the
  189. following path types.</p>
  190. <ul>
  191. <li>ant.type.path: path that is used to search for the type libraries</li>
  192. <li>ant.ext.path: path that is used to search for "Optional Packages"
  193. or extensions.</li>
  194. </ul>
  195. <p>
  196. The default search path will probably include a per-user path element,
  197. a workspace path element and a system path elemtn that are searched in
  198. that order. Some possible defaults;
  199. </p>
  200. <ul>
  201. <li>Unix Per-user: ${user.home}/.ant/lib, ${user.home}/.ant/ext</li>
  202. <li>Windows Per-user: ${user.home}/ant/lib, ${user.home}/ant/ext</li>
  203. <li>MacOSX Per-user: ${user.home}/Library/Ant/lib,
  204. ${user.home}/Library/Ant/ext</li>
  205. <li>Unix System-wide: /opt/ant/lib, /opt/ant/ext</li>
  206. <li>Unix System-wide: /usr/local/ant/lib, /usr/local/ant/ext</li>
  207. <li>Windows System-wide: %SYS_DRIVE%/Program Files/ant/lib,
  208. %SYS_DRIVE%/Program Files/ant/ext</li>
  209. <li>MacOSX System-wide: /Library/Ant/lib, /Library/Ant/ant/ext</li>
  210. </ul>
  211. </blockquote>
  212. </td></tr>
  213. </table>
  214. <table border="0" cellspacing="0" cellpadding="2" width="100%">
  215. <tr><td bgcolor="#828DA6">
  216. <font color="#ffffff" face="arial,helvetica,sanserif">
  217. <a name="Ant 1.x Compatibility"><strong>Ant 1.x Compatibility</strong></a>
  218. </font>
  219. </td></tr>
  220. <tr><td>
  221. <blockquote>
  222. <p>The Ant1 Compatibility layer is still in early stages of development.
  223. </p>
  224. <ul>
  225. <li>Get a version of <code>&lt;antcall&gt;</code> working.</li>
  226. <li>
  227. Provide hooks between Ant1 references and Myrmidon properties.
  228. May use converters for adapting Ant2 objects (like Ant2
  229. <code>&lt;path&gt;</code> or <code>&lt;fileset&gt;</code>)
  230. as Ant1 types.
  231. </li>
  232. <li>
  233. Missing tests:
  234. <ul>
  235. <li>Make sure properties are shared between Ant1 and Myrmidon tasks.</li>
  236. </ul>
  237. </li>
  238. <li>Get GUMP runs going using Myrmidon.</li>
  239. <li>Add protected accessors for get/set/list properties in
  240. Ant1 Project, to minimise the amount of code duplication in
  241. Ant1CompatProject.</li>
  242. </ul>
  243. </blockquote>
  244. </td></tr>
  245. </table>
  246. <table border="0" cellspacing="0" cellpadding="2" width="100%">
  247. <tr><td bgcolor="#828DA6">
  248. <font color="#ffffff" face="arial,helvetica,sanserif">
  249. <a name="Virtual File System"><strong>Virtual File System</strong></a>
  250. </font>
  251. </td></tr>
  252. <tr><td>
  253. <blockquote>
  254. <p>The VFS needs plenty of work:</p>
  255. <ul>
  256. <li>Move files/folders.</li>
  257. <li>Recursive folders copy.</li>
  258. <li>Search through a file hierarchy, using Ant-style wildcards.</li>
  259. <li>Search through a file hierarchy, using a Selector interface.</li>
  260. <li>The in-memory caching mechanism is pretty rudimentary at this stage.
  261. It needs work to make it size capped. In addition, some mechanism needs
  262. to be provided to release and refresh cached info.
  263. </li>
  264. <li>Convert files/folders into local files, for handing off
  265. to external commands, or legacy tasks.</li>
  266. <li>Refactor the replication mechanism out of ZipFileSystemProvder,
  267. and make more general pluggable.</li>
  268. <li>Capabilities discovery.</li>
  269. <li>Attributes and attribute schema.</li>
  270. <li>Handle file canonicalisation better (for cases like case-insensitive
  271. file systems, symbolic links, name encoding, etc).</li>
  272. <li>File system layering. That is, the ability for a file system to
  273. sit on top of another file system, or a file from another file system
  274. (e.g. Zip/Jar/Tar file systems, gzip/encoding file systems, virtual file
  275. systems).
  276. </li>
  277. </ul>
  278. </blockquote>
  279. </td></tr>
  280. </table>
  281. <table border="0" cellspacing="0" cellpadding="2" width="100%">
  282. <tr><td bgcolor="#828DA6">
  283. <font color="#ffffff" face="arial,helvetica,sanserif">
  284. <a name="File Data-Types and Tasks"><strong>File Data-Types and Tasks</strong></a>
  285. </font>
  286. </td></tr>
  287. <tr><td>
  288. <blockquote>
  289. <p>The file data-types, such as
  290. <code>&lt;fileset&gt;</code> and
  291. <code>&lt;path&gt;</code>, are some of the most widely used parts of Ant 1.x.
  292. Unfortunately, they aren't particularly extensible.
  293. </p>
  294. <ul>
  295. <li>Redesign the file data-types, replacing them with an interface-based
  296. API, plus a set of implementations. The API should use the VFS file
  297. <code>FileObject</code>, rather than
  298. <code>java.io.File</code>.
  299. This process has started, in the
  300. <code>antlib.vfile</code> package.
  301. </li>
  302. <li>File Selectors:
  303. <ul>
  304. <li>Change
  305. <code>AbstractNameFileSelector</code> to use Ant 1 style patterns
  306. matches, rather than Globs patterns.
  307. </li>
  308. <li>Add 'defaultexcludes' to
  309. <code>DefaultFileSet</code>. Also add a
  310. file selector implementation that matches everything except the default
  311. excludes.
  312. </li>
  313. <li>Add a name selector that loads patterns from a file.</li>
  314. <li>Add more selector implementations: size and last-modified comparisons,
  315. checksum comparison, byte-wise content comparison.</li>
  316. </ul>
  317. </li>
  318. <li>File conditions:
  319. <ul>
  320. <li>Add more condition implementations that perform checks on files.
  321. One that searches a path for a file would be useful.</li>
  322. </ul>
  323. </li>
  324. <li>File Name Mappers:
  325. <ul>
  326. <li>Change FileNameMapper.mapFileName() to take vfs.FileName objects.</li>
  327. <li>Move the current mapper implementations across to antlib.</li>
  328. </ul>
  329. </li>
  330. <li>File Sets:
  331. <ul>
  332. <li>Add a file set implementation that provides the union of several
  333. nested file sets (that is, a file set that merges several file sets
  334. together).</li>
  335. <li>Add a file set implementation that filters files that are up-to-date
  336. WRT some other file. Alternatively, this might be better done as a
  337. file selector.</li>
  338. </ul>
  339. </li>
  340. <li>Paths:
  341. <ul>
  342. <li>Add path implementations that evaluate to the system classpath,
  343. and the ant runtime classpath. Or, more generally, combine this with
  344. <code>ClassLoaderManager</code> to evaluate to the classpath of any
  345. 'library' (e.g. system classpath, ant runtime, tools.jar,
  346. an antlib, an installed extension, or the system classes of another JVM
  347. for cross-compiling).
  348. </li>
  349. </ul>
  350. </li>
  351. <li>Port across the Ant 1 file filter proposal, once it is complete.</li>
  352. <li>Copy task:
  353. <ul>
  354. <li>Implement 'preservelastmodified', 'overwrite', and 'includeemptydirs'.</li>
  355. <li>Support a file name mapper.</li>
  356. <li>Support file filters.</li>
  357. <li>Detect and handle destination file name collisions.</li>
  358. </ul>
  359. </li>
  360. <li>Implement the
  361. <code>&lt;move&gt;</code>,
  362. <code>&lt;delete&gt;</code>,
  363. <code>&lt;touch&gt;</code> and
  364. <code>&lt;mkdir&gt;</code> tasks on top
  365. of the VFS and the new file data-types. Might be some scope for generalising
  366. 'touch' and 'mkdir' into a single task.
  367. </li>
  368. </ul>
  369. </blockquote>
  370. </td></tr>
  371. </table>
  372. <table border="0" cellspacing="0" cellpadding="2" width="100%">
  373. <tr><td bgcolor="#828DA6">
  374. <font color="#ffffff" face="arial,helvetica,sanserif">
  375. <a name="Command-line and Configuration Files"><strong>Command-line and Configuration Files</strong></a>
  376. </font>
  377. </td></tr>
  378. <tr><td>
  379. <blockquote>
  380. <p>One of the goals of Ant 2 is to allow the user to easily customise and
  381. extend Ant. The command-line and local configuration files, are two places
  382. where this would be done. Currently, Myrmidon some customisation from the
  383. command-line, but does not support configuration files.</p>
  384. <ul>
  385. <li>Load configuration from system (from $ANT_HOME) and user (from $HOME)
  386. configuration files.</li>
  387. <li>Allow the following via config files:
  388. <ul>
  389. <li>Add (or override) the
  390. <code>lib</code> and
  391. <code>ext</code> directories.
  392. </li>
  393. <li>Enable more than one listener, and configure the listeners from
  394. the conents of the config file.</li>
  395. <li>Import libraries, and set properties.</li>
  396. <li>Execute tasks.</li>
  397. <li>Install and configure runtime services.</li>
  398. </ul>
  399. </li>
  400. </ul>
  401. </blockquote>
  402. </td></tr>
  403. </table>
  404. <table border="0" cellspacing="0" cellpadding="2" width="100%">
  405. <tr><td bgcolor="#828DA6">
  406. <font color="#ffffff" face="arial,helvetica,sanserif">
  407. <a name="Scripting"><strong>Scripting</strong></a>
  408. </font>
  409. </td></tr>
  410. <tr><td>
  411. <blockquote>
  412. <p>Add the ability to extend Ant using languages other than
  413. Java:</p>
  414. <ul>
  415. <li>Define a task using a scripting language such as Javascript.</li>
  416. <li>Use Rhino's ability to implement Java interfaces, to
  417. implement and define types, such as FileSelector, or
  418. Condition.</li>
  419. <li>Define a task using template.</li>
  420. <li>Add some lightweight scripting tasks.</li>
  421. </ul>
  422. </blockquote>
  423. </td></tr>
  424. </table>
  425. <table border="0" cellspacing="0" cellpadding="2" width="100%">
  426. <tr><td bgcolor="#828DA6">
  427. <font color="#ffffff" face="arial,helvetica,sanserif">
  428. <a name="Documentation"><strong>Documentation</strong></a>
  429. </font>
  430. </td></tr>
  431. <tr><td>
  432. <blockquote>
  433. <p>Everyone loves writing documentation, and so a goal for Ant 2 is to
  434. generate a lot of reference documentation for tasks and other types directly
  435. from the source. Unfortunately, there's still plenty of tutorial material
  436. to write. In particular we need these:</p>
  437. <ul>
  438. <li>User documentation - describing things like the build file format,
  439. how properties work, how to use references, how sub-builds work, how to customise
  440. Myrmidon, and so on.</li>
  441. <li>Task writer documentation - describing things like an overview the task API,
  442. how configuration works, task lifecycle, how to assemble an antlib, a catalog
  443. of the runtime services, and so on.</li>
  444. <li>Myrmidon developer documentation - a broad outline of the architecture,
  445. how to build, how to test, and so on. Also, this todo list needs plenty
  446. of filling out.</li>
  447. </ul>
  448. </blockquote>
  449. </td></tr>
  450. </table>
  451. <table border="0" cellspacing="0" cellpadding="2" width="100%">
  452. <tr><td bgcolor="#828DA6">
  453. <font color="#ffffff" face="arial,helvetica,sanserif">
  454. <a name="Miscellaneous"><strong>Miscellaneous</strong></a>
  455. </font>
  456. </td></tr>
  457. <tr><td>
  458. <blockquote>
  459. <p>A completely unordered list of items, big and small:</p>
  460. <ul>
  461. <li>Search through the code for 'TODO' items and fix them.</li>
  462. <li>Allow service factories to be configured from the contents of the
  463. <code>ant-services.xml</code> descriptor.
  464. </li>
  465. <li>Add verbosity level to ProjectListener LogEvent</li>
  466. <li>Fire ProjectListener events taskFinished(), targetFinished() and
  467. projectFinished() events on build failure, adding indicator methods to
  468. ProjectEvent.</li>
  469. <li>Fire ProjectListener events projectStarted() and projectFinished()
  470. events on start and finish of referenced projects, adding indicator methods
  471. to ProjectEvent.</li>
  472. <li>Detect duplicate type names.</li>
  473. <li>Add fully qualified type names, based on antlib name and type shorthand name.
  474. Allow these to be used in build files in addition to the shorthand names.</li>
  475. <li>Move the
  476. <code>&lt;http&gt;</code> and
  477. <code>&lt;socket&gt;</code>
  478. conditions to an antlib. Need to resolve how these will be passed a logger.
  479. </li>
  480. <li>Make the
  481. <code>&lt;uptodate&gt;</code> task a condition, and move to
  482. an antlib.
  483. </li>
  484. <li>Split up
  485. <code>&lt;is-set&gt;</code> condition into is-set and is-true conditions.
  486. </li>
  487. <li>Allow the
  488. <code>&lt;if&gt;</code> task to take any condition implementation.
  489. </li>
  490. <li>Add an else block to the
  491. <code>&lt;if&gt;</code> task.
  492. </li>
  493. <li>Split the
  494. <code>&lt;available&gt;</code> condition into separate conditions
  495. that test for the availability of a class, or a resource.
  496. </li>
  497. <li>Move
  498. <code>crimson.jar</code> to
  499. <code>bin/lib</code> in the distribution,
  500. and make available to other jars via the extension mechanism.
  501. </li>
  502. <li>Change <code>DefaultPropertyResolver</code> to ignore '$${'.</li>
  503. <li>Add a <code>--type</code> command-line option, to allow
  504. the project builder to be manually selected.
  505. </li>
  506. <li>Unit tests.</li>
  507. </ul>
  508. </blockquote>
  509. </td></tr>
  510. </table>
  511. </blockquote>
  512. </td></tr>
  513. </table>
  514. </td>
  515. </tr>
  516. <!-- FOOTER -->
  517. <tr><td colspan="2">
  518. <hr noshade="" size="1"/>
  519. </td></tr>
  520. <tr><td colspan="2">
  521. <div align="center"><font color="#525D76" size="-1"><em>
  522. Copyright &#169; 2000-2002, Apache Software Foundation
  523. </em></font></div>
  524. </td></tr>
  525. </table>
  526. </body>
  527. </html>
  528. <!-- end the processing -->