jvanzyl 00/10/12 18:49:45 Added: docs todo.html Log: - added todo. whoops. Revision Changes Path 1.1 jakarta-velocity/docs/todo.html Index: todo.html =================================================================== <HTML><HEAD><TITLE>Velocity Todo</TITLE></HEAD><BODY alink="#023264" bgcolor="#ffffff" leftmargin="4" link="#023264" marginheight="4" marginwidth="4" text="#000000" topmargin="4" vlink="#023264"><TABLE border="0" cellpadding="0" cellspacing="0" width="100%"><TR><TD align="left" valign="top"><A href="http://jakarta.apache.org/index.html"><IMG border="0" hspace="0" src="resources/jakarta-logo.gif" vspace="0"></A></TD><TD align="left" bgcolor="#ffffff" valign="top" width="100%"><IMG align="right" alt="" border="0" hspace="0" src="resources/header.gif" vspace="0"></TD></TR><TR><TD><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="5"></TD></TR><TR><TD background="resources/line.gif" colspan="2" height="2" width="100%"><IMG alt="" border="0" height="2" hspace="0" src="resources/line.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0" width="100%"><TR><TD valign="top" width="1%"></TD><TD nowrap="1" valign="top" width="14%"><BR> <P></P> <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="index.html">Overview</A></LI></FONT> <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="getting-started.html">Getting Started</A></LI></FONT> <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="install.html">Install</A></LI></FONT> <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="design.html">Design</A></LI></FONT> <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="script-elements.html">Script Elements</A></LI></FONT> <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="contributors.html">Contributors</A></LI></FONT> <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="code-standards.html">Coding Standards</A></LI></FONT> <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="license.html">License</A></LI></FONT> <FONT face="arial,helvetica,sanserif" size="-1"><LI><A href="todo.html">TODO</A></LI></FONT> </TD><TD align="left" valign="top" width="*"><TABLE border="0" cellpadding="3" cellspacing="0"><TR><TD><BR> <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="5"><B>Todo</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000" face="arial,helvetica,sanserif"> <P align="justify"> This is an informal document describing what needs to be done in the Velocity code base, and the Velocity documentation. If you need more detailed help, please send mail to the mailing list (<A href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</A>) and ask your specific questions there. The list below is vaguely in order of importance. </P> </FONT></TD></TR></TABLE></DIV><BR> <DIV align="right"><TABLE border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD bgcolor="#023264" width="100%"><FONT color="#ffffff" face="arial,helvetica,sanserif" size="+1"><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="5"><B>The List</B></FONT></TD></TR><TR><TD><IMG border="0" height="5" hspace="0" src="resources/void.gif" vspace="0" width="1"></TD></TR></TABLE><TABLE border="0" cellpadding="0" cellspacing="0" width="98%"><TR><TD><FONT color="#000000" face="arial,helvetica,sanserif"> <B>Runtime API</B> <BR> The Velocity Runtime is the single access point for all of Velocity's functionality. A standard API for the Runtime should be defined so that in the span between the 0.5 Milestone release and a 1.0 release, the Runtime API changes as little as possible. <P align="justify"></P> <B>JUnit Test Suite</B> <BR> A JUnit test suite would allow Velocity developers to aggressively add, refactor, and optimize code. We need a comprehensive test suite so that we can be assured changes in the code base have no adverse effects for users. <A href="mailto:[EMAIL PROTECTED]">Daniel L. Rall</A> has started us off with some code so you may want to contact him if you are interested in working on a JUnit test suite. <P align="justify"></P> <B>Directive Interface</B> <BR> Right now there is a very thin interface for directives, but some knowledge of JavaCC is required. The directive interface is not intended to be used outside core Velocity developers (it is not intended to be a public API), but it probably makes sense to shield directive creators from JavaCC. <P align="justify"></P> <B>Context</B> <BR> The Velocity Context class is still fairly primitive. It loosely adheres to a Map, but it definitely needs some thinking. It works fine now, but it might be good to think about: how to load standard tools and how to make that process efficient; how to stamp items in the context with expiry durations so that items can be cached and how this might work. <P align="justify"></P> <B>Sample Applications</B> <BR> Any type of sample application would be useful to help kickstart new developers get acquainted with Velocity. Any suggestions are welcome. <P align="justify"></P> <B>User Guide</B> <BR> This would be a guide for designers who would be using the Velocity Template Language (VTL) to create templates. The users guide would give example usage and a definitive description of the VTL syntax. <A href="mailto:[EMAIL PROTECTED]">Jason van Zyl</A> has started work on this with John Castura, but any and all suggestions are welcome. <P align="justify"></P> <B>Developer Guide</B> <BR> This would be a guide for developers who would use Velocity as a stand-alone servlet tool, or in conjuction with a servlet controller framework like Turbine. <A href="mailto:[EMAIL PROTECTED]">Jason van Zyl</A> is currently working on this guide, but any and all suggestions are welcome. <P align="justify"></P> <B>Template Loader System</B> <BR> The template loader system is functional but could probably use an overhaul. There is currently a double template instantiation problem. It is not causing any serious problems, but it should probably be corrected. We could probably utilize some object caching/pooling code from Turbine, or JServ, or the Avalon Server Framework. <P align="justify"></P> <B>Caching</B> <BR> It would be good to have a discussion about how objects in the context should be cached, how the caching should be specified, and who should control the caching: the designer by specifying something in the template, the developer by place expiry times on objects placed in the context, or a third party like a content manager. For example, say an array consisting of a top 10 list of books is placed in the context. This top 10 list might be valid for a 24 hour period: how should that be specified? Say a content manager decides that this list is now valid for a week. Do they tell the designer, who in turn changes the template, or could we provide a mechanism that would allow a content manager to change the default expiry time for that particular context object with the aid of a webapp of some sort? The groundwork has be laid for a flexible caching system in Velocity, but this discussion would be one of usage and policy. <P align="justify"></P> <B>Parser Pool</B> <BR> It would be good to create a pool of parsers that could be utilized by the Runtime. Right now there is only a single parser and the parsing is synchronized. The parsing doesn't happen all that often in production, but a small pool of parsers might alleviate any potential bottlenecks. Again, object caching/pooling code could be borrowed from Turbine, JServ, or the Avalon Server Framework. <P align="justify"></P> <B>Encoding Caching</B> <BR> What would this entail? And how could we implement an efficient encoding mechanism. <P align="justify"></P> <B>Plugins</B> <BR> It would be good to allow plugins in the form of JAR files to be picked up the Velocity Runtime during startup. This would be a good way for Velocity developers to share tools that could be used in a context. For example there are some utilities in Turbine that allow email to be sent from within a template. It might be good to package this sort of utility in a JAR file so that there are no dependencies in the Velocity build for a specific utility. <P align="justify"></P> <B>Context Tools</B> <BR> What kind of tools might be good to add to Velocity. There are several utilties that have been created in Turbine that might be good to move over to the Velocity code base. <P align="justify"></P> <B>Syntax Dumper</B> <BR> Right now there is a primitive syntax dumper in the Velocity code base, but it could be improved. This tool is very helpful in debugging, and it is also good for creating directives. It basically has a simple dump method that is used for all the AST node types. It would be good to tailor dump methods for particular AST node types so that the structure produced is a little clearer. <P align="justify"></P> <B>Syntax Checker</B> <BR> It would be good to have a standard syntax checker. Something that would find all syntax errors and report them to the designer in some intelligible format. This tool could be hooked into various designer tools like DreamWeaver. <P align="justify"></P> <B>Extended Properties</B> <BR> There are classes that are present in JServ, Turbine and Cocoon that allow a more flexible properties mechanism. It allows properties files to be 'included', and allows the concatentation of the values of multiply defined properties. These classes are very good and should be integrated into Velocity. <P align="justify"></P> <B>Compiler</B> <BR> It would be great to have a template compiler. There is a great utility call JavaClass that provides a very clean and simple way to create class files; there is also some byte code generating code present in the DynamicJava package that could be utilized. <P align="justify"></P> <B>IDE Integration</B> <BR> How could Velocity be integrated into standard IDEs like JBuilder and VisualAge? <P align="justify"></P> </FONT></TD></TR></TABLE></DIV><BR> </TD></TR></TABLE></TD></TR></TABLE><BR><TABLE border="0" cellpadding="0" cellspacing="0" width="100%"><TR><TD bgcolor="#023264"><IMG height="1" src="resources/resources.gif" width="1"></TD></TR><TR><TD align="center"><FONT color="#023264" face="arial,helvetica,sanserif" size="-1"><I> Copyright © 2000 The Apache Software Foundation. All Rights Reserved. </I></FONT></TD></TR></TABLE></BODY></HTML>
