Prior to the birth of the Internet, it was assumed that all software
cost money, and it could not be altered or re-packaged in any way by the
end user. After all, who would spend countless hours creating commercial
grade software just to give it away for free, not to mention letting others
modify and re-distribute it? Then, along came the Internet, and it enabled
hundreds of thousands of programmers from around the world to come together
in a single community to share their ideas. This created a concept, called
"Open Source", in which programmers distributed their software along with
its source code free of charge under a license called General Public License
or GPL. The beauty of this concept is that other programmers can improve
upon the original program and redistribute it without violating the terms of
its license. One would ask, why would programmers do this? The answer is
simple, recognition. Most programmers who are heavily involved in the Open
Source community, are just that, programmers. They are not business people,
but mostly academic types who derive personal satisfaction from their work
being recognized and praised by others, rather than monetary compensation.
Their contribution to the Open Source community is equivalent to that of
doctors and scientists who publish research articles in trade journals.
Thus the birth of the Linux operating system, Apache web server, Qmail mail server, Proftpd FTP server, BIND DNS server, MySQL database server, and thousands more similar applications which are as good if not better than their commercially available counterparts. The only factor that distinguished this software from its commercial alternative, is that there was no single entity (we will call it "big brother") that offered support. Therefore to implement an support Open Source software, the end user needed to do independent research, and communicate with other members of the Open Source community. The largest and most obvious benefit of Open Source is that the software is absolutely free to those who know where to find it. Another is the freedom to modify the code for your own needs as you see fit without paying licensing fees, or getting anyone's permission. This allows you to upgrade and customize your own software as needed, without having to rely on and pay "big brother" to do it for you when and if they decide it's necessary. Generally, commercial software makers have a direct financial incentive to get users to upgrade, so you may also be forced to pay for upgrades that are truly not needed in order to continue receiving support for the product you purchased.
What type of Open Source applications are available, and where do you find more information on them? There is one simple answer, Google. Google, itself being run entirely on an Open Source software platform, has a wealth of articles and email communications from the Open Source community that probably addresses every bit of code ever written, as well as all known bugs that were ever found. The amazing thing is that you will most likely get an answer to any problem you are having with an Open Source product from Google faster than you would is you had a "big brother" product, and called their support line. For example, if you want to find an Open Source mail server, you would simply do a search in Google for "open source mail server". There are a staggering 12,000,000 results, so as you see paying for a commercial mail server would be a complete waste of company money. Now let's say you downloaded an open source program written in PHP, and you can't seem to get past an error that says, "Parse error: parse error, unexpected T_STRING", and you want to find out what is causing that output, you would simply do a search on Google for "Parse error: parse error, unexpected T_STRING". You will then see over 72,000 articles related to that particular error with many solutions. As another example, let's say you want to write your own program in PHP, but you are not sure what PHP's Regular Expression syntax is, you would do a search for "PHP regular expressions". A result would be over 500,000 articles, including manuals, examples and real code. The bottom line is, if what you are trying to do has ever been done by any of the hundreds of thousands of Open Source programmers, you will find it in Google, and if it hasn't you will most likely find out how close someone has gotten, and maybe even be the one to find the missing link. If you do not want to tackle the project, you would of course again turn to Google and search for "open source developers", and find over 9,000,000 results.
For maximum functionality, speed, reliability, and security, we highly recommend using the PHP scripting language with a MySQL database, hosted on a Linux platform for development of all back-end web applications (in case you are wondering, all of these are 100% Open Source). An application written in PHP typically requires 30%-50% less code and development effort than if it was written in any other language. PHP is also very easy to learn, it has the most free online documentation and support, and it is increasingly being deployed in large scale enterprise applications by companies like IBM (click here to see IBM's PHP efforts) and Oracle (click here to read Oracle's reasons for choosing PHP). With over 10 years of developing web applications for ourselves and thousands of clients from around the world, we have yet to come across a task which could not be handled using this platform.
For a sample of open source web applications, please go to AutoInstaller.com, and click on any of the program icons. To see a desktop open source application in action, click here to download the Firefox web browser.
The process to developing a successful web application is very much similar to building a house, car, or any other tangible product, as it employs the same basic principles. It involves three different phases, each one being equally important:
The Engineering Phase involves coming up with the concept and process of
events (user or external input) which will lead to desired output. Just like
an architect coming up with a design, and creating blueprints for a new
construction project, a web application must start with a vision of what it
is supposed to do, and how it should do it. The only difference is that in
engineering a web application, the person doing the actual engineering does
not necessarily have to be a programmer or even know how to code. A summary
of the inner workings of a program can be laid out in any format, a diagram,
itemized list, written overview, or any other way that can be effective in
communicating the thoughts of the engineer to a programmer. Despite the
apparent lack of formal structure, this phase can indeed be the most
challenging, as it requires creative thinking.
The Coding Phase takes the software concept or blueprint created during the engineering phase, and transforms it into computer code which will run on a web server. This is also equivalent to a building contractor assembling all parts of a structure that the architect has rendered on paper. This phase can be very time consuming, and will most likely require a skilled programmer. During this phase, the programmer will not only create the code, but also test each segment for syntax errors to make sure it executes correctly, and performs all tasks as required in the engineering phase.
The Debugging Phase is all about testing, and fixing bugs. One of the biggest challenges to building any application is error handling, which is what the program does if it receives unintended input. This is where the Debugging Phase comes into play, as it thoroughly tests the application with many different types of input, and creates routines which return a correct response from the program for each type of error. Although most error handling is usually created in the Coding Phase, the worst types of errors are usually uncovered during debugging. The developer must have the foresight to predict every possible input, and create output which will make end users aware of their mistakes, and encourage correct input, as bad error handling can mean the difference between a sale being made, or a customer going elsewhere.
In summary, every web application needs equal effort to be made during all three development phases in order to maximize its effectiveness, and yield the highest return on investment.Click here to tell us how we can help you.