Alternatives to Drupal
Drupal isn't the only option available, though since you are reading this book I'd imagine you are planning to use it! It is worth being aware of the alternatives, to ensure that before we start creating our site, we know we are using the right platform to do what we want.
Roll your own
Off-the-shelf products provide quick access to most common features, but their main lacking is in specific customization. One alternative is to create your own social networking website; by rolling your own, you can ensure it functions exactly how you want it to. The downside is the additional development time, technical skills required, and the difficulty in implementing some of the social features which off–the-shelf products have out of the box.
If you want to know more about how you could roll your own social networking site, Packt has a book published on the subject, PHP 5 Social Networking at https://www.packtpub.com/php-create-powerful-dynamic-social-networking-website/book.
Elgg
Elgg is an open source social networking platform, complete with functionality for setting up profiles, sharing files, adding friends, blogging, aggregating RSS, content tagging, and social graphs. Elgg also has an API allowing developers to extend Elgg by adding additional functionality, as well as a RESTful API to allow other applications to interact with the platform. More information on Elgg is available on their website: http://www.elgg.org/.
Hybrid approaches
There are of course options available which combine using an off-the-shelf system and a custom system, however, these mainly facilitate extending the functionality of the existing social networking platform, or by integrating some of those social aspects with our own website. Such approaches include:
Facebook Applications: Creating applications which are accessed through Facebook's main site, providing additional features to users, for example, a Map of Dinosaur friendly restaurants these are hosted externally, by the developer.
Facebook Connect: Allows websites to interact with Facebook, using it as an authentication protocol, pulling friend data from it, as well as pushing and pulling status updates to and from Facebook.
Google OpenSocial: A set of common APIs which make applications for social networks interoperable with supporting social networking sites. It also enables site developers to integrate the API so that other developers can build applications for that site too.
There are many other social networking engines available for this type of approach, although they are not as common as the ones listed earlier. A simple web search will provide a list of additional engines which we can investigate if we wish.