LAMP for Small Business

My article from the now-defunct PC Magazine Philippines:

Today's business applications are predominantly web-based. This is one of the lasting legacies of the Internet boom of the 1990s, which introduced the world to the simplicity and robustness of the web server. Post-Internet boom, the IT industry has seen rise of new tools for web applications along with the software designers and programmers skilled in building them.

Web-based applications follow a three-tier architecture: the web server, which generates the web pages for presentation to a web browser; some programming language which implements business logic; and the database which holds the data for the applications. This combination is commonly repeated in whatever software stack you choose to use, whether it's Microsoft's .NET or Sun's J2EE.

What is LAMP?
In the world of open source, the equivalent software stack is called LAMP, an acronym that stands for Linux, Apache, MySQL, and PHP/Perl/Python. The term first appeared in 1998 in an article in the German IT magazine c't, and was widely adopted soon after. There are other acronyms for other open source combinations (see sidebar) but LAMP is the most common and is used as a catch-all term.

For this combination, Apache provides the presentation layer. Apache runs close 80% of web servers on the Internet today. It's the web server that's used for reference J2EE implementation. It's also used as the basis of some commercial web servers, such as IBM WebSphere. Its popularity comes from its extensibility: you can find almost any type of plugin for use with Apache.

Either PHP, Perl, or Python are used for the business logic. These are interpreted languages whose code may be embedded within a web page. The code is executed by the web server when the page is called by a web browser. The learning curve for generating simple interactive web pages with these languages is quite low, and yet they are also flexible enough to build complex web applications. For web applications, PHP, Perl, or Python are implemented as plugins to Apache. Of the three, PHP is arguably the most popular.

Finally, data is stored in MySQL, a small and relatively fast relational database. Sometimes, MySQL is substitued with PostgreSQL, another relational database, leading to what some people would call a LAPP software stack.

So how does one get the LAMP components working together? Apache, MySQL/PostgreSQL, and PHP/Perl/Python have been shipping with major Linux distributions for some time now, though users have had to perform some manual steps to actually get them installed. Some newer distributions, such as XAMPP and Ubuntu Server, are specifically built for LAMP and automatically install the components.

LAMP also makes sense when using shared commercial hosting services. Almost all web hosters offer a LAMP stack by default, and these come out cheaper than other web application stacks.

LAMP Applications
Developing applications for LAMP is straightforward. One of the most basic LAMP applications, for example, is a simple database query performed through a web browser; this would take just a few minutes to cobble together.

Full-blown business applications reflecting the complexity of business are another matter. Yes, LAMP continues to serve as the underlying software stack, but it's now dependent on the skill of the software designers and programmers to put it together. Large business applications like this can take anywhere up to a few months to code and test.

Fortunately, there are several open source business applications built around LAMP. Many of these meet general needs of companies so they're usable upon installation. Because they are open source, developers can customize them so as to fit the remainder of the company's requirements. Here are some example LAMP applications:

* Wordpress is a content management system that is very popular as a blogging engine. It supports multiple users, roles, categorization of entries, and its own internal search engine. It has several extension plugins that include discussion forums, surveys, and a light e-commerce system. Companies can use Wordpress to run internal and external web sites.

* Mediawiki is another content management system but follows a wiki rather than a blog concept. Whereas a blog typically follows choronological entries, a wiki is built on links that can easily be added to any page. Mediawiki is most notable as the engine used in the Wikipedia project. Like Wordpress, Mediawiki can also be used to run internal and external web sites.

* eGroupWare is groupware suite. It contains modules for a contacts database, personal calendars, group scheduling, notifications and alarms, email, todos, notes, and phone calls. It can be used as a basic CRM system.

* phpGroupware is another groupware suite. It has over 50 application modules such as calendar, address book, projects manager, to-do lists, notes, email, and file-mananger.

* SQL Ledger is a double entry accounting system. The entire system is linked through a chart of accounts. Each item in inventory is linked to income, expense, inventory and tax accounts. When items are sold and purchased the accounts are automatically updated. It generates invoices, packing lists, income statement, balance sheets, sales, work and purchase orders, and statements, receipts and checks. SQL Ledger uses Perl instead of PHP for its code.

All this is just the tip of the iceberg. There are hundreds of other LAMP applications listed in software directories like Freshmeat and SourceForge. Even if a company decides that none of these pre-built customizable applications meet their needs, they do show the range that the LAMP architecture is capable of.