Developers who are on assignments building a social networking web site come across the issue that there isn’t any specific definition of this. There’s some functionality, which is considered as social network services. Moreover, the target audience has to be specifically defined without that, any social network would not progress even with any functionality at hands.
So which functionality can be considered as social networking? Surprisingly but over the third of such functionality is allocated in simple networks: registration, search, voting, user profiles, administration, SEO, forums. The source of social networks is the news sites with forums (the so called ‘portals’).
Web 2.0 gave an opportunity for closer virtual communications: personal blogs, comments, RSS, tags, interaction with friends. Primarily visitors and not the site admins as before do filling out with content here.
In the Internet, many outstanding products have been done that provide some part of services for social networks (blogs, wikis, forums, galleries, etc.), however often the more important is not some specific functionality of a part of a real social network but a possibility for integration all of its parts as a single whole. At that, we speak as of unique designs as well as of a unique approach.
Based on personal experience I can tell that supporting a single authorization system and unique designs for a web application comprised of several components (forum, blog, wiki) takes a significant part of development time. Besides, in case of coming of any new versions of a component to the market the probability of its rapid introduction to replace the old one is very low (if not zero at all). Even adding a new common theme turns into a costly undertaking.
The Drupal system can just be the kernel around which additional functionality can be built. After installation Drupal doesn’t seem like any ordinary CMS where sections and pages are to be created. Here another terminology is used – publications. A publication can be an article, image, voting, video – anything possible. Any publication can be commented, tagged, rated it results into more participants get involved into managing/rating of a publication.
For information, Drupal is a modular CMS with an open code. The system has been created to fit LAMP infrastructure (Linux+Apache+MySQL+PHP), supports PHP 4.3.3 and is PHP5-compatible. The primary emphasis has been made on site development aimed at users collaboration. However, it is possible to create a simple site, e-commerce site or gallery.
One of the most exciting features of Drupal is taxonomy. This complex term means a possibility to categorize publications, in simple words appointment to publish tags. Seems like nothing extraordinary however if we recall that in Drupal anything is a publication we got an idea how powerful the approach is. For example, the same tag may have a record in blog as well as an image and theme in forum and even as a user. Moreover, categories may be hierarchical; tags can be entered by visitors. Quite a unique function!
Initially Drupal has been targeted to building communities thus giving an opportunity to create it to the author as wished. Let’s consider the difference in approaches. When building a common site the main issue for a creator is: What kind of site do I want to have?. However when building a site using Drupal the main issue is: What kind of a community will reside on my site?. Therefore, I can tell that Drupal is not a simple CMS but a platform to create communities and social networks as well.
So the basic functionality of Drupal (publications, taxonomy, authoring) multiplied by enhancements options as a result provides for an opportunity to create and support a complex social network.
Looking at the existing social networks, we can immediately define which module has been used to create this or that social networking service. Forum or blogs? These have already been included into the distribution file. Lists of friends and private messages? Use modules Buddylist and Privatemsg respectively. Protection from unwanted participants? This is a very important task for a community, however that can be easily resolved: there is a module ‘Invite’ and protection from spam (report spam, captcha). Users can place any information on themselves in their profiles, as much as they want. They will be able to view it the way it has to by displayed. If anyone can dare create a place to publish galleries, sound files and video, musicians communities and Shakespeare fans just try Drupal.
I would like to warn beginners from the natural desire to see everything and now on each page. Yes, Drupal is a flexible tool, however including all modules on all pages leads to slow page upload. This is not always needed by the users however always mean a load for a server. Any social networking site experience a very high load on the database server as from the large number of users as well as from complex queries for cross references. It can be partially resolved by caching but one should not forget about expediency.
To demonstrate features a web site has been created that can be found at http://drupal.enterra-inc.com. The site is comprised of 3 parts: a travel agency, social network elements, e-shop. In reality such a mixture of genres is unacceptable however in this case is justified. In the travel agency part the system allows entering information on Tours and Hotels. For visitors collaboration there are several mechanisms: Forum, Blog, My buddylist, Private Messages, Invite your friends and colleagues, Who’s new, Who’s online. E-shop is made on advanced eCommerce module and allows adding selected merchandise into personal shopping cart and pay for it thru checkout. The site has search, WYSIWYG editor, SEO url. Each posting (which refers to even tours, hotel and merchandize) can be commented by site visitors. For anonymous users there is preliminary moderation of messages by administrator (queued for moderation by site administrators and will be published after approval). For all publications a spam protection mechanism is used (spam flag, address filtering, Bayesian logic).
Much has been done in Drupal to provide social networking services, much will have to be done. There are examples of successful social networks implementations. A social network can me made on Drupal with no knowledge of a programming language. The system has everything for building social relations. Soon there will be more communities made on Drupal.