<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Project Plan - technology.vtp</title><meta name="author" content="Bjorn Freeman-Benson" />
<meta name="keywords" content="" /><link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/small.css" title="small" /><link rel="alternate stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/large.css" title="large" /><link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/visual.css" media="screen" /><link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/layout.css" media="screen" />
<!--[if IE]> 	<link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/ie_style.css" media="screen"/> <![endif]-->
<!--[if IE 6]> 	<link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/ie6_style.css" media="screen"/> <![endif]-->
<link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/print.css" media="print" />
<link rel="stylesheet" type="text/css" href="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/css/header.css" media="screen" />
<script type="text/javascript" src="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/styleswitcher.js"></script>
</head>
<body>
<div id="header">
	<div id="header-graphic" class="eclipse-main">
		<a href="http://www.eclipse.org/"><img src="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/images/eclipse_home_header.jpg" alt="" /></a><h1>Eclipse</h1>	
	</div>
	<div id="header-global-holder" class="eclipse-main-global">
		<div id="header-global-links"><ul>
<li><a href="http://www.eclipse.org/org/foundation/contact.php" class="first_one">Contact</a></li><li><a href="http://www.eclipse.org/legal/">Legal</a></li>
			</ul>
		</div>
		<div id="header-icons">
<a href="http://www.youtube.com/user/EclipseFdn" target="_blank"><img src="/eclipse.org-common/themes/Phoenix/images/Icon_Live.png" width="28" height="28" alt="Eclipse YouTube Channel" title="Eclipse YouTube Channel" /></a>
<a href="http://www.eclipseplugincentral.com"><img src="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/images/Icon_plugin.png" width="28" height="28" alt="Eclipse Plugin Central" title="Eclipse Plugin Central" /></a>
<a href="http://www.planeteclipse.org"><img src="http://www.eclipse.org/eclipse.org-common/themes/Phoenix/images/Icon_planet.png" width="28" height="28" alt="Planet Eclipse" title="Planet Eclipse" /></a>
		</div>
	</div></div><div id="header-menu"><div id="header-nav">
		<ul>
		<li><a class="first_one" href="http://www.eclipse.org/" target="_self">Home</a></li> 
				<li><a  href="http://www.eclipse.org/users/" target="_self">Users</a></li> 
				<li><a  href="http://www.eclipse.org/membership/" target="_self">Members</a></li> 
				<li><a  href="http://www.eclipse.org/committers/" target="_self">Committers</a></li> 
				<li><a  href="http://www.eclipse.org/downloads/" target="_self">Downloads</a></li> 
				<li><a  href="http://www.eclipse.org/resources/" target="_self">Resources</a></li> 
				<li><a  href="http://www.eclipse.org/projects/" target="_self">Projects</a></li> 
				<li><a  href="http://www.eclipse.org/org/" target="_self">About Us</a></li> 
				</ul>
	</div>
	<div id="header-utils">
		<form action="http://www.google.com/cse" id="searchbox_017941334893793413703:sqfrdtd112s">
	 	<input type="hidden" name="cx" value="017941334893793413703:sqfrdtd112s" />
  		<input type="text" name="q" size="25" />
  		<input type="submit" name="sa" value="Search" />
		</form>
		<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_017941334893793413703%3Asqfrdtd112s&lang=en"></script>		<ul>
						<li class="text_size"><a class="smallText" title="Small Text" href="#" onclick="setActiveStyleSheet('small');return false;">A</a> <a class="largeText" title="Large Text" href="#" onclick="setActiveStyleSheet('large');return false;">A</a></li>
		</ul>
	</div></div><div id="leftcol">
<ul id="leftnav">
<li style="background-image: url(/eclipse.org-common/themes/Phoenix/images/leftnav_fade.jpg); background-repeat: repeat-x; border-style: none;"><br /><br /><br /><br /><br /><br /><br /><br />
</li>
</ul>

</div>
<div id="container"><style>
h2 {
	border-bottom: 2px solid gray;
}
h3 {
	border-bottom: 1px dotted gray;
}
</style>

  
    
    The Voice Tools Project (VTP) provides a complete IDE for developing speech
    and DTMF applications that can be run with VXML compatible voice browsers.
    &lt;p&gt;
    The 3.0 version of the VTP strives to fully integrate the contributions from
    OpenMethods into a complete package.  Several major features were added as
    part of the new contribution.  The goal of this release is to allow further
    development to occur directly in the project repository.
    
  
  
    The 3.0 desktop IDE interfaces and export systems.
    The 3.0 runtime process engine and web app integration.
  
  
    
     April milestone 
     May milestone 
     June milestone 
     July milestone 
    
  
  
    The desktop portion of the VTP supports Eclipse 3.2 &amp; 3.3 running on Java 5.0.
    &lt;p&gt;
    The exported web app requires a Java Servlet container running on Java 5.0.
    
    Neither the desktop component or the web app logging system are internationalized.
    
  
  
    There is currently limited to no compatibility with previous psuedo-releases.
    Although this release is labeled 3.0, it is affectively the first full release
    of this project.
  
  
    
The themes and priorities of work being done on the VTP are separated into two
categories: long running (endless) sets of tasks and those that are directed at implementing a particular feature
or functionality.
    
    
      
Things that make using the development tool or deploying applications easier falls into
this category.
      
      
      
&lt;ul&gt;
&lt;li&gt;Spelling corrections&lt;/li&gt; 
&lt;li&gt;Wording updates&lt;/li&gt; 
&lt;li&gt;Addition of tooltips&lt;/li&gt; 
&lt;li&gt;Alphabetizing item lists &lt;/li&gt;
&lt;li&gt;Consistent widget types for actions&lt;/li&gt;
&lt;/ul&gt;
      
      
    
    
      
As things evolve over time, one of the most difficult tasks we as developers have is
making sure the documentation remains up to date.
	  
      
&lt;ul&gt;
&lt;li&gt;Javadoc comments&lt;/li&gt; 
&lt;li&gt;Extension Point schema element descriptions&lt;/li&gt; 
&lt;li&gt;HTML user documentation&lt;/li&gt; 
&lt;/ul&gt;
      
      
    
    
      
One of the most compelling features of the voice tools development environment is
its support for providing a consistent caller experience regardless of the language used for interaction.
Currently only an English language pack is available at the VTP.
	  
      
&lt;ul&gt;
&lt;li&gt;French&lt;/li&gt;
&lt;li&gt;French-Canadian&lt;/li&gt;
&lt;li&gt;German&lt;/li&gt;
&lt;li&gt;Spanish (Spain)&lt;/li&gt;
&lt;li&gt;Spanish (Mexico)&lt;/li&gt;
&lt;li&gt;British English&lt;/li&gt;
&lt;li&gt;Hindi&lt;/li&gt; 
&lt;/ul&gt;
      
      
    
    
      
Provide the ability for the application developer to catch non-typical VXML
events that might occur during the execution of an element.  These events would be exposed as additional
exit points on the elements and can have additional call flow attached to them.  This however is not intended
To provide support for global behavior type capabilities.
      
      
    
    
      
Extend the debug and simulation capabilities of the VTP to include using JVoiceXML
as the VXML interpreter.  This project is being conducted outside of the VTP proper but I am including it to
ensure they get all the help they need to be successful in this endeavor.
      
      
    
    
      
Expose the selection of theme in the project/workspace preferences and
the creation of a second theme.
	  
      
    
    
      
The ability to print the design canvases and other information about a project.
	  
      
    
  
  

<div style="visibility: hidden; float: right; text-align: right"><a href="?projectid=technology.vtp&raw=1">view raw xml of project plan</a><br>
<a href="http://www.eclipse.org/projects/dev_process/project-status-infrastructure.php">from project meta-data key "projectplanurl"</a></div>

</div> <!-- midcolumn -->
</div> <!-- maincontent -->
		<script type="text/javascript">
		var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
		document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
		</script>
		<script type="text/javascript">
		var pageTracker = _gat._getTracker("UA-910670-2");
		pageTracker._initData();
		pageTracker._trackPageview();
		</script></div><div id="footer">
<ul id="footernav">
<li class="first"><a href="http://www.eclipse.org/">Home</a></li>
<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a><a href="http://www.eclipse.org/org/press-release/20081112_termsofuse.php"><img src="http://www.eclipse.org/images/updated.png" align="absmiddle" /></a></li>
</ul>
<p>Copyright &copy; 2008 The Eclipse Foundation. All Rights Reserved</p>
</div></body></html>