Humming away quietly in the background are most likely three little things that do more than you realize to make your e-learning content an effective resource for your learners, students or trainees: they are web servers, databases, and scripting languages. As I’m focusing on open source applications, I’m going to look at the ‘Three Musketeers’ (“all for one” and all that) of web-based e-learning content management, distribution, and delivery: Apache, MySQL and PHP/Perl/Python, and some examples of how they’re bundled in *AMP packages for Windows, Mac, and Linux operating systems.
Apache HTTP Server (or just “Apache” ) is web server software notable for playing a key role in the initial growth of the World Wide Web. Apache is developed and maintained by an open community of developers under the aegis of the Apache Software Foundation. The application is available for a wide variety of operating systems, including Unix, GNU, FreeBSD, Linux, Solaris, Novell NetWare, Mac OS X, Microsoft Windows, OS/2, TPF, and eComStation. Released under the Apache License, Apache is characterized as open source software. Apache is the most popular HTTP server software in use today. The server is primarily used to serve both static content and dynamic Web pages on the World Wide Web.
Many web applications are designed with the Apache environment and features in mind. Apache is redistributed as part of various proprietary software packages including the Oracle Database and the IBM WebSphere application server. Mac OS X integrates Apache as its built-in web server and as support for its WebObjects application server. It is also supported by Borland in the Kylix and Delphi development tools and is included with many Linux distributions. Apache is also used for a range of other tasks where content needs to be distributed in a secure and reliable way, and of course to serve e-learning courseware via LMSs like Moodle and CMSs like Drupal.
MySQL is a relational database management system (RDBMS). The name is an acronym for “My Structured Query Language.” The program runs as a server providing multi-user access to a number of databases. The project has made its source code available under the terms of the GNU General Public License, as well as under a variety of proprietary agreements. MySQL is often used in open source and free-to-use software projects that require a full-featured database management system. Examples include WordPress (which powers the E-Learning Curve Blog among many others), phpBB and other software built on the *AMP software stack. It is also used in many high-profile, large-scale World Wide Web products including Wikipedia, Google and Facebook.
PHP, or PHP: Hypertext Preprocessor, is a widely used, general-purpose scripting language that was originally designed to produce dynamic web pages. It can be embedded into HTML and generally runs on a web server, which needs to be configured to process PHP code and create web page content from it. It can be deployed on most web servers and on almost every operating system and platform. The PHP script was created originally in 1995 and has been in continuous development ever since. The main implementation of PHP is now produced by The PHP Group and serves as the de facto standard for PHP as there is no formal specification. PHP is free-to-use software released under the PHP License, which is incompatible with the GNU General Public License (GPL) because of restrictions on the use of the term PHP.
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then it has undergone many changes and revisions and become popular amongst programmers. Perl borrows features from other programming languages including C, shell scripting (sh), AWK, and sed. The language provides powerful text processing facilities without the arbitrary data length limits of many contemporary Unix tools, facilitating easy manipulation of text files. It is also used for graphics programming, system administration, network programming, applications that require database access and CGI programming on the Web. According to Doug Sheppard (2000) Perl is “the Swiss Army chainsaw of programming languages” due to its flexibility and adaptability.
Python is a general-purpose high-level programming language. Its design philosophy emphasizes code readability. Python claims to “[combine] remarkable power with very clear syntax”, and its standard library is large and comprehensive. Python supports multiple programming paradigms (primarily object oriented, imperative, and functional) and features a fully dynamic type system and automatic memory management, similar to Perl, Ruby, Scheme, and Tcl. Like other dynamic languages, Python is often used as a scripting language. The language has an open, community-based development model managed by the non-profit Python Software Foundation, which maintains the de facto definition of the language in CPython, the reference implementation.
As you’ve probably figured out by now through my use of large, bold caps, the origin of the *AMP acronym refers to the package of software programs (or solution stack) commonly used together to run dynamic web sites on servers.
The package consists of Apache, MySQL, and PHP, Perl, or Python, as well as one of these operating systems:
- Linux (LAMP)
- Windows (WAMP)
- Mac OS (MAMP)
The components for a *AMP server can be built and installed from source code, but this requires more effort and technical proficiency than other automated approaches such as installing them through a Linux distribution’s package management system or (in Windows or Mac OS) deploying a ready-to-use turnkey *AMP stack appliance which does not require any manual configuration or setup. Wikipedia has kindly provided us with a comprehensive list of *AMP packages: click here to view the list.
The most popular *AMP package is called XAMPP, a comprehensive and easy-to-use software stack . It consists of the Apache HTTP Server, MySQL database, and interpreters for scripts written in the PHP and Perl programming languages. The program is released under the terms of the GNU General Public License and acts as a free web server capable of serving dynamic pages. XAMPP is available for Microsoft Windows, Linux, Solaris, and Mac OS X, and is mainly used for web development projects. XAMPP’s designers intended it for use only as a development tool to allow website designers and programmers to test their work on their own computers without any access to the Internet. To make this as easy as possible, many important security features are disabled by default. In practice, however, XAMPP is sometimes used to actually serve web pages on the World Wide Web. A special tool is provided to password-protect the most important parts of the package. XAMPP also provides support for creating and manipulating databases in MySQL and SQLite among others.
As I don’t know Perl or Python, I use a ‘lite’ WAMP package called EasyPHP (see Figure 1) for the majority of my content management and production workflows.
EasyPHP enables me to develop, experiment, and test components of my website, blog, LMS, CMS and other environments via my localhost server using Apache, MySQL (via PHPMyAdmin), and PHP.
Of course, the open source nature of these stacks means that they are usually bundled with Linux distributions, and if you’re a Mac owner like me (respect!) you might be pleasantly surprised to discover that Unix-kernelled Macs already have Apache server built in to the operating system, and Mac OS X 10.5 and above ships with PHP and is MySQL-ready. When used in combination, they represent a solution stack of technologies that support application servers. Other such stacks include Apple Computer’s WebObjects, Java/Java EE, and Microsoft’s .NET architecture. The MAMP installer contains two versions: MAMP (freeware, released under the GNU General Public License) and MAMP PRO which contains additional features and retails for US$59.
Next time: Back to e-learning authoring tools…
General Python FAQ. python.org. Python Software Foundation. [Internet] Available from: http://www.python.org/doc/faq/general/#what-is-python. Accessed November 21 2009.
Sheppard, D. (2000). Beginner’s Introduction to Perl. O’Reilly Media. [Internet] Available from: http://www.perl.com/pub/a/2000/10/begperl1.html. Accessed November 20 2009.
December 16 2009 03:00 pm | e-learning
3 Responses to “Open Source E-Learning Development 21: content distribution and solution stacks”