<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you 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.
-->


<!-- Content Stylesheet for Site -->

        
<!-- start the processing -->
    <!-- ====================================================================== -->
    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
    <!-- Main Page Section -->
    <!-- ====================================================================== -->
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

                                                    <meta name="author" content="
			OpenMeetings Team
		">
            <meta name="email" content="sebawagner@apache.org">
            
           
                                    
                        
            <title>Apache OpenMeetings - Release Guide</title>
            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
            <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.10.4.custom.css">
            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
            
			<!-- Add jQuery library -->
			<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
		
			<!-- Add coinslider plugins -->
			<script type="text/javascript" src="js/coin-slider.min.js"></script>
			
			<!-- Add colorbox plugin -->
			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
		
			<script src="js/jquery-ui-1.10.4.custom.min.js"></script>
			
			<script type="text/javascript">
				$(function() {
					$("#accordion").accordion({
						heightStyle: 'content',
						icons: false
					});
					var idx = location.href.lastIndexOf('/');
					if (idx > -1) {
						var url = '.' + location.href.substring(idx);
						var a = $('#accordion a[href="' + url + '"]');
						a.addClass('active');
						var id = a.parent()[0].id;
						var idx1 = id.lastIndexOf('-');
						if (idx1 > -1) {
							$("#accordion").accordion("option", "active", parseInt(id.substring(idx1 + 1)));
						} 
					}
					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
					$('#coin-slider').coinslider({ width: 640,height: 500, delay: 4000  });					
				});
			</script>
			
			<style type="text/css">
				.fancybox-custom .fancybox-outer {
					box-shadow: 0 0 50px #222;
				}
			</style>
        </head>

        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
        	<div class="mainbody" style="min-width: 960px; width: 94%;">
        	<div class="superbody" style="width: 100%;">
            <table border="0" width="100%" cellspacing="0">
                <!-- TOP IMAGE -->
                <tr>
                    <td align="left">
<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
</td>
                    <td width="80%" align="right" valign="top" >
	<a href="demo.html">Demo</a>
	<span>|</span> 
	<a href="downloads.html" target="_PARENT">Download</a>
	<span>|</span> 
	<a href="installation.html" target="_PARENT">Installation</a>
	<span>|</span> 
	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
	<span>&nbsp;</span>
</td>
                </tr>
            </table>
            <table border="0" width="100%" cellspacing="4">
                <tr><td colspan="2">
                    <hr noshade="noshade" size="1"/>
                </td></tr>

                <tr>
                    <!-- LEFT SIDE NAVIGATION -->
                    <td width="20%" valign="top" nowrap="nowrap">

                    <!-- special ACon Logo - leave here for next time
                    <a href="http://apachecon.com/2005/US/">
                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
                             width="125" border="0" alt="ApacheCon US 2005" />
                    </a>  -->

                   <!-- regular menu -->

                    
    <!-- ============================================================ -->
    <div id="accordion" style="width: 100%">
    
            	<h3><a href="#General">General</a></h3>
    	<div>
	        	            	            	    <a href="./index.html">Home</a>
<br/>
	        		        	            	            	    <a href="./license.html">License</a>
<br/>
	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
<br/>
	        		        	            	            	    <a href="./downloads.html">Downloads</a>
<br/>
	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
<br/>
	        		            	</div>
        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
    	<div>
	        	            	            	    <a href="./installation.html">Installation</a>
<br/>
	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
<br/>
	        		        	            	            	    <a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
<br/>
	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
<br/>
	        		            	</div>
        	<h3><a href="#Community">Community</a></h3>
    	<div>
	        	            	            	    <a href="./get-involved.html">Get Involved</a>
<br/>
	        		        	            	            	    <a href="./team-list.html">Committers</a>
<br/>
	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
<br/>
	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
<br/>
	        		            	</div>
        	<h3><a href="#Development">Development</a></h3>
    	<div>
	        	            	            	    <a href="./svn.html">Source Code</a>
<br/>
	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
<br/>
	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
<br/>
	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
<br/>
	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
<br/>
	        		        	            	            	    <a href="./ManualTesting.html">Manual Testing</a>
<br/>
	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
<br/>
	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
<br/>
	        		            	</div>
        	<h3><a href="#Integration">Integration</a></h3>
    	<div>
	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
<br/>
	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
<br/>
	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
<br/>
	        		        	            	            	    <a href="./oauth2.html">OAuth2</a>
<br/>
	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
<br/>
	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
<br/>
	        		            	</div>
        	<h3><a href="#Plugins">Plugins</a></h3>
    	<div>
	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
<br/>
	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
<br/>
	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
<br/>
	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
<br/>
	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
<br/>
	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
<br/>
	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
<br/>
	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
<br/>
	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
<br/>
	        		            	</div>
        	<h3><a href="#Configuration">Configuration</a></h3>
    	<div>
	        	            	            	<b>DB Sample Configurations</b><br/>
	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
<br/>
	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
<br/>
	            			            			    <a href="./OracleConfig.html">Oracle</a>
<br/>
	            			            			    <a href="./MySQLConfig.html">MySQL</a>
<br/>
	            			            			    <a href="./PostgresConfig.html">Postgres</a>
<br/>
	            			            			    <a href="./MSSQLConfig.html">MSSQL</a>
<br/>
	            			        		        	            	            	<b>Localization and languages</b><br/>
	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
<br/>
	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
<br/>
	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
<br/>
	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
<br/>
	            			        		        	            	            	<b>NAT Port Settings</b><br/>
	            			            			    <a href="./PortSettings.html">Port settings</a>
<br/>
	            			        		        	            	            	<b>Performance</b><br/>
	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
<br/>
	            			        		        	            	            	<b>User Interface</b><br/>
	            			            			    <a href="./themes-and-branding.html">Themes</a>
<br/>
	            			            			    <a href="./Dashboard.html">Dashboard</a>
<br/>
	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
<br/>
	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
<br/>
	            			            			    <a href="./HotKeys.html">Hot Keys</a>
<br/>
	            			        		        	            	            	<b>Customization</b><br/>
	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
<br/>
	            			            			    <a href="./Navigation.html">Navigation</a>
<br/>
	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
<br/>
	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
<br/>
	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
<br/>
	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
<br/>
	            			        		        	            	            	<b>Security</b><br/>
	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
<br/>
	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
<br/>
	            			        		        	            	            	<b>Converters</b><br/>
	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
<br/>
	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
<br/>
	            			        		        	            	            	<b>Clustering</b><br/>
	            			            			    <a href="./Clustering.html">Clustering</a>
<br/>
	            			        		        	            	            	<b>Misc</b><br/>
	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
<br/>
	            			        		            	</div>
        
    </div>
     
    <br/>
    
                    </td>
                    <td width="80%" align="left" valign="top">
                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="How to Build a Release of OpenMeetings"><strong>How to Build a Release of OpenMeetings</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                        <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Required tools"><strong>Required tools</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <div>
					<p>To build a binary release of OpenMeetings you need: </p>
					<ul>
						<li>Sun JDK6</li>
						<li>Apache ANT (minimum) 1.8.3</li>
						<li>
							SVN Command line client (Subversion 1.7 required!)
							<a href="http://subversion.apache.org/packages.html" target="_BLANK" rel="nofollow">http://subversion.apache.org/packages.html</a>
						</li>
						<li>A text editor</li>
						<li>You need to be online! The build process actively downloads
							needed libraries and dependencies.
						</li>
					</ul>
				</div>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Prepare your Apache ID"><strong>Prepare your Apache ID</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <div>
					Every release package must be signed with a PGP/GPG key.
					<br />
					So if you want to release a package your Apache Id must be
					connected with a PGP key!
					<br />
					<br />
					You might follow:
					<br />
					<a href="http://www.apache.org/dev/new-committers-guide.html#security-and-pgp" target="_blank">http://www.apache.org/dev/new-committers-guide.html#security-and-pgp
					</a>
					<br />
					<br />
					In short:
					<br />
					Create PGP key pairs (private + public) (and I recommend creating a
					Revoke Cert)
					<br />
					Upload the public key (either bei using the PGP Tool that you use
					to create the key) or by using the web form to:
					<a href="http://pgp.mit.edu/" target="_blank" rel="nofollow">http://pgp.mit.edu/
					</a>
					<br />
					Add the fingerprint string (something like "BF13 CF11 F9C9 0CBE
					4413 09AB 0055 16BF 93A3 0395") to your profile at
					<a href="http://id.apche-org" target="_blank" rel="nofollow">id.apche-org
					</a>
					<br />
					Wait for 6-8 hours, the server will search for a public key based
					on your fingerprint, if success it will create a file with your
					name at:
					<br />
					<a href="https://people.apache.org/keys/committer/">https://people.apache.org/keys/committer/</a>
					<br />
					<br />
					If that is "success" then add your key to:
					<br />
					<a href="https://svn.apache.org/repos/asf/openmeetings/project/KEYS">https://svn.apache.org/repos/asf/openmeetings/project/KEYS
					</a>
					<br />
					and follow the instructions in the file.
					<br />
				</div>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Step1 - Prepare files"><strong>Step1 - Prepare files</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
					Check that all files:
					<br />
					LICENSE, NOTICE, DISCLAIMER, CHANGELOG, README
					<br />
					are up to date and refer to the right version.
				</p>
                                                <p>
					Create a TAG of the SVN tree that you would like to release<br />
					Example:
				</p>
                                                <div class="xmlcode">
					svn copy -r1453158 https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp \<br />
						https://svn.apache.org/repos/asf/openmeetings/tags/2.1RC1 \<br />
						-m "Release candidate 1"
				</div>
                                                <p>Get the source from your TAG: </p>
                                                <div class="xmlcode">
					svn checkout https://svn.apache.org/repos/asf/openmeetings/tags/$BRANCHORTAG/<br />
					$BRANCHORTAG should be replaced with your new TAG
				</div>
                                                <p>Edit the file build.properties change</p>
                                                <div class="xmlcode">
					project.status=SNAPSHOT
				</div>
                                                <p>to</p>
                                                <div class="xmlcode">
					project.status=RELEASE
				</div>
                                                <p>Run the command: </p>
                                                <div class="xmlcode">
					ant dist-release
				</div>
                                                <p>Test building the source on windows and OSx or Linux</p>
                                                <p>Test running the binary's</p>
                                                <p>Create MD5 checksums</p>
                                                <div class="xmlcode">
					#On OSX you might use this command to make a MD5 checksum and store it to a file<br />
					md5 -r apache-openmeetings-XXX-src.zip &gt;apache-openmeetings-XXX-src.zip.md5
				</div>
                                                <div class="xmlcode">
					#To create MD5 hashes On Ubuntu:<br />
					for f in `ls -1 *.tar.gz *.zip`; do md5sum $f &gt; $f.md5; done<br />
					<br />
					#To check MD5 hashes On Ubuntu:<br />
					for f in `ls -1 *.tar.gz *.zip`; do md5sum -c $f.md5; done
				</div>
                                                <p>
					Create signatures with the your KEY for every file, the KEY must be available at:<br />
					<a href="http://www.apache.org/dist/incubator/openmeetings/KEYS">
						http://www.apache.org/dist/incubator/openmeetings/KEYS
					</a>
				</p>
                                                <div class="xmlcode">
					#To create signatures On Ubuntu:<br />
					for f in `ls -1 *.tar.gz *.zip`; do gpg --armor --output $f.asc --detach-sig $f; done<br />
					<br />
					#To check signatures On Ubuntu:<br />
					for f in `ls -1 *.tar.gz *.zip`; do gpg --verify $f.asc; done
				</div>
                                                <p>
					Commit artifacts you have created with KEYS file to the
					<tt>https://dist.apache.org/repos/dist/dev/openmeetings/</tt>
					Proposed file structure for "Release Candidate 1" of 2.1 will be:
				</p>
                                                <div class="xmlcode">
					2.1<br />
					2.1/rc1<br />
					2.1/rc1/src<br />
					2.1/rc1/src/apache-openmeetings-2.1.0-src.zip<br />
					2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz<br />
					2.1/rc1/src/apache-openmeetings-2.1.0-src.zip.md5<br />
					2.1/rc1/src/apache-openmeetings-2.1.0-src.zip.asc<br />
					2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz.md5<br />
					2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz.asc<br />
					2.1/rc1/bin<br />
					2.1/rc1/bin/apache-openmeetings-2.1.0.zip<br />
					2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz<br />
					2.1/rc1/bin/apache-openmeetings-2.1.0.zip.md5<br />
					2.1/rc1/bin/apache-openmeetings-2.1.0.zip.asc<br />
					2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz.md5<br />
					2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz.asc<br />
					2.1/rc1/CHANGELOG<br />
					2.1/rc1/KEYS<br />
				</div>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Step2 - VOTE and RESULT emails"><strong>Step2 - VOTE and RESULT emails</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
					Send a "VOTE" to the developer mailing list including links to release artefacts.<br />
					A VOTE always contains two parts:<br />
					Send an email to the developer mailing list with the subject line:<br />
					[VOTE] Apache OpenMeetings x.xx release<br />
					An example for such an email:
					<a href="http://s.apache.org/vote-2.1.0RC1">example Vote email</a>
					<a href="http://s.apache.org/vote-2.0.0RC4">example Vote email (Incubator)</a>
					<br />
					Forward (Not CC) this Vote email to: private@openmeetings.apache.org<br />
					<br />
					After the vote is over, send a "RESULT" email to the list with the subject line:<br />
					[RESULT][VOTE] Apache OpenMeetings x.xx release<br />
					An example for such an email:
					<a href="http://mail-archives.apache.org/mod_mbox/incubator-openmeetings-dev/201207.mbox/%3CCACeMiA-ibo6fGCbnLjJX9H5H2kFGDVJRMfxPyMtzWzCWNi%2BpOg%40mail.gmail.com%3E">example Result email</a>
					<br />
					Forward (Not CC) this RESULT VOTE email to: private@openmeetings.apache.org<br />
					<br />
					Votes on whether a package is ready to be released use majority approval -- i.e., at 
					least three PMC members must vote affirmatively for release, and there must be more 
					positive than negative votes. Releases may not be vetoed. Before voting +1 PMC members
					are required to download the signed source code package, compile it as provided, and 
					test the resulting executable on their own platform, along with also verifying that 
					the package meets the requirements of the ASF policy on releases.
				</p>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Step3 - Distribute and announce"><strong>Step3 - Distribute and announce</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>If VOTEs positive: Upload the release </p>
                                                <div class="xmlcode">
					svn mv https://dist.apache.org/repos/dist/dev/openmeetings/2.1/rc3 \<br />
						https://dist.apache.org/repos/dist/release/openmeetings/2.1 \<br />
						-m "RC3 is released as 2.1"
				</div>
                                                <p>
					Wait 24 hours (until all Apache mirrors have synced the packages)
					and send an announcement to the mailing list + blog and any other
					channel.
				</p>
                                                <p>
					Email announcements should have the subject line:
					<br />
					[ANNOUNCE] Apache OpenMeetings x.xx released
				</p>
                                                <p>
					Add a section to <a href="downloads.html">downloads</a> website.<br />
					Make sure that the binary packages are linked using the mirror URL as base path (
					<b>not</b> http://www.apache.org/dist):<br />
					Mirror URL: 
					<a href="http://www.apache.org/dyn/closer.cgi/openmeetings/">http://www.apache.org/dyn/closer.cgi/openmeetings/</a>
				</p>
                                                <p>
					Release candidates should be deleted from <tt>https://dist.apache.org/repos/dist/dev/openmeetings/</tt><br />
					Old releases should be deleted from <tt>https://dist.apache.org/repos/dist/release/openmeetings/</tt>
				</p>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                        </td>
                </tr>

                <!-- FOOTER -->
                <tr><td colspan="2">
                    <hr noshade="noshade" size="1"/>
                </td></tr>
                <tr><td colspan="2">
                    <div align="center"><font color="#123465" size="-1"><em>
                    Copyright &#169; 2003-2014, The Apache Software Foundation
                    </em></font></div>
                </td></tr>
            </table>
            </div>
            </div>
        </body>
    </html>
<!-- end the processing -->






















