<!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.cloudfree</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>
<div xmlns="http://www.w3.org/1999/xhtml" id="rendered-plan">
  <div id="maincontent">
    <div id="midcolumn"><h1><span style="font-size: 140%">Project Plan For
                        <a href="http://www.eclipse.org/projects/project_summary.php?projectid=technology.cloudfree">CloudFree Commerce Platform</a></span>, version 0.7</h1><div id="toc"><p><a name="toc"><strong>Table of Contents</strong></a></p><ul><li><a href="#introduction">Introduction</a></li><li><a href="#release_deliverables">
                       Release Deliverables
                    </a></li><li><a href="#release_milestones">
                       Release Milestones
                    </a></li><li><a href="#target_environments">
                        Target Environments
                    </a></li><li><a href="#compatibility">
                        Compatibility with Previous Releases
                    </a></li><li><a href="#themes_and_priorities">
                        Themes and Priorities
                    </a></li><li><a href="#appendix">
                        Appendix
                    </a></li></ul></div><h2><a name="introduction">Introduction</a></h2><div>The CloudFree Commerce Platform is a new project. In preparation for our first release</div><h2><a name="release_deliverables">Release Deliverables</a></h2><div>
        <ul>
          <li>
            <strong>Source code release</strong>, available as versions tagged "R0_7" in the project's
              <ul>
                <li><a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cloudfree/?root=Technology_Project">CloudFree CVS Repository</a></li>
              </ul>
          </li>
          <li>
            <strong>Platform</strong>
          </li>
          <li>
            <strong>Services</strong>
          </li>
          <li>
            <strong>Examples</strong>
          </li>
        </ul>
     </div><p><a href="#toc">Table of Contents</a></p><h2><a name="release_milestones">Release Milestones</a></h2><div>Release milestones will be occurring at roughly 6 week intervals.</div><table border="1" align="center"><tr><td><b>M1</b></td><td>12/10/2008</td><td><div>0.7 M1</div></td></tr><tr><td><b>M2</b></td><td>2/4/2009</td><td><div>0.7 M2</div></td></tr><tr><td><b>M3</b></td><td>3/18/2009</td><td><div>0.7 M3</div></td></tr><tr><td><b>M4</b></td><td>4/29/2009</td><td><div>0.7 M4</div></td></tr><tr><td><b>M5</b></td><td>6/10/2009</td><td><div>0.7 M5</div></td></tr><tr><td><b>M6</b></td><td>7/22/2009</td><td><div>0.7 M6 (feature freeze)</div></td></tr><tr><td><b>RC1</b></td><td>9/2/2009</td><td><div>0.7 RC1</div></td></tr><tr><td><b>RC2</b></td><td>9/9/2009</td><td><div>0.7 RC2</div></td></tr></table><p><a href="#toc">Table of Contents</a></p><h2><a name="target_environments">Target Environments</a></h2><div>
        The server-side part of the CloudFree Commerce Platform will be written and compiled against: 
        <ul>
          <li><a href="http://www.eclipse.org/equinox/">Equinox</a> Version 3.5</li>
          <li>Version 6.0 of the Java Platform APIs (i.e., Java 2 Platform, Release 6.0 SE)</li>
          <li><a href="http://java.sun.com/products/servlet/reference/api/index.html">Java Servlet API</a> Version 2.5</li>
        </ul>
     </div><h3>Internationalization</h3>
          <div>
            The CloudFree Platform is designed as the basis for internationalized
            products. The user interface elements provided by the CloudFree
            components, including dialogs and error messages, are externalized. The
            English strings are provided as the default resource bundles.
          </div>
     <p><a href="#toc">Table of Contents</a></p><h2><a name="compatibility">Compatibility with Previous Releases</a></h2><div>There is no previous release to be compatible with.</div><p><a href="#toc">Table of Contents</a></p><h2><a name="themes_and_priorities">Themes and Priorities</a></h2><div>This will be our first release. Therefore, we defined the following themes and priorities for working towards our 1.0 release.</div><h3>Scalable Platform</h3><ul><li><b>Committed</b><div>
           <ul>
              <li>Contextual Runtime</li>
              <li>Clustering Support</li>
              <li>Monitoring</li>
           </ul>
           </div></li></ul><ul><li><b>Proposed</b><div>
           <ul>
              <li>Admin Dashboard</li>
           </ul>
           </div></li></ul><ul><li><b>Deferred</b><div>
           <ul>
              <li>None</li>
           </ul>
           </div></li></ul><h3>Extensible E-commerce Services</h3><ul><li><b>Committed</b><div>
           <ul>
              <li>Inventory Service</li>
              <li>Order Support</li>
              <li>Customer Service</li>
           </ul>
           </div></li></ul><ul><li><b>Proposed</b><div>
           <ul>
              <li>None</li>
           </ul>
           </div></li></ul><ul><li><b>Deferred</b><div>
           <ul>
              <li>None</li>
           </ul>
           </div></li></ul><p><a href="#toc">Table of Contents</a></p><h2><a name="appendix">Appendix Bugzilla Usage</a></h2><div><p>
      The CloudFree team uses Eclipse Bugzilla for all it's planning. Based on the plan item queries
      listed above, the following consistency queries should never return any results:</p>
      <ul>
        <li>Target milestone "---" or "Future" but resolved "FIXED":
            <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;classification=Technology&amp;product=CloudFree&amp;target_milestone=---&amp;target_milestone=Future&amp;resolution=FIXED&amp;resolution=WORKSFORME">Query</a></li>
        <li>Marked "FIXED" but still assigned to an "inbox":
            <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;classification=Technology&amp;product=CloudFree&amp;resolution=FIXED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=inbox">Query</a></li>
        <li>Resolved "LATER" or "REMIND":
            <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;classification=Technology&amp;product=CloudFree&amp;resolution=LATER&amp;resolution=REMIND">Query</a></li>
      </ul>
      </div><p><a href="#toc">Table of Contents</a></p></div>
  </div>
</div>
<div style="visibility: hidden; float: right; text-align: right"><a href="?projectid=technology.cloudfree&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>