<!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>
<center>
	<font class=indextop>core</font><br>
	<font class=indexsub>the foundation of the platform</font><p></p>
	
  <a href="../../main.html">[home]</a> <a href="../../documents.html">[documents]</a> 
  <a href="../../downloads.html">[downloads]</a> <a href="../../resources.html">[resources]</a> 
  <a href="../../planning.html">[planning]</a> <a href="../../testing.html">[testing]</a> 
</center>
<br>
<table BORDER=0 CELLPADDING=2 WIDTH="100%" >
  <tr> 
    <td ALIGN=LEFT VALIGN=TOP COLSPAN="2" BGCOLOR="#0080C0"><b><font face="Arial,Helvetica" color="#FFFFFF">Planning</font></b></td>
  </tr>
  <tr>
    <td ALIGN=RIGHT VALIGN=TOP><img SRC="../../images/Adarrow.gif" BORDER=0 height=16 width=16></td>
    <td><b>3.1 Milestone 7 - May 13, 2005</b> <ul>
        <li><strong>Performance Dynamic Team</strong> 
          <ul>
            <li>Performance is THE top item which is going to be addressed for 
              M7 by the Eclipse team as a whole. Tod and John have already been 
              working together and identifying some performance problems and during 
              this milestone more people are going to be added to the team.</li>
            <li>Look at the posts about String#substring from the eclipse mailing 
              lists and ensure that we are doing the right thing.</li>
          </ul>
        </li>
        <li><strong>Performance Tests</strong> 
          <ul>
            <li>We need to identify more fingerprint tests for the Core component.</li>
            <li>Should create some performance tests for OSGi class loading.</li>
            <li>Test Eclipse start-up on a non-empty workspace.</li>
          </ul>
        </li>
        <li><strong>Running from JARs </strong> (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=86236">85065</a>) 
          <ul>
            <li>All plug-ins included in the RCP SDK are being shipped as JARs 
              (in all dev drops...Platform, JDT, etc) for M6.</li>
            <li>Will convert more plug-ins for M7.</li>
            <li>Need to get more performance numbers. Will fully JAR up the M6 
              build and run the performance tests on the performance machine to 
              compare against the M6 regular drop.</li>
          </ul>
        </li>
        <li><strong>Content Type</strong> 
          <ul>
            <li>(bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=69640">69640</a>) 
              Finish implementation of nature -&gt; content type association.</li>
            <li>(bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=87447">87447</a>) 
              Project specific content type settings.</li>
          </ul>
        </li>
        <li><strong>Shipping Manifest Files</strong> (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=83634">83634</a>) 
          <ul>
            <li>Continued from 3.1 M6.</li>
            <li> If a plug-in defines a legacy plug-in manifest rather than a 
              bundle manifest, then on start-up we take a hit because we have 
              to run through all the plug-in manifests and generate the corresponding 
              bundle manifest file.</li>
            <li> For 3.1, we would like to ship bundle manifest files for all 
              plug-ins in the SDK.</li>
            <li> Mostly this is an education item: educate the other teams and 
              help them do what they need to do.</li>
          </ul>
        </li>
        <li><strong>PDE-Build</strong></li>
        <ul>
          <li>On plug-in export, the scripts are being executed in the workspace 
            VM and we would like to move this to be in a separate VM. We will 
            work with the Ant team to make this happen. Also need involvment from 
            PDE/UI team.</li>
          <li>PDE/UI has a model of the target platform and currently PDE/Build 
            makes their own model. We want to investigate sharing of these models.</li>
          <li>Cross platform export of RCP product - e.g. we would like to be 
            able to export a Linux drop from a Windows machine.</li>
        </ul>
        <li><strong>Extension Registry</strong></li>
        <ul>
          <li>(bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=89983">89983</a>) 
            Investigate performance of non lazy loading of the registry. (e.g. 
            when the registry is always in memory) This might be useful for small 
            applications.</li>
          <li>(bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=89986">89986</a>) 
            Investigate performance of the registry when it is located on a network 
            drive.</li>
          <li>(bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=89984">89984</a>) 
            Compare performance numbers of having the registry always in memory 
            versus having parts flushed out to disk, Explore the idea of switching 
            lazy on or off depending on the number of plug-ins.</li>
        </ul>
        <li><strong>OSGi</strong></li>
        <ul>
          <li>(bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=89988">89988</a>) 
            Investigate performance of the OSGi state when it is located on a 
            network drive.</li>
          <li>(bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=84066">84066</a>) 
            Investigate automatic closure of JAR files based on time-outs, etc.</li>
          <li>Investigate buddy class-loading.</li>
        </ul>
        <li><strong>Documentation</strong></li>
        <ul>
          <li>Write a document describing how to setup eclipse install (in shared 
            install, non local dirive, etc).</li>
          <li>General documentation.</li>
        </ul>
        <li><strong>Bug Sorting</strong> - We are getting close to the release 
          of 3.1 so we need to sort through our bug reports to... 
          <ul>
            <li>...make sure we aren't missing important ones.</li>
            <li>...ensure the milestones are set correctly.</li>
            <li>...move all enhancements that we are going to defer so they don't 
              interfere with new bugs coming in.</li>
          </ul>
        </li>
      </ul>
      <p>&nbsp;</p></td>
  </tr>
  <tr>
    <td ALIGN=RIGHT VALIGN=TOP><img SRC="../../images/Adarrow.gif" BORDER=0 height=16 width=16></td>
    <td><b>3.1 Milestone 6 - April 1, 2005</b> 
      <ul>
        <li><strong>Enhancing the createExecutableExtension mechanism</strong> <em>[pascal + jeff]</em> 
          <ul>
            <li>[<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=86236">bug 
              86236</a>] The way executable extensions are created is limited (instantiate 
              the class using the default constructor). However lately several scenarios 
              demonstrated that this limitation needed to be alleviated. We need to come 
              up with a solution that will make the executable extension pluggable. 
			</li>
		  </ul>
		</li>
        <li><strong>Running from JARs</strong> <em>[dj + pascal + jeff]</em> 
          <ul>
            <li>[<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=85065">bug 
              85065</a>] We are working towards being able to run an Eclipse with 
              each plug-in being in a single JAR file rather than a directory 
              containing multiple files and JARs. We are currently identifying 
              the list of issues which are preventing us from running and self-hosting 
              with this setup. Some of the items remaining to address are: 
              <ul>
                <li> source association between the JARs and the source plug-ins</li>
                <li> debugging, setting breakpoints and stepping into JAR'd plug-ins</li>
                <li> dealing with plug-ins who define ant tasks</li>
                <li> building JAR'd Eclipses (PDE/Build)</li>
              </ul>
            </li>
            <li>Note that running from JARs works correctly, most of the remaining 
              issues are related to normal everyday development with a JAR'd Eclipse 
              as your Target Platform.</li>
          </ul>
        </li>
        <li> <strong>Shipping manifest files</strong> 
          <ul>
            <li> If a plug-in defines a legacy plug-in manifest rather than a 
              bundle manifest, then on start-up we take a hit because we have 
              to run through all the plug-in manifests and generate the corresponding 
              bundle manifest file.</li>
            <li>For 3.1, we would like to ship bundle manifest files for all plug-ins 
              in the SDK.</li>
            <li>Mostly this is an education item: educate the other teams and 
              help them do what they need to do.</li>
          </ul>
        </li>
        <li> <strong>Performance Dynamic Team</strong> <em>[john]</em> 
          <ul>
            <li> Instrumentation is now in the Core.</li>
            <li> Have ui views which (when running in dev mode) let people know 
              if certain operations are taking too long.</li>
            <li> Investigation of using aspects.</li>
          </ul>
        </li>
        <li> <strong>NLS and message bundles</strong> <em>[john + dj]</em> 
          <ul>
            <li> <a href="../../documents/3.1/message_bundles.html">Message bundle 
              story</a> is now defined and base code is released to Core.</li>
            <li>We need to educate other teams on what to do. (how to convert, 
              how to maintain)</li>
            <li>JDT/UI is working on hooking tooling into current NLS tooling 
              story.</li>
            <li>Basic conversion tool is created. Would like to add hooks to search 
              for non-referenced keys when converting.</li>
          </ul>
        </li>
        <li> <strong>Content Type</strong> <em>[rafael] </em> 
          <ul>
            <li> Most Core work is done. Rest of work is education and working 
              with other teams to get them to take advantage of the features.</li>
            <li> Still working on project specific content type resolution.</li>
          </ul>
        </li>
        <li> <strong>EclipseCon</strong> <em>[john + pascal + jeff]</em> 
          <ul>
            <li>The conference has arrived and the Core team is sending 3 members 
              as representatives.</li>
          </ul>
        </li>
        <li> <strong>Classloading</strong> <em>[pascal + jeff] </em> 
          <ul>
            <li> There are situations arising where other teams (RMI, Hibernate, 
              etc) are having classloader problems. We need to investigate what 
              we can do to help them out. </li>
            <li> Level of help can be anything from hooks in code to coding patterns 
              or something else.</li>
          </ul>
        </li>
        <li> <strong>Configurations</strong> <em>[rafael] </em> 
          <ul>
            <li> Investigation into pre-configured installs.</li>
          </ul>
        </li>
        <li> <strong>Communication</strong> <em>[all]</em> 
          <ul>
            <li>We want to make a concerted effort to have more discussions on 
              the platform-core mailing list. </li>
            <li>This will make other teams aware of the on-goings of the Core 
              team. (since we don't have fancy UI features to appear in the New 
              &amp; Noteworthy for each milestone :-)</li>
          </ul>
        </li>
        <li> <strong>Mark-up for Dynamic Plug-ins </strong> 
          <ul>
            <li>Need to assist the Update team in determining when installed plug-ins 
              are dynamic.<br>
            </li>
          </ul>
        </li>
      </ul>
      <p>&nbsp;</p></td>
		</tr>
		
    <td ALIGN=RIGHT VALIGN=TOP><img SRC="../../images/Adarrow.gif" BORDER=0 height=16 width=16></td>
    <td><b>3.1 Milestone 5 - February 18, 2005</b>
	<ul>
		<li><b>History Store</b> 
			<ul>
			<li>Refactor the new HistoryStore code to share common code base with persistent properties. </li>
			</ul>
		</li>
		
		<li><b>Property Store</b>
			<ul>
			<li>Use the refactored HistoryStore buckets for storing the persistent properties.</li>
			<li>By using this mechanism for the persistent properties we hope to remove our last dependancy on the IndexedStore
			implementation.</li>
			</ul>
		</li>
		
		<li><b>Content type</b>
			<ul>
			<li>Evaluate remaining content type work.</li>
			<li>Bug fixing.</li>
			<li>Work with clients to enable their use of our APIs.</li>
			</ul>
		</li>
		
		<li><b>Preferences dynamic team</b>
			<ul>
			<li>Check out the 
			<a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-ui-home/R3_1/dynamic_teams/dynamic_teams.html#preferences">dynamic team</a>
			web page.
			</li>
			</ul>
		</li>
		
		<li><b>Message bundles</b>
			<ul>
			<li>Work on a new implementation that shows a performance gain in both speed and memory usage.</li>
			<li>Try to provide a good compromise on readability and performance benefits.</li>
			<li>Talk to the JDT/UI team to discuss tooling. </li>
			<li>How much work would it be to integrate new system with current tooling?</li>
			</ul>
		</li>
		
		<li><b>Dynamic bundle support</b>
			<ul>
			<li>Work with UI team on initial APIs for dynamic bundle support.</li>
			<li>Make the runtime and resources plug-ins react to dynamic changes. (builders, prefs, etc)</li>
			</ul>
		</li>
		
		<li><b>Equinox</b>
			<ul>
			<li>Integration of Equinox stream into Eclipse code base.</li>
			<li>Code has OSGi changes bringing it up to r4.0 of the OSGi spec.</li>
			</ul>
		</li>
		
		<li><b>EclipseCon</b>
			<ul>
			<li>Preparations for talks, presentations, and tutorials.</li>
			</ul>
		</li>
		
		<li><b>Bugzilla</b>
			<ul>
			<li>Continued effort to fix bugs, mark bugs as WONTFIX if we aren't going to fix them, or as HELPWANTED
			if we want to fix them but don't have the time or resources to do so.</li>
			</ul>
		</li>

        <li><b>Planning</b>
			<ul>
			<li>Milestone and release planning.</li>
			</ul>
		</li>
		
     </ul>
    <p>&nbsp;</p>
	</td>
  <tr>
  </tr>
  <tr>
    <td ALIGN=RIGHT VALIGN=TOP><img SRC="../../images/Adarrow.gif" BORDER=0 height=16 width=16></td>
    <td><p><strong>3.1 Milestone 4 - December 17, 2004</strong></p>
      <ol>
		  <li><b>Content Type Dynamic Team</b> (Rafael)</li>
			  <ul>
				  <li><em>Summary:</em> In 3.0 we added support at the Core level and now we need to work with other teams
				  and help them use this new functionality.</li>
				  <li><em>Milestone 4:</em> TBD. Need to coordinate with UI team to see when they have cycles to work on this.</li>
			  </ul>
		<li><b>Preferences Dynamic Team</b> (DJ)</li>
			<ul>
				<li><em>Summary:</em> Check out the 
				<a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-ui-home/R3_1/dynamic_teams/dynamic_teams.html">Dynamic 
				Team page</a> for more detailed information.</li>
				<li><em>Milestone 4:</em> MVM and DJ to review "Core APIs vs. User Actions"</li>
			</ul>
		<li><b>Registry Structure</b> (Pascal)</li>
			<ul>
				<li><em>Summary:</em> Another representation of the registry has been written and it has a few
				performance improvements in both the time and space aspects.</li>
				<li><em>Milestone 4:</em> Mcq and Pascal will do a code review Nov 9 and we will evaluate the forward 
				direction at following team meeting. This code needs to be released in first 2 weeks 
				of M4 or we need to decide that the benefit is not good enough and we will move on.</li>
			</ul>
		<li><b>Large Scale Workspaces</b> (John)</li>
			<ul>
				<li><em>Summary:</em> We have been investigating things which will help make life easier for developers 
				who are working with large workspaces. (e.g. in excess of 75,000 resources)</li>
				<li><em>Milestone 4:</em></li>
					<ul>
						<li><a href="../../documents/3.1/large_scale_issues.html">Overview</a> of issues collected from community</li>
						<li>New code for <a href="../../documents/3.1/background_refresh.html">background populating new projects<a/> created in existing locations will
						be released first week of M4. We need to determine if this code has an effect on 
						ClearCase users. (should be positive effect)</li>
						<li>Investigate issues with CDT and builders - not all builders are incremental 
						which means builds aren't trival. (e.g. bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=74200">74200</a>)</li>
						<li>Scalability (e.g. review slots on ResourceInfo class)</li>
						<li>Deletion performance</li>
							<ul>
								<li>There is no recursive delete function in java.</li>
								<li>investigate writing a native (Mcq?)</li>
								<li>Note: how will this effect our best-effort delete strategy?</li>
							</ul>
					</ul>
				<li><em>Ongoing:</em></li>
					<ul>
						<li>Pascal and Wassim working together in an effort to define named targets.</li>
						<li>Need to spec config files: replace map files + project sets? (Mcq)</li>
					</ul>
			</ul>
		<li><b>RCP/eRCP</b></li>
			<ul>
				<li><em>Summary:</em> </li>
				<li><em>Milestone 4:</em> Investigation into dynamic plugin support and object tracking.</li>
			</ul>
		<li><b>IndexedStore work</b> (Rafael)</li>
			<ul>
				<li><em>Summary:</em> We are looking at replacing the underlying mechanism of the history and property stores. We have used
				a B-tree implementation but we believe the implemention is more complex than we need. The stores are
				separated into 2 parts: the index store and the blob store. The index store maps paths to UUIDs the
				the blob store maps UUIDs to blobs. It is the index store part of the mechanism which we are looking
				at replacing. We have an initial implementation which tries to use the file system to help with the
				mapping.</li>
				<li><em>Milestone 4:</em> Performance work. Migration/Backwards compatibility story. (potentially a lot of work here)
				Investigate garbage collection in background operation.
				Investigate snapshots (time permitting) (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=36958">bug 36958</a>)</li>
			</ul>
		<li><b>PDE/Build</b> (Pascal)</li>
			<ul>
				<li><em>Summary:</em> The original purpose for PDE/Build was to be able to build Eclipse from Ant tasks but lately there have 
				been bug reports about PDE/Build not being workspace-aware. (e.g. linked resources, classpath,
				compiler options) This would require a lot of work (essentially a complete re-write) so before do anything
				we need to construct a list of problems that we are seeing and come up with a risk vs benefit
				analysis. Also we should investigate if there is a subset of issues we can fix with minimal work.</li>
				<li><em>Milestone 4:</em> Identify list of problems. Identify issue subset.</li>
			</ul>
		<li><b>Resource Bundles</b></li>
			<ul>
				<li><em>Summary:</em> The size of resource bundles and bundle keys has always been a concern and performance issue. We need
				to investigate strategies for making improvements in this area. We need to talk to other teams (JDT/UI?)
				about the tooling. Also this is of importance to the performance team, perhaps we can get help/ideas from them?</li>
				<li><em>Milestone 4:</em> TBD (talk to Erich to see where this is on his radar)</li>
			</ul>
		<li><b>Managing Bugzilla</b> (all)</li>
			<ul>
				<li><em>Summary:</em> Our bug counts are ever-growing so we are going to make an effort to reduce the number of
				open bugs in our components. We need to be agressive with reports. There are a couple of categories which make up a lot
				of bugs: enhancements which we don't plan on implementing and bug reports which we can't reproduce.
				If we don't plan on implementing a feature, then we should close the bug and use the "helpwanted"
				keyword. If we can't replicate a bug and its been open for longer than 6 months, we should close it.</li>
			</ul>
		<li><b>Test Suites</b> (all)</li>
			<ul>
				<li><em>Summary:</em> We have a lot of performance tests in the Resources project which should
				be converted over to use the new framework.</li>
				<li><em>Milestone 4:</em> Convert existing performance tests to use new framework.</li>
			</ul>
      </ol>
      <p>&nbsp;</p></td>
  </tr>
  <tr>
    <td ALIGN=RIGHT VALIGN=TOP><img SRC="../../images/Adarrow.gif" BORDER=0 height=16 width=16></td>
    <td><p><strong>3.1 Milestone 3 - November 5, 2004</strong></p>
      <ul>
        <li>IPath Issues (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=24152">24152</a>) 
          <ul>
            <li>There are issues when specifying a slash or colon as part of a 
              filename or having filenames with leading or trailing whitespace. 
            </li>
          </ul>
        </li>
        <li>File attributes (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=26100">26100</a>) 
          <ul>
            <li>Specifying file atttributes on IResources. (executable bit, etc)</li>
          </ul>
        </li>
        <li>User Settings (bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=71124">71124</a>) 
          <ul>
            <li>Dynamic team should be set up between Core, UI, and JDT UI groups.</li>
            <li>Summarize current situation.</li>
            <li>Identify work which we want to accomplish.</li>
          </ul>
        </li>
      </ul>
      <p>&nbsp;</p></td>
  </tr>
  <tr> 
    <td ALIGN=RIGHT VALIGN=TOP WIDTH="2%"><img SRC="../../images/Adarrow.gif" BORDER=0 height=16 width=16></td>
    <td><b>3.1 Milestone 2 - September 24, 2004</b> <ul>
        <li>Fix external tool builder story (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=21029">bug 
          21029</a>)</li>
        <li>Implementation of new content type APIs. Fix and release in 3.0.1 
          maintenance branch and merge into HEAD. (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=67884">bug 
          67884</a>)</li>
        <li>At the Resources level, react to the content type changes and reflect 
          them in resource deltas. Also do the implementation of new file encoding 
          APIs. Fix and release in 3.0.1 maintenance branch and merge into HEAD. 
          (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=59899">bug 59899</a>)</li>
        <li>Investigation of problems with large-scale development. This includes 
          start-up time, build time, random build manager issues, build progress 
          issues, etc.</li>
        <li>Performance work using large-scale applications as test data.</li>
        <li>Work on the test suites for session tests -&gt; adapt to work with 
          the test harness and be run as a part of the automated builds.</li>
        <li>Planning.</li>
      </ul></td>
  </tr>
</table>


</body>
</html>