[TASK] Set version to 6.1-dev
[Packages/TYPO3.CMS.git] / NEWS.txt
index b165581..a1c9280 100644 (file)
--- a/NEWS.txt
+++ b/NEWS.txt
 This document is a part of the TYPO3 project. TYPO3 is an open source web
 content management system released under the GNU GPL. TYPO3 is copyright
-(c) 1999-2011 by Kasper Skaarhoj.
+(c) 1999-2012 by Kasper Skaarhoj.
 
-This document contains information about TYPO3 version 4.6 which was released
-on October, 25th 2011.
+This document contains information about TYPO3 version 6.0 has been released
+on November 27th 2012.
 
 An up-to-date version of this document also containing links to further in
 depth information can be found here:
 
-http://wiki.typo3.org/TYPO3_4.6
+http://wiki.typo3.org/TYPO3_6.0
 
 ===============================================================================
 Compatibility
 ===============================================================================
 
-* PHP 5.3
+-------------------------------------------------------------------------------
+System environment
+-------------------------------------------------------------------------------
 
-This version requires at least PHP 5.3, older versions of PHP are not supported
-anymore with TYPO3 4.6.
+* PHP setting register_globals must be off
 
-* ImageMagick/GraphicsMagick
+The bootstrap now verifies the PHP setting register_globals is disabled for
+security reasons. The script dies otherwise.
 
-...
+-------------------------------------------------------------------------------
+PHP namespaces & TYPO3 autoloader
+-------------------------------------------------------------------------------
 
-* PHP __constructor() methods
+* Introducing PHP namespaces
 
-The old PHP 4 style class constructors, which have been the same as the class
-name have been changed to use the PHP 5 __constructor() syntax. This is
-considered as breaking change if extension called the old contructor of an
-object directly.
+Almost every PHP class file has been modified to support PHP namespaces and
+was moved to a more meaningful location. Besides that old class names, e.g.
+t3lib_div still can be used - however it is deprecated - this works by using a
+class alias map pointing to the new namespaces class name.
 
-===============================================================================
-Changes and improvements
-===============================================================================
+       see the files in typo3/sysext/core/Migrations/Code/ for the mentioned maps
 
-This will list all changes and improvements between TYPO3 4.5 and 4.6. For
-technical details see ChangeLog included in the typo3_src package.
+Basically the classes are now arranged in three basic components, which are
+core, backend and frontend - each of them are located in typo3/sysext/. The
+old class files (e.g. t3lib/class.t3lib_div.php) are still shipped with the
+Core and point to the new class files - this prevents PHP fatal errors if
+extension use hardcoded require_once() calls to old class names. This layer
+is deprecated as well.
+
+       see http://wiki.typo3.org/Namespaces for further details
+
+* New XCLASS handling
+
+The old way of registering XCLASSes in $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS'] is
+removed. XCLASSES must now be registered by adding a class implementation
+configuration to the $TYPO3_CONF_VARS['SYS']['Objects'] array. The key of the
+array is the class name for which you want to define an implementation class.
+
+Example:
+$TYPO3_CONF_VARS['SYS']['Objects']['TYPO3\\CMS\\Core\\Database\\DatabaseConnection'] =
+       array('className' => 'TYPO3\\CMS\\Dbal\\Database\\DatabaseConnection');
+
+As with Xclasses, the implementation resolving works recursively and you are free
+to put the implementation class name into the namespace of your own extension.
+
+This means that every XCLASS registration both for core and extension classes
+will not work any more with TYPO3 6.0.
+To keep compatibility for 6.0 and 4.x, extension authors should add their class
+to both the XCLASS array and the object implementation array.
 
 -------------------------------------------------------------------------------
-General
+PHP bootstrap and configuration
 -------------------------------------------------------------------------------
 
--...
+* Refactored bootstrap
 
-Removed functionality
--------------------------------------------------------------------------------
+The bootstrap changes all basic initializations for frontend, backend, CLI and
+install tool rendering. If a copied and customized version of the frontend's
+index.php was used, it has to be updated to the current index.php file of the
+TYPO3 Core sources (this applies to custom symbolic links as well).
 
-* Static Published Pages
+* New handling of typo3conf/localconf.php
 
-The feature to statically publish a page from the Admin Panel has been dropped.
-There are better ways to achieve such a functionality, like e.g.
-EXT:nc_staticfilecache.
+The localconf.php file is deprecated and not used in the core any longer. As
+substitution the new file typo3conf/LocalConfiguration.php is introduced that
+basically only returns the local configuration as array. The install tool and
+other installation changing core code like the extension manager now writes
+the whole file if configuration is changed. As a result, no more local
+code is allowed in this file.
+To overload the local configuration with special instance specific code that
+might still be needed, it is possible to add the php code to the optional
+additional file typo3conf/AdditionalConfiguration.php that is executed during
+bootstrap of TYPO3 after LocalConfiguration.php.
+An ugrade wizard takes care of migrating contents of the previous localconf.php
+file to the new scheme.
 
-* Removed extCache=2 option
+* List of loaded extensions stored as array
 
-The cache files in typo3conf/temp_CACHED_* were by default set to a hash that
-was based on the extensionlist, but this is quite unnecessary, so the extCache
-option was removed to be only used once in the typo3conf/ directory in order
-to prevent hundreds of temp_CACHED_* files that don't get cleaned up
-automatically. From now on the option $TYPO3_CONF_VARS['EXT']['extCache'] can
-only be set to 0 or 1.
+The list of loaded extensions in typo3conf/LocalConfiguration (key EXT/extList)
+was transferred to an array for better readability and maintenance. It is
+available with the new key EXT/extListArray. The old, comma separated value is
+still kept, but not used in the core anymore. It will be removed with a later
+version from the core.
 
+* Moved default TYPO3_CONF_VARS
 
-Workspaces
--------------------------------------------------------------------------------
+The default TYPO3_CONF_VARS definitions where moved from t3lib/config_default.php
+to an own file in t3lib/stddb/DefaultSettings.php.
+
+* Removed TYPO3_tables_script constant
+
+It was possible to define a different base TCA definition file by defining the
+variable typo_db_tables_script in localconf.php. This functionality is removed
+without substitution.
 
-...
+* Restricted access of global variables in ext_tables.php and ext_localconf.php
 
-Other general improvements
+With the bootstrap refactoring the visibility of ext_tables.php and
+ext_localconf.php was reduced. The files do not run in global context anymore,
+so variables like $TCA should be accessed through $GLOBALS['TCA']. There is a
+compatibility layer, but the core can not guarantee that extensions with
+strange setup does not break.
+
+-------------------------------------------------------------------------------
+Deprecated and removed components
 -------------------------------------------------------------------------------
 
-* New scheduler task to delete old data from tables
+* Deprecated methods
 
-The scheduler task 'Table garbage collection' can be used to delete old data
-from growing tables like log tables on a regular basis. Additional tables that
-can be cleaned up must be registered in $TYPO3_CONF_VARS['SC_OPTIONS']
-['scheduler']['tasks']['tx_scheduler_TableGarbageCollection']['options']
-['tables'] with its table name and a field. After that they can
-be selected in the scheduler task.
+Deprecated methods that were initially targeted to be removed in TYPO3 4.8/6.0
+have finally been removed. The deprecation log shows which functions were
+declared to be deprecated and will be removed in the next TYPO3 versions.
 
+* Removed classes prior to scheduled deprecation removal
 
-* New scheduler task to delete old files from fileadmin trash directories
+t3lib_BEDisplayLog: This class was used only by the old belog module, its
+functionality is now encapsulated in EXT:belog itself. Since it is very
+unlikely that the class was used by other external extensions, the file was
+removed instead of deprecating it.
 
-The scheduler task 'Fileadmin recycler garbage collection' can be used to
-definitely delete old files from _recycler_ directories. When a _recycler_
-directory exists within the path of a file to delete via the File module, the
-file is not actually deleted, but stored in the _recycler_ folder.
-This new task now deletes all files insider _recycler_ folders that have been
-moved there for longer than a given number of days.
+* Removed doNotLoadInFE flag
 
-* New option to customize the cookie names used by TYPO3
+With TYPO3 4.3 the flag doNotLoadInFE flag was introduced in ext_emconf.php
+extension files to hint the core that an extension has no frontend
+functionality. The performance gain of this change in the frontend was minimal.
+The flag is now removed and the according extList_FE setting in localconf.php
+has no effect anymore.
 
-It is now possible to customize the cookie names used by TYPO3 to avoid clashes
-when running more installations on the same domain. The names used can be con-
-figured with:
-$TYPO3_CONF_VARS['FE']['cookieName'] and
-$TYPO3_CONF_VARS['BE']['cookieName'].
+* Removed system extension simulatestatic
 
-* Moved t3d exports to fileadmin/_temp_ directory
+The system extension to simulate static documents was removed from the core.
+@TODO: Issue #36025 must be solved and this note here adapted, otherwise the
+removal will be reverted.
 
-t3d packages exported by the import / extbase extension are now stored in
-fileadmin/_temp_ by default which is access restricted by default .htaccess
-rules.
+* Removed TypoScript option noBlur
 
-* Added "IDNA Convert" libray for Internationalized Domain Names (IDN)
+The ancient noBlur TypoScript setting for old Browsers (Internet Explorer up to
+version 5.5) was removed without any alternatives. The setting has no effect
+anymore and can be removed from custom TypoScript objects, especially MENU.
 
-The new library can be found in typo3/contrib/idna/ and is used to encode and
-decode internationalized domain names (containing special characters like
-umlauts) from and to punycode.
+* Removed internal history cleanup feature
 
--------------------------------------------------------------------------------
-Backend
--------------------------------------------------------------------------------
+TYPO3 will not clean the history (table "sys_history") on its own anymore.
+This can lead to a large amount of data in this table. Please consider using
+the garbage collection scheduler task to remove old entries.
 
-RTEhtmlarea
--------------------------------------------------------------------------------
+* Removed TypoScript resources
 
-...
+The ancient feature to add images and other resources directly to TypoScript
+records is dropped and the handling removed. This old feature - accessible
+from the 'Info/modify' tab in the Template module - was hardly ever used
+and was partly broken.
+If this feature was still in use, it is recommended to not drop the
+resource field from table sys_template during upgrading, fix the using
+TypoScript to refer to resources located in fileadmin or similar directly,
+and afterwards to finally delete the resource field in the install tool.
 
-Other improvements to the Backend
--------------------------------------------------------------------------------
+* Removed page hit logging functionality
 
-* Backend speedup with merged JavaScript files
+Writing log entries to some logfile during frontend page hit was removed.
+There are tons of solutions on the net and on server basis that can do a
+better job than the core implementation ever did. Therefor the complete
+code was dropped and all TypoScript config.stat* options are obsolete.
 
-All jsLibs, jsFiles and jsFooterFiles are now concatenated by default into
-single files depending on type and section (header / footer). This reduces
-the webserver requests approximately by one third.
+* Removed compression of javascript files with jsmin
 
--------------------------------------------------------------------------------
-Skin / Backend UI
--------------------------------------------------------------------------------
+The default compression of certain javascript files in frontend and backend
+with the jsmin library was removed from the core due to license issues. The
+code segment was substituted with a hook, so extensions can now deliver
+compression solutions if needed. In general, it is a good idea to configure
+a webserver to compress javascript and css files on the webserver with gzip.
 
-...
 
-Other Improvements in the Skin / Backend UI
--------------------------------------------------------------------------------
+===============================================================================
+Changes and Improvements
+===============================================================================
 
-...
+This will list all changes and improvements between TYPO3 4.7 and 6.0. For
+technical details see ChangeLog included in the typo3_src package.
 
 -------------------------------------------------------------------------------
-Administration / Customization
+General
 -------------------------------------------------------------------------------
 
-...
+* Extbase and fluid always loaded
 
-Install tool
--------------------------------------------------------------------------------
-
-...
+The core extensions 'extbase' and 'fluid' are used in core classes like t3lib
+and in several important core extensions. Extbase and fluid are now required
+extensions and always loaded.
 
 -------------------------------------------------------------------------------
-Development
+PHP namespaces & TYPO3 autoloader
 -------------------------------------------------------------------------------
 
-Extbase / Fluid
--------------------------------------------------------------------------------
+* PHP namespaces in the TYPO3 autoloader
 
-...
+The autoloader can now handle fully qualified namespaced class names.
+If you use the fully qualified namespaced class name like
+'\Tx\ExtName\Foo\Bar', the autoloader will find the containing class following
+the extbase naming scheme. The mentioned class will be found if it is located
+in file 'exttensionkey'/Classes/Foo/Bar.php.
+It is also possible to use class names not following the extbase naming scheme
+by providing the "name spaced class name -> file" mapping in ext_autoloader.php.
 
-Although we do our best to make adjustments in a backwards-compatible manner,
-we needed to break backwards compatibility at a few places. In order to see if
-you are affected and how the issues can be solved, please read our notes on
-breaking changes:
-
-http://forge.typo3.org/projects/typo3v4-mvc/wiki/Breaking_Changes
-
-Backend Development
+-------------------------------------------------------------------------------
+Backend
 -------------------------------------------------------------------------------
 
-...
+* New backend user administration module
 
-Extension Development
--------------------------------------------------------------------------------
+The backend user administration module was created from scratch again. The
+interface changed a lot, it is now possible to filter large groups of users
+with certain criteria and to compare specific user information. The code was
+made more flexible to easily cope with different use cases and to be more
+open for future enhancements.
 
-...
+* New extension manager
 
-TypoScript / Frontend
--------------------------------------------------------------------------------
+The extension manager was rewritten to be based on Extbase and thus to have a
+discrete controller and action API. The view utilized jQuery in the client's
+user interface and has been reduced to only contain required functionality
+for (un-)installing or configuring extensions. Uploading extensions to TER
+and directly modifying files of extensions is not supported in the Core
+anymore, but will be available as separate extension tools package in the TER.
 
-* Compression and concatenation of CSS and JavaScript files
+* Introducing global categorization
 
-New builtin minifcation routines can now be used with config.minifyCSS and
-minifyJS to reduce the file size of all files configured in page.includeCSS
-and includeJS. Single files can be excluded from compression using the new
-option disableCompression. Additionally, files can be concatenated into a
-single file using config.concatenateCss and concatenateJs. Please note that
-there is only limited support for @charset, @import and @namespace statements
-in concatenated CSS files. Furthermore, if minifyCSS/JS is enabled,
-$TYPO3_CONF_VARS[FE][compressionLevel] now also affects CSS and JS files in
-frontend and applies GZIP compression. This requires the same options as for
-[BE][compressionLevel] to be set in .htaccess.
+A new global categorization has been introduced, thus any core component and
+extension can utilize this in the backend. An API call can be used to set
+accordant TCA and to create required SQL definition changes during runtime.
 
+See the following example to create a new field categories in a table:
 
+       \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::makeCategorizable(
+               'myextension',
+               'tx_myextension_table',
+               'categories'
+       );
 
-Database API / DBAL
--------------------------------------------------------------------------------
+* Support for NULL values in backend forms
 
-...
+In some situations it might become handy to have an "undefined" value, e.g.
+for timestamp fields where "0" has the meaning of the unix timestamp origin
+back in 1970. Therefore a new TCA "eval" subtype has been introduced to support
+that - which will be visualized in the backend with a new "enable field"
+checkbox. Besides that the SQL definition must not have the "NOT NULL"
+statement for that field.
 
--------------------------------------------------------------------------------
-Security
--------------------------------------------------------------------------------
+Example to add the "undefined" (NULL value) to the field "myfield":
 
-...
+       $TCA['tx_myextension_table']['columns']['myfield']['config'] = array(
+               'type' => 'input',
+               'eval' => 'null',
+       );
 
 -------------------------------------------------------------------------------
-Performance
+Administration / Customization
 -------------------------------------------------------------------------------
 
-* Switch to caching framework
-
-The caching framework is enabled by default and the old database-only driven
-caching is removed. This opens a lot of options for administrators to optimize
-cache deployment and performance. Details about configuration options and usage
-in own extensions can be found at http://wiki.typo3.org/Caching_framework.
+* Introducing the File Abstraction Layer
 
+The File Abstraction Layer ("FAL") is used to create accordant database records
+for each file. This was the same file can be used (referenced) in multiple
+elements without having to clone and clutter the file-system anymore. The TYPO3
+Core already makes use of the new File Abstraction Layer, but elderly extensions
+still can use the old way. Besides that, the Install Tool provides several
+upgrade wizards to migrate files to the new structure.
 
-* Caching framework: db backend uses own table namespace
+       see http://docs.typo3.org/typo3cms/FileAbstractionLayerReference/
 
-The database backend must not define own tables and table definitions anymore.
-Cache tables and table layout of the database backend will created by the
-caching framework when needed.