Handwritten Text Recognition for manuscripts and early printed texts
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 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
3. 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
4. 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)
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 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"
7. Open source
development principles
• 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 source licenses
• 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
12. Typical architecture
“client side” “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-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)
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
• 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
17. 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
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
• 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,…
20. 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
21. 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
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
25. 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
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