What are extensions?

Extensions are the cornerstone in the internal architecture of TYPO3. In order to understand the importance and the endless perspectives of this concept, lets take a quick look at past.

The illustration below shows how TYPO3 fits into a structure with PHP, MySQL, Apache, the website and backend administration around it. In the versions before 3.5, this illustration applied to the internal structure of TYPO3; everything melted together, overlapped, and depended on each other. It was not necessarily a mess - just very hard for everyone but the most experienced to clearly identify the relationship between things.

All of that changed with TYPO3 3.5, though, which was released in the first beta version just a few weeks after 3.3. The single most important feature of 3.5 was the emergence of the Extension Manager, which is an internal control center managing the new radical structure of basically the same good old parts - now just put into "boxes".

In other words; The big gray "blob" of everything was aligned into 1) one core and 2) many extensions:

This division will surely show to be a vital part of TYPO3s future growth for these reasons:

My personal experience is that bringing some random PHP code to work for a specific situation can be done quickly, but making it general and reusable will take, say, 3-4 times more time! With all the streamlined approaches around extensions I would suggest that it now takes only double the time to make an extension re-usable for a large variety of cases. Hopefully that will motivate developers to spend just a little more time and effort to make things right from the start. Spend one hour and it works one place - spend two hours and it works in a hundred places.

The Extension Manager

The Extension Manager (EM) - the control center of extensions - looks like this:

Available extensions on the server are listed, and you can enable/disable each one with a single click of a button. It's that easy! Depending on what the extension does to TYPO3s internal processes, you might have to configure a few things or just accept a certain action. In the case an extension requires an extra table in the database, that is automatically handled by the EM.

For more details, you should really spend a few minutes watching our videos showing in detail how the extension concept works! It's a very cool demonstration.

The structure

The illustration below shows an annotated version of the TYPO3 architecture. Through the TYPO3 Extension API, all extensions connect themselves to the core of TYPO3.

The core is maintained by the TYPO3 Core Group and has a high level of trust and integrity since it is developed by the most experienced TYPO3 developers in the community. Typical core jobs are authentication and control of permissions, database connectivity and initialization, the visual framework (the interface), installation verification, integrity checks etc. It also includes formal guidelines for how extensions should be coded in order to match the style throughout the system.

Extensions, however, are an open bazaar and everyone is invited to contribute. Typically an extension will have a single author and a group of members. This is formed spontaneously by the people concerned about the extension. But extensions are also subject to natural selection, and therefore many extensions solving similar purposes will naturally be sorted by the approaches that has in practice shown the highest quality. The Core Group offers a team of "Mentors", as well, which can be invoked to perform a quality review of a certain version of an extension an then rate the effort. This will be the trusted "stamp of quality".

Despite extensions being provided by a multitude of people, the whole of TYPO3 will still have a unified appearance for users on all levels. This is due to the API and the coding guidelines, combined with the criterias for good reviews by the mentors. So, although TYPO3 installations are made up of many small bricks, the overall impression will be a homogeneous system.

The Depth of the Deep

TYPO3 is truly extendable. Even extensions can be extended. In any corner of TYPO3, every little method in a class can be extended due to a streamlined mechanism applied consistently throughout the system. This fundamental truth practically eliminates any need for custom, non-backward compatible changes in the open source of the system since class extension is really just a "covering layer" put on top of something underneath.

The TYPO3 Extension Repository

So, the extension repository is right here are your fingertips. This is the official collection of user contributed parts for TYPO3. Now, browse around, look in the categories, dive into the great manuals, and enjoy the beauty of an ordered bazaar's unified efforts to bring the most powerful collection of CMS tools to you - for free under the GPL license!

Technical Details

If you want to know more technical details about extensions you should go and read the TYPO3 Extension API.