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 4.0.0
=============
see CHANGELOG file for detailed log

Release 4.0.1, provides following improvements:

* Openlaszlo code is removed
* Login via OAuth is improved
* External video source is room is fixed
* Multiple improvements of White-board
* Multiple improvements of Chat
* JS/CSS files are minified and merged to reduce load time
* Overall stability is improved

Other fixes and improvements, 43 issues were fixed

Release Notes 4.0.0
=============
see CHANGELOG file for detailed log

Release 4.0.0, provides following improvements:

* Room White board is rewritten to use HTML5 instead of Flash
* All Audio/Video components were rewritten using Apache Flex
* Bunch of automatic tests were written, code was cleaned-up and simplified
* outdated SMSlib was removed from the dependencies
* RTL in room is improved
* swftool 3rd party tool is not required any more
* OAuth authorization is fixed additional VK provider is added
* language resources are minimized
* performance is improved

Admin->Config
* config keys are generalized
* config types are introduced

Other fixes and improvements, 515 issues were fixed


Release Notes 3.3.2
=============
see CHANGELOG file for detailed log

Release 3.3.2, provides following improvements:

* Audio/Video in conference room is fixed
* Strong password is enforced during self registration
* 'dashboard.show.chat' should work as expected
* New Setting is added 'user can create rooms'

Other fixes and improvements, 8 issues were fixed


Release Notes 3.3.1
=============
see CHANGELOG file for detailed log

Release 3.3.1, provides following improvements:

* Clustering works as expected
* SIP works as expected
* Multiple issues in web services were fixed
* RTMPT mode is fixed
* Multiple UI improvements

Other fixes and improvements, 19 issues were fixed


Release Notes 3.3.0
=============
see CHANGELOG file for detailed log

Release 3.3.0, provides following improvements:

Security fixes in:
* Chat
* All requests via security headers
* More secure password processing rules and storage
* More strict rules for uploaded files
* SQL injection in web services

11 security vulnerabilities were addressed

Whiteboard:
* Room is displayed without overlap in IE
* Multiple display issues
* Wb room element can now be hidden

Other fixes and improvements, 21 issues were fixed


Release Notes 3.2.1
=============
see CHANGELOG file for detailed log

Service release 1 for 3.2.0, provides following improvements:

Room
* Video is more stable
* Office files download is fixed
* Multi-upload is added
* External video works as expected
* WB drawing on slides works as expected

Chat
* chat is made resizable
* multiple issues in chat are fixed
* typing indicator is added

Calendar
* date/time validator is improved
* whole group can be invited by admin to event

Other fixes and improvements, 49 issues were fixed


=============
_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
