platform-core-home/documents/core_overview.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (view) (download) (as text)

1 : dj 1.1 <html><title>Eclipse Core Overview</title><body>
2 :     <h2 align="center">Eclipse Core Overview</h2>
3 :     <h2>Index</h2>
4 :     <ul>
5 :     <li><a href="#projects">Project Breakdown</a></li>
6 :     <li><a href="#builds">The Build</a></li>
7 :     <li><a href="#bugs">Bug Reports</a></li>
8 :     </ul>
9 :     <h2><a name="projects"></a>Project Breakdown</h2>
10 :     <h3>Runtime Framework</h3>
11 :     <blockquote>
12 :     <h4>Description</h4>
13 :     <blockquote>
14 :     <p>The new OSGi code.</p>
15 :     </blockquote>
16 :     <h4>Projects</h4>
17 :     <ul>
18 :     <li>org.eclipse.osgi</li>
19 :     <li>org.eclipse.osgi.services</li>
20 :     <li>org.eclipse.osgi.util</li>
21 :     </ul>
22 :     </blockquote>
23 :     <h3>Runtime</h3>
24 :     <blockquote>
25 :     <h4>Description</h4>
26 :     <blockquote>
27 :     <p>Code dealing with bootstrapping the system, the extension registry and
28 :     concurrency models, as well as utility classes.</p>
29 :     <p>The <code>org.eclipse.core.boot </code>project contains the bootstrap code
30 :     needed to get the platform up and running. It calls the EclipseStarter in
31 :     OSGi which starts the framework. It is currently being investigated as to
32 :     whether or not this code can be merged into the Main.java class and this
33 :     project be removed from the SDK.</p>
34 :     <p>The <code>org.eclipse.core.runtime </code>project contains the runtime
35 :     APIs. This includes the job manager, util classes (IPath, IProgressMonitor,
36 :     CoreException, etc), the new extension registry.</p>
37 :     <p>The <code>org.eclipse.core.runtime.compatibility </code>project exists
38 :     for backwards compatibility purposes only. It contains deprecated APIs.
39 :     (mostly dealing with the old plug-in registry)</p>
40 :     <p>The <code>Main.java </code>class in the <code>org.eclipse.platform </code>project
41 :     contains the code for the <code>startup.jar</code>. This code finds the
42 :     bootloader and allows Eclipse to start. This project also contains the files
43 :     which are found in the root of the Eclipse install.</p>
44 :     <p>The <code>platform-launcher </code>project contains the C code for the
45 :     Eclipse executable. It is owned by Platform/Core but was written and generously
46 :     maintained by Platform/SWT since they have more experience in writing C
47 :     code. The executable handles special return codes from the application indicating
48 :     whether to restart, print out a message saying that there is info in the
49 :     .log file, etc. </p>
50 :     <p>Note that there are problems running Eclipse with an IBM 1.4 JRE and plug-ins
51 :     having a requirement on the <code>org.apache.xerces</code> plug-in. Therefore,
52 :     there is currently a request into the Eclipse PMC to remove this plug-in
53 :     from the Eclipse SDK distribution. As an alternative, plug-in developers
54 :     are encouraged to code using the JAXP APIs available in the 1.4 JDK.</p>
55 :     </blockquote>
56 :     <h4>Projects</h4>
57 :     <ul>
58 :     <li>org.apache.xerces</li>
59 :     <li>org.eclipse.core.boot</li>
60 :     <li>org.eclipse.core.runtime</li>
61 :     <li>org.eclipse.core.runtime.compatibility</li>
62 :     <li>org.eclipse.core.tests.runtime</li>
63 :     <li>org.eclipse.platform</li>
64 :     <li>platform-launcher</li>
65 :     </ul>
66 :     </blockquote>
67 :     <h3>Resources</h3>
68 :     <blockquote>
69 :     <h4>Description</h4>
70 :     <blockquote>
71 :     <p>The workspace APIs which includes everthing dealing with workspaces, resources,
72 :     markers, properties, and local history.</p>
73 :     <p>Core Resources also contributes a library with filesystem calls. Although
74 :     not necessary for Eclipse to run, running with the appropriate resources
75 :     library will yield peformance enhancements as well as minor functionality
76 :     benefits. Currently the library is available for 5 different OSes (windows,
77 :     linux, hp-ux, macosx, and qnx) and it:</p>
78 :     <ul>
79 :     <li>bundles multiple OS calls into one function call</li>
80 :     <li>implements #setReadOnly (java.io.File#setReadOnly is a no-op)</li>
81 :     <li>improves timestamp granularity on some VMs</li>
82 :     </ul>
83 :     </blockquote>
84 :     <h4>Projects</h4>
85 :     <ul>
86 :     <li>org.eclipse.core.resources</li>
87 :     <li>org.eclipse.core.resources.linux</li>
88 :     <li>org.eclipse.core.resources.win32</li>
89 :     <li>org.eclipse.core.resources.hpux</li>
90 :     <li>org.eclipse.core.resources.macosx</li>
91 :     <li>org.eclipse.core.resources.qnx</li>
92 :     <li>org.eclipse.core.tests.resources</li>
93 :     <li>org.eclipse.core.tests.resources.saveparticipant</li>
94 :     <li>org.eclipse.core.tests.resources.saveparticipant1</li>
95 :     <li>org.eclipse.core.tests.resources.saveparticipant2</li>
96 :     <li>org.eclipse.core.tests.resources.saveparticipant3</li>
97 :     </ul>
98 :     </blockquote>
99 :     <h3>PDE-Build</h3>
100 :     <blockquote>
101 :     <h4>Description</h4>
102 :     <blockquote>
103 :     <p>Used to generate the build.xml Ant files for the builder.</p>
104 :     </blockquote>
105 :     <h4>Projects</h4>
106 :     <ul>
107 :     <li>org.eclipse.pde.build</li>
108 :     </ul>
109 :     </blockquote>
110 :     <h3 align="left">WebDAV</h3>
111 :     <blockquote>
112 :     <h4>Description</h4>
113 :     <blockquote>
114 :     <p>Provides WebDAV support and is available as a separate download on the
115 :     Eclipse/downloads web page. This used to be a part of the Eclipse SDK proper
116 :     but was removed a while ago. (after release 1.0?) Note that the WebDAV plug-in
117 :     has NO dependancy on the Eclipse Runtime.</p>
118 :     <p>Why does Core own this? For legacy reasons. In early releases of Eclipse
119 :     the VCM code was integrated tightly with Core and was done by the same team.
120 :     As Eclipse matured, the code was refactored and split apart.</p>
121 :     </blockquote>
122 :     <h4>Projects</h4>
123 :     <ul>
124 :     <li>org.eclipse.webdav</li>
125 :     </ul>
126 :     </blockquote>
127 :     <h3>Misc</h3>
128 :     <blockquote>
129 :     <h4>Description</h4>
130 :     <blockquote>
131 :     <p>The <code>org.eclipse.core.tests.harness</code> project contains helper
132 :     classes for the Core test suites. All Core test classes sub-class <code>EclipseWorkspaceTest</code>.</p>
133 :     </blockquote>
134 :     <h4>Projects</h4>
135 :     <ul>
136 :     <li>org.eclipse.core.tests.harness</li>
137 :     </ul>
138 :     </blockquote>
139 :     <h2><a name="builds"></a>The Build</h2>
140 :     <p>The builder needs a couple of pieces of information (version, repository, username,
141 :     password) in order to include the correct versions of projects in a build. This
142 :     information is put into what we call a <code>map</code> file. Look in the <code>maps/</code>
143 :     folder of the <code>org.eclipse.releng</code> project to see the map files that
144 :     the builder uses to create the Eclipse integration builds. Here are some sample
145 :     lines from this file: </p>
146 :     <blockquote>
147 :     <p><code>plugin@org.eclipse.core.resources=v20031201,:pserver:anonymous@dev.eclipse.org:/home/eclipse<br>
148 :     fragment@org.eclipse.core.resources.win32=v20031111,:pserver:anonymous@dev.eclipse.org:/home/eclipse,</code></p>
149 :     </blockquote>
150 :     <h3>Project Tag Naming Conventions</h3>
151 :     <p>Customary naming convention is the date. (e.g. <code>v20031129</code> for a
152 :     build on November 29, 2003) If there is a second (or third, etc) build on the
153 :     same day, then we just append a letter to the end of the previous tag. (e.g.
154 :     <code>v20031129a</code>)</p>
155 :     <p>For maintenance builds we use an indicator for the build, along with the date.
156 :     (e.g. <code>r21x_v20031124</code> for a maintenance build for Eclipse 2.1.1,
157 :     2.1.2, etc on November 24, 2003)</p>
158 :     <h3>Process</h3>
159 :     <ul>
160 :     <li>test and release code changes</li>
161 :     <li>version project in repository</li>
162 :     <li>change line in map file to match project version</li>
163 :     <li>release change to map file to HEAD</li>
164 :     <li>the builder will automatically version the map file before beginning the
165 :     integration build</li>
166 :     </ul>
167 :     <h3>Build Tool</h3>
168 :     <p>The Release Engineering team has a build tool available on <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-releng-home/main.html">their
169 :     web page</a> and it will help you with the above process. The tool adds a <code>Team
170 :     -&gt; Release</code> item to the context menu for projects. It tags the project
171 :     and updates the line in the map file for you. Note that you still have to manually
172 :     commit the changes to the map file to the repository yourself but the tool will
173 :     bring up the <code>Sychronize</code> view for you.</p>
174 :     <h3>Build Schedule</h3>
175 :     <p>The build schedule found on the <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-releng-home/main.html">Release
176 :     Engineering</a> team page on <a href="http://eclipse.org">Eclipse.org</a>.</p>
177 :     <h2><a name="bugs"></a>Bug Reports</h2>
178 :     <h3>Bug Lifecycle</h3>
179 :     <blockquote>
180 :     <p>For illustrated purposes I will use Platform/Core as an example.</p>
181 :     <table width="87%" border="1">
182 :     <tr>
183 :     <td width="22%"><div align="center"><strong>Owner</strong></div></td>
184 :     <td width="23%"><div align="center"><strong>Status</strong></div></td>
185 :     <td width="55%"><div align="center"><strong>Note</strong></div></td>
186 :     </tr>
187 :     <tr>
188 :     <td>platform-core-inbox</td>
189 :     <td>NEW</td>
190 :     <td>Bug is entered by user.</td>
191 :     </tr>
192 :     <tr>
193 :     <td>platform-core-inbox</td>
194 :     <td>ASSIGNED</td>
195 :     <td>More information is gathered (build id, steps to reproduce) and it is
196 :     determined that the bug report is real. This state is referred to as &quot;Open
197 :     Bugs&quot; and can best be described as bugs which are real but no one
198 :     is currently working on.</td>
199 :     </tr>
200 :     <tr>
201 :     <td>team member</td>
202 :     <td>NEW/ASSIGNED</td>
203 :     <td>Bug is assigned to team member to address or the team member takes an
204 :     &quot;Open&quot; bug and assigns it to themselves.</td>
205 :     </tr>
206 :     <tr>
207 :     <td>team member</td>
208 :     <td>RESOLVED/FIXED</td>
209 :     <td>Bug is fixed. Target milestone is added to report if none already exists.</td>
210 :     </tr>
211 :     </table>
212 :     <p>&nbsp;</p>
213 :     </blockquote>
214 :     <h3>Component Breakdown</h3>
215 :     <blockquote>
216 :     <table width="86%" border="1">
217 :     <tr>
218 :     <td width="15%"><div align="center"><strong>Product</strong></div></td>
219 :     <td width="21%"><div align="center"><strong>Component</strong></div></td>
220 :     <td width="64%"><div align="center"><strong>Note</strong></div></td>
221 :     </tr>
222 :     <tr>
223 :     <td>Equinox</td>
224 :     <td>General</td>
225 :     <td>Bugs reports against the new runtime and the OSGi projects.</td>
226 :     </tr>
227 :     <tr>
228 :     <td>Platform</td>
229 :     <td>Core</td>
230 :     <td>Bugs against the old runtime APIs (JobManager, IPath, etc) and the Workspace
231 :     APIs.</td>
232 :     </tr>
233 :     <tr>
234 :     <td>Platform</td>
235 :     <td>WebDAV</td>
236 :     <td>Bug reports against the <code>org.eclipse.webdav </code>project.</td>
237 :     </tr>
238 :     <tr>
239 :     <td>PDE</td>
240 :     <td>Build</td>
241 :     <td>Bug reports against the <code>org.eclipse.pde.build </code>project.</td>
242 :     </tr>
243 :     </table>
244 :     </blockquote>
245 :     <p>&nbsp;</p></body></html>