What are extensions?

Extensions are the cornerstone in the internal architecture of TYPO3.

The illustration below shows how TYPO3 fits into a structure with PHP, MySQL, Apache, the website and backend administration around it.

This structure is a vital part of TYPO3 and will surely provide future growth for these reasons:

  • Easy sharing: Extensions are exceedingly easy to share; You press a single button and it's uploaded and online, available for others. Then a single click and it's downloaded, installed and running somewhere else.
  • Hassle-free updates: Updates of extensions are - just like installing - a one-click process. And the core itself is also easy to upgrade because it has been separated from the extensions.
  • Quick development: Extensions are easy to get kickstarted with an internal visual tool. Plus, all files of an extension are located in one single folder - very easy to handle.
  • High quality: Extensions will probably have a high quality since there is an API, clear guidelines for coding, well defined namespaces, and a whole community to comment and review them.
  • Documentation: Extensions can easily be well-documented since a very flexible and powerful integration of reStructuredText and Sphinx has been deployed. It really can't be easier.
  • Unlimited application: Extensions are able to integrate with almost every little corner of TYPO3, and that makes the possible applications of extensions practically unlimited.
  • Developer responsibility: The modular approach of extensions make the "developer-bazaar" just a little more organized and helps identify responsibility for each single part of TYPO3.
  • Support load: Since extensions will allow people to clearly identify what extension they need support for, it is easy to ask at the right place.

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 is the control center to structure the otherwise big gray "blob" of everything and align into 1) one core and 2) many extensions.

It 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.