<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2006 The Apache Software Foundation Licensed under the Apache 
	License, Version 2.0 (the "License"); you may not use this file except in 
	compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 
	Unless required by applicable law or agreed to in writing, software distributed 
	under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 
	OR CONDITIONS OF ANY KIND, either express or implied. See the License for 
	the specific language governing permissions and limitations under the License. -->
<document>

	<properties>
		<title>Release Guide</title>
		<author email="sebawagner@apache.org">
			OpenMeetings Team
		</author>
	</properties>

	<body>

		<section name="How to update Apache OpenMeetings incubator website">

			<p>
				Required software:
				<ul>
					<li>Sun JDK6</li>
					<li>Apache ANT (1.8 or later)</li>
				</ul>
			</p>

			<p>
				OpenMeetings website (
				<a href="http://incubator.apache.org/openmeetings/">http://incubator.apache.org/openmeetings/</a>
				) is a copy from the SVN repository.
				<br />
				The file in the SVN to be synced are at:
				<br />
				<a
					href="http://svn.apache.org/repos/asf/incubator/openmeetings/trunk/singlewebapp/docs/">http://svn.apache.org/repos/asf/incubator/openmeetings/trunk/singlewebapp/docs/
				</a>
			</p>
			
			<p>
				To update the website you checkout trunk:
				<br />
				<a
					href="https://svn.apache.org/repos/asf/incubator/openmeetings/trunk/singlewebapp/">https://svn.apache.org/repos/asf/incubator/openmeetings/trunk/singlewebapp/
				</a> <br/>
				edit the files in the folder <tt>xdocs</tt><br/>
				then you run the command:
				<div class="xmlcode">
					ant anakia
				</div>
				control the output locally in the folder <tt>docs</tt><br/>
				And then checkin into the SVN <i>both</i> the edited xml and generated html files.
			</p>
			
			<p>
				Changes to the website should be online immediately.
			</p>

		</section>

	</body>

</document>