<?xml version="1.0" encoding="UTF-8"?>
<faq xmlns="http://www.eclipse.org/webtools/faq" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://www.eclipse.org/webtools/faq schemas/faq.xsd"
         name="wtp committer faq">
  <category name="General"/>
  <category name="Build/CVS"/>
  <category name="Source Code"/>
  <category name="Website"/>
  <entry id="cvs_1" category="Build/CVS">
    <question>What is the CVS info for the webtools project?</question>
	<answer>
		server : dev.eclipse.org<br/>
		path : /cvsroot/webtools
	</answer>
  </entry>
  <entry id="website_1" category="Website">
    <question>Who maintains the WTP website?</question>
    <answer>
	  The WTP website is maintained by the WTP committers.<br/>
      <br/>
      Problems and requests should be submitted by opening a <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Web%20Tools&amp;component=website">bug report</a>.
    </answer>
  </entry>
  <entry id="website_2" category="Website">
    <question>How do I update the WTP website?</question>
    <answer>
    	<p>
	  		There are two ways:
	  		<ol>
	  			<li>
	  				Extract the whole website (www/webtools), make your changes, and run 
	  				the website build script (build.xml) in the webtools folder. This will
	  				build the whole site and is useful if you need to make changes in more than
	  				one module (see below). The downside is the website is big and can take
	  				a while to extract.
	  			</li>
	  			<li>
	  				The website is broken up into self contained modules such as community, faq, people, 
	  				and plans. Extract the module you want to make changes to (such as www/webtools/plans), make your changes,
	  				run the build script (build.xml) included in the module, and commit your changes.
	  			</li>
	  		</ol>
	  	</p>
    </answer>
  </entry>
  <entry id="website_3" category="Website">
    <question>What is the CVS info for the webtools website?</question>
    <answer>
	  The WTP website is located in the cvs root for the Eclipse website in 
	  the www/webtools folder.<br /><br />
	  server : dev.eclipse.org<br/>
	  path : /cvsroot/org.eclipse
    </answer>
  </entry>
  <entry id="general_1" category="General">
    <question>Who do we contact in order to get commiter passwords reset?</question>
    <answer>
      You need to contact the Eclipse webmaster at <a href="mailto:webmaster@eclipse.org">webmaster@eclipse.org</a>.
    </answer>
  </entry>
  <entry id="general_2" category="General">
    <question>How do I change my dev.eclipse.org password?</question>
    <answer>
	  You can change your password using the committer tools available at <a href="https://dev.eclipse.org/committers/">https://dev.eclipse.org/committers/</a>.
    </answer>
  </entry>
  <entry id="source_1" category="Source Code">
    <question>What copyrights should we use? </question>
    <answer>
	  <p>The copyright statement takes one of these two forms, differing only in the year stated on the first line of text.<br/>
      IBM copyrights below are examples only and won't apply to everyone in the community.</p>
	  <ul>
		<li>If the file's year of invention and last year of modification are the same.<br/>
		  Example:<br/>
		  /*******************************************************************************<br/>
		  * Copyright (c) 2005 IBM Corporation and others.<br/>
		  * All rights reserved. This program and the accompanying materials<br/>
		  * are made available under the terms of the Eclipse Public License v1.0<br/>
		  * which accompanies this distribution, and is available at<br/>
		  * http://www.eclipse.org/legal/epl-v10.html<br/>
		  *<br/>
		  * Contributors:<br/>
		  * IBM Corporation - initial API and implementation<br/>
		  *******************************************************************************/
        </li>
		<li>If the file's year of invention and last year of modification are
		  different...<br/>
		  Example:<br/>
		  /*******************************************************************************<br/>
		  * Copyright (c) 2001,2005 IBM Corporation and others.<br/>
		  * All rights reserved. This program and the accompanying materials<br/>
		  * are made available under the terms of the Eclipse Public License v1.0<br/>
		  * which accompanies this distribution, and is available at<br/>
	      * http://www.eclipse.org/legal/epl-v10.html<br/>
		  * <br/>
		  * Contributors:<br/>
		  * IBM Corporation - initial API and implementation<br/>
		  *******************************************************************************/
        </li>
      </ul>
    </answer>
  </entry>
  <entry id="source_2" category="Source Code">
    <question>Is there a tool to update the copyright?</question>
    <answer> 
      <B>org.eclipse.releng.tools </B>plugin from
      <a href="http://www.eclipse.org/downloads/index.php">Eclipse download site</a> 
      allows you to fix copyrights.
    </answer>
  </entry>
  <entry id="source_3" category="Source Code">
    <question>What are the package naming conventions?</question> 
    <answer>
      See the <a href="../development/guidelines/naming-conventions.html">WTP project naming
	  conventions</a>
    </answer>
  </entry>
  <entry id="cvs_2" category="Build/CVS">
    <question>How do I add my plugin to the WTP CVS repository?</question>
    <answer>
	  <ol>
        <li>On  your plugin project select <B>Team-&gt;Share Project...</B> context menu.</li>
	    <li>Choose existing repository location (or create a new one if you haven't) for 
          <B>dev.eclipse.org:/home/webtools</B>
        </li>
	    <li>On the next page, if you know exactly where the plugin should be located in the 
          repository, then select the &quot;Use specified module name&quot; radio button and 
          type in the full path.  However, to be safe,  it's recommended browsing the repository 
          to obtain the correct path, and then adding the module name.  Here is an example:<br/>
	      <br/>
	      Select the &quot;Use an existing module&quot;.<br/>
	      Browse and then select the folder where you want your new plugin to reside.<br/>
          <br/>
	      <img border="0" src="images/shareProject1.gif" width="485" height="602"/><br/>
	      <br/>
          Notice that the text field is filled in with the path. Reselect the &quot;Use 
          specified module name:&quot; radio button, and append your plugin's name.<br/>
	      <br/>
	      <img border="0" src="images/shareProject2.gif" width="486" height="602"/>
        </li>
      </ol>
    </answer>
  </entry>
  <entry id="cvs_3" category="Build/CVS">
    <question>Where can I find more information about CVS?</question>
    <answer>
		The <a href="http://dev.eclipse.org/viewcvs/index.cgi/?cvsroot=WebTools_Project">WTP 
		CVS respository page</a> contains links to useful CVS documentation including how to
		use Eclipse with CVS.
    </answer>
  </entry>
  <entry id="cvs_4" category="Build/CVS">
    <question>Is there a tool for releasing changes?</question>
    <answer>
		Yes. The releng tool plugin is available from the <a href="http://www.eclipse.org/downloads" target="_top">Eclipse download page</a>. Each version
		of Eclipse contains its own releng tool plugin. Select the version of Eclipse you're
		using. The releng tool plugin is found at the bottom of the page.
    </answer>
  </entry>
  <entry id="cvs_5" category="Build/CVS">
    <question>How do I release my changes?</question>
    <answer>
		<ol>
			<li>
				Commit your changes to the CVS repository. (For information about
				CVS and committing see the FAQ entry <a href="#cvs_3">Where can I find more information about CVS?</a>)
			</li>
			<li>
				Extract the releng project from the CVS repository. This project contains the
				map files.
			</li>
			<li>
				<b>
					*note: It is strongly recommended that you use the releng tool to release 
					your changes. 
				</b>
				<p>
					You now have to tag your source files and update the corresponding map entries.
					Although you can do this manually it is much easier and less error prone to use
					the releng tool. (See FAQ entry <a href="#cvs_4">Is there a tool for releasing
					changes?</a>)
				</p>
				<ol>
					<li>
						Select the plug-in you want to release, right click on it and select Team->Release as shown below.<br /><br />
						<img src="images/releasemenu.gif"/>
					</li>
					<li>
						Select the releng project as the map project. Click Next. 
					</li>
					<li>
						If not already selected, select the plug-ins you want to release. Click Next.
					</li>
					<li>
						The page displays the changes between the last released version of the plug-in
						and what is in HEAD. Review the changes. If everything is correct, click Next.
					</li>
					<li>
						Enter the tag you want to use to release the changes. WTP uses tags of the form
						vYYYYMMDD_HHMM. Click Next.
					</li>
					<li>
						The page displays the changes to the map files. Review the changes. If everything
						is correct, click Next.
					</li>
					<li>
						Enter a comment for the release operation and click Finish.
					</li>
				</ol>
			</li>
		</ol>
    </answer>
  </entry>
  <entry id="cvs_6" category="Build/CVS">
    <question>What do I need to do before releasing changes?</question>
    <answer>
    	<p>
			It depends. If you're releasing an isolated fix, you're probably safe to run the 
			JUnit tests for the plugin and, if all pass, release your fix. If you're making
			a breaking provisional API change (remember, you cannot make breaking API changes)
			you should announce the change to the WTP dev list advising
			what has changed, why, and how existing consumers of the provisional API can 
			adapt their plugins to the change.
		</p>
		<p>
			It is also good practice to use a current WTP development driver when making
			changes so as not to cause a break in your plugin due to changes in other
			plugins.
		</p>
    </answer>
  </entry>
  <entry id="cvs_7" category="Build/CVS">
    <question>How do I add a new plugin to WTP?</question>
    <answer>
    	<p>
    		<b>Follow this proceduce closely. Mistakes will likely cause a build breakage.</b><br/>
    		There are three tasks to add a new plugin to WTP:
    		<ol>
    			<li>
    				Commit your new plug-in to the CVS repository. See <a href="#cvs_2">How do I add my plugin to the WTP CVS repository?</a>
    			</li>
    			<li>
    				<p>
    					Add your plugin to the appropriate feature. Features are located under the
    					subproject's assembly component. For example, for WST you can find features
    					at wst/components/assembly/features.
    				</p>
    				<p>
    					A feature entry will look like the following:<br />
    					<br />
    					&lt;plugin<br />
         				&#160;&#160;&#160;&#160;id="org.eclipse.wst.common.uriresolver"<br />
         				&#160;&#160;&#160;&#160;download-size="0"<br />
         				&#160;&#160;&#160;&#160;install-size="0"<br />
         				&#160;&#160;&#160;&#160;version="0.0.0"/&gt;<br />
         			</p>
         			<p>
         				After you've added your plugin to the feature, commit the changes
         				and release the feature.
         			</p>
    			</li>
    			<li>
    				Add your plugin to the appropriate map file. Map files are located in the
    				releng component. A map file entry will look like the following:<br />
    				<br/>
    				plugin@org.eclipse.wst=v20050718_2336,:pserver:anonymous@dev.eclipse.org:/home/webtools,,wst/components/assembly/plugins/org.eclipse.wst<br />
    				<br />
    				After updating the map file commit it to the repository.
    			</li>
    			<li>
    				<p>
    					Your plugin is now in the repository, included in a feature, and included
    					in a map. Now release your plugin.
    				</p>
    			</li>
    		</ol>
    	</p>
    </answer>
  </entry>
  <entry id="cvs_8" category="Build/CVS">
    <question>How do I jar my plug-in?</question>
    <answer>
    	<p>
			First of all, jarring is not an option for every plug-in. If your plugin contains
			multiple jars you can't jar your plug-in. 
		</p>
		<p>
			There are a three steps to jarring your plugin:
			<ol>
				<li>
					Update your plug-in's build.properties file to include the source.. and
					output.. keys as well as "." for bin.includes and src.includes as follows:<br />
					<br />
					source.. = src/<br />
					output.. = bin/<br />
					bin.includes = plugin.xml,\<br />
               		&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;META-INF/,\<br />
               		&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.,\<br />
               		&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;plugin.properties,\<br />
               		&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;about.html<br />
					src.includes = exsd/,\<br />
               		&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.,\<br />
               		&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;build.properties<br />
				</li>
				<li>
					Update your plug-in's manifest (MANIFEST.MF) by removing the line beginning with "Bundle-ClassPath".
				</li>
				<li>
					Update the feature entry for your plugin to include the unpack=false attribute.<br />
					<br />
					&lt;plugin<br />
         			&#160;&#160;&#160;&#160;id="org.eclipse.wst.common.uriresolver"<br />
         			&#160;&#160;&#160;&#160;download-size="0"<br />
         			&#160;&#160;&#160;&#160;install-size="0"<br />
         			&#160;&#160;&#160;&#160;version="0.0.0"<br />
         			&#160;&#160;&#160;&#160;unpack="false"/&gt;
				</li>
			</ol>
		</p>
    </answer>
  </entry>
  <entry id="source_4" category="Source Code">
    <question>What comment should I use when declaring public provisional API?</question>
    <answer>
    	<p>
    		The following comment should be placed in each provisional API class description:<br />
    		<br />
    		* &lt;p&gt;<br />
 			* &lt;b&gt;Note:&lt;/b&gt; This class/interface is part of an interim API that is still under development and expected to<br />
 			* change significantly before reaching stability. It is being made available at this early stage to solicit feedback<br />
			* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken<br />
			* (repeatedly) as the API evolves.<br />
 			* &lt;/p&gt;
 		</p>
 		<p>
 			See the WST <a href="http://dev.eclipse.org/viewcvs/index.cgi/wst/components/server/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/IModule.java?rev=1.12&amp;cvsroot=WebTools_Project&amp;content-type=text/vnd.viewcvs-markup" target="_top">Server core plugin</a> for an example.
 		</p>
    </answer>
  </entry>
</faq>
