Thursday, 26 June 2008

Open Source vs Library vs Ad Hoc

Depending on your requirements, there are different approaches that may be taken in creating a website. What are they (lets pretend you haven’t already read the title)? What advantages do they bring? What do we at Bluhalo advocate?

The first one we will consider is open source software. Although there are a number of different licence flavours, at its most basic open source software can be thought of as free code. What this code does depends entirely on the type of software. For example, there are entire ecommerce solutions available that can be installed and simply require customisation to use. At the other end of the open source spectrum (that we are interested in) would be simple components, intended to achieve a very specific purpose. Somewhere in the middle is the concept of frameworks – varying quantities of code designed to facilitate ad hoc development (more on that later).

So why would you go the open source route? Assuming you can find something that meets your needs, speed of development is greatly increased. Also, if the community for the project is active, it has likely been well tested, meaning there should be very few bugs. The flip side of this is that if there is little community interest or input, projects can stagnate and die - what may initially appear to be a great solution ends up requiring far more time to correct than anticipated, and since it requires working on existing code it potentially forces the developer to work in a way that might not best match their work flow.

To get over the last point, you come to the possibility of building and maintaining a library of your own code. While it can take time to accumulate a meaningful library, it will be code that you know intimately so should be fully aware of what it is capable of. Rigorous testing would also allow you to overcome the lack of a community in ensuring that it is stable and reliable. Precisely what you maintain is very much down to personal preference – some prefer it to be a number of often used functions, while others may prefer to create extensive frameworks for different types of project that can easily be rolled out at need.

The problem with the latter (and with the larger open source solutions) is that they don’t always precisely match requirements – there may be redundant code or features, or they simply may not provide functionality required by the client. Here we come to ad hoc development – crafting a web application precisely according to the needs of the client. While this is more time consuming, it does mean that the final solution will more exactly match what was requested.

As with everything in life, there are advantages and disadvantages to each. If only we could pick and choose! So how is it done at Bluhalo? Here we can give a knowing and reassuring smile. :) We aren’t locked into any one practise.

For example, a smaller business in need of an ecommerce solution with a limited budget will be pointed toward our Dreams division. In this case, they will carefully customise an open source solution with which they are intimately familiar (i.e. tried and tested!) to give the client the best possible balance for their needs.

We also use an open source framework, Symfony, that is gaining a large following around the world. As I mentioned earlier, a framework is designed to aid development – it prevents the programmers from having to re-invent the wheel on every site and instead allows them to concentrate on the nuts and bolts of what makes the clients’ site unique. This has a hugely positive affect on the time it takes to develop a proprietary site.

We also maintain a code library - if a client wanted a simple mp3 player (yay, finally a multimedia example!), we would start with our library player. This is an existing basic player that I wrote previously, and then adjust it functionally and visually to precisely meet the clients requirements. Why waste their valuable studio time unnecessarily?

Basically then, we don’t fall into the trap of relying on a single practice and forcing it around the requirements we are given. The needs for each site will be unique, so we adjust our methodology according to what will give you the best result.

Nick

No comments: