Developing with Open Source Software
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:
Drupal: www.fastcompany.com, www.popsugar.com, www.cargoh.com
Django: www.lawrence.com, www.everyblock.com, www.torontolife.com
Ruby on Rails: www.yellowpages.com, www.groupon.com, www.shopify.com
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
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.