IM4420 Dynamic Web Applications

Students apply user-centered design principals, database structures and server side scripting to design and develop content for server-based dynamic delivery. Attention will be paid to design issues relating to the display of dynamic content on the screen and how that dynamic content will be delivered.

Syllabus and Meeting Times

IM4420 Dynamic Web Applications

Students apply user-centered design principals, database structures and server side scripting to design and develop content for server-based dynamic delivery. Attention will be paid to design issues relating to the display of dynamic content on the screen and how that dynamic content will be delivered.

Instructor: John Keston
Meeting Times and Location:
Monday / Wednesday
Room 304, Pence Building, 5:00pm – 8:00pm

Syllabus:
IM4420 Dynamic Web Apps

Week 1 | Week 2 | Week 3 | Week 4 | Week 5 | Week 6
Week 7 | Week 8 | Week 9 | Week 10 | Week 11

Week 1

Session 1: Welcome to Dynamic Web Applications. The goal of this class is to learn about the scope of web based applications and the technology used to engineer these tools. We will start by researching and implementing Open Source applications and then move into developing our own applications using PHP, MySQL and other technologies available to us. Throughout this process we will be reviewing PHP, MySQL and Javascript while developing new techniques. Due to the upper level nature of this course, it is strongly suggested that you spend extra time reviewing the concepts taught in the prerequisite course, IM3420 Advanced Scripting Languages. The following reading assignments are an introduction to Open Source and the Free Software Foundation. On Session 2 we will be watching a film about the history of the OS movement.

http://en.wikipedia.org/wiki/Open_source
An article about the Free Software Foundation by John Keston

Download: PHP Problem Set 1
1. All PHP problems within a “set” are due by the beginning of class on the next day that the class meets.
2. Each solution must be available via links on the OLS or comparable hosting and copied to the drop off drive.
3. Solutions to each problem set will be given during demonstrations on the day that they are due.
4. Grades will be collected during the solution demonstrations by an assigned classmate.

Session 2: Today we’ll be watching Revolution OS. “Revolution OS is a 2001 documentary which traces the history of GNU, Linux, Free Software and the Open Source movement. It features several interviews with prominent people, including Richard Stallman, Michael Tiemann, Linus Torvalds, Larry Augustin, Eric S. Raymond, Bruce Perens, Frank Hecker and Brian Behlendorf. It was directed by J.T.S. Moore.” – Wikipedia

After watching the film we will have a brief discussion about it and then begin going over the requirements for our first assignment. Our first assignment involves researching Open Source applications that use PHP and MySQL. We will compare and contrast a minimum of two OS projects.

Dynamic Web Applications – Research Project
Due: Session 1, Week 3

Write a six page double spaced research paper comparing and contrasting two Open Source web application projects. Use the resources listed to browse existing projects. Make sure that at least one of the projects you select uses PHP and MySQL. A prominent example for us is aim.aiiresources.com, which uses the popular content management system (CMS) – Joomla. Take your time and browse many examples until you find two that capture your interests. Make sure that you answer each of the following questions in your research. We will discuss your papers in class on Session 1, week 3. Note: please do not include WordPress as one of your examples because we are using it for the first project.

1. Why did you select each of your projects? What was it that attracted you to each example?

2. What sort of features are available in each project and how can they be applied as solutions for typical web based needs?

3. What are the requirements for implementing each example? What technologies are involved? Is a database required, etc.?

4 . Address the history of each project. What are the current versions? How long have the projects been active and who makes up the community surrounding them?

5. How would you use these projects? What kind of businesses or organizations could make use of these projects and how?

Delivery: Save your paper as a MLA 7 Google Document and share it with me at jck362 [ at ] gmail [ dot ] com. Name the file IM4420_OSResearch_<lastname>.

Resources:
www.freshmeat.net – The webs largest index of mostly unix and cross-platform software
www.sourceforge.net – A complete database of Open Source projects.
www.opensourcecms.com – Try before you bu… install.
CMS Matrix

Week 2

Session 1: Today will we discuss your research so far and take a look at some examples of Open Source projects that are currently operational. Our focus for the implementation project is WordPress so most of our discussion will revolve around this popular, stable and flexible platform. Here’s a few of the other examples we will be examining.

aim.aiiresources.com
www.audiocookbook.org
www.opensourcecms.com
www.cmsmatrix.org
www.thegoldenmean.com
bmwmcq.org.au
www.jazzclube.com

Session 2: Today I’ll be demonstrating the installation process of WordPress. Some of the tools we will look at for this process are SSH (Secure Shell), FTP, Dreamweaver, and phpMyAdmin (Web based MySQL database manager). I will demonstrate how to set the permissions and troubleshoot error messages that arise during the installation process. Be prepared by downloading the latest version of WordPress, and make sure that your hosting environment supports the minimum requirements (the OLS will work).

Dynamic Web Applications – Open Source Implementation Project
Due: Session 2, Week 5

The purpose of this project is to learn the ins and outs of the installation, implementation and customization of dynamic, web-based, Open Source applications. We will be implementing WordPress, which uses the LAMP (Linux, Apache, MySQL, PHP) architecture, on your own hosting environment or the OLS. After successfully implementing the software fully test the software and then customize it by changing the look and adding and removing features or functionality. Follow the outline below as a guideline for your procedure.

  1. Evaluate The OS Project Requirements
    • Check and compare the version of the server software required (PHP, MySQL, etc.)
    • Make sure your hosting platform is compatible (XP vs Linux / Apache vs IIS, etc.)
  2. Review the Installation Documentation (readme files, etc.)
  3. Download and Decompress the Software
  4. Upload the Software to the Server
  5. Setup the Database if Required
  6. Follow Installation Procedures
  7. Test the Installation
    • User Areas
      • View Content
      • Check Functionality
    • Administrative Areas
      • Add Content
      • Edit Content
      • Delete Content
  8. Add Live Content *
  9. Change the Look/Feel (re-skin/theme)
  10. Customize
    • Add Features
    • Change Features
    • Remove Features

WordPress Specific Requirements:
1. Extend your implementation by installing 3-5 WordPress plugins that fit the topic of your project.
2. Create a custom theme (you may start by modifying an existing WordPress theme).
3. Use “Template Tags” to extend your theme.

* Decide on a topic for your content. You might invite others to contribute content, or write abstracts of relevant articles.

Download: PHP Problem Set 2
1. All PHP problems within a “set” are due by the beginning of class on the next day that the class meets.
2. Answers must be available via links on the OLS or comparable hosting and copied to the drop off drive.
3. Solutions to each problem set will be given during demonstrations on the day that they are due.
4. Grades will be collected during the solution demonstrations by an assigned classmate.

Week 3

Session 1: In today’s class we will be discussing what you have written in your research papers, which are also due today. After that we will be attempting to implement examples of the Open Source project you selected for the implementation assignment. I will be checking everyone’s progress as you work. The goal is to get to a point where the installation allows your project to be functional at a default level, exactly like the demonstration on Session 2, week 2. Make sure you are prepared by knowing exactly which software you plan on working with and having all of the necessary login and password information for your web hosting servers and database available. It is also a good idea to complete steps 1, 2 and 3 in the outline for the implementation project (Session 2, week 2).

Netcraft (What’s that site running?)
Ultimate Linux Reference Guide for Newbies

Session 2: Now that we all have a good start on the Open Source Implementation project it is time to start discussing our next and final project which involves either extending an application like WordPress by writing plugins or hacking the framework, or developing a dynamic web application of your own. There are many types of applications that are acceptable for this project. Here’s a list of a few examples to get you started.

1. E-Commerce – Developing a custom e-commerce system is an excellent asset for clients and employers.
2. Dynamic Content Management – The point is to allow the customer to edit their content without help from a developer.
3. Forums / Message Boards – These tools are important to community sites and organizations.
4. News / Blogging – News sites and blogs are a large part of the content on the internet and can be quite useful tools.
5. Calendar / Event Manager – Another example of useful tools for community sites, and others.

Other examples may also be acceptable. Consult with me about your ideas regularly. Once you have decided what sort of application you’ll be developing you need to start the planning stage. Start by writing a summary of what the application will do followed by a list of features. Try to think of all the details and requirements for each of the features. Make notes of web sites that have similar tools and resources that apply to what you are building. Later we will discuss the formal requirements for the planning stage, but I want you to start thinking about your projects right away.

Download: PHP Problem Set 3
1. All PHP problems within a “set” are due by the beginning of class on the next day that the class meets.
2. Answers must be available via links on the OLS or comparable hosting and copied to the drop off drive.
3. Solutions to each problem set will be given during demonstrations on the day that they are due.
4. Grades will be collected during the solution demonstrations by an assigned classmate.

Week 4

Session 1: Another aspect of using WordPress involves what are called Template Tags. We will discuss and demonstrate the use of template tags in class today. Also, planning a small scale dynamic web application can be tricky, but there are some ways to think ahead and make the process a little less daunting. Let’s use the example of a service list manager. A service list is a list of contacts for a business that require promotional material on a regular basis. Artists and record labels use service lists to inform the media about events, new releases, showings and other news. In order to create a dynamic web application to maintain a service list and record transactions a number of questions need to be answered.

  1. Do you write from the ground up or use a framework?
    1. If a framework, which one?
    2. If not, plan ahead for an extended timeline
    3. Consider security issues and cost of development cycle
  2. What features will be required? Details regarding each feature are very important in the planning stage.
  3. Is a database needed? Most often it will be needed, but in some cases it’s not necessary.
  4. Illustrate the forms and other web pages in the application. This will help you discover features and structure.
  5. Define the database schema. Think about how many tables will be needed and how the tables are joined.

Session 2: In class today we will be reviewing some SQL syntax, focusing on the DDL. I’ll be going over a few examples of CREATE TABLE statements and discussing the datatypes involved. In lab I’ll be looking at everyone’s progress so far. The Implementation Projects are due a week from today. At this stage you should be finished with steps 1 through 8 and working on steps 9 and 10. Manipulating the look/feel/design and adding/customizing features is the most time consuming aspect of this kind of development so make sure that you’re spending most of your time on these steps.

CREATE TABLE statement examples

Reading Assignments:
Explanation of Database Indexes
MySQL Documentation for the ENUM datatype
MySQL Documentation for Foreign Key Constraints

Template Tag Explanation Assignment:
In class on session 1 of week 5 please be prepared to describe the details about one of the template tags that you are using in your implementation project. Do research so that you can tell us what features the template tag has and what arguments are necessary to produce those behaviors.

Week 5

Session 1: Today we will use phpMyAdmin to start analyzing the WordPress database schema. How do the tables included interact? What sort of data is stored and how can we access it in ways distinct from the WordPress framework? How would we write a plugin to access data differently? These are some of the questions we’ll be going over as well as an exercise in using the DML to retrieve data from WordPress in our own format.

Web Applications Final Project Plan Requirements
(In progress)

1. Title Page (include TOC, etc.)
2. Project Overview
3. Feature List (w/Brief Descriptions for each Feature)
4. Database Flowchart / Schema
5. Wireframes (make sure forms are included)

Also: Template Tag Explanation Assignment Due Today

Session 2: Today we will be presenting our Open Source Implementation Projects. Presenting your project is required and worth a minimum of one half of one grade point. As you present, discuss why you selected the software you used, how you customized the features and what you did to change the visual nature of the front end.

The following code example displays a tag cloud in your sidebar and then prevents tag with only one topic from being show in the cloud.

<?php
    $defaults = array('smallest' => 11, 'largest' => 27, 'unit' => 'px', 'number' => 100, 
                      'format' => 'array', 'orderby' => 'name', 'order' => 'ASC');
    $tags_array = wp_tag_cloud($defaults);
    //print_r($tags_array);    
    $needle = ' topics';
    foreach( $tags_array as $tag ) {
        if ( stristr($tag,$needle) ) {
            echo( $tag." " );
        }
    }
?>

Week 6

Session 1: PHP has become one of the most popular ways to do server side scripting for web applications. The reasons include that it’s Open Source, easy to learn, flexible, operates on most OSes, interfaces with most popular database platforms, very stable, portable, and get’s updated and improved regularly. But, as we have learned, development from the ground up can be daunting. So what if you have a custom project that needs to be fully developed without using an existing code base? There are ways to get a jump start on this process. “CodeIgnitor is a powerful PHP framework with a very small footprint, built for PHP coders who need a simple and elegant toolkit to create full-featured web applications.” (codeignitor.com) Let take a brief look at CodeIgnitor and then continue learning about plugin development for WordPress.

WordPress Plugin Developer Resources:
Writing a WordPress Plugin
Your First WordPress Plugin (Video)

Session 2: Today we will analyze some examples that are further developed. We will look at a working version of these examples and then take a quick look at some of the source code, paying particular attention to new functions and techniques.

Due on Week 7 Session 2
WordPress Plugin Exercise:
1. Write a WordPress plugin to display the “age” of a post
2. Display the days, hours, and minutes in a human readable form
3. Try using the template tag the_time()
4. Try also using the WordPress function human_time_diff()

Week 7

Session 1: I have another example to show from the Service List Manager project. This tool is nearly complete, so I’ll also be discussing what sort of finishing touches that might be applied to this kind of application. Also, let’s continue looking at your source code examples. I would like everyone to show at least one example before week 10.

Final Project Schedule:
Session 2, Week 7 – Final project concept presentations (explain to class your concept)
Session 1, Week 8 – Final project development plans due (paper copies of finished devplans)
Session 2, Week 8 – First of three progress reports (show code, get feedback, etc.)
Session 1, Week 9 – Second progress report
Session 1, Week 10 – Discuss take home final essay questions
Session 1, Week 10 – Third progress report
Week 11 – Final presentations

Session 2: Template engines are another tool to help build complex web based applications. Usually the purpose of a template engine is to help separate the presentation layer from the logic, or back-end. One example of an Open Source templates engine project is Smarty. Here’s a brief description from their website:

Although Smarty is known as a “Template Engine”, it would be more accurately described as a “Template/Presentation Framework.” That is, it provides the programmer and template designer with a wealth of tools to automate tasks commonly dealt with at the presentation layer of an application. I stress the word Framework because Smarty is not a simple tag-replacing template engine. Although it can be used for such a simple purpose, its focus is on quick and painless development and deployment of your application, while maintaining high-performance, scalability, security and future growth.

Week 8

Session 1: AJAX (Asynchronous Javascript and XML) is an excellent technique to extend the function of web based applications beyond the traditional methods. Without AJAX dynamic content is delivered to the browser by either displaying a new page or re-rendering the whole existing page. This approach has several limitations that are solved by using AJAX. For example, as new content becomes available for the page, portions of the screen can be changed without completely refreshing the browser. Advanced AJAX techniques are currently in use to create online applications that behave almost exactly like locally installed software. Google Spreadsheets are a good example of this. Google Spreadsheets work in a very similar fashion to Excel and allow importing and exporting in XLS or CSV format. Thus an online application can have the advantage of access on any computer with internet access and still behave like traditional, locally installed software.

There are hundreds of AJAX resources and tutorials available online as well as books. Here’s a list of some of the more popular online resources available:
JQuery
MooTools
ajaxwith.com
The AJAX Revolution
Round-up of 30 AJAX Tutorials
Getting Started with AJAX in jQuery

Session 2:
Steal This Film is a documentation of events during the Spring of 2006 regarding actions taken by the MPAA against the Swedish Bittorrent tracker site The Pirate Bay. The film highlights the futility of action by the MPAA and RIAA against file sharing, and also provides an insight into how the application Bittorrent works as well as torrent tracking database and search site tools. The film can be downloaded (without violation of any copyright laws) from stealthisfilm.com.

Week 9

Session 1: As we near the end of the quarter, let’s continue to look at examples of source code from your projects. One other issue surrounding web applications and the web in general is how to find image, audio and other types of media to include in our works. We are all familiar with Corbis and the like for photography, but where can we go for free audio content, free images, film and so on? Here’s a list of resources for finding free media files to use in your own work:

Creative Commons – This portal to free media provides a license to protect free content from being commercialized.
The Freesound Project – This excellent library offers over 1 terabyte of sounds (not songs) licensed under Creative Commons.
ccMixter – A community music site featuring remixes also licensed under Creative Commons.
archive.org – Internet digital library formed in 1996. Content includes film, music, images and more.
The Prelinger Archives – Over 1,000 public domain films from the worlds of government and advertising.

Session 2: Fine tuning the source code in your applications typically happens in the development stage, however sometimes (either due to a lack of planning, or unrealistic deadlines) the priority is to make it work and fix it later if there’s time and a budget. Today I’ll show you a couple examples of how I have fine tuned my project. Most of these examples do not change the functionality, but shorten the code or make it more efficient.

Week 10

Session 1: Today we will be discussing and distributing the take home final essay questions. Although the curriculum in our program focuses heavily on the technical aspects of interactive media design and development, it is important to examine the purpose and direction of this technology. These final essay questions focus on the impact of web applications on you and your community as well as society at large. Draw on your experiences implementing Open Source applications, developing your own tools, and from the films and reading assignments in class to form your answers. Please write a minimum of one double spaced page per question. Due on Session 2 week 11.

1. Web applications have a significant impact on the way we lead our lives today. Social networks like Twitter, Facebook, and Myspace along with e-commerce sites like eBay, Amazon and iTunes have changed the way our society operates. Beyond email and instant messaging, how have web applications effected your day to day activities? Are these effects on our lives positive or negative and in what way?

2. If you had the means to create any kind of web enabled, interactive application that doesn’t currently exist what would it do? How would it improve your personal life, workflow, art, or community?

3. Out of all the web applications we have looked at in this class, what do you find the most functional and well developed? What makes this application stand out? What purpose does it serve and how do organizations and individuals use this software?

4. What role do you think Open Source software and Open Content will play in the future? Will sites like Wikipedia play a role or are they too unreliable to be taken seriously? Will Open Source software be viable or are we better off using propriety software?

Session 2: Final project progress reports are scheduled for today.

Week 11

Session 1: Final work day. Early presentations will be accepted today as well.

Session 2: Final presentations. Take home final essay questions due.

Social Capital within the Open Source Community

April 29th, 2004

The Free Software Foundation Organizational Profile
The Free Software Foundation’s website, [http://www.gnu.org/] uses the acronym GNU for its domain, which is a recursive acronym. It stands for “GNU’s not Unix.” The Free Software Foundation (FSF) is a nonprofit foundation that receives the majority of its funding from individual donors. The FSF represents the Free Software movement on a global scale which is made evident by the thirty languages available for browsing their website, each just one click away.

The FSF is made up of a board of directors and has members from around the world within the global free software community. Among the board of directors is the founder of the GNU project, Richard Stallman, a leading figure of the Free Software movement who also founded the FSF. Stallman is a talented programmer whose projects include Emacs (a powerful and popular computer code editing tool) and GCC (a flexible compiler – a tool which converts computer code into an executable program). Both of these projects are part of GNU, which, along with many other components, are part of what is known as the GNU/Linux operating system, or more commonly, Linux. Stallman founded the FSF in 1985 to support the GNU project and promote the Free Software movement. Stallman is currently more involved in promoting the movement than he is writing software. He regularly gives speeches around the world and has published a book of essays called, Free Software, Free Society: Selected Essays of Richard M. Stallman.

One of the key concepts of the Free Software movement is how the term “free” is used. The FSF suggests that we think of “Free as in Freedom”. This does not mean free as in “free beer”, which although a disappointment to some, gives free software some major advantages over proprietary software (software that has closed source, and is marketed and sold, like Microsoft Office). The FSF’s website provides a few points to help us understand what they mean by “free as in freedom”, in relation to computer software.

• The freedom to run the program, for any purpose (freedom 0).
• The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.
• The freedom to redistribute copies so you can help your neighbor (freedom 2).
• The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this.
[http://www.gnu.org]

Notice that the phrase, “access to the source code is a precondition for this” is appended to both freedom one and freedom three. Open Source (a related software movement) also has this requirement, but it is a term rejected by Stallman and the FSF. Stallman argues that the Open Source movement makes concessions which undermine the goals of the Free Software movement. However, the two movements coexist peacefully and actually work together productively.

So, why are there two camps? Stallman believes that it has to do with a “fear of freedom.” The term “free” when looked at with all the ethical issues attached to it can make people become uneasy. Perhaps this is why the Open Source movement (founded in 1998 by John “maddog” Hall, Larry Augustin, Eric S. Raymond, Bruce Perens, and others) has become so popular.

Raymond is probably the single person most identified with the Open Source movement; he was and remains its self-described principal “theorist”, but does not claim to lead it in any exclusive sense. In contrast with the Free Software movement, which has always been essentially directed by Stallman, the Open Source movement is “steered” by a loose collegiums of elders that includes Raymond its other cofounders, and such notables as Linus Torvalds (the original developer of the Linux kernel), Larry Wall, and Guido Van Rossum.

The mission of the FSF is to educate people about, promote, protect, and encourage the development of Free Software. The FSF’s extensive website, [http://www.gnu.org/] is the primary tool used for these tasks. Hundreds, or perhaps thousands, of links are found on the site including a detailed history of the FSF, an endless collection of articles regarding their philosophy, well-organized resources for software developers, information on licenses like the GPL, complete GNU documentation, membership programs, and much more.

The FSF has programs not only to educate the general public about the Free Software movement, but for educators to get free software into schools and educate students on its use. There is even a link to an article on how to convince your school administrator to utilize free software. Many schools around the world are starting to get involved in using GNU/Linux and other free software in their programs. This is especially true in Europe and Canada where the anti-trust practices of Microsoft aren’t tolerated as readily as they are in the United States.

The leftist political views of the FSF are apparent. Stallman openly endorsed the DFL presidential candidate Dennis Kucinich. The promotional efforts of the FSF reflect their political persuasions and are largely a grassroots effort. It is unlikely that we will be seeing advertisements for GNU projects on television anytime soon. However, as large companies like IBM, Hewlett Packard, and Novell start to embrace Linux and Open Source, public awareness will increase. Recently IBM ran a television campaign that directly addressed their endorsement of Open Source software. The FSF has European and Indian branches to address the needs of software users and developers around the world and uses each branch to collect donations. Donations are rewarded with a membership benefits including an invitation to the annual meeting, email forwarding, and a CD-ROM membership card that contains a bootable version of GNU/Linux.

Tirelessly protecting and defending the rights of free software users and developers is a constant task for the FSF. A staggering array of legal issues face the software industry. Many of them effect the Free Software movement directly. The European Commission and European Parliament have mobilized to introduce software patents in Europe similar to debilitating patent laws in the United States. This legislation could lead to arbitrary patents on mathematical equations that could threaten the diversity of the software industry worldwide. Widespread opposition from both commercial and free software developers has done little to stop the Commission from moving forward with its plan. Many other legal issues are poised to redefine the software industry, including a variety of litigation involving Microsoft, SCO, and IBM.

Developing Free and Open Source Software
The FSF also plays a pivotal role in encouraging the widespread development of free software. One way that this is done is through the use of the GNU General Public License or GPL. According to the FSF the GPL is how more than half of all Free Software is licensed. This includes a wide variety of Open Source software. Although the FSF only approves of a short list of licenses including the GPL, Open Source software can be licensed under a wide array of licenses. Some of these are similar to the GPL, while others may have some restrictions.

The GPL is quite long and detailed, but one of the central themes is that any software improvements made to software released under it must also be released as free software. This means that if you release software under the GPL, you will not have to compete with developers who repackage your original work for profit, because this is illegal. Stallman calls this idea “Copyleft.” While patent-laws and copyrights are used to protect the profits of publishers and software corporations, the “Copyleft” principal within the GPL uses the legal system to protect the freedom of the software under it. Thus the GPL keeps free software free, preventing it from becoming proprietary software.

The Open Source Definition (OSD) is maintained by another nonprofit called the Open Source Initiative (OSI). Their website can be found at [http://www.opensource.org/]. The OSD is a set of guidelines that explain what it means for software to be Open Source. The first statement made in the OSD is that providing access to the source code is not enough for the software to qualify. Ten detailed requirements must be met. These requirements include free redistribution, antidiscrimination conditions, and license prerequisites.

Free and Open Source Software as an Approach to Global Action
Free and Open Source software represents an attractive alternative to the expensive, proprietary, and closed software we find ourselves using day to day. The commercial software industry profits from charging frequent upgrade fees and leading their customers to believe that there is no alternative to the software that they are using. Often critical security exploits in commercial software leave users struggling with spyware (annoying software that installs itself without the users consent and creates popup ads or collects personal data about the user), harmful viruses, or lost data. The Washington Times reported that worldwide virus and worm attacks cost business an estimated $83 billion in the month of February, 2004 alone. More serious attention paid to computer security exploits by commercial software manufacturers would significantly reduce these losses. In the Free and Open Source software development model, often hundreds of programmers worldwide are working on an individual project simultaneously. Usually security exploits are spotted and repaired before any significant amount of damage is done. The Free and Open Source community is concerned about its users because they are users themselves and are less motivated by profit.

Profit motivation in the software business has created billionaires, but has it created the best software? Those involved in the Free and Open Source community would argue that it has not and that their software has unique advantages over the commercial variety. First of all if users would like to add new features or change the software to suit their purposes, they are welcomed and encouraged to do so. The best that proprietary software offers is an online suggestion box. Second, improvements to the software are made rapidly and efficiently due to the sheer volume of developers involved in some projects. New versions of many Free and Open Source projects are released on a daily basis. The web browser Mozilla is an example of this; users can download a daily build which has all the upgrades and bug fixed from the previous day. Proprietary software releases happen much more infrequently. Sometimes users must wait a year or more for a new version, only to find that it costs up to hundreds of dollars to buy and still doesn’t include that one feature they were hoping for.

Another aspect of Free and Open Source software is the incredible number of projects freely available for users to install or demonstrate. Virtually any viable software concept one can imagine has already been developed and submitted to the GPL or some other public license and new projects get submitted on the hour. Vast databases that track these projects are available at [http://www.sourceforge.net] and [http://www.freshmeat.net]. SourceForge.net for example hosts a whopping 80,230 projects (166,397 as of January 8, 2008), most of them under one form of free software license or another. This number increases daily. Freshmeat.net hosts 32,773 projects (46,991 as of January 8, 2008). Sixty-four percent of these are under the GNU General Public License. Some of these projects are huge operations with hundreds of developers involved, all donating their time to enhance and improve the software they are dedicated to as contributors and users. Many more are one-person-projects that provide a very specific need to a niche of users. Whatever the case, the participation in the Free and Open Source software community is vast and enthusiastic.

Social Capital in the Free and Open Source Software Community
What motivates thousands of talented developers, whose time would fetch top dollar on commercial projects, to work for no pay on software that anyone can use, free of charge? Most often there is no monetary reward, but there is merit and recognition within the community and the satisfaction that the contributor has helped develop software that not only benefits them, but a global community of other computer users and developers.

While working for profit-motivated corporations, programmers are often required to sign noncompete and nondisclosure agreements. Nondisclosures ensure that all the creative concepts and code written to realize them is the property of the corporation. A noncompete may require that the employee not work in a similar field for a year or more after leaving the company. These policies may leave programmers, without a vested interest in the corporation, feeling used and under appreciated. Programming is about creative problem solving, and when programmers come up with particularly ingenious solutions the first thing many of them want to do is share it with people who will understand and appreciate what they have accomplished. The secrecy of closed source proprietary software does not give developers that satisfaction.

What the developers of Free and Open Source software are providing is social capital that is enriching a vibrant global community. This example of social capital is quite different from the examples that Carmen Sirianni and Lewis Friedland present in their piece Social Capital. The social capital examples they discuss are generally localized community associations such as churches or veterans groups where people meet face-to-face. These face-to-face meetings allow people to get to know each other and develop friendships and a desire to help each other voluntarily.

Most of the communication that happens within the Free and Open Source software community is not face-to-face. It is not even on traditional communications devices like the telephone. A majority of the communication within this community is via the Internet. Email, instant messaging, forums, and the like are the most typical way that Free and Open Source software users and developers interact. In-person communication is often an ideal situation, but not as always practical. The impracticality of face-to-face interaction is compounded when developers from many different countries are working on the same project. However, incredibly concise and efficient communication goes on within the community. One of the benefits to communication via the Internet is that in the case of email, forums, and even some chat software, archives of the messages are stored that can be referred back to at any time. Often when questions are answered in online forums, those answers can apply to hundreds or thousands of other users. Simple Internet searching can provide these answers to those who need them.

About the Author
John Keston has been working in the technology industry since 1987. He has been involved in the web development field as a programmer since 1995 and as an instructor since 2002. During his time in the field he has made use of a wide variety of Open Source software including GNU/Linux, MySQL, Perl, PHP, WordPress, Firefox, Audacity, and many others. John not only uses Open Source software for development, but as a teaching tool in the Interactive Media Design program at the Art Institutes International. A recent class project involved selecting an Open Source application, implementing it, and then modifying it to include a complete new set of features. The project is now used by the school’s registrar, administrators, and faculty to schedule classes and meetings within the facilities. After some more finishing touches, the project will be resubmitted to the GPL as a new branch for other schools to use freely.

Microsoft-California Class Action Settlement:
[http://www.microsoftcalsettlement.com/]

Sources:
[http://www.fsf.org/]
[http://www.gnu.org/]
[http://www.slashdot.org/]
[http://www.wikipedia.org/]
[http://www.washtimes.com/business/20040229-105349-9778r.htm]
Siriani, Carmen and Friedland, Lewis 1995. “Social Capital”, presented at the Social Capital session of the American Sociological Association, August.