[[install-tools]]

=== Concept: Additional Tools

[role="summary"]
Overview of additional tools that help site builders conveniently create sites.

(((Tool,Coder)))
(((Tool,Devel)))
(((Tool,Drush)))
(((Tool,Composer)))
(((Tool,Firebug)))
(((Tool,Git)))
(((Tool,drupal Console)))
(((Coder tool,overview)))
(((Devel tool,overview)))
(((Drush tool,overview)))
(((Composer tool,overview)))
(((Firebug tool,overview)))
(((Git tool,overview)))
(((Drupal Console tool,overview)))

// ==== Prerequisite knowledge

==== What tools are available for site builders?

There are several additional tools available that help you create sites faster,
more accurately and with less effort.

Drush::
  See below for more about Drush.
Git::
  https://git-scm.com/[Git] is a version control system you can use to track
  changes made to files within your entire site, or files relating only to the
  module or theme that you are using. Git makes it possible to try out changes,
  and if necessary, revert to a previous version. It can be used as well to
  track changes in the configuration files and synchronize the configuration of
  different sites. Git has become the standard for web development
  projects.
Composer::
  See below for more about Composer.
Devel::
  The https://www.drupal.org/project/devel[contributed Devel module] helps with
  development tasks such as debugging and inspecting code, analyzing database
  queries, and generating dummy content.

==== What is special about Drush?

http://www.drush.org[Drush] is a command-line tool for building and maintaining
sites, providing an alternative to using the administrative interface for many
operations. Many site builders and maintainers prefer to use Drush whenever
possible, and consider the time spent installing and learning to use Drush to be
a good investment. Reasons to consider using Drush:

* Drush provides a large number of commands for tasks such as installing the
base software, modules, and themes; updating software; performing database
operations, including copying and querying; resetting passwords; and clearing
the cache. Some contributed modules and themes also define Drush commands.

* Doing administrative tasks using Drush is typically faster and less tedious
than performing the same tasks through the administrative interface.

* Since Drush is a command-line interface, you can write scripts that combine
Drush commands and other commands on the server, to automate more complicated
tasks.

* Drush provides additional functionality not available via the administrative
interface; for example, running database queries.

If you want to use Drush, you will need to have command-line terminal access to
the server where your website will be hosted, and you will need to have a
compatible version of the Drush tool installed on that server. Check the
http://www.drush.org[Drush website] for installation instructions and version
compatibility. There is also documentation on the available Drush commands on
that site.

==== What is Composer used for?

https://getcomposer.org/[Composer] is a tool for managing PHP dependencies,
where the developer specifies what version of each external library is needed,
and Composer manages the process of downloading and installing the libraries.

The core software is a primary user of Composer, because it makes use of several
externally-developed software libraries, which must be downloaded and installed
in order for the core software to work. When you install the core software, you
either need to download an archive that contains compatible versions of the
external libraries, or you need to run Composer to download the external
libraries after the initial download.

Some contributed modules also make use of externally-developed software
libraries; for example, a Facebook integration module might require Facebook's
integration library to be installed for the module to work, and a geographical
module might make use of a standard library of geographical functions. To
install a module with external dependencies, you will need to run Composer.

==== What tools are available for module and theme developers?

In addition to the site builder tools mentioned above, the following tools are
useful for module and theme developers.

Drupal Console::
  https://drupalconsole.com[Drupal Console] is a command-line tool that
  generates boilerplate code and interacts with a Drupal site. It can generate,
  for example, block or form code, install modules and themes, and create dummy
  content. Drupal Console makes use of the Symfony Console.
Coder::
  https://www.drupal.org/project/coder[Coder] is a command-line tool that checks
  if your modules and themes comply with coding standards and other best
  practices. It can also fix coding standard violations.
Firebug::
  http://getfirebug.com[Firebug] is a Firefox plugin that allows viewing,
  editing, debugging, and monitoring CSS, HTML, and JavaScript in a separate
  browser window. The https://www.drupal.org/project/drupalforfirebug[contributed Drupal for Firebug module]
  displays Drupal debugging and SQL query information in the Firebug window.

==== Related topics

<<install-composer>>

==== Additional resources

* https://www.drupal.org/node/147789[_Drupal.org_ community documentation page "Development tools"]

* https://www.drupal.org/docs/develop/using-composer/using-composer-with-drupal[_Drupal.org_ community documentation page "Using Composer with Drupal"]


*Attributions*

Written and edited by https://www.drupal.org/u/batigolix[Boris Doesborg]
and https://www.drupal.org/u/jhodgdon[Jennifer Hodgdon].
