Drupal can be used at four different levels:
- As is: once it is installed and configured, it is used to create structured and writable content by the users that can register on the site. The menus of the site then have a standard appearance.
- Easy customization: it is then possible to customize the display location, or the display itself, standard visual components (date and time, latest posts, number of connected, etc..), and the theme of display of the site.
- Extension by external additions: addition, configuration and customization of optional modules not belonging to the core. At this stage and the next, it is not uncommon that the site developer also writes a presentation theme of its own.
- Extension by internal development: writing new modules governed by the GPL, it is often effective (but by no means compulsory), then present to the community so that it can participate in their development.
Drupal itself uses a database – typically comprising 60 to 300 tables according to enabled modules – and a hierarchy of all substitutable functions allowing the experienced developer to rewrite the only part that wants to change, and only at the level of abstraction at which it is interested, without affecting the rest. Good or poor knowledge of the exact level at which is available intervention can divide or multiply the production time by a factor of 10 or more.
Drupal has about 4000 API functions, but api.drupal.org site allows to find direct access by any part of the contents of their name. In practice, a single module may well only use a dozen or less.