An Introduction to 
Open Source Software and 
Web Application Development 
Trevor Thornton 
North Carolina State University Libraries
Open source software is… 
… made available with a license that 
permits users to freely run, study, modify 
and re-distribute 
… distributed with its source code in a 
human readable format (enabling study, 
modification) 
… typically developed in an public, 
collaborative manner
Pre-history of open source 
1950s-1960s : Software customarily 
distributed with source, few restrictions 
1970s : Software companies begin to 
implement measures to prevent users from 
accessing source code 
1980 : U.S. copyright protection extended to 
computer programs
GNU Project 
Founded in 1983 by Richard Stallman 
(formerly of MIT) to develop software free 
from restrictions 
• GNU Operating System 
• GNU General Public License (GPL)
Free Software Foundation 
Founded by Stallman in 1985, published the 
first formal definition of “free software”, 
based on 4 freedoms: 
… to run the program for any purpose 
… to study how the program works, and modify it as 
needed (access to the source code is a precondition) 
… to redistribute copies 
… to distribute copies of your modified versions
Linux 
First version developed by Linus Torvalds in 
1991, released under the GPL in 1992 – 
thousands of developers contribute to its 
further development 
In 1997, Eric Raymond published 
“The Cathedral and the Bazaar” extolling the 
benefits of distributed development 
"Given enough eyeballs, 
all bugs are shallow"
Open source 
development principles 
• Users as co-developers 
• Release early, release often 
• Multiple versions (stable + development) 
• Modularity 
• Dynamic decision-making structure
Open source licenses 
Copyright protections/restrictions apply 
automatically 
Licenses allow a copyright holder to grant 
permissions to users 
Open Source Initiative provides criteria for 
assessing open source licenses 
“The Open Source Definition” 
opensource.org/osd
Common open source licenses 
• GNU GPL 
• MIT 
• Apache License 
• BSD (Berkeley Software Distribution) 
• Mozilla Public License 
• & many, many more – see: 
opensource.org/licenses
Web Applications 
• Application software that runs in a web 
browser and is delivered over a network 
(not installed on client computer) 
• Advantages: 
– Easy to roll out to multiple users 
– Minimal system requirements for client 
– Cross-platform/cross-device compatibility 
– Increasingly rich user experience as web 
technologies improve
3-tiered structure 
Presentation 
Web browser (client) – HTML, CSS, JavaScript 
Application logic 
PHP/Python/Ruby/Perl/etc… 
Storage 
Database, file systems, indexes
Typical architecture 
“client side” “server side” 
web browser 
(HTTP client) 
HTTP server 
application logic 
database 
HTTP request 
HTTP response 
file 
storage search 
index
The LAMP stack 
An archetypal model for server side 
architecture with open-source components 
Linux 
Apache 
MySQL 
PHP
Linux 
• Open-source operating system based on 
the Linux kernel 
• Many distributions available that bundle 
other software 
• Most prevalent OS for web servers 
• Windows Server often used instead 
(WAMP)
Apache HTTP server 
• Accepts incoming requests and returns a 
response, typically either by: 
– Returning a static document 
– Passing the request to a script that generates 
a response ‘on-the-fly’ 
• Developed and maintained collectively by 
the Apache Software Foundation
MySQL 
• Relational Database Management System 
(RDBMS) 
• Relational databases store data in tables 
• Other open-source alternatives: 
– PostgreSQL : Object-relational database 
– NoSQL databases : CouchDB, MongoDB, 
Redis, triple-stores
PHP 
• General purpose programming language 
typically used for server-side scripting 
• Runtime system : software that interprets 
and executes code written in a particular 
language 
• Other popular languages for web apps: 
Python, Ruby, Perl
Apache Solr 
• Open-source enterprise search engine 
maintained by Apache Software 
Foundation 
• Provides full-text search, faceting, hit 
highlighting, grouping, etc. 
• Most widely-used enterprise search 
system on the web
HTML 
• Structural foundation for web content 
• Document Object Model (DOM) : 
representation of page structure within the 
browser 
• HTML5 provides new APIs to support 
native media playback, local data storage, 
2-D drawing, improved interactivity,…
CSS (Cascading Style Sheets) 
• Used to define visual presentation of web 
content 
• Identifies elements in the DOM and 
assigns them display attributes 
• CSS3 supports animation and 
transformation of objects
JavaScript 
• Fundamental component of most web 
applications, enabling advanced 
client-side functionality via: 
– Response to user input 
– Manipulation of the DOM 
– Asynchronous communication with server 
• Node.js : server-side runtime system for 
JavaScript
Web application frameworks 
• Provide basic functionality shared by most 
web applications 
• Allow developers to concentrate on 
solutions to new problems 
• Promote code re-use
Common web application 
framework features 
• Routing/URL mapping 
• Page templates 
• Database interaction 
• Security 
• Conventions for organizing code
Popular frameworks 
• Ruby on Rails (Ruby) 
• Django (Python) 
• PHP frameworks : Laravel, Zend, 
Symfony, Code Igniter, … 
• JavaScript frameworks : Angular, Ember, 
Backbone, …
Levels of involvement in open 
source projects 
• Implementing an existing application 
without modification 
• Modifying an existing application to suit 
local needs 
• Contributing to an existing project 
• Developing something completely new 
and releasing it with an open license
Open source communities 
• Users/implementers : share knowledge 
through lists, groups, etc. 
• Developers : contribute code, identify 
issues and suggest fixes 
• Supporters : provide financial support 
to ensure long-term sustainability of open 
source projects
email: trthorn2@ncsu.edu 
Twitter: @trevorthornton 
Github: trevorthornton 
slides (eventually): 
slideshare.net/trevorthornton/presentations 
NCSU Digital Library Initiatives: 
lib.ncsu.edu/dli/projects 
github.com/NCSU-Libraries

An Introduction to Open Source Software and Web Application Development

  • 1.
    An Introduction to Open Source Software and Web Application Development Trevor Thornton North Carolina State University Libraries
  • 2.
    Open source softwareis… … made available with a license that permits users to freely run, study, modify and re-distribute … distributed with its source code in a human readable format (enabling study, modification) … typically developed in an public, collaborative manner
  • 3.
    Pre-history of opensource 1950s-1960s : Software customarily distributed with source, few restrictions 1970s : Software companies begin to implement measures to prevent users from accessing source code 1980 : U.S. copyright protection extended to computer programs
  • 4.
    GNU Project Foundedin 1983 by Richard Stallman (formerly of MIT) to develop software free from restrictions • GNU Operating System • GNU General Public License (GPL)
  • 5.
    Free Software Foundation Founded by Stallman in 1985, published the first formal definition of “free software”, based on 4 freedoms: … to run the program for any purpose … to study how the program works, and modify it as needed (access to the source code is a precondition) … to redistribute copies … to distribute copies of your modified versions
  • 6.
    Linux First versiondeveloped by Linus Torvalds in 1991, released under the GPL in 1992 – thousands of developers contribute to its further development In 1997, Eric Raymond published “The Cathedral and the Bazaar” extolling the benefits of distributed development "Given enough eyeballs, all bugs are shallow"
  • 7.
    Open source developmentprinciples • Users as co-developers • Release early, release often • Multiple versions (stable + development) • Modularity • Dynamic decision-making structure
  • 8.
    Open source licenses Copyright protections/restrictions apply automatically Licenses allow a copyright holder to grant permissions to users Open Source Initiative provides criteria for assessing open source licenses “The Open Source Definition” opensource.org/osd
  • 9.
    Common open sourcelicenses • GNU GPL • MIT • Apache License • BSD (Berkeley Software Distribution) • Mozilla Public License • & many, many more – see: opensource.org/licenses
  • 10.
    Web Applications •Application software that runs in a web browser and is delivered over a network (not installed on client computer) • Advantages: – Easy to roll out to multiple users – Minimal system requirements for client – Cross-platform/cross-device compatibility – Increasingly rich user experience as web technologies improve
  • 11.
    3-tiered structure Presentation Web browser (client) – HTML, CSS, JavaScript Application logic PHP/Python/Ruby/Perl/etc… Storage Database, file systems, indexes
  • 12.
    Typical architecture “clientside” “server side” web browser (HTTP client) HTTP server application logic database HTTP request HTTP response file storage search index
  • 13.
    The LAMP stack An archetypal model for server side architecture with open-source components Linux Apache MySQL PHP
  • 14.
    Linux • Open-sourceoperating system based on the Linux kernel • Many distributions available that bundle other software • Most prevalent OS for web servers • Windows Server often used instead (WAMP)
  • 15.
    Apache HTTP server • Accepts incoming requests and returns a response, typically either by: – Returning a static document – Passing the request to a script that generates a response ‘on-the-fly’ • Developed and maintained collectively by the Apache Software Foundation
  • 16.
    MySQL • RelationalDatabase Management System (RDBMS) • Relational databases store data in tables • Other open-source alternatives: – PostgreSQL : Object-relational database – NoSQL databases : CouchDB, MongoDB, Redis, triple-stores
  • 17.
    PHP • Generalpurpose programming language typically used for server-side scripting • Runtime system : software that interprets and executes code written in a particular language • Other popular languages for web apps: Python, Ruby, Perl
  • 18.
    Apache Solr •Open-source enterprise search engine maintained by Apache Software Foundation • Provides full-text search, faceting, hit highlighting, grouping, etc. • Most widely-used enterprise search system on the web
  • 19.
    HTML • Structuralfoundation for web content • Document Object Model (DOM) : representation of page structure within the browser • HTML5 provides new APIs to support native media playback, local data storage, 2-D drawing, improved interactivity,…
  • 20.
    CSS (Cascading StyleSheets) • Used to define visual presentation of web content • Identifies elements in the DOM and assigns them display attributes • CSS3 supports animation and transformation of objects
  • 21.
    JavaScript • Fundamentalcomponent of most web applications, enabling advanced client-side functionality via: – Response to user input – Manipulation of the DOM – Asynchronous communication with server • Node.js : server-side runtime system for JavaScript
  • 22.
    Web application frameworks • Provide basic functionality shared by most web applications • Allow developers to concentrate on solutions to new problems • Promote code re-use
  • 23.
    Common web application framework features • Routing/URL mapping • Page templates • Database interaction • Security • Conventions for organizing code
  • 24.
    Popular frameworks •Ruby on Rails (Ruby) • Django (Python) • PHP frameworks : Laravel, Zend, Symfony, Code Igniter, … • JavaScript frameworks : Angular, Ember, Backbone, …
  • 25.
    Levels of involvementin open source projects • Implementing an existing application without modification • Modifying an existing application to suit local needs • Contributing to an existing project • Developing something completely new and releasing it with an open license
  • 26.
    Open source communities • Users/implementers : share knowledge through lists, groups, etc. • Developers : contribute code, identify issues and suggest fixes • Supporters : provide financial support to ensure long-term sustainability of open source projects
  • 27.
    email: trthorn2@ncsu.edu Twitter:@trevorthornton Github: trevorthornton slides (eventually): slideshare.net/trevorthornton/presentations NCSU Digital Library Initiatives: lib.ncsu.edu/dli/projects github.com/NCSU-Libraries