<?xml version="1.0" encoding="UTF-8"?>
<!--
   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 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">

	<properties>
		<title>Home</title>
		<author email="sebawagner@apache.org">
			Sebastian Wagner
		</author>
	</properties>

	<body>

		<section name="Apache OpenMeetings - Features and overview">

			<div id="coin-slider">
				<a href="#">
					<img src="images/cut_conference_room.png" alt="Conference Room" />
					<span>
						<b>Audio/Video Conferencing</b>
						<br />
						OpenMeetings enables you to make Audio/Video conferencing.
					</span>
				</a>

				<a href="#">
					<img src="images/cut_integrated_calendar.png" alt="Calendar" />
					<span>
						<b>Calendar</b>
						<br />
						You can create meetings with the integrated calendar, conference rooms and invitations are automatically send to everybody
					</span>
				</a>

				<a href="#">
					<img src="images/cut_file_explorer.png" alt="File Explorer" />
					<span>
						<b>File Explorer</b>
						<br />
						Each room has its own File-Explorer. Each user has his own private drive and additionally there is a public drive to share files with other participants
					</span>
				</a>

				<a href="#">
					<img src="images/cut_integration_api.png" alt="Integration API" />
					<span>
						<b>Integration API</b>
						<br />
						There is a SOAP/REST API to integrate into your website or intranet, as well
						as LDAP/ADS connectors and VoIP/Asterisk integration modules
					</span>
				</a>

				<a href="#">
					<img src="images/cut_private_messages.png" alt="Private messages" />
					<span>
						<b>Private messages and contacts</b>
						<br />
						From the private message center you can send invitations by email
						and attach meeting invitations to every email
					</span>
				</a>

				<a href="#">
					<img src="images/cut_administration_configuration.png" alt="Administration" />
					<span>
						<b>Administration and Configuration</b>
						<br />
						You can configure users, rooms, usergroups, config settings or
						edit labels with a Web-Frontend integrated in the application
					</span>
				</a>

				<a href="#">
					<img src="images/cut_recordings_playback.png" alt="Share and Record" />
					<span>
						<b>Screen sharing and Recording</b>
						<br />
						You can do screen sharing as well as recording of whole sessions
						including audio/video. Recordings can be downloaded as AVI/FLV or
						watched online in the integrated player.
					</span>
				</a>

			</div>


			<p> Openmeetings provides video conferencing, instant messaging,
				white board, collaborative document editing and other groupware
				tools using API functions of the Red5 Streaming Server for Remoting
				and Streaming.
			</p>

			<p>
				OpenMeetings is a project of the Apache, the old project
				website at
				<a href="http://code.google.com/p/openmeetings/" target="_BLANK">GoogleCode
				</a>
				will receive no updates anymore. The website at Apache is the only
				place that receives updates.
			</p>

		</section>

		<section name="News">

			<p>
			    <strong>
                    Version 2.2.0 released! See <a href="downloads.html">Downloads page</a>. 
                    (2013-12-12)
                </strong>
                <br />
			    <strong>
                    Version 2.1.1 released! See <a href="https://blogs.apache.org/openmeetings/entry/apache_openmeetings_2_1_11" target="_BLANK">Project Blog</a> or <a href="downloads.html">Downloads page</a>. 
                    (2013-07-06)
                </strong>
                <br />
			    <strong>
					OpenMeetings 2.1.0 is released! Please check <a href="downloads.html">Downloads page</a>. 
					(2013-04-01)
				</strong>
				<br />
			    <strong>
					OpenMeetings new URL, update your filters!
					<a href="http://openmeetings.apache.org">openmeetings.apache.org</a> is the new home. 
					(2013-01-28)
				</strong>
				<br />
			    <strong>
					OpenMeetings on the road to graduate from the Incubator
					<a href="https://blogs.apache.org/openmeetings/entry/openmeetings_on_the_road_to" target="_BLANK" rel="nofollow">at our blog</a>
					(2012-12-07)
				</strong>
				<br />
				<strong>
					Some slides from our Fast Feather Track at the ApacheCon Europe 2012 
					<a href="https://blogs.apache.org/openmeetings/entry/openmeetings_apachecon_presentation_slide" target="_BLANK" rel="nofollow">at our blog</a>
					(2012-11-18)
				</strong>
				<br />
				<strong>
					Update: Builds are available at
					<a href="https://builds.apache.org/view/M-R/view/OpenMeetings/" target="_BLANK" rel="nofollow">builds.apache.org</a>
					(2012-08-03)
				</strong>
				<br />
				<strong>
					<a href="https://blogs.apache.org/openmeetings/entry/apache_openmeetings_2_0_incubating" target="_BLANK" rel="nofollow">Version 2.0 released</a>
					(2012-07-26)
				</strong>
				<br />
				<strong>New committer: Timur Tleukenov (2012-03-06)</strong>
				<br />
				<strong>
					<a href="http://demo.openmeetings.de" target="_BLANK" rel="nofollow">Demo
						server</a>
					updated to r1236172 (2012-01-26)
				</strong>
				<br />
				<strong>New committer: German Grekhov (2011-12-26)</strong>
				<br />
				<strong>OpenMeetings has been accepted into the Apache Incubator
					(2011-11-12).
				</strong>
			</p>

		</section>

		<section name="Community">
			<div>
				<strong>Who we are</strong>
				<blockquote>
					<a href="team-list.html">List of committers</a>
					.
				</blockquote>
			</div>
			<div>
				<strong>Users!</strong>
				<blockquote>
					We'd love to have you involved. Check out the
					<a href="get-involved.html">Get involved</a>
					.
				</blockquote>
			</div>
		</section>

		<section name="Feature details">

			<feature title="Audio and Video Conferencing">

				<image fullhref="images/Features_Screen_Conference_Room_Thumb.png"
					href="images/Features_Screen_Conference_Room_Thumb.png" title="OpenMeetings Conference Room"
					width="250" height="175" />
				<text>
				<div>
					There are four options to use OpenMeetings audio/video functions,
					which you can select during a conference session.
					<ul>
						<li>audio + video</li>
						<li>audio only</li>
						<li>video only</li>
						<li>picture only</li>
					</ul>
					Additional you can change video-/audio-quality, choose multiple
					camera resolutions (4:3, 16:9 or 3:2)
					and choose your input devices.
				</div>
				</text>
			</feature>

			<feature title="Meeting recording and Screen sharing">

				<image href="images/desktopsharing.png" fullhref="images/desktopsharing.png"
					title="Screensharing-/recording" width="140" height="150" />
				<image href="images/recordings_timeleine.png" fullhref="images/recordings_timeleine.png"
					title="Device" width="200" height="115" />
					
				<text>
				<div>
					<ul>
						<li>Recorded sessions contain everything including sound recorded
							from all audio streams in exactly the way you've seen it in the
							conference.
						</li>
					</ul>
					<ul>
						<li>Recorded sessions can be downloaded as AVI/FLV files.</li>
					</ul>
					<ul>
						<li>Possibility to select a screen area for sharing.</li>
					</ul>
					<ul>
						<li>Different quality steps for Screensharing.</li>
					</ul>
					<ul>
						<li>Watch and organize recordings in an integrated Drag and Drop
							File-Explorer
						</li>
					</ul>
				</div>
				</text>
			</feature>

			<feature title="File Explorer">

				<image href="images/file_smal.png" title="File Explorer"
					fullhref="images/file_smal.png" width="135" height="200" />
				<text>
				<div>
					Advanced File-Explorer in every conference room, Drag and Drop
					interface for managing uploaded files, including the possibility to
					create a document tree with folders.
					<br />
					<br />
					Private and Public Drive in
					File-Explorer. The File-Explorer has two
					different views, one is the
					<b>Private Drive</b>
					and the other the
					<b>Public Drive</b>
					. The Private Drive
					always contains the same files.
					Those files are
					visible only to the
					user currently loggedin. The
					Public Drive is not
					bound to the user,
					but to the conference room
					instead. All users in
					the conference room
					have access to the Public
					Drive.
				</div>
				</text>
			</feature>

			<feature title="Moderating System">

				<image href="images/right_management.png" title="Right management"
					fullhref="images/right_management.png" width="135" height="216" />
				<text>
				<div>
					During a conference, the moderator can adjust the user permission
					to every user individually .
					<ul>
						<li>
							<img class="alignnone" title="Allow modaration" src="images/user_add.png"
								alt="" />
							Allow/Deny moderation
						</li>
						<li>
							<img class="alignnone" title="Whiteboard Access" src="images/pencil_add.png"
								alt="" />
							Allow/Deny to draw on white board
						</li>
						<li>
							<img class="alignnone" title="Screenshare" src="images/monitor_add.png"
								alt="" />
							Allow/Deny screen-sharing/record screen
						</li>
						<li>
							<img class="alignnone" title="Remote control" src="images/mouse_add.png"
								alt="" />
							Allow/Deny Remote Control Screen
						</li>
						<li>
							<img class="alignnone" title="Remote control" src="images/micro_small.png"
								alt="" />
							Give exclusive audio to others or self
						</li>
						<li>
							<img class="alignnone" title="Video Audio" src="images/audio_and_video.png"
								alt="" />
							(Re-) Start Audio, Video or Device settings
						</li>
					</ul>
				</div>
				</text>
			</feature>


			<feature title="Multi-Whiteboard and Chat">

				<image href="images/whiteboard.png" fullhref="images/whiteboard.png"
					title="Whiteboard" width="240" height="165" />
				<image href="images/chat.png" fullhref="images/chat.png"
					title="Chat in Conference Room" width="240" height="68" />
				<text>
				<div>
					Multi-Whiteboard, you can add new whiteboard instances, each
					white
					board can have the full range of tools and documents inside.
					<br />
					<br />
					Save white boards. You can save each whiteboard instance as a file.
					The file is located in the File-Explorer and can be drag n' drop'ed
					to the white board again and organized like any other document,
					image or folder.
					<br />
					<br />
					White board with drawing, writing, Drag n' Drop, Resizing, Images
					(Drag n'
					Drop from File-Explorer), Symbol(s)/Cliparts .
					<br />
					<br />
					Full-fit does rescale the document on the screen to be 100% visible
					on all
					screens no matter what kind of screen resolution different
					users
					have.
					<br />
					<br />
					You can import from a wide range of document formats (PDF, DOC,
					ODT, PPT, et cetera...)
				</div>
				</text>
			</feature>

			<feature title="User and room management">

				<image href="images/dashboard.png" fullhref="images/dashboard.png"
					title="Dashboard with MyRooms" width="250" height="130" />
				<text>
				<div>
					You can manage users and multiple organizations in a single
					OpenMeetings instance. You can also create users that only have
					access via the SOAP-API.
					<br />
					<br />
					MyRooms section. Each user has by default 2 personal rooms that
					are
					always accessible exclusively for that user. There are buttons
					to
					enter those rooms from the Dashboard.
					<br />
					<br />
					You can assign conference room to all users, or you can assign them
					only to specific user-groups.
				</div>
				</text>
			</feature>

			<feature title="Private message center">
				<image href="images/privat_messages.png" fullhref="images/privat_messages.png"
					title="Private Messages and Contact Search" width="230" height="125" />
				<text>
				<div>
					Send users messages and organize them in folders. You can book
					conference rooms by sending private messages. The booked event
					automatically is in your and the participants calendar, changes to
					that event will be populated to all users booked to the event.
					<br />
					<br />
					User contacts, you can search users and add them to your contacts.
					You
					can even give them the right to see your calendar.
				</div>
				</text>
			</feature>

			<feature title="Plan meetings with integrated calendar">
				<image href="images/calendar.png" fullhref="images/calendar.png"
					title="Calendar" width="200" height="115" />
				<text>
				<div>
					<ul>
						<li>Plan your conferencing and invite attendees from OpenMeetings
							or External.
						</li>
						<li>The invited attendees will recieve an E-mail with details to
							the meetings and a link with a secure hash to the conference
							room.
						</li>
						<li>Share your calendar with your contacts.</li>
					</ul>
				</div>
				</text>
			</feature>

			<feature title="Polls and Votes">
				<image href="images/poll.png" fullhref="images/poll.png"
					title="Create a poll" width="250" height="250" />
				<text>
				<div>
					You can create a poll with yes/no or 1-10 questions, let the
					user
					vote and see the voting results.
					<br />
					<br />
					Polls can be stored and results viewed as pie-chart
				</div>
				</text>
			</feature>

			<feature title="Backup">
				<image href="images/backup.png" fullhref="images/backup.png" title="Backup" width="250" />
				<text>
				<div>
					You can backup all user-generated data including files
					uploaded by the users in a single ZIP file and import that ZIP into
					a new installation of OpenMeetings again.
				</div>
				</text>
			</feature>


		</section>

	</body>
</document>
