Apache OpenMeetings - README
Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
--------------------------------------------------------------------------------

About
=====
Apache 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. 

Release Notes 3.2.0
=============
see CHANGELOG file for detailed log

Release 3.2.0, provides Partial HTML5 room:

Room is partially moved to HTML5
* Room menu
* User list
* File tree
* Activities and actions
* Room chat

Other fixes and improvements in all components


=============
_Integration with Asterisk_
SIP/VOIP integration with Asterisk was refactored. 
Confbridge application is now used instead of Meetme for the conferences.
Sound quality and SIP transport stability was significantly improved.
Basic support for video is added (is unstable and in beta version stage now).
See also: http://openmeetings.apache.org/red5sip-integration_2.1.html

_Improving the sound and video quality_
All the audio/video related components now use SWF11 for broadcasting and 
receiving audio and video signals. 
Echo cancellation can be enabled in the config. 
H264 video codec is now used instead of H263 to enable SIP video support.

_Private and moderated chat_
Ability to send private chat messages in the room is added as well as the chat 
moderation funmctionality.

_SMS sending module_
Possibility to send SMS message as a meeting reminder is added.
See also: https://cwiki.apache.org/confluence/display/OPENMEETINGS/SMS+Sending+Module

_Network testing tool/script_
Network testing tool is implemented and its link is added to the login page.
See also: https://cwiki.apache.org/confluence/display/OPENMEETINGS/Connection+testing+tool

_Improvements in the mail sending process_
Now e-mails are re-send again in case of unsuccessfull result at the first 
attempt or OpenMeetings re-start before the sending. 
SMTP setting updates now takes effect just after they saving whereas previously 
they started to work after the OpenMeetings re-start only.

_Calendar_
Messages about the meeting updates are sent only when substantial changes were made. 
Multiple external attendees can be added as one operation, it's now possible to 
specify user name for external guests (user will appear with this name in the user 
list in the room). 

_Room Interface_
Possibility to get invitation link without sending an e-mail was added. 
Confirmation dialog for exclusive audio no longer appears.
Hot key is added to be able to "rearrange" video windows in the room. 
Volume slider on the video pod toolbar was added.

_Recordings and screen sharing improvements_
Some improvements for the screen sharing and recordings quality and stability 
were made.

_Cluster capabilities_
In the beta stage: OpenMeetings  can be configured in the cluster environment and 
is ready for the testing, but development has not been fnished yet. 
See also: http://openmeetings.apache.org/Clustering.html,
https://cwiki.apache.org/confluence/display/OPENMEETINGS/Cluster+Master-Slave+overview

_Admin/Calendar HTML5 UI_
Additional HTML5 Wicket based UI (fully customizable with CSS) is added for 
static screens as a proof of the concept.

Getting Started
===============
Please visit the project website for the latest information:
    http://openmeetings.apache.org/
    
Documentation for Installation and Upgrade:
    http://openmeetings.apache.org/installation.html
    http://openmeetings.apache.org/Upgrade.html

Along with the developer mailing list archive:
    http://openmeetings.apache.org/mail-lists.html
    
    
System Requirements
===================
You need a platform that supports Sun Java SE 6.


Building and running
====================
To build from source code:

  - Requirements:
    Sources compilation require Sun Java SE 8.
    The project is built with Apache Maven 3.3.9 or later.
  
  - To build the OpenMeetings project run ant in the root directory:
     ant
    
For a detailed documentation on how to build from source and options see:
    http://openmeetings.apache.org/BuildInstructions.html
