Bits and Pieces of E-Commerce
E-commerce is an excessively broad term that we define here narrowly to mean "that software that one would need to sell products or services over the World Wide Web."
King of Shreds and Patches
Sensibly enough, the first thing one needs if one wants to open one's doors on the Web is a "web server." Virtually every distribution includes the Apache web server. One of the more famous bits of Internet trivia is how Apache got its name. The National Center for Supercomputing Applications (NCSA) created the first Free Software for the Web: both the NCSA Mosaic browser and the NCSA web server. When NCSA abandoned this code, a number of people who were using it began to share improvements and modifications (known as patches) with one another. Eventually it grew well beyond its humble origins, and the people maintaining it called it Apache (as a jokenot for any reference to Native Americans, but because it is "a patchy" server). Ha ha. This is how programmers and engineers amuse themselves.
Everything you ever wanted to know (and many things you didn't) about Apache may be learned at its web site (http://www.apache.org/).
A Place for My Stuff
Whether you use a ready-made "storefront" application or you develop your own, you need a database to store information about inventory, prices, customers, orders, and so forth. You have several to choose from.
MySQL (http://www.mysql.com/)
MySQL is one of the most widely used Free Software databases. It is small and fast, and it offers a useful and significant subset of the full SQL language specification. MySQL lacks a number of features for higher-end applications. It does not support sub selects. It does not support transactions or views, which the database-savvy will know are difficult to do without in some contexts. Still, with careful design, a MySQL database meets the needs of all but the largest on-line sales businesses.
MySQL version 4, which is in beta as this is being written, does add transaction support to MySQL. That's the fun part of Free Software. If it doesn't do it today, it will probably do it tomorrow, and you don't have to pay when it does.
NOTE
Of course, the lack of payment doesn't mean there is no cost. Conversion of a database from one version to another might require a dump and reload of the entire database. Someone who knows how to do this will have to do this. The software is free, but not without cost. That annoying "TCO" again...
PostgreSQL (http://postgresql.org/)
PostgreSQL offers a very sophisticated database server with transactions, views, inheritance, and many other features. It offers a very sophisticated system of "versioning" integrity that guarantees transaction integrity without ever blocking a transaction while waiting for another to complete. Read all about it at its web site.
There are several other Free Software databases, but these two are the major ones.
No Movie Without a Script
If you will write custom E-business applications, you will need a programming language or web scripting language. In the commercial world, Java Servlets/Java Server Pages are often used. In the Windows world, you have Active Server Pages (ASP). But what about Free Software? At the lowest level, you have C and C++. You can directly link C/C++ code to Apache as Apache modules for incredibly fast performance; or you can invoke C/C++ programs through the Common Gateway Interface (CGI), which is easy but slow. But why in the world would you develop web applications in these languages unless you have a network connection so fast that your CPU can't fill it (and trust me, if you are a small business building web sites on PCs, you don't).
Instead, you are probably going to choose something else. I'd say you've got two excellent choices here:
Perl (http://www.perl.com/)
Perl is the "Swiss Army Knife" of scripting languages. In E-commerce, you will probably use it to write standalone CGI scripts (http://search.cpan.org/modlist/World_Wide_Web) or you will use mod_perl (http://perl.apache.org/) to make perl work almost as fast as a C/C++ module.
PHP (http://www.php.net/)
The PHP Hypertext Preprocessor works very much like JSP or ASP, but the language is more "perl-like." This is an unbelievably popular web scripting language. As a long-time programmer, I remain unconvinced that it is more readable or maintainable to have an HTML document with executable code embedded in it than it is to have a program with HTML tags embedded in it, but the popularity of PHP, JSP, and ASP seems to prove me wrong. Of all the web scripting languages, I will say that PHP has saved me the most time.
I Don't Want to Work, I Just Want to Bang on my Site All Day
The software packages listed above give you everything you need to build virtually any web application you can imagine. But does every small-business person have to become a fully qualified web developer? Although I think everyone should learn to program a little bit, expecting someone who is running a business to develop his or her own web system is probably a bit unreasonable. Fortunately, you don't have to.
I recommend learning Apache, PHP, and perl. But you do not have to. You must merely have them installed to make use of the packages we will cover now.
NOTE
To me, buying a computer and knowing nothing about programming is like buying a jetliner and learning only how to taxi it around the ground.
CAUTION
Please understand that I have only casually looked at the products linked in this article. If the book happens, I will closely research these (and any other) products to select the best I can find. Use these links as a starting point, but I do not try to claim these particular packages are enough to build a business. This article is the question. I hope the book, SOHO Linux, will be the answer.
123tkShop (http://123tkshop.org/)
123tkShop is the guts of an on-line store. This is a German project, and although it has English support, you can tell that it is not English-fluent. This is where learning a little PHP enables you to make things look a bit more professional. If, however, you sell primarily to German-speaking countries, you are all set. This project describes itself as beta, and I would agree. But using someone else's beta as a starting point for your production system can save you a lot of effort. I ran through their demo on the web site and it appears stable and functional. Amazon.com it isn't, but it is a good start.
Merchant-Store (http://www.Merchant-Store.com/)
These folks have hit upon a formula that I think will likely spell success for them. They give away (under the GPL) their storefront application. Then they sell credit card transaction-processing services (although their product will also interface through Verisign Signio and Authorize.net), and they sell store hosting services. This strikes me as a pretty smart business model. Because the code is written in perl, a little perl programming skill should allow you to interface to any payment-processing solution you want. This is the most mature, free on-line store product I have seen so far. Also, if one may judge by look and feel, I have made purchases from on-line stores that use this product.