# GNU social v2.0.0 - THIS. IS. GNU SOCIAL!!!

Release name chosen after 300 by Frank Miller where the main protagonist Leonidas, King of Sparta, declines peace with the
Persians, after being disrespected, by shouting at the Persian Messenger "This is Sparta!" and kicking him into a large well
proceeded by the killing of the other Persian messengers.

## For users/sysadmins

### Web server changes
- GS is now structurely divided in includes and public
- New media handling system, new important settings, refer to CONFIGURE doc and web server conf
  - `$config['site']['x-static-delivery']`
  - You must also review the [attachments section of CONFIGURE](https://notabug.org/diogo/gnu-social/src/new_modules_system/DOCUMENTATION/SYSTEM_ADMINISTRATORS/CONFIGURE.md#attachments).
- OEmbed upgraded to Embed plugin (and now we provide Open Graph information too)
- Composer was integrated

### Functionality
- Restored broken built-in plugins
- Added shinny new Plugins management interface for sysadmins

### Federation
- Added ActivityPub support
- Enable the search box to import remote notices and profiles
- Private messages

### Load and Storage
- Improved Cronish
  - Run session garbage collection
  - Cleanup Email Registration
- New queues system
- Support for Redis was added
- Support for PostgreSQL was added

## For developers

### APIs
- PEAR DB was replaced by PDO_DataObject
- PEAR HTTP was replaced by Guzzle
- PEAR Mail was replaced by PHPSendMail
- OAuth1 was replaced by OAuth2
- New Internal Session Handler and consequently a new API, migration should be simple enough
- OAuth1 was replaced by OAuth2
- Exceptions were refactored, shouldn't change nothing in API though
- Dropped support for StatusNet plugins, devs should now use GNUsocial class instead

### Modules
- Composer was integrated
- Refactor of Plugin API to better illustrate the idea of Modules, in your plugins you should replace `Plugin` with `Module`.
- GS is now structurely divided in includes and public
- Added shinny new Plugins management interface for sysadmins

Now plugins can be installed via the sysadmin UI. Therefore, now you should package your plugins in tar.gz and inside there
must be two directories, one named 'includes' with everything that should be unpacked in `local/plugins/{plugin_name}` and
another named 'public' with everything that should be unpacked in `public/local/plugins/{plugin_name}`.
