<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Eclipse Platform/Core</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
</head>
<body>

<table BORDER=0 CELLSPACING=5 CELLPADDING=2 WIDTH="100%" >
	<tr> 
		<td ALIGN=LEFT VALIGN=TOP COLSPAN="2" BGCOLOR="#0080C0"><b><font face="Arial,Helvetica" color="#FFFFFF">3.0 Release Milestone Plans</font></b></td>
	</tr>
  <tr>
    <td ALIGN=RIGHT VALIGN=TOP WIDTH="2%"><img SRC="../../images/Adarrow.gif" BORDER=0 height=16 width=16></td>
    <td><p><strong>Milestone Plan (3.0 M9) - May 7, 2004</strong></p>
      <ul>
        <li><em><a href="plan_encoding.html">File Encoding</a> &amp; <a href="plan_content_types.html">Content Type Registry</a></em> 
          [rafael]</li>
        <ul>
          <li>Core APIs are implemented.</li>
          <li>Framework for guessing encoding is in as well as a basic implementation.</li>
          <li>org.eclipse.core.resources uses this.</li>
          <li>Text is using new encoding work.</li>
          <li>JDT/Core conversion is in progress.</li>
        </ul>
        <li><em><a href="../../documents/user_settings/index.html">User Settings</a></em> 
          [dj]</li>
        <ul>
          <li>Thread safety review.</li>
          <li>Flush out plug-in customization story.</li>
          <li>Bug fixing as more people use it.</li>
          <li>Documentation.</li>
        </ul>
        <li><em>Synchronization with the Filesystem</em> [john]</li>
        <ul>
          <li>Dropping FAM for Linux.</li>
          <li>Improvements to polling support.</li>
          <li>Finding a home in the preference pages.</li>
        </ul>
        <li><em><a href="plan_concurrency.html">Concurrent Operations</a></em> 
          [john]</li>
        <ul>
          <li>Support and Documentation.</li>
        </ul>
        <li><em>Runtime</em> [pascal, rafael, jeff, tom, jenn]</li>
        <ul>
          <li>Code review. 
            <ul>
              <li>Remove TODOs.</li>
              <li>Robustness.</li>
              <li>Improved Logging.</li>
            </ul>
          </li>
          <li>Reduce JRE requirements.</li>
          <li>Shared location management.</li>
          <li>Working with other teams to remove requirements on runtime.compatibility.</li>
        </ul>
        <li><em>PDE-Build</em> [pascal]</li>
        <ul>
          <li>Continued progress to work with new runtime.</li>
          <li>Help RelEng with migration of work into the build process.</li>
        </ul>
        <li><em>Remove Dependancy on Xerces</em> [dj]</li>
        <ul>
          <li>SDK plug-ins removed dependancies a long time ago.</li>
          <li>Will start removing org.apache.xerces plug-in from the build.</li>
          <li>Need to update features (releng to release changes) and core.map 
            file.</li>
        </ul>
        <li><em>Performance</em> [all]</li>
        <ul>
          <li>Performance pass on new runtime.</li>
          <li>Use tooling to identify potential problem areas.</li>
        </ul>
        <li><em>Documentation</em> [all]</li>
        <ul>
          <li>Document new features.</li>
          <li>Ensure old documentation still makes sense.</li>
          <li>Ensure new APIs/javadoc is flushed out.</li>
          <li>Extension point schemas for new extension points.</li>
        </ul>
        <li><em>Core Tools and Spies</em> [jeff]</li>
        <ul>
          <li>Use <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=56409">bug 
            56409</a> to track progress.</li>
          <li>Want to have tools working and "converted to 3.0" by second week 
            of April.</li>
        </ul>
      </ul>
      <p><strong>Milestone Plan (3.0 M8) - March 26, 2004</strong></p>
      <ul>
        <li> <em><a href="plan_encoding.html">File Encoding</a></em> [rafael] 
          <ul>
            <li>Initial APIs released for M7.</li>
            <li>Working on encoding determination in Runtime.</li>
            <li>Modification of Resources implementation to use new APIs.</li>
          </ul>
        </li>
        <li><em><a href="../../documents/user_settings/index.html">User Settings</a></em> 
          [dj] 
          <ul>
            <li>APIs released to HEAD immediately after M7</li>
            <li>Aid in client education and migration.</li>
          </ul>
        </li>
        <li><em>PDE-Build</em> [pascal] 
          <ul>
            <li>Continue to modify to work with new runtime.</li>
          </ul>
        </li>
        <li><em>Expressions in XML</em> [johna] 
          <ul>
            <li>Released initial APIs M7</li>
            <li>Support/modification as new expressions plug-ins are released 
              to HEAD.</li>
          </ul>
        </li>
        <li><em><a href="plan_concurrency.html">Concurrent Operations</a></em> 
          [johna] 
          <ul>
            <li>Support and documentation.</li>
          </ul>
        </li>
        <li><em>Runtime</em> [pascal, rafael] 
          <ul>
            <li>Continued work on new runtime.</li>
            <li>Shooting for functional completeness.</li>
          </ul>
        </li>
        <li><em>Scoped Builds</em> [johna] 
          <ul>
            <li>Investigation into new plan item for scoped builds. [<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=50816">bug 
              50816</a>]</li>
          </ul>
        </li>
        <li><em>Documentation </em> [all] 
          <ul>
            <li>We need to document all new function (this is a continuous item 
              through all upcoming milestones)</li>
          </ul>
        </li>
      </ul>
      <p><strong>Milestone Plan (3.0 M7) - February 13, 2004</strong></p>
      <ul>
        <li><em>File Encoding</em> [rafael] 
          <ul>
            <li>Andre and Rafael to continue work based on Andre's proposal for 
              file encoding support.</li>
          </ul>
        </li>
        <li><em>User Settings</em> [dj] 
          <ul>
            <li>Proposal to be finished and available for comments.</li>
            <li>Based on feedback from the proposal, initial implementation to 
              be started.</li>
          </ul>
        </li>
        <li><em>Concurrent Operations</em> [john] 
          <ul>
            <li>Continued effort on the &quot;Responsive UI&quot; plan item.</li>
            <li>Main effort left is documentation.</li>
            <li>There are current open UI performance problems. These need to 
              be investigated to find the source of the problem.</li>
            <li>See the <a href="plan_concurrency.html">details</a> page for more 
              info.</li>
          </ul>
        </li>
        <li><em>EclipseCon</em> [john, pascal] 
          <ul>
            <li>Preparations continue for the Eclipse conference (Feb 2 to Feb 
              5)</li>
          </ul>
        </li>
        <li><em><a href="../../documents/auto_refresh.html">Auto-Refresh</a> </em> [john] 
          <ul>
            <li>Continued from M6 plan.</li>
            <li>Work has been done to integrate the Auto-Refresh plug-in with 
              the Core.</li>
            <li>It has also been modified to use the new JobManager APIs.</li>
            <li>This work needs to be reviewed and released to the builds.</li>
          </ul>
        </li>
        <li><em>Expressions in XML</em> [dj] 
          <ul>
            <li>As part of the work to allow third-party plug-ins to contribute 
              to refactoring, Dirk has come up with a proposal for expression 
              evaluation in plugin.xml files. Although most of this work will 
              live in a separate plug-in, there is a certain degree of work which 
              must be incorporated into the Core Runtime plug-in. Specifically 
              the code for the enhancement <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=32498">bug 
              32498</a>.</li>
          </ul>
        </li>
        <li><em>Runtime</em> [pascal, rafael] 
          <ul>
            <li>We would like to be able to run from JARs rather than having a 
              scattered directory structure.</li>
            <li>Investigation of running without a workspace (-nodata)</li>
          </ul>
        </li>
        <li><em>PDE-Build </em> [pascal] 
          <ul>
            <li>Expected to continue into M8</li>
            <li>Work with new runtime. </li>
            <li>Among other items, we need to be able to build JARs if we plan 
              on running from them. 
              <ul>
                <li>Need to modify the classpath computation for the compiler</li>
                <li>Need to be able to assemble the JARs in the required format</li>
                <li>Would like to replace the constructed plug-in registry information 
                  with State objects</li>
              </ul>
            </li>
          </ul>
        </li>
        <li><em>Documentation </em> [all] 
          <ul>
            <li>We need to document all new function (this is a continuous item 
              through all upcoming milestones)</li>
          </ul>
        </li>
      </ul>
      <p><strong>Milestone Plan (3.0 M6) - December 19, 2003</strong></p>
      <ul>
        <li><em>Bug Fixing</em> 
          <ul>
            <li>Normally I don't include this as one of the things we are working 
              on, but the M6 milestone has been targeted as one in which the teams 
              will be making a conserted effort to reduce the defect backlog.</li>
          </ul>
        </li>
        <li><em>Concurrent Operations</em> 
          <ul>
            <li>A dynamic team has been constructed to work towards solving the 
              remaining issues for the User Responsiveness plan item.</li>
            <li>A new deadlock detection algorithm has been put into place and 
              is being reviewed and tested.</li>
            <li>See the <a href="plan_concurrency.html">details</a> page for more 
              info.</li>
          </ul>
        </li>
        <li> <em>Rich Client Platform</em> 
          <ul>
            <li>We hope to have the new runtime as proposed by <a href="http://www.eclipse.org/equinox">Equinox</a>, 
              integrated into the Core development stream.</li>
            <li>Here is some <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-core-home/runtime/index.html">documentation</a> 
              about the new runtime.</li>
          </ul>
        </li>
        <li><em>User Settings</em> 
          <ul>
            <li>TBD</li>
          </ul>
        </li>
        <li><em>File Encodings</em> 
          <ul>
            <li>Andre is currently working on the File Encoding issue, with Rafael 
              as his Core team contact.</li>
          </ul>
        </li>
        <li><em>Auto-Refresh</em> 
          <ul>
            <li>Work has been done to integrate the Auto-Refresh plug-in with 
              the Core.</li>
            <li>It has also been modified to use the new JobManager APIs.</li>
            <li>This work needs to be reviewed and released to the builds.</li>
          </ul>
        </li>
      </ul>
      <strong>Milestone Plan (3.0 M5) - November 21, 2003</strong> (based on 4 
      people, 6 weeks each)<p></p> <ul>
        <li><em>Concurrent Operations (6 weeks)</em> 
          <ul>
            <li>A dynamic team has been constructed to work towards solving the 
              remaining issues for the User Responsiveness plan item.</li>
            <li>See the <a href="plan_concurrency.html">details</a> page for more 
              info.</li>
          </ul>
        </li>
        <li> <em>Rich Client Platform (12 weeks)</em> 
          <ul>
            <li>See the <a href="http://www.eclipse.org/equinox">Equinox</a> home 
              page for more info.</li>
          </ul>
        </li>
        <li><em>User Settings (4 weeks)</em> 
          <ul>
            <li>This plan item has been put off for too long. Goal is to have 
              APIs defined by M5. If we can't get this done, then the chance of 
              completing this item for 3.0 is minimal.</li>
          </ul>
        </li>
        <li><em>Remove Dependancy on Xerces (1 week)</em> 
          <ul>
            <li>Remove dependancy on Xerces code from boot, runtime, resources, 
              pde-build, and webdav.</li>
            <li>See the <a href="plan_xerces.html">details</a> page for more info.</li>
          </ul>
        </li>
        <li><em>RCP Transformations (1 week)</em> 
          <ul>
            <li>As part of the RCP work, some of the UI plug-in was refactored. 
              This includes separation of the org.eclipse.ui plug-in into multiple 
              plug-ins as well as the moving of extension points to different 
              plug-ins. (and thus having a different id)</li>
            <li>After meeting with people from UI and PDE, we determined that 
              we need to be able to handle these transformations at the Core level 
              in the plug-in parser.</li>
          </ul>
        </li>
        <li><em>File Encodings (0 weeks) </em> 
          <ul>
            <li>There is no active work currently being done on this plan item 
              due to lack of resources.</li>
          </ul>
        </li>
      </ul>
      <p><strong>Milestone Plan (3.0 M4) - October 10, 2003 </strong>(based on 
        4 people, 6 weeks each)</p>
      <ul>
        <li><em>Concurrent Operations (6 weeks) </em> 
          <ul>
            <li>We are hoping that by the end of M4 most of the Platform/Core 
              implementation will be in place.</li>
            <li>A good deal of time will need to be spent on FAQs, support, and 
              general education of how to use the new features.</li>
            <li>See the <a href="plan_concurrency.html">details</a> page for more 
              info.</li>
          </ul>
        </li>
        <li><em>Rich Client Platform (9 weeks) </em> 
          <ul>
            <li>See the <a href="http://dev.eclipse.org/viewcvs/indextech.cgi/%7Echeckout%7E/equinox-home/plans/m3.html">details</a> 
              page for more info.</li>
          </ul>
        </li>
        <li><em>User Settings (3 weeks) </em> 
          <ul>
            <li>See the <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-vcm-home/docs/online/team3.0/settings.html">Team 
              team</a> page for more details.</li>
          </ul>
        </li>
        <li><em>Remove Dependancy on Xerces (3 weeks) </em> 
          <ul>
            <li>Still waiting for approval.</li>
            <li>Once approved then majority of time will be documentation and 
              education and helping others to use the new plug-in.</li>
            <li>See the <a href="plan_xerces.html">details</a> page for more info.</li>
          </ul>
        </li>
        <li><em>File Encoding (3 weeks) </em> 
          <ul>
            <li>See the <a href="plan_encoding.html">details</a> for more info.</li>
          </ul>
        </li>
        <li><em>Improved User Experience</em> 
          <ul>
            <li>Includes: multiple workspaces, workspace synchronization, editing 
              files outside of the workspace, and more.</li>
            <li>See the <a href="plan_userexperience.html">details</a> page for 
              more info.</li>
          </ul>
        </li>
      </ul>
      <p><strong>Milestone Plan (3.0 M3) - August 29, 2003</strong> (based on 
        4 people, 5 weeks each)</p>
      <ul>
        <li><em>Concurrent Operations (5 weeks) </em> 
          <ul>
            <li>Continued from M2 plan.</li>
            <li>See the <a href="plan_concurrency.html">details</a> page for more 
              info.</li>
          </ul>
        </li>
        <li><em>Rich Client Platform (10 weeks) </em> 
          <ul>
            <li>Continued from M2 plan.</li>
            <li>See the <a href="http://dev.eclipse.org/viewcvs/indextech.cgi/%7Echeckout%7E/equinox-home/plans/m3.html">details</a> 
              page for more info.</li>
          </ul>
        </li>
        <li><em>Remove Dependancy on Xerces (3 days)</em> 
          <ul>
            <li>Continued from M2 plan</li>
            <li>See the <a href="plan_xerces.html">details</a> page for more info.</li>
          </ul>
        </li>
        <li><em>File Encoding </em> 
          <ul>
            <li>Continued from M2 plan.</li>
            <li>The RFC has been published to the web. </li>
            <li>See the <a href="plan_encoding.html">details</a> for more info.</li>
          </ul>
        </li>
        <li><em>User Settings </em> 
          <ul>
            <li>Continued from M2 plan.</li>
            <li>The RFC has been published by the Team team. During the M3 phase, 
              we hope to provide more input and become more involved in the solution. 
              (since most of it will be living in the Core Runtime space)</li>
            <li>See the <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-vcm-home/docs/online/team3.0/settings.html">Team 
              team</a> page for more details.</li>
          </ul>
        </li>
        <li><em>Session Tests </em> 
          <ul>
            <li>Continued from M2 plan.</li>
            <li>There has been more work than anticipated with co-ordinating the 
              session tests and the automated test framework so work continues 
              through to M3.</li>
          </ul>
        </li>
        <li><em>Improved User Experience </em> 
          <ul>
            <li>See the <a href="plan_userexperience.html">details</a> page for 
              more info.</li>
          </ul>
        </li>
        <li><em>Vacation (4 weeks)</em> 
          <ul>
            <li>It's summer time!<br>
            </li>
          </ul>
        </li>
      </ul>
      <p><b>Milestone Plan (3.0 M2) - July 18, 2003</b> (based on 4 weeks before 
        the milestone)</p>
      <ul>
        <li><i>Concurrent Operations (4 weeks)</i></li>
        <ul>
          <li> See the <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-core-home/plan_concurrency_intro.html">details</a> 
            page for more info.</li>
        </ul>
        <li><i>Rich Client Platform (8 weeks...2 people, full-time for 4 weeks)</i></li>
        <ul>
          <li>See the <a href="http://dev.eclipse.org/viewcvs/indextech.cgi/%7Echeckout%7E/equinox-home/plans/m2.html">details</a> 
            page for more info.</li>
        </ul>
        <li><i>Remove Dependancy on Xerces (1 week)</i></li>
        <ul>
          <li>See the <a href="plan_xerces.html">details</a> page for more info.</li>
        </ul>
        <li><i>File Encoding (4 days) </i></li>
        <ul>
          <li>Gather requirements from community.</li>
          <li>Enhance RFC based on gathered information.</li>
        </ul>
        <li><i>User Settings (4 days) </i></li>
        <ul>
          <li>Participate in RFC discussions.</li>
          <li>Most likely there will be coding at the Core level, depending on 
            which solution is decided on.</li>
        </ul>
        <li><i>Session Tests (3 days)</i></li>
        <ul>
          <li>Modify the Core session tests to be included in the RelEng automated 
            tests.</li>
        </ul>
        <li><i>PDE-Build (4 days)</i></li>
        <ul>
          <li>Bug fixing.</li>
          <li>Helping RelEng with integration of the new builder code into the 
            build process.</li>
          <li>Releasing new PDE-Build into HEAD and the integration builds.</li>
        </ul>
        <li><i>Tools (3 days)</i></li>
        <ul>
          <li>Code review and (finally!) release the workspace restorer plug-in 
            to the web site.</li>
        </ul>
      </ul>
	  <p></p>
	</tr>
</table>
</body>
</html>