The art of web design is a process that changes from company to company and person to person but no matter how the final product is produced there are always three factors that come into play: cost, time and quality. As a project manager of a major design firm or an individual creating a web presence you must carefully weigh these three elements; in the end you only get to pick two of them, the third is going to suffer. If you, for instance, want a high quality website developed at a low cost it is going to take longer, and if you want a low cost website produced quickly it is going to be a lower quality. As web development becomes a larger market developers are finding ways to mitigate these factors. One of the most popular ways to accomplish this goal within the development community has been web application framework development.
The quality of an open source system often lies in the community of developers working to support it. Developer communities generate countless plug-ins and mods to popular open source systems often for the fun or the credit that goes along with putting their signature within the code. These plug-ins can range from one click installs to lengthy source code modifications but chances are if you’re looking to for your website to do something there is a plug-in for it out there somewhere. Many sites such as the WordPress Plugin Directory act as user hubs that make searching for quality plug-ins easy.
While plug-ins are an important part of finding an open source platform they are not the only thing to be considered. There are many platforms out there and choosing the right one can be an arduous task. While some platforms such as phpBB3, an open source forum application and MediaWiki, the wiki software that drives Wikipedia are specific to the task they are going to perform. Others such as CakePHP and Django are generic and can be used to develop almost anything. Two things to be conscious of when selecting a framework are your comfort level with the framework and the footprint that the open source project brings with it. Having an application framework that can perform the functions you need and that you are comfortable working with must be carefully balanced with the impact that framework will have on your servers based on the volume and type of traffic. Almost all applications are going to require custom tailoring and if you don’t understand what you’re working with this can quickly become an impossible task to perform. Think of the application framework as a roll of fabric, by having it you’re saved the time of having to weave the fabric yourself but, if you don’t know how to use a needle and thread you’re going to have a hard time making a suit. The footprint of the application becomes important because a framework that comes with a large number of built in features, while requiring less coding on your part, will have more code that needs to be processed and stored on your server. The leaner a framework is the more code you have to write to customize it but a bloated framework can be potentially harmful. Finding the balance between performance and power often comes back to those three elements I started with: cost, time, and quality. The more bloated your development framework is the less code you are going to have to write saving you time and money, and yet you risk the possibility of a lower quality.
A good application framework can be a powerful tool if properly used and yet there are times when a custom solution is the route to go. Sites that require very specific functionality and high performance are going to require custom development. Unfortunately customization is directly related to risk; without proper documentation and a solid knowledge of the programming a custom site can become very expensive to maintain and troubleshoot. To avoid this problem when creating a custom solution all code should be commented, standards should be followed, and if at all possible follow a model that is widely used and documented.
When starting any project it comes down to you reflecting on your comfort level, how much time you have, what your budget is, and the quality of site that you want to produce. The conclusions you draw from this reflection will determine how you approach the development.