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.
Building A Successful Web Application
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:
1) Engineering
2) Coding
3) Debugging
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.