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.1.1
=============
see CHANGELOG file for detailed log

Service release 1 for 3.1.0, provides security fixes:
* CVE-2016-0783 - Predictable password reset token
* CVE-2016-0784 - ZIP file path traversal
* CVE-2016-2164 - Arbitrary file read via SOAP API
* CVE-2016-2163 - Stored Cross Site Scripting in Event description

Please update to this release from any previous OpenMeetings release

Other minor fixes.


Release Notes 3.1.0
=============
see CHANGELOG file for detailed log

SOAP/REST API was implemented using CXF (Axis2 was removed from the stack)
Build system is now maven (not ant), SWF client is improved

SOAP/REST:
* CXF is now used instead of Axis2
* API was improved: methods are simplified, API is more powerful now
* junit tests are added

Room client: 
* swf8 client is removed
* calls via LocalConnection are removed 
* room dialogs are based on wicket-jquery-ui dialogs

Other fixes in admin, localization, installer, invitations, room etc.


Release Notes 3.0.7
=============
see CHANGELOG file for detailed log

Service release 7 for 3.0.0 contains following improvements and bug fixes:

Clustering:
* Clustering was tested and fixed, now it works as expected both in OM and plugins
* Moderator able to restrict video in restricted room from now on
* Private messages with room booking are now works as expected
* Crashes in admin are fixed
* LDAP: group import

Other fixes in admin, localizations, invitations etc.


Release Notes 3.0.6
=============
see CHANGELOG file for detailed log

Service release 6 for 3.0.0 contains following improvements and bug fixes:

Invitation:
* Invitation hash sending from the room is fixed 
* Invitation hash is now enable for plugin users
* First and last name can be passed to SOAP function for hash geneartion

Other fixes


Release Notes 3.0.5
=============
see CHANGELOG file for detailed log

Service release 5 for 3.0.0 contains following improvements and bug fixes:

Installer:
* Database configuration screen is added

RTL:
* Dashboard and Emails are more RTL friendly

OAuth:
* OAuth support is improved, crash is fixed

Other fixes in SOAP, localizations, invitations etc. 


Release Notes 3.0.4
=============
see CHANGELOG file for detailed log

Service release 4 for 3.0.0 contains following improvements and bug fixes:

Screen-Sharing:
* web application is now signed with trusted certificate (no warnings)
* RTMPT/RTMPS works as expected
* audio/video synchronization is improved

Recordings:
* It is now possible to rename the recording
* Recordings stability is improved

RTL:
* Dashboard, Calendar, Settings and Admin are more RTL friendly

Calendar:
* Time zone support is greatly improved


Release Notes 3.0.3
=============
see CHANGELOG file for detailed log

Service release 3 for 3.0.0, no new features were added, please NOTE Java7 is required on both client and server from now on.


Release Notes 3.0.2
=============
see CHANGELOG file for detailed log

Service release 2 for 3.0.0, no new features were added


Release Notes 3.0.1
=============
see CHANGELOG file for detailed log

Service release 1 for 3.0.0, no new features were added


Release Notes 3.0
=============
see CHANGELOG file for detailed log

Refactoring main interface (admin, dashboard, etc.) to use HTML5 instead of Flash. 
All the screens but the room are on HTML5. The room is still on Flash.

The release also includes some bug fixes, timezone refactoring and a lot of 
localization improvements.

_Known Issues And Limitations_
* RTMPS seems to be very unstable (will try to fix it in 3.1)
* Recent version of Adobe Flash still causes crash (please downgrade to 11.5 version)
https://bugzilla.mozilla.org/show_bug.cgi?id=885188
* Multi-tabbing (no other flash application should be running in
different browsers or tabs)
* Chat clean up and log copying is not implemented
* Moving recordings between folders does not work

Please not that this is a first HTML5 release, so some minor UI issues are possible


Release Notes 2.2.0
=============
see CHANGELOG file for detailed log

Bug fix release for 2.1.1
This release includes lots of UI and command line fixes, as well as some improvements:
MSSQL DB support, Faster screen sharing, improved SOAP/REST call and LDAP support.

_Known Issues_
RTMPS seems to be very unstable (will try to fix it in 3.0)


Release Notes 2.1.1
=============
see CHANGELOG file for detailed log

Bug fix release for 2.1.0.
This release includes some improvements in user interface, fixes for the 
interview and video only rooms, and localization issues. 
Configurable hot key for Mute/Unmute have been added.

_Known Issues_
Video/audio SIP integration is not a part of this Apache release.
Check free red5sip product for this integration.

Release passed reliability testing (great job, Vasily Degtyarev!)
For 1 hour long conferences the following does not work with this release:
* Recordigs (expected to work in 3.0)
https://issues.apache.org/jira/browse/OPENMEETINGS-669
* Recent version with Adobe Flash (please downgrade to 11.5 version)
https://bugzilla.mozilla.org/show_bug.cgi?id=885188
* Multi-tabbing (no other flash application should be running in
different browsers or tabs)

Release Notes 2.1
=============
see CHANGELOG file for detailed log

_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 6.
    The project is built with Apache ANT 1.8.6 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
