Developing with Open Source Software

From 2010-11-27

Today, according to w3techs, more than two thirds of the web servers are based on Open Source Software (OSS). Also according to the same source, around 77% of websites are written with Open Source languages like PHP, Perl, Ruby, Python. This is a good reason to start being interested in OSS. Taking it a bit further, it seems that OSS is already ripe enough to provide plenty of tools which are enough to create any imaginable HTML based website. Here, I'm going to present some of the advantages and disadvantages of OSS for the Web Development and Design, and then show several empirically chosen apps.

But let's slow down a bit in order to examine a few obstacles that may keep you from stepping forward exploring.

  • You are getting a code without any warranty. You can't blame or sue anyone, it's all your responsibility if something breaks or totally crashes, so you can easily loose a lot of your work or waste your time.
  • Also, if you lack any programming skills, you may find yourself in a situation when the software stops working and you can't fix it to continue your work.
  • But, even if you're an experienced programmer, you'll need sometimes a lot of time to spot and understand a problem, and solve it.
  • Sometimes OSS lacks a good documentation, and there is no proper support, so getting an instant help is impossible. Usually, Google is a good compensation to this lack of documentation.
  • In addition to that there might be some security risks with OSS which is something to consider. For example, if you're a client who bought an OSS based website and didn't care for updates or bug fixes for a while, and in the meanwhile some vulnerabilities were exploited by a malicious hacker – some of your precious data can be lost, or even worse – the information about your clients can be disclosed. These situations however can be avoided by carefully checking and updating the software regularly. Sometimes the software will notify about required important updates. When many users have the same code, it's easier to deal with hack attacks.

Yet, if you still feel like trying, you might find that OSS has many benefits to offer

Generally, today OSS for Web is very attractive - it has better interfaces, performs well, saves time and money and provides greater productivity and more interesting tools than proprietary software does. The OSS developers can direct most of their efforts into creativity, rather than into solving how to program yet another great website from scratch.

For some inspiration, here are some examples of websites made with different platforms CMSs or Frameworks:



Ruby on Rails:,,

What unites CMS's and Frameworks is that they both provide a basis for rapid web development. Using frameworks means more programming and using CMS means less programming. There are several open source languages for each of which there's a Framework and/or a CMS, but the most prominent is PHP, and the popular CMSs based on it are: WordPress, Drupal and Joomla with usage popularity descending in this order. The learning of each of the CMS's requires some time, which can also be of the 'on demand' character, and we will need some organizational software to edit and manage the files, that is:

The development environments.

Netbeans and Eclipse are two powerful IDEs. But Netbeans really shines in it's easiness of installation and use. It provides a good auto-complete functionality for web languages, code versioninig, debugging, project management and a good UIs with macros, window tabs and more. Although it's written in Java, the experience shows that it's quite fast and stable. You can really enjoy working on CMS or Framework with these. Netbeans is available for Windows, Mac, Linux and Solaris.

Disadvantages: There isn't good GUI editor for HTML. The resulting web page can be tested in a web browser, but for a beginner this might be not enough. NetBeans rescans files after each SVN update, this slow down the computer for a while. Need to install the xdebug debugger separately. Advantages: Great for R&D: searching, exploring, learning the code and writing a new one. It's very easy to edit HTML/CSS/JS files also in a team, and you can easily track the file changes – who did what, where and when. If you were used to Visual Studio, it will give you more or less the same development experience. Can be downloaded as a small version for the PHP only or Ruby only, and then extended by very easy downloading of plug-ins.

One can install it straight in the box, but there are many subjective and empirical reasons why it can be better on OSS platform. One thing to remember, is that when talking the OSS language, you start thinking in the OSS patterns, so the next logical step would be having the:

Operating System.

You can use other operating system, but Linux is just built for programming and development. Also knowing how to use it also makes it easy to operate your web server. You can choose any programming language you like – Python or Ruby or Java and most of the editors will automatically highlight the syntax. You should enjoy the graphical UI, and networking with Microsoft servers if needed. Downloading and installing a new software is easy – a matter of copying and pasting or typing several words – no need to visit websites, download, unpack etc. Might not be a good choice for beginners, but for those curious, it can be installed alongside with other operating system on the same machine.

Disadvantages: You need to type! If you're not used to this, it may become a disadvantage. It's easier to operate the system through the shell (the console or command line). Also, it's advised to have the memory and CPU indicators somewhere on the panel: if you decide to try a new program, you need to know if it doesn't eat to much of these. Regarding the hardware, it's advised first to check if it's compatible with your Linux. The worst thing that can happen however, is that you can become a 'geek', which means, that you will read a lot about how things work, and have a massive knowledge about almost anything regarding how your system works. Advantages: Ubuntu linux is very easy to install, it's a Plug and Play system, you can have one screen and still have multiple desktops. It's best for programming, and good for almost every open source application. You can easily have the 'guts' or the code for almost any program, to see and learn how things are done. It provides apps for the most of the basic needs – office, drawing, 3d, planning, web etc. Ubuntu also has a list for supported software, which is even more stable than 'average'. Web Server.

There are many OSS web servers (web proxies). Apache is the most popular and Nginx is the next by popularity. Apache seems to be a lot easier to operate, and has good documentation. Nginx is sometimes more difficult for beginners, but it's faster, and requires less memory resources.

Database Software

MySQL server is widely used for web applications. There are many clients, MySQL Query Browser and PHPMyAdmin are amongst the rest. The latter is a very popular web-client with very rich set of functionalities. The former is a lightweight and not as functionally rich.

Other Web Development Tools

Firebug is a well known OSS addon for Firefox. It can be viewed as the GUI editor for websites, because you can move things around and add something new or remove it, change styles and page's content and debug javascripts. Also there are some interesting add ons for it, like FirePicker, which allows you to change colors 'on the fly' with a colorpicker.

Other Helpful Software. KDESvn – helps managing SVN data, Meld is a diff tool, where you can compare two files by content, and merge them. Gcolor2 is a simple colorpicker, which can show color values from the screen. Virtual Machine.

If you'll ever need to run some other OS - most likely at work – just install VirtualBox. You can easily install Windows or other OS in it. Of course, you will need to have the licenses as required.

To conclude

Driven only by curiosity and unproven disbelief that OSS can be powerful and satisfying for my web development needs, while exploring the unlimited possibilities of OSS, I became a big addict of it. I never was a gamer, therefore it was quite natural to me to switch to Linux with its rich availability of tools. You may also find yourself playing with OSS, just to see if you like it and how it can actually satisfy your needs. If you'll have enough patience, subsequently, you will find the real power of OSS beyond all the cons – the big amount of powerful tools for the web development, free as in free speech, and satisfying as in I can't get no satisfaction.


You have a list of obstacles that might discourage someone from using OSS. 1) You are getting a code without any warranty. -- This is often the case with paid-for software as well... Ever try suing Microsoft when you get a Blue Screen of Death and lose your work? 2) you may find yourself in a situation when the software stops working and you can't fix it to continue your work. Yeah, in the paid-for-software world this is typically known as "patch Tuesday/reboot Wednesday". You know... that wonderful feeling Wednesday morning when Microsoft has pushed a bunch of "security updates" overnight, remotely rebooted your computer, and now half of your code doesn't work anymore and you have no idea why. 3) you'll need sometimes a lot of time to spot and understand a problem, and solve it. This is true for just about everything. Even mechanics sometimes spend a lot of time trying to spot and understand a problem ('till they realize it was just vapor lock! : P) 4)Sometimes OSS lacks a good documentation, and there is no proper support, so getting an instant help is impossible. Usually, Google is a good compensation to this lack of documentation. Because Microsoft is known for their stellar documentation :D 5)In addition to that there might be some security risks with OSS which is something to consider. When compared to what? There's a reason more than 2/3 servers are open source... because OSS is typically much more secure than what Micro$oft sells. 6)When many users have the same code, it's easier to deal with hack attacks. How so? Imagine you are a security consultant in charge of defending against hacking attacks. A hacker discovers a vulnerability in a piece of code--every user you protect is running this same code... so, the hacker is able to attack every single user all at once. I think that would be harder to deal with than if only a small portion of your users were running the vulnerable code and were under attack...

Hi bogdanvarlamov, I enjoyed reading your comments :) That's the reason why I switched to OSS, several year ago. Regarding the (6) - again I agree with you. But OSS isn't perfect (like all the other things in the world?), and it can intimidate these 'newcomers' who didn't use it and don't know how they can actually benefit from its power. That is why I poured some negativity from the beginning - which is not as bad as it seems after all.