
                              Release Notes
                             ejabberd 2.0.0
                            21 February 2008

  ejabberd 2.0.0 is a major new version for ejabberd adding plenty of
  new features, performance and scalability improvements and
  architectural changes.

  ejabberd 2.0.0 includes more than 200 improvements over ejabberd
  1.1.x. A complete list of changes can be retrieved from:
   http://redir.process-one.net/ejabberd-2.0.0

  The new code can be downloaded from ejabberd downloads page:
     http://www.process-one.net/en/ejabberd/


   Recent changes include:


* Clustering and Architecture

- New front-end and back-end cluster architecture for better
  scalability and robustness. Back-end nodes are able to run a fully
  fault-tolerant XMPP router and services, but you can now deploy
  many front-end nodes to share the load without needing to synchronize
  any state with the back-ends.
- All components now run in cluster mode (For example, Multi-User chat
  service and file transfer proxy).
- New load balancing algorithm to support Multi-User chat and gateways
  clustering. More generally it supports any external component load
  balancing.
- ejabberd watchdog to receive warning on suspicious resources consumption.
- Traffic shapers are now supported on components. This protect
  ejabberd from components and gateways abuses.


* Publish and Subscribe

- Complete rewrite of the PubSub module. The new PubSub module is
  plugin-based, allowing developers to create new nodes type. Any
  application can be plugged to ejabberd and can provide rich presence
  as a pubsub plugin.
- Personal Eventing via Pubsub support (XEP-0163). This module is
  implemented as a PubSub service. It supports user mood (XEP-107),
  User Tune (XEP-118), user location (XEP-0080) or user avatar
  (XEP-0084) for example.


* Server to Server (s2s)

- More robust code with connection timeout implementation.
- Support for multiple s2s connections per domain.
- s2s whitelist and blacklist support.
- s2s retrial interval.


* LDAP

- Many enterprise-class enhancements such as better behaviour under
  heavy load.
- Support for LDAP servers pool.
- Simplified use of virtual hosting with LDAP with domain substitution
  in config.
- Ability to match on several userid attributes.


* Multi-User Chat

- Clustering and load balancing support.
- Ability to define default room configuration in ejabberd config file.
- Many anti abuse features have been added:
  . New ACL to limit the creation of persistent room to authorized users.
  . Ability to define the maximum number of users per room.
  . Limitation of the rate of message and presence packets.
  . Limitation of the maximum number of room a user can join at the same time.


* File Transfer

- XEP-0065 - Proxy65 file transfer proxy. The proxy can run in
  cluster mode.


* Authentication

- PAM (Pluggable Authentication Modules) support on *nix systems.
- External Authentication protocol is now fully documented.


* Web Client Support

- XEP-0124 - BOSH support: BOSH (Bidirectional-streams Over
  Synchronous HTTP) was formerly known as "HTTP binding". It provides
  an efficient alternative to HTTP polling for scalable Web based chat
  solutions.
- HTTP module can now serve static documents (with
  mod_http_fileserver). It is needed for high-performance Web 2.0 chat
  / IM application. System administrators can now avoid using a proxy
  (like Apache) that handles much less simultaneous than ejabberd HTTP
  module.
- Added limitations enforcement on HTTP poll and HTTP bind modules
  (bandwidth, packet size).


* System Administration

- XEP-0133 - Service administration support. System administrators can
  now perform lot of ejabberd related admin tasks from their XMPP
  client, through adhoc commands.
- Dynamic log levels: Improved logging with more log levels. You can
  now change the loglevel at run time. No performance penalty is
  involved when less verbose levels are used.
- The ejabberdctl command-line administration script now can start 
  and stop ejabberd. It also includes other useful options.


* Localization

- ejabberd is now translated to 24 languages: Catalan, Chinese, Czech,
  Dutch, English, Esperanto, French, Galician, German, Italian, Japanese, 
  Norwegian, Polish, Portuguese, Portuguese (Brazil), Russian, Slovak, 
  Spanish, Swedish, Thai, Turkish, Ukrainian, Vietnamese, Walloon.


* Build and Installer

- Many launch script improvements.
- New translations. The binary installer is now available in Chinese,
  Dutch, English, French, German, Spanish, Russian.
- Makefile now implements uninstall command.
- Full MacOSX compliance in Makefile.
- Configure script is clever at finding libraries in unusual places.


* Development API

- Several hooks have been added for module developers (most notably
  presence related hooks).
- HTTP request handler to write HTTP based plugins.
- Manage connections IP address.


* Bugfixes

- ejabberd 2.0.0 also fixes numerous small bugs :) Read the full
  changelog for details.



   Important Note:

- Since this release, ejabberd requires Erlang R10B-5 or higher. 
  R11B-5 is the recommended version. R12 is not yet officially 
  supported, and is not recommended for production servers.



   Upgrading From ejabberd 1.x:

- If you upgrade from a version older than 1.1.4, please check the
  Release Notes of the intermediate versions for additional
  information about database or configuration changes.

- The database schemas didn't change since ejabberd 1.1.4. Of course,
  you are encouraged to make a database backup of your SQL database,
  or your Mnesia spool directory before upgrading ejabberd.

- The ejabberdctl command line administration script is improved in
  ejabberd 2.0.0, and now it can start and stop ejabberd. If you
  already wrote your own start script for ejabberd 1.x, you can
  continue using it, or try ejabberdctl. For your convenience, the
  ejabberd Guide describes all the ejabberd and Erlang options used by
  ejabberdctl.

- The example ejabberd.cfg file has been reorganized, but its format
  and syntax rules are the same. So, you can continue using your
  ejabberd.cfg file from 1.x if you want. The most important changes
  are described now.

- The 'ssl' option is no longer available in the listening ports. For
  legacy SSL encryption use the option 'tls'. For STARTTLS encryption
  as defined in RFC 3920 XMPP-CORE use the option 'starttls'. Check
  the ejabberd Guide for more information about configuring listening
  ports.

- The options 'welcome_message' and 'registration_watchers' are now
  options of the module mod_register. Check in the ejabberd Guide how
  to configure that module.

- To enable PEP support in mod_pubsub, you need to enable it in the
  mod_pubsub configuration, and also enable the new module
  mod_caps. Check the section about mod_pubsub in the ejabberd Guide.

- Other new features and improvements also require changes in the
  ejabberd.cfg, like mod_http_bind, mod_http_fileserver, mod_proxy65,
  loglevel, pam_service, and watchdog_admins. Search for those words
  in the ejabberd Guide and the example ejabberd.cfg.



   Bug Reports

  You can officially report bugs on Process-one support site:
  https://support.process-one.net/


END