Modules add functionality to Drupal. When speaking strictly Drupal is strictly the system the manages content and builds a visible webpage. All of the features of Drupal are modules. However, if you have installed Drupal and looked around the sitebuilding part of the administration menu you have surely come across the modules area. The basic install of Drupal includes a whole pile of modules but there are many many more available through, what are called, user contrib modules. The Drupal download includes the Core, which is Drupal, and a handful of other common modules including Blogs, Books, Forums, Polls, Search and a bunch of other things. I am not going to attempt to explain what all of the included modules do or how to use them but rather focus on a few really great contrib modules. (Now as a Pre-emptive strike, I am not covering Views or CCK. I understand these are enormously powerful but I have not needed them on my site and as a result have not been motivated to learn the details of how they work. If someone can think of a good way for me to utilize them I will be happy to take recommendations.)
To install a new module to Drupal you will need FTP access to your site. It is easiest to find modules by searching for them by name on Google. You download the file, it will be a tar gz compressed file. Extract it (with a tool like 7zip). Then copy it to the sites/all/modules folder on your site. Once you have copied the files they will appear on the Administer -> Site Building -> Modules list. You can enable them by checking the box next to the associated module and saving the changes. Most modules have a setup element that will be added to your Administer -> Site Configuration menu.
I am going to start my modules list with a few modules to make Drupal easier to administer and then a few that add cool functionality.
Administration Menu - This is a cool basically plug and play module that adds a menu above the top content on your site that shows all of the adminstration functionality in pull down type menues. You control the visibility so that only administrator roles are able to see it. This is so cool and easy to use it is a must for anyone solo running a site. It is much easier to navigate then hunting through pages of menu screens everything is just available.
Devel - This is a slick little package of features that help with managing how your site looks. It adds little block editing links as well as a slew of other developer features. Devel also allows the owner of a site to populate it with a bunch of dummy users and generate a ton of artificial content to see how the site will look and feel once it is up and running. I do not use this near as much as I should but it works as a great companion to Firebug, the Mozilla web developers best friend. (Firebug is not part of Drupal it is an add on to the Mozilla Firefox browser. Everyone who does anything with CSS should have this feature in Mozilla.)
Poormanscron - For those users who do not have access to SSH from there web host Poormanscron is a great alternative to manually running cron every couple hours or days. Cron is a maintence tool used by CMS systems to run a number of tests on the system. Many of the test's results can be found under Administer -> Reports -> Status Report. Generally there is a SSH command that can be used to setup automated Cron operations. But, for those of us without SSH access Poormanscron does the job for us. You simply install the module and setup the minimum frequency for operation. Really huge sites (which should have SSH access) may take a performance hit from Poormanscron because it causes Cron to be triggered at the completion of page loads. This should not be a problem for smaller sites but should be considered for sites with lots of simultaneous users.
IMCE - IMCE is is file management tool that uses a scripted interface to let you find select and insert file content into your website. It has a great file browser and upload tool (you need to have the Core Upload module installed and enabled). IMCE integrates very tightly into FCKEditor to allow easy access to files while you are creating content on your site. This in my mind is a must have mate to FCKEditor.
FCKEditor - Many users of Drupal really like to use HTML to style their postings but there are a whole bunch of people who have no clue how to use HTML for anything more than Bold. FCKEditor is about as close as the current Drupal can come to having a WYSIWYG text editor. FCK is pretty easy to use out of the box and will add a slick little toolbar to the top of your text editing fields that has buttons to change fonts, bold, italics and add tables without having to add a bunch of HTML or CSS inline. In addition it also has a slick little linking tool as well as a great tool for adding images to your posts. In addition to functional changes FCK also changes your text editor field so that it shows what the finished stylized text will look like published. As noted above this tool integrates very well with the IMCE module to allow easy uploads and slick little file browser accessible through FCKeditor. There are several other WYSIWYG but my experience points me to FCK.
I am going to wrap this section of my article up and pick it up soon to explain how I did my photo gallery. I will say that before I had a Drupal site I was using Gallery2 to house a rather large image gallery. I have since integrated it into my drupal site using the gallery module as well as lightbox2. However, this was a rather tedious and complex task and I will devote a whole page to explaining what I did and what I learned.