Open source technology

moneygascityInternet and Web Development

Dec 8, 2013 (3 years and 6 months ago)

1,427 views







Open source technology



www.kankaanpaa.fi/a&o


Version: 19.2.2010
Update: 7.5.2010
Update: 3.8.2010
2
Open source technology

Open source software — software whose source code is published and made available to the
public, enabling anyone to copy, modify and redistribute the source code without paying royalties
or fees. Open source code evolves through community cooperation. These communities are
composed of individual programmers as well as very large companies. This document includes
some examples of open-source software products. Document is based on Wikipedia, the free
encyclopedia.


INDEX

page
1. Apache — HTTP web server 3
2. Tomcat web server — web container 6
3. Drupal — content management system 8
4. Eclipse — software development environment comprising an integrated
development environment (IDE)
13
5. FreeBSD — operating system derived from Unix 16
6. GNU Project — “a sufficient body of free software”. 26
7. Joomla — content management system 30
8. Linux — operating system based on Unix 32
9. Mediawiki — wiki server software, the software that runs Wikipedia 44
10.

MongoDB — document-oriented, non-relational database 61
11.

Moodle — course management system 67
12.

Mozilla Firefox — web browser 72
13.

Mozilla Thunderbird — e-mail client 89
14.

OpenBSD — operating system derived from Unix 93
15.

OpenOffice.org — office suite 101
16.

OpenSolaris — Unix Operating System from Sun Microsystems 116
17.

osCommerce — ecommerce 120
18.

PeaZip — File archiver 123
19.

Stockfish — chess engine series, considered to be one of the strongest chess
programs of the world
126
20.

Symbian — real time mobile operating system 127
21.

TYPO3 — content management system 139
22.

WordPress — content management system — blog software 142
23.

7-Zip — File archiver 147


3
1. Apache — HTTP web server

The Apache HTTP Server, commonly referred to as Apache, is web server software notable for
playing a key role in the initial growth of the World Wide Web. In 2009 it became the first web
server software to surpass the 100 million web site milestone. Apache was the first viable
alternative to the Netscape Communications Corporation web server (currently known as Oracle
iPlanet Web Server), and has since evolved to rival other Unix-based web servers in terms of
functionality and performance. The majority of web servers using Apache run a Unix-like operating
system.

Apache is developed and maintained by an open community of developers under the auspices 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.

Since April 1996 Apache has been the most popular HTTP server software in use. As of February
2010 Apache served over 54.46% of all websites and over 66% of the million busiest.

History and name

The pre-release versions (before 0.6.2) of the Apache web server software was created by Robert
McCool, who was heavily involved with the National Center for Supercomputing Applications web
server, known simply as NCSA HTTPd. When McCool left NCSA in mid-1994, the development
of httpd stalled, leaving a variety of patches for improvements circulating through e-mails. These
patches were provided by a number of other developers besides McCool: Brian Behlendorf, Roy
Fielding, Rob Hartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert S. Thau, Andrew
Wilson, Eric Hagberg, Frank Peters and Nicolas Pioch, and they thus helped to form the original
"Apache Group".

There have been two explanations of the project's name. According to the Apache Foundation, the
name was chosen out of respect for the Native American tribe of Apache (Indé), well-known for
their endurance and their skills in warfare. However, the original FAQ on the Apache Server
project's website, from 1996 to 2001, claimed that "The result after combining [the NCSA httpd
patches] was a patchy server. The first explanation was supported at an Apache Conference and in
an interview in 2000 by Brian Behlendorf, who said that the name connoted "Take no prisoners. Be
kind of aggressive and kick some ass". Behlendorf then contradicted this in a 2007 interview,
stating that "The Apache server isn't named in honor of Geronimo's tribe" but that so many
revisions were sent in that "the group called it 'a patchy Web server'". Both explanations are
probably appropriate.

The very first version (0.6.2) of publicly distributed Apache was released in April 1995. The 1.0
version was released on December 1, 1995.

Version 2 of the Apache server was a substantial re-write of much of the Apache 1.x code, with a
strong focus on further modularization and the development of a portability layer, the Apache
Portable Runtime. The Apache 2.x core has several major enhancements over Apache 1.x. These
include UNIX threading, better support for non-Unix platforms (such as Microsoft Windows), a
new Apache API, and IPv6 support. The first alpha release of Apache 2 was in March 2000, with
the first general availability release on April 6, 2002.
4

Version 2.2 introduced a more flexible authorization API. It also features improved cache modules
and proxy modules.

Features

Apache supports a variety of features, many implemented as compiled modules which extend the
core functionality. These can range from server-side programming language support to
authentication schemes. Some common language interfaces support Perl, Python, Tcl, and PHP.
Popular authentication modules include mod_access, mod_auth, mod_digest, and mod_auth_digest,
the successor to mod_digest. A sample of other features include SSL and TLS support (mod_ssl), a
proxy module (mod_proxy), a URL rewriter (also known as a rewrite engine, implemented under
mod_rewrite), custom log files (mod_log_config), and filtering support (mod_include and
mod_ext_filter).

Popular compression methods on Apache include the external extension module, mod_gzip,
implemented to help with reduction of the size (weight) of web pages served over HTTP.
ModSecurity is an open source intrusion detection and prevention engine for web applications.
Apache logs can be analyzed through a web browser using free scripts such as AWStats/W3Perl or
Visitors.

Virtual hosting allows one Apache installation to serve many different actual websites. For
example, one machine with one Apache installation could simultaneously serve www.example.com,
www.test.com, test47.test-server.test.com, etc.

Apache features configurable error messages, DBMS-based authentication databases, and content
negotiation. It is also supported by several graphical user interfaces (GUIs).

Use

Apache is primarily used to serve both static content and dynamic Web pages on the World Wide
Web. Many web applications are designed expecting the environment and features that Apache
provides.

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 in some way
by Borland in the Kylix and Delphi development tools. Apache is included with Novell NetWare
6.5, where it is the default web server. Apache is included with many Linux distributions.

Apache is used for many other tasks where content needs to be made available in a secure and
reliable way. One example is sharing files from a personal computer over the Internet. A user who
has Apache installed on their desktop can put arbitrary files in Apache's document root which can
then be shared.

Programmers developing web applications often use a locally installed version of Apache in order
to preview and test code as it is being developed.

5
Microsoft Internet Information Services (IIS) is the main competitor to Apache, followed by Sun
Microsystems' Sun Java System Web Server and a host of other applications such as Zeus Web
Server.

Performance

Although the main design goal of Apache is not to be the "fastest" web server, Apache does have
performance comparable to other "high-performance" web servers. Instead of implementing a single
architecture, Apache provides a variety of MultiProcessing Modules (MPMs) which allow Apache
to run in a process-based, hybrid (process and thread) or event-hybrid mode, to better match the
demands of each particular infrastructure. This implies that the choice of correct MPM and the
correct configuration is important. Where compromises in performance need to be made, the design
of Apache is to reduce latency and increase throughput, relative to simply handling more requests,
thus ensuring consistent and reliable processing of requests within reasonable time-frames.

License

The software license under which software from the Apache Foundation is distributed is a
distinctive part of the Apache HTTP Server's history and presence in the open-source software
community. The Apache License allows for the distribution of both open and closed source
derivations of the source code.

The Free Software Foundation does not consider the Apache License to be compatible with version
2 of the GNU General Public License (GPL) in that software licensed under the Apache License
cannot be integrated with software that is distributed under the GPL:

This is a free software license but it is incompatible with the GPL. The Apache Software License is
incompatible with the GPL because it has a specific requirement that is not in the GPL: it has
certain patent termination cases that the GPL does not require. We don't think those patent
termination cases are inherently a bad idea, but nonetheless they are incompatible with the GNU
GPL.

However, version 3 of the GPL includes a provision which allows it to be compatible with licenses
that have patent retaliation clauses, including the Apache License.

The name Apache is a registered trademark and may only be used with the trademark holder's
express permission.




6
2. Tomcat web server — web container
Apache Tomcat (or Jakarta Tomcat or simply Tomcat) is an open source servlet container
developed by the Apache Software Foundation (ASF). Tomcat implements the Java Servlet and the
JavaServer Pages (JSP) specifications from Sun Microsystems, and provides a "pure Java" HTTP
web server environment for Java code to run.
Tomcat should not be confused with the Apache web server, which is a C implementation of an
HTTP web server; these two web servers are not bundled together. Apache Tomcat includes tools
for configuration and management, but can also be configured by editing XML configuration files.
Components
Tomcat version 4.x was released with Catalina (a redesigned servlet container), Coyote (an HTTP
connector) and Jasper (a redesigned JSP engine).
Catalina
Catalina is Tomcat's servlet container. Catalina implements Sun Microsystems' specifications for
servlet and JavaServer Pages (JSP). The architect for Catalina was Craig McClanahan.
Coyote
Coyote is Tomcat's HTTP Connector component that supports the HTTP 1.1 protocol for the web
server or application container. Coyote listens for incoming connections on a specific TCP port on
the server and forwards the request to the Tomcat Engine to process the request and send back a
response to the requesting client.
Jasper
Jasper is Tomcat's JSP Engine. Tomcat 5.x uses Jasper 2, which is an implementation of the Sun
Microsystems's JavaServer Pages 2.0 specification. Jasper parses JSP files to compile them into
Java code as servlets (that can be handled by Catalina). At runtime, Jasper is able to automatically
detect JSP file changes and recompile them.
Jasper 2
From Jasper to Jasper 2, important features were added:
 JSP Tag library pooling - Each tag markup in JSP file is handled by a tag handler class. Tag
handler class objects can be pooled and reused in the whole JSP servlet.
 Background JSP compilation - While recompiling modified JSP Java code, the older version
is still available for server requests. The older JSP servlet is deleted once the new JSP
servlet has been recompiled.
 Recompile JSP when included page changes - Pages can be inserted and included into a JSP
at compile time. The JSP will not only be automatically recompiled with JSP file changes
but also with included page changes.
 JDT Java compiler - Jasper 2 can use the Eclipse JDT Java compiler instead of Ant and
javac.
7
Features
Tomcat 5.x
 Implements the Servlet 2.4 and JSP 2.0 specifications
 Reduced garbage collection, improved performance and scalability
 Native Windows and Unix wrappers for platform integration
 Faster JSP parsing
Deployment
Experienced users can build and install Tomcat manually from source code after installing such
dependencies as the Java Development Kit and the Apache Ant build tool.
Depending on the usage scenario, Tomcat may either be deployed as a standalone pure-Java web
server or as a component in a more complex configuration in which it serves as a back-end which
handles requests passed to it from a general purpose web server such as Apache, using a connector
such as mod_jk.
History
Tomcat started off as a servlet reference implementation by James Duncan Davidson, a software
architect at Sun Microsystems. He later helped make the project open source and played a key role
in its donation by Sun to the Apache Software Foundation. The Apache Ant software build
automation tool was developed as a side-effect of the creation of Tomcat as an open source project.
Davidson had initially hoped that the project would become open sourced and, since many open
source projects had O'Reilly books associated with them featuring an animal on the cover, he
wanted to name the project after an animal. He came up with Tomcat since he reasoned the animal
represented something that could fend for itself. Although the tomcat was already in use for another
O'Reilly title, his wish to see an animal cover eventually came true when O'Reilly published their
Tomcat book with a snow leopard on the cover.
Communities
Apache software is built in a community process, with both user and developer mailing lists. The
developer list is where discussion on building and testing the next release takes place, while the user
list is where users can discuss their problems with the developers and other users.
A number of free Apache Tomcat resources and communities have developed in 2010 including
Tomcatexpert.com, a SpringSource sponsored community for developers and operators who are
running Apache Tomcat in large-scale production environment's, and MuleSoft's Apache Tomcat
Resource Center, where you can find instructional guides on installing, updating, configuring,
monitoring, troubleshooting and securing various versions of Tomcat.



8
3. Drupal — content management system

Drupal is a free and open source content management system (CMS) written in PHP and
distributed under the GNU General Public License. It is used as a back-end system for at least 1%
of all websites worldwide ranging from personal blogs to larger corporate and political sites
including whitehouse.gov and data.gov.uk.It is also used for knowledge management and business
collaboration.
The standard release of Drupal, known as Drupal core, contains basic features common to most
CMSs. These include user account registration and maintenance, menu management, RSS-feeds,
page layout customization, and system administration. The Drupal core installation can be used as a
brochureware website, a single- or multi-user blog, an Internet forum, or a community website
providing for user-generated content.
Over 5800 free (as of July 20, 2010) third-party community-contributed modules, known as contrib
modules, are available to alter and extend Drupal's core capabilities and add new features or
customize Drupal's behavior and appearance. Because of this plug-in extensibility and modular
design, Drupal is sometimes described as a content management framework.Drupal is also
described as a web application framework, as it meets the generally accepted feature requirements
for such frameworks.
Although Drupal offers a sophisticated programming interface for developers, no programming
skills are required for basic website installation and administration.
Drupal runs on any computing platform that supports both a web server capable of running PHP
4.3.5+ (including Apache, IIS, Lighttpd, and nginx) and a database (such as MySQL or
PostgreSQL) to store content and settings.
History
Originally written by Dries Buytaert as a message board, Drupal became an open source project in
2001. Drupal is an English rendering of the Dutch word “druppel”, which means “drop” (as in “a
water droplet”). The name was taken from the now-defunct Drop.org website, whose code slowly
evolved into Drupal. Buytaert wanted to call the site “dorp” (Dutch for “village”) for its community
aspects, but made a typo when checking the domain name and thought it sounded better.
A large community now helps develop Drupal, and Drupal's popularity is growing rapidly. From
May 2007 to April 2008, Drupal was downloaded from the Drupal.org website more than 1.4
million times, an increase of approximately 125% from the previous year.
As of July 2010, hundreds of well-known organizations use Drupal, including companies, non-
profits, schools, and individuals. No one knows exactly how many websites currently use Drupal,
but it was estimated to be about 7.2 million as of July 2010. Drupal has also won several Packt
Open Source CMS Awards and three times (in a row) won the Webware 100.
Drupal 6.19, released in August 2010, is the latest release. On March 5, 2009, Dries Buytaert
announced a code freeze for Drupal 7 for September 1, 2009. The latest test version, DRUPAL-7-
0-ALPHA-6, was released on July 9, 2010. There is no date announced yet for the final release of
Drupal 7.
9
Drupal core
Drupal core is the stock installation of Drupal, which can be optionally extended by third-party
contributions. In its default configuration, a Drupal website's content can be contributed by either
registered or anonymous users (at the discretion of the administrator) and is made accessible to web
visitors by a variety of selectable criteria. Drupal core also includes a hierarchical taxonomy system,
which allows content to be categorized or tagged with key words for easier access.
Drupal maintains a detailed changelog of core feature updates by version.
Core modules
Drupal core includes core modules which can be enabled by the administrator to extend the
functionality of the core website.
The core Drupal distribution provides a number of features, including:
 Access statistics and logging
 Advanced search
 Blogs, books, comments, forums, and polls
 Caching and feature throttling for improved performance
 Descriptive URLs
 Multiple-level menu system
 Multiple-site support
 Multiple-user content creation and editing
 OpenID support
 RSS Feed and Feed Aggregator
 Security/new release update notification
 User profiles
 Various access control restrictions (user roles, IP addresses, email)
 Workflow tools (Triggers and Actions)
Core themes


The color editor being used to adjust the "Garland" core theme
10
Drupal core includes selectable core themes, which customize the aesthetic "look and feel" of the
site.
The Color Module, introduced in Drupal core 5.0, allows administrators to change the color scheme
of certain themes via a Web-browser interface. This feature was added to allow a high level of
customization for administrators.
Localization
By February 2008, Drupal's interface had been made available in 44 languages besides English (the
default). Support is included for right-to-left languages such as Arabic, Persian and Hebrew.
Auto-update notification
Drupal can automatically notify the administrator when a new version of any module, theme, or the
Drupal core itself becomes available. This feature can help keep a Drupal installation up-to-date
with the latest features and security fixes.
Extending Drupal core
Drupal core is designed to be modular with a system of hooks and callbacks, which are accessed
internally via an API. This design allows third-party contributed (often abbreviated to "contrib")
modules and themes to extend or override Drupal's default behaviors without changing Drupal
core's code.
Drupal's modular design, which isolates Drupal core's files from contributed module and themes,
increases flexibility and security and allows Drupal administrators to cleanly upgrade to new
releases of Drupal core without potentially overwriting their site's customizations. To maintain this
separation, Drupal administrators are instructed to avoid altering Drupal core's software.
Contributed modules
Contributed Drupal modules offer a variety of features including image galleries, custom content
types and content listings, WYSIWYG editors, private messaging, third-party integration tools, and
more. The Drupal website lists over 5800 free modules (as of July 20, 2010), written and
contributed to by the Drupal community.
For example, some of the most powerful and commonly used contrib modules include:
 Content Construction Kit (CCK): allows site administrators to dynamically create content
types by extending the database schema. A content type describes any kind of information to
be stored in the website's database. These may include, but are not limited to, events,
invitations, reviews, articles, and products.
 Views: facilitates the retrieval and presentation, through a database abstraction system, of
content to site visitors.
 Panels: drag and drop layout manager that allows site administrators to visually design their
site.
The CCK Fields API has been integrated into Drupal core in the development Drupal 7 branch.
11
Contributed themes
Contributed themes adapt or replace a Drupal site's default look and feel.
Drupal themes use standardized formats that may be generated by common third-party theme
design engines. Many themes for Drupal are written in the PHPTemplate engine or, to a lesser
extent, the XTemplate engine. Some templates use hard-coded PHP.
Although early versions of Drupal's theming system were criticized for being less design-oriented
and more complicated than those for Mambo, Joomla! and Plone, the inclusion of the PHPTemplate
and XTemplate engines in Drupal has addressed some of these concerns.The new Drupal 6 theming
system utilizes a template engine in an attempt to further separate HTML/CSS from PHP. A Drupal
development module, Devel, provides assistance to theme authors who use Drupal 6.
Community-contributed themes at the Drupal website are released under a free GPL license,and
most of them are demonstrated at the Drupal Theme Garden.
Contributed installation profiles
In the past, those wanting a fully-customized installation of Drupal had to download a pre-tailored
version separately from the official Drupal core. Today, however, an installation profile can be
used to create a fresh Drupal installation built to suit a specific purpose.
Installation profiles offer a way to "pre-customize" a new Drupal site without having to manually
seek out and install third-party contrib modules or adjust configuration settings. They are
collections of modules, themes, and associated configuration settings that "build" Drupal to taste.
For example, an installation profile might be used to install Drupal as a "brochureware" site rather
than a "news" site. Another installation profile might be used to install Drupal as an online store.
Popular installation profiles include OpenPublish Open Atrium, Managing News, and Tattler.
Community
Drupal has a large community of users and developers. More than 830,000 user accounts have been
created on Drupal.org, and more than 2000 people have signed up for developer accounts. The
Drupal conference happens twice a year, alternating between North America and Europe.
DrupalCon Szeged 2008, held in August 2008, had an attendance of 500. DrupalCon Washington
DC 2009 attracted over 1400 people. In September 2009, the conference was held in Paris, with 800
attendees. Over 3000 people registered for DrupalCon San Francisco in April 2010. The European
DrupalCon 2010 will take place in August 2010 in Copenhagen, Denmark.
There are a number of active Drupal forums, mailing lists and discussion groups. Drupal also
maintains several IRC channels on the Freenode network.
There are over 20 national communities around drupal.org offering language-specific support.


12
Security
Since early in the project's history, Drupal has adopted a full transparent policy towards security . A
dedicated security team has a transparent and methodical process to review any reported issue—
whether in Drupal core or contrib. If in core, a trusted core contributor is tasked to implement a fix
in an expedited fashion, followed by re-review by the security team. If in contrib, the module
maintainer is asked to implement the fix, followed by a review. Once obtained, the security team
announces the nature of the vulnerability and the availability of the fixed code in a timely manner,
so that site administrators can immediately take remedial action. Though this policy tends to lead
observers to think that Drupal has a high number of security issues, there is no proof that this is the
case; the Drupal project's transparent approach is generally considered superior to the alternative—
security through obscurity.
As security holes are discovered and remedied, the Drupal core is updated to new versions.
Administrators of Drupal sites are automatically notified of these new releases via the Update Status
module. Additionally, Drupal.org maintains a security announcement mailing list, a history of all
security advisories, a security team home page , and an RSS feed with the most recent security
advisories. In 2008, eleven security vulnerabilities were reported and fixed in the Drupal core.
Security holes were also found and fixed in 64 of the 2243 user-contributed modules.



13
4. Eclipse — software development environment comprising an integrated
development environment (IDE)

Eclipse is a multi-language software development environment comprising an integrated
development environment (IDE) and an extensible plug-in system. It is written primarily in Java
and can be used to develop applications in Java and, by means of various plug-ins, other languages
including C, C++, COBOL, Python, Perl, PHP, Scala and Ruby (including Ruby on Rails
framework). The IDE is often called Eclipse ADT for Ada, Eclipse CDT for C/C++, Eclipse JDT
for Java and Eclipse PDT for PHP.
The initial codebase originated from VisualAge. In its default form it is meant for Java developers,
consisting of the Java Development Tools (JDT). Users can extend its capabilities by installing
plug-ins written for the Eclipse software framework, such as development toolkits for other
programming languages, and can write and contribute their own plug-in modules.
Released under the terms of the Eclipse Public License, Eclipse is free and open source software.
Architecture
Eclipse employs plug-ins in order to provide all of its functionality on top of (and including) the
runtime system, in contrast to some other applications where functionality is typically hard coded.
The runtime system of Eclipse is based on Equinox, an OSGi standard compliant implementation.
This plug-in mechanism is a lightweight software componentry framework. In addition to allowing
Eclipse to be extended using other programming languages such as C and Python, the plug-in
framework allows Eclipse to work with typesetting languages like LaTeX, networking applications
such as telnet, and database management systems. The plug-in architecture supports writing any
desired extension to the environment, such as for configuration management. Java and CVS support
is provided in the Eclipse SDK, with Subversion support provided by third-party plug-ins.
With the exception of a small run-time kernel, everything in Eclipse is a plug-in. This means that
every plug-in developed integrates with Eclipse in exactly the same way as other plug-ins; in this
respect, all features are "created equal". Eclipse provides plug-ins for a wide variety of features,
some of which are through third parties using both free and commercial models. Examples of plug-
ins include a UML plug-in for Sequence and other UML diagrams, a plug-in for DB Explorer, and
many others.
The Eclipse SDK includes the Eclipse Java Development Tools (JDT), offering an IDE with a built-
in incremental Java compiler and a full model of the Java source files. This allows for advanced
refactoring techniques and code analysis. The IDE also makes use of a workspace, in this case a set
of metadata over a flat filespace allowing external file modifications as long as the corresponding
workspace "resource" is refreshed afterwards.
Eclipse implements widgets through a widget toolkit for Java called SWT, unlike most Java
applications, which use the Java standard Abstract Window Toolkit (AWT) or Swing. Eclipse's user
interface also uses an intermediate GUI layer called JFace, which simplifies the construction of
applications based on SWT.
Language packs provide translations into over a dozen natural languages.
14
Rich Client Platform
Eclipse provides the Eclipse Rich Client Platform (RCP) for developing general purpose
applications. The following components constitute the rich client platform:
 Equinox OSGi – a standard bundling framework
 Core platform – boot Eclipse, run plug-ins
 Standard Widget Toolkit (SWT) – a portable widget toolkit
 JFace – viewer classes to bring model view controller programming to SWT, file buffers,
text handling, text editors
 Eclipse Workbench – views, editors, perspectives, wizards
History
Eclipse began as an IBM Canada project. It was developed by Object Technology International
(OTI) as a Java-based replacement for the Smalltalk based VisualAge family of IDE products,
which itself had been developed by OTI. In November 2001, a consortium was formed to further
the development of Eclipse as open source. In January 2004, the Eclipse Foundation was created.
Eclipse 3.0 (released on June 21, 2004) selected the OSGi Service Platform specifications as the
runtime architecture.
Eclipse was originally released under the Common Public License, but was later relicensed under
the Eclipse Public License. The Free Software Foundation has said that both licenses are free
software licenses, but are incompatible with the GNU General Public License (GPL). Mike
Milinkovich, of the Eclipse Foundation commented that moving to the GPL would be considered
when version 3 of the GPL was released.
According to Lee Nackman, Chief Technology Officer of IBM's Rational division at that time and
later head of Rational software development and support, the name "Eclipse" was chosen to target
Microsoft's Visual Studio product, and not Sun Microsystems. Ironically, Nackman is now himself
a Microsoft employee.
15
Releases
Since 2006, the Eclipse Foundation has coordinated an annual Simultaneous Release. Each release
includes the Eclipse Platform as well as a number of other Eclipse projects. Releases are named
after the moons of the solar system.
So far, each Simultaneous Release has occurred at the end of June.
Release Date Platform version

Projects
Indigo June 2011 3.7 Indigo projects
Helios 23 June 2010

3.6 Helios projects
Galileo 24 June 2009

3.5 Galileo projects
Ganymede

25 June 2008

3.4 Ganymede projects

Europa 29 June 2007

3.3 Europa projects
Callisto 30 June 2006

3.2 Callisto projects
Eclipse 3.1

28 June 2005

3.1
Eclipse 3.0

28 June 2004

3.0




16
5. FreeBSD — operating system derived from Unix

FreeBSD is a free Unix-like operating system descended from AT&T UNIX via the Berkeley
Software Distribution (BSD). It has been characterized as "the unknown giant among free operating
systems". It is not a clone of UNIX, but works like UNIX, with UNIX-compliant internals and
system APIs. FreeBSD is generally regarded as reliable and robust.
FreeBSD is a complete operating system. The kernel, device drivers and all of the userland utilities,
such as the shell, are held in the same source code revision tracking tree, whereas with Linux
distributions, the kernel, userland utilities and applications are developed separately, then packaged
together in various ways by others.
Third-party application software may be installed using various software installation systems, the
two most common being source installation and package installation, both of which use the
FreeBSD Ports system.
History
FreeBSD's development began in 1993 with a quickly growing, unofficial patchkit maintained by
users of the 386BSD operating system. This patchkit forked from 386BSD and grew into an
operating system taken from U.C. Berkeley's 4.3BSD-Lite (Net/2) tape with many 386BSD
components and code from the Free Software Foundation. After two public beta releases via FTP
(1.0-GAMMA on September 2, 1993, and 1.0-EPSILON on October 3, 1993), the first official
release was FreeBSD 1.0, available via FTP on November 1, 1993 and on CDROM on December
30, 1993. This official release was coordinated by Jordan Hubbard, Nate Williams and Rodney W.
Grimes with a name thought up by David Greenman. Walnut Creek CDROM agreed to distribute
FreeBSD on CD and gave the project a machine to work on along with a fast Internet connection,
which Hubbard later said helped stir FreeBSD's rapid growth. A "highly successful" FreeBSD 1.1
release followed in May 1994.
However, there were legal concerns about the BSD Net/2 release source code used in 386BSD.
After a lawsuit between UNIX copyright owner at the time Unix System Laboratories and the
University of California, Berkeley, the FreeBSD project re-engineered most of the system using the
4.4BSD-Lite release from Berkeley, which, owing to this lawsuit, had none of the AT&T source
code earlier BSD versions had depended upon, making it an unbootable operating system.
Following much work, the outcome was released as FreeBSD 2.0 in January 1995.
FreeBSD 2.0 featured a revamp of the original Carnegie Mellon University Mach virtual memory
system, which was optimized for performance under high loads. This release also introduced the
FreeBSD Ports system, which made downloading, building and installing third party software very
easy. By 1996 FreeBSD had become popular among commercial and ISP users, powering
extremely successful sites like Walnut Creek CD-ROM (a huge repository of software that broke
several throughput records on the Internet), Yahoo! and Hotmail. The last release along the 2-
STABLE branch was 2.2.8 in November 1998. FreeBSD 3.0 brought many more changes,
including the switch to the ELF binary format. Support for SMP systems and the 64-bit Alpha
platform were also added. The 3-STABLE branch ended with 3.5.1 in June 2000.
17
Features
Networking
FreeBSD's TCP/IP stack is based on the 4.2BSD implementation of TCP/IP which greatly
contributed to the widespread adoption of these protocols. FreeBSD also supports IPv6, SCTP,
IPSec, IPX, AppleTalk and wireless networking.
Storage
FreeBSD has several unique features related to storage. Soft updates maintain filesystem integrity in
the event of a system crash. The GEOM framework provides features such as RAID (levels 0, 1, 3
currently), full disk encryption, and concatenation of drives. Filesystem snapshots allow an image
of a filesystem at an instant in time to be efficiently created. Snapshots allow reliable backup of a
live filesystem. FreeBSD also provides the ZFS filesystem as an alternative to the normal UFS2 file
system.
Security
FreeBSD provides several security-related features including access control lists (ACLs), security
event auditing, extended file system attributes, fine-grained capabilities and mandatory access
controls (MAC). These security enhancements were developed by the TrustedBSD project. The
project was founded by Robert Watson with the goal of implementing concepts from the Common
Criteria for Information Technology Security Evaluation and the Orange Book. This project is
ongoing and many of its extensions have been integrated into FreeBSD.
The project has also ported the NSA's FLASK/TE implementation from SELinux to FreeBSD.
Other work includes the development of OpenBSM, an open source implementation of Sun's Basic
Security Module (BSM) API and audit log file format, which supports an extensive security audit
system. This was shipped as part of FreeBSD 6.2. Other infrastructure work in FreeBSD performed
as part of the TrustedBSD Project has included SYN cookies, GEOM and OpenPAM.
While most components of the TrustedBSD project are eventually folded into the main sources for
FreeBSD, many features, once fully matured, find their way into other operating systems. For
example, OpenPAM and UFS2 have been adopted by NetBSD. Moreover, the TrustedBSD MAC
Framework has been adopted by Apple for Mac OS X.
Much of this work was sponsored by DARPA.
Portability
FreeBSD has been ported to a variety of processor architectures. The FreeBSD project organizes
architectures into tiers that characterize the level of support provided. Tier 1 architectures are
mature and fully supported. Tier 2 architectures are undergoing major development. Tier 3
architectures are experimental or are no longer under active development (as is the case of DEC
Alpha) and tier 4 architectures have no support at all.
18
FreeBSD has been ported to the following architectures:
Architecture Support Level

Notes
x86 (IA-32) Tier 1
x86-64 Tier 1 known as amd64 in FreeBSD
NEC PC-9801 Tier 1
Sun SPARC Tier 2 Only support 64-bit (V9) architecture
Itanium (IA-64) Tier 2
PowerPC Tier 2
ARM Tier 2
MIPS Tier 3
Microsoft's Xbox

Tier 3
DEC Alpha Tier 3 Support discontinued from FreeBSD 7.0 on

Third Party Software
For more details on this topic, see FreeBSD Ports.


FreeBSD running GIMP, Firefox, and GNOME installed from the ports collection.
FreeBSD has a repository of thousands of applications that are developed by third parties outside of
the project itself. (Examples include windowing systems, Internet browsers, email programs, office
suites, and so forth.) In general, the project itself does not develop this software, only the
framework to allow these programs to be installed (termed the Ports Collection). Applications may
be installed either from source, if its licensing terms allow such redistribution (these are called
ports), or as compiled binaries if allowed (these are called packages). The Ports Collection supports
the latest release on the -CURRENT and -STABLE branches. Older releases are not supported and
may or may not work correctly with an up-to-date ports collection.
Ports Collection
Each package in the Ports Collection is installed from source. Each port's Makefile automatically
fetches the application source code, either from a local disk, CD-ROM or via ftp, unpacks it on the
system, applies the patches, and compiles. This method can be very time consuming as compiling
large packages can take hours, but the user is able to install a customized program.
19
Packages system
For most ports, precompiled binary packages also exist. This method is very quick as the whole
compilation process is avoided, but the user is not able to install a program with customized
compile time options.
Utilities for managing ports and packages
There are many utilities available for managing ports and packages available in GUIs and CLIs.
These are some of them:
 barry - A KDE frontend to the ports system
 bpm - A GUI ports collection manager
 kports - A KDE frontend to the ports system
 pib - A GUI Ports Collection management tool
 portbrowser - A GUI frontend for the ports system
Linux compatibility
Most software that runs on Linux can run on FreeBSD without the need for any compatibility layer.
FreeBSD nonetheless still provides a compatibility layer for several other Unix-like operating
systems, including Linux. Hence, most Linux binaries can be run on FreeBSD, including some
proprietary applications distributed only in binary form. Examples of applications that can use the
Linux compatibility layer are StarOffice, the Linux version of Firefox, Adobe Acrobat, RealPlayer,
Oracle, Mathematica, MATLAB, WordPerfect, Skype, Wolfenstein: Enemy Territory, Doom 3 and
Quake 4 (though some of these applications also have a native version). No noticeable performance
penalty over native FreeBSD programs has been noted when running Linux binaries, and, in some
cases, these may even perform more smoothly than on Linux. However, the layer is not altogether
seamless, and some Linux binaries are unusable or only partially usable on FreeBSD. This is often
because the compatibility layer only supports system calls available in the historical Linux kernel
2.4.2. There is support of Linux 2.6.16 system calls, enabled by default since 8.0 and available since
7.0. However, there is currently no support for running 64-bit Linux binaries.
Development
FreeBSD currently has more than 400 active developers and thousands of contributors.
Governance structure
The FreeBSD Project is run by FreeBSD committers, or developers who have CVS/SVN commit
access. There are several kinds of committers, including source committers (base operating system),
doc committers (documentation and web site authors) and ports (third party application porting and
infrastructure). Every two years the FreeBSD committers select a 9-member FreeBSD Core Team
who are responsible for overall project direction, setting and enforcing project rules and approving
new "commit bits", or the granting of CVS/SVN commit access. A number of responsibilities are
officially assigned to other development teams by the FreeBSD Core Team, including responsibility
for security advisories (the Security Officer Team), release engineering (the Release Engineering
Team) and managing the ports collection (the Port Manager team). Developers may give up their
commit rights to retire or for "safe-keeping" after a period of a year or more of inactivity, although
commit rights will generally be restored on request. Under rare circumstances commit rights may be
20
removed by Core Team vote as a result of repeated violation of project rules and standards. The
FreeBSD Project is unusual among open source projects in having developers who have worked
with its source base for over 25 years, owing to the involvement of a number of past University of
California developers who worked on BSD at the Computer Systems Research Group.
Branches
FreeBSD developers maintain at least two branches of simultaneous development. The -CURRENT
branch always represents the "bleeding edge" of FreeBSD development. A -STABLE branch of
FreeBSD is created for each major version number, from which releases are cut about once every
4–6 months. If a feature is sufficiently stable and mature it will likely be backported (MFC or
Merge from CURRENT in FreeBSD developer slang) to the -STABLE branch. FreeBSD's
development model is further described in an article by Niklas Saers.
Foundation
FreeBSD development is supported in part by the FreeBSD Foundation. The foundation is a non-
profit organization that accepts donations to fund FreeBSD development. Such funding has been
used to sponsor developers for specific activities, purchase hardware and network infrastructure,
provide travel grants to developer summits, and provide legal support to the FreeBSD project.
License
FreeBSD is released under a variety of open source licenses. The kernel code and most newly
created code is released under the two-clause BSD license which allows everyone to use and
redistribute FreeBSD as they wish. There are parts released under three- and four-clause BSD
licenses, as well as Beerware license. Some device drivers include a binary blob, such as the
Atheros HAL of FreeBSD versions before 7.2. Some of the code contributed by other projects is
licensed under GPL, LGPL, ISC or CDDL. All the code licensed under GPL and CDDL is clearly
separated from the code under liberal licenses, to make it easy for users such as embedded device
manufacturers to use only permissive free software licences. ClangBSD aims to replace some GPL
dependencies in the FreeBSD base system by replacing the GNU compiler collection with the BSD-
licenced LLVM/Clang compiler. ClangBSD became self-hosting on April 16 2010, an important
landmark for further independent development.
Logo


FreeBSD's mascot is the generic BSD daemon, also known as Beastie.
21
For many years FreeBSD's logo was the generic BSD daemon, also called Beastie, a slurred
phonetic pronunciation of BSD. First appearing in 1976 on UNIX T-shirts purchased by Bell Labs,
the more popular versions of the BSD daemon were drawn by animation director John Lasseter
beginning in 1984. Several FreeBSD-specific versions were later drawn by Tatsumi Hosokawa.
Through the years Beastie became both beloved and criticized as perhaps inappropriate for
corporate and mass market exposure. Moreover it was not unique to FreeBSD. In lithographic
terms, the Lasseter graphic is not line art and often requires a screened, four colour photo offset
printing process for faithful reproduction on physical surfaces such as paper. Moreover, the BSD
daemon was thought to be too graphically detailed for smooth size scaling and aesthetically over
dependent upon multiple colour gradations, making it hard to reliably reproduce as a simple,
standardized logo in only two or three colours, much less in monochrome. Because of these worries,
a competition was held and a new logo designed by Anton K. Gural, still echoing the BSD daemon,
was released on October 8, 2005. Meanwhile Lasseter's much known take on the BSD daemon
carries forth as official mascot of the FreeBSD Project.
Derivatives


PC-BSD
There are a number of software distributions based on FreeBSD including:
 DesktopBSD (aimed at home users and workstations)
 PC-BSD (aimed at home users and workstations)
 FreeSBIE (live CD)
 Frenzy (live CD)
 GhostBSD (Gnome-based live CD)
 m0n0wall (firewall)
 pfSense (firewall)
 FreeNAS (for network attached storage)
 AskoziaPBX (an embedded PBX)
All these distributions have no or only minor changes when compared with the original FreeBSD
base system. The main difference to the original FreeBSD is that they come with pre-installed and
pre-configured software for specific use cases. This can be compared with Linux distributions,
which are all binary compatible because they use the same kernel and also use the same basic tools,
compilers and libraries, while coming with different applications, configurations and branding.
22
Besides these distributions there is DragonFly BSD, a fork from FreeBSD 4.8 aiming for a different
multiprocessor synchronization strategy than the one chosen for FreeBSD 5 and development of
some microkernel features. It doesn't aim to stay compatible with FreeBSD and has huge
differences in the kernel and basic userland.
A wide variety of products are directly or indirectly based on FreeBSD. Examples of embedded
devices based on FreeBSD include:
 Citrix Netscalers
 F5 Networks's 3DNS version 3 global traffic manager and EDGE-FX version 1 web cache
 Ironport network security appliances
 Juniper Networks routers, switches and security devices
 KACE Networks's KBOX 1000 & 2000 Series Appliances and the Virtual KBOX
Appliance
 nCircle's IP360
 NetApp's Data ONTAP GX (only as a loader for proprietary kernel-space module of
ONTAP GX)
 Netasq security appliances
 Nokia's firewall operating system
 Panasas's and Isilon Systems's cluster storage operating systems
 The PlayStation 3 video game console.
 Sophos's Email Appliance
 St. Bernard Software iPrism web filtering appliances
Other operating systems contain code that originated in FreeBSD such as Linux and the RTOS
VxWorks. Darwin, the core of Apple's Mac OS X, borrows FreeBSD's virtual file system, network
stack and components of its userspace. The now-defunct OpenDarwin project, which was based on
Apple's Darwin operating system, also included substantial FreeBSD code. Debian, known
primarily for using the kernel Linux, also maintains GNU/kFreeBSD, combining the GNU
userspace and C library with the kernel of FreeBSD.
Installers
sysinstall
The sysinstall utility is the installation application provided by the FreeBSD Project. It is TUI-
based, and is divided into a number of menus and screens that can be used to configure and control
the installation process. It can also be used to install Ports and Packages as an alternative to the CLI.
finstall
The finstall utility aims to create a user-friendly graphical installer for FreeBSD & FreeBSD-
derived systems, however development of finstall has stalled.
23
Version history
FreeBSD 1
Released in November 1993. 1.1.5.1 was released in July, 1994.
FreeBSD 2
2.0-RELEASE was announced on November 22, 1994. The last of FreeBSD 2, 2.2.8-RELEASE,
was announced on November 29, 1998. First FreeBSD to be claimed legally free of AT&T UNIX
code with approval of Novell.
FreeBSD 3
Announced on October 16, 1998. 3.5-RELEASE was announced on June 24, 2000.
FreeBSD 4
4.0-RELEASE appeared in March 2000 and the last 4-STABLE branch release was 4.11 in January
2005 supported until January 31, 2007. FreeBSD 4 was a favorite operating system for ISPs and
web hosting providers during the first.com bubble, and is widely regarded as one of the most stable
and high performance operating systems of the whole Unix lineage. Among the new features of
FreeBSD 4, kqueue(2) was introduced (which is now part of other major BSD systems).
FreeBSD 5
After almost three years of development, the first 5.0-RELEASE in January 2003 was widely
anticipated, featuring support for advanced multiprocessor and application threading, and for the
UltraSPARC and IA-64 platforms. The first 5-STABLE release was 5.3 (5.0 through 5.2.1 were cut
from -CURRENT). The last release from the 5-STABLE branch was 5.5 in May 2006.
The largest architectural development in FreeBSD 5 was a major change in the low-level kernel
locking mechanisms to enable better symmetric multi-processor (SMP) support. This released much
of the kernel from the MP lock, which is sometimes called the Giant lock. More than one process
could now execute in kernel mode at the same time. Other major changes included an M:N native
threading implementation called Kernel Scheduled Entities. In principle this is similar to Scheduler
Activations. Starting with FreeBSD 5.3, KSE was the default threading implementation until it was
replaced with a 1:1 implementation in FreeBSD 7.0.
FreeBSD 5 also significantly changed the block I/O layer by implementing the GEOM modular
disk I/O request transformation framework contributed by Poul-Henning Kamp. GEOM enables the
simple creation of many kinds of functionality, such as mirroring (gmirror) and encryption (GBDE
and GELI). This work was supported through sponsorship by DARPA.
The 5.4 and 5.5 releases of FreeBSD confirmed the FreeBSD 5.x branch as a highly stable and
high-performing release, although it had a long development period due to the large feature set.
Earlier releases on the 5.x branch are not considered stable enough for production deployment.
24
FreeBSD 6
FreeBSD 6.0 was released on November 4, 2005. The most recent FreeBSD 6 release was 6.4, on
November 11, 2008. These versions continue work on SMP and threading optimization along with
more work on advanced 802.11 functionality, TrustedBSD security event auditing, significant
network stack performance enhancements, a fully preemptive kernel and support for hardware
performance counters (HWPMC). The main accomplishments of these releases include removal of
the Giant lock from VFS, implementation of a better-performing optional libthr library with 1:1
threading and the addition of a Basic Security Module (BSM) audit implementation called
OpenBSM, which was created by the TrustedBSD Project (based on the BSM implementation
found in Apple's open source Darwin) and released under a BSD-style license.
FreeBSD 7
FreeBSD 7.0 was released on 27 February 2008. The most recent FreeBSD 7 release was 7.3, on
March 23, 2010. New features include SCTP, UFS journaling, an experimental port of Sun's ZFS
file system, GCC4, improved support for the ARM architecture, jemalloc (a memory allocator
optimized for parallel computation, which was ported to Firefox 3), and major updates and
optimizations relating to network, audio, and SMP performance. Benchmarks have shown
significant speed improvements over previous FreeBSD releases as well as Linux. The new ULE
scheduler has seen much improvement but a decision was made to ship the 7.0 release with the
older 4BSD scheduler, leaving ULE as a kernel compile-time tunable. In FreeBSD 7.1 ULE was the
default for the i386 and AMD64 architectures.
Starting from version 7.1 DTrace was also integrated and FreeBSD 7.2 brought support for multi-
IPv4/IPv6 jails.
Code supporting the DEC Alpha architecture (supported since FreeBSD 4.0) was removed in
FreeBSD 7.0.
FreeBSD 8
FreeBSD 8.1 is the latest stable release of FreeBSD, having been branched from the trunk in June
2010. It features superpages, Xen DomU support, network stack virtualization, stack-smashing
protection, TTY layer rewrite, much improved ZFS support, a new USB stack, multicast updates
including IGMPv3, and rewritten NFS client/server introducing NFSv4. Inclusion of improved
device mmap() extensions allows the technical implementation of a 64-bit Nvidia display driver for
the x86-64 platform. FreeBSD 8.1 was formally released on July 23rd, 2010.
FreeBSD 9
As of 2009, "bleeding edge" development occurs on -CURRENT, the trunk version of the operating
system, which will result in a future version named FreeBSD 9. Until FreeBSD 8.0 was released,
the trunk was updated with only conservative changes.
25
Timeline

The timeline shows that the span of a single release generation of FreeBSD lasts around 5 years.
Since the FreeBSD project makes effort for binary backward (and limited forward) compatibility
within the same release generation, this allows users 5+ years of support, with trivial-to-easy
upgrading within the release generation.




26
6. GNU Project — “a sufficient body of free software”
The GNU Project is a free software, mass collaboration project, announced on September 27, 1983,
by Richard Stallman at MIT. It initiated the GNU operating system, software development for
which began in January 1984. The founding goal of the project was, in the words of its initial
announcement, to develop "a sufficient body of free software [...] to get along without any software
that is not free." GNU is meant to be free and unrestricted by other distributors. Any programmer is
allowed to have access to the code and projects created using GNU.
To make this happen, the GNU Project began working on an operating system called GNU ("GNU"
is a recursive acronym that stands for "GNU's Not Unix"). This goal of making a free software
operating system was achieved in 1992 when the last gap in the GNU system, a kernel, was filled
by a third-party Unix-like kernel called "Linux" being released as Free Software, under version 2 of
the GNU GPL.
Current work of the GNU Project includes software development, awareness building, political
campaigning and sharing of the new material.
Origins of the project
When the GNU project first started they, "had an Emacs text editor with Lisp for writing editor
commands, a source level debugger, a yacc-compatible parser generator, and a linker". They had an
initial kernel that needed more updates. Once the kernel and the compiler were finished GNU was
able to be used for program development. The main goal was to create many other applications to
be like the Unix system. GNU was able to run Unix programs but was not identical to it. GNU
incorporated longer file names, file version numbers, and a crashproof file system. The GNU
Manifesto was written to gain support and participation from others for the project. Programmers
were encouraged to take part in any aspect of the project that interested them. People could donate
funds, computer parts, or even their own time to write code and programs for the project.
The GNU Manifesto
The GNU Manifesto was written by Richard Stallman to gain support and participation in the GNU
Project. He lays out why he is creating GNU and answers questions participants and supporters may
have about the project. The manifesto starts with why and how GNU will be available along with
answers to objections some may have to the outcome of the GNU project.
Philosophy and activism
Although most of the GNU Project's output is technical in nature, it was launched as a social,
ethical, and political initiative. As well as producing software and licenses, the GNU Project has
published a large number of philosophical writings, the majority of which were authored by Richard
Stallman.
27
Participation
The GNU projects allows other programmers to get involved with the process of creating free
software. A list of projects are laid out on the GNU website and each project has specifics for what
type of developer is able to perform the task needed for a certain piece of the GNU project. The
skill level ranges from project to project but anyone with background knowledge in programming is
encouraged to support the project.
Free software
The GNU project uses free software which refers to the way that it is free for users to copy, edit,
and distribute. Free refers to the freedom that the user has with the ability to use, distribute, study,
and modify the software, rather than the price of the software. It is not always free in cost but it is
free in the sense that one can change the software to however it fits one's needs. The way
programmers obtain the free software depends on where they are getting it from. The software
could be provided to the programmer from friends or over the internet, or the company a
programmer works for may purchase the software. This purchase may then go back and support the
GNU project further. GNU has four kinds of freedom for the software:
 Freedom to run the program
 Freedom to access the code
 Freedom to redistribute the program to anyone
 Freedom to improve the software
Copyleft
Copyleft is what helps maintain the free use of this software among other programmers. Copyleft is
intended to give legal rights to everyone to use, edit, and redistribute programs or program's code as
long as the distribution terms do not change. Copyleft allows for the freedom to remain in the way
that programmers may create new code and programs.
28
Operating system development


gNewSense is an example of a GNU/Linux based distribution
The first goal of the GNU project was to create a whole free-software operating system. By 1992,
the GNU project had completed all of the major operating system components except for their
kernel, GNU Hurd. The Linux kernel, started independently by Linus Torvalds in 1991 filled the
last gap, and Linux version 0.12 was released under the GPL in 1992. Together, Linux and GNU
formed the first completely free-software operating system. Though the Linux kernel is not part of
the GNU project, it was developed using GCC and other GNU programming tools.
Strategic projects
From the mid-1990s onward, with many companies investing in free software development, the
Free Software Foundation redirected its funds toward the legal and political support of free software
development. Software development from that point on focused on maintaining existing projects,
and starting new projects only when there was an acute threat to the free software community; see
High Priority Free Software Projects. One of the most notable projects of the GNU Project is the
GNU C compiler, which has been adopted as the standard compiler on almost all UNIX and UNIX-
like systems, including Apple's iPhone and iPod.
GNOME
One example is the GNOME desktop. This development effort was launched by the GNU Project
because another desktop system, KDE, was becoming popular but required users to install certain
proprietary software. To prevent people from being tempted to install that proprietary software, the
GNU Project simultaneously launched two projects. One was the Harmony toolkit. This was an
attempt to make a free software replacement for the proprietary software that KDE depended on.
Had this project been successful, the problem with KDE would have been solved. The second
project was GNOME, which tackled the same issue from a different angle. It aimed to make a
replacement for KDE which didn't have any dependencies on proprietary software. The Harmony
project didn't make much progress, but GNOME developed very well. Eventually, the proprietary
component that KDE depended on (Qt) was released as free software.
29
Gnash
Another example is Gnash, software able to play content distributed in the Adobe Flash format.
This has been marked as a priority project by GNU because it was seen that many people were
installing a free software operating system and using a free software web-browser, but were then
also installing the proprietary software plug-in from Adobe.


30
7. Joomla — content management system
Joomla! is a free and open source content management system for publishing content on the World
Wide Web and intranets as well as a model–view–controller (MVC) Web application framework. It
is written in PHP, stores data in MySQL and includes features such as page caching, RSS feeds,
printable versions of pages, news flashes, blogs, polls, search, and support for language
internationalization.
Within its first year of release, Joomla was downloaded 2.5 million times. Over 5,000 free and
commercial plug-ins are available for Joomla.
History
Joomla! was the result of a fork of Mambo by the Joomla! development team on August 17, 2005.
At that time, the Mambo name was trademarked by Miro International Pty Ltd, who formed a non-
profit foundation with the stated purpose to fund the project and protect it from lawsuits. The
Joomla! development team claimed that many of the provisions of the foundation structure went
against previous agreements made by the elected Mambo Steering Committee, lacked the necessary
consultation with key stake-holders and included provisions that violated core open source values.
The Joomla! development team created a web site called OpenSourceMatters.org to distribute
information to users, developers, web designers and the community in general. The project team
leader Andrew Eddie, AKA "MasterChief" wrote an open letter to the community which appeared
on the announcements section of the public forum at mamboserver.com.
A little more than one thousand people had joined the opensourcematters.org web site within a day,
most posting words of encouragement and support, and the web site received the slashdot effect as a
result. Miro CEO Peter Lamont gave a public response to the development team in an article titled
"The Mambo Open Source Controversy - 20 Questions With Miro". This event created controversy
within the free software community about the definition of "open source". Forums at many other
open source projects were active with postings for and against the actions of both sides.
In the two weeks following Eddie's announcement, teams were re-organized, and the community
continued to grow. Eben Moglen and the Software Freedom Law Center (SFLC) assisted the
Joomla! core team beginning in August 2005, as indicated by Moglen's blog entry from that date
and a related OSM announcement. The SFLC continue to provide legal guidance to the Joomla!
project.
On August 18, 2005, Andrew Eddie called for community input on suggested names for the project.
The core team indicated that it would make the final decision for the project name based on
community input. The core team eventually chose a name that was not on the list of suggested
names provided by the community.
On September 1, 2005 the new name, “Joomla!,” was announced. It is the English spelling of the
Swahili word jumla meaning “all together” or “as a whole.”
On September 6, 2005, the development team called for logo submissions from the community,
invited the community to vote on the logo preferred, and announced the community's decision on
September 22, 2005. Following the logo selection, brand guidelines, a brand manual, and a set of
logo resources were then published on October 2, 2005 for the community's use.
31
Joomla! (Joomla 1.0.0) was released on September 16, 2005. It was a re-branded release of Mambo
4.5.2.3 which, itself, was combined with other bug and moderate-level security fixes.
Joomla! won the Packt Publishing Open Source Content Management System Award in both 2006
and 2007.
On October 27, 2008, PACKT Publishing announced Johan Janssens the "Most Valued Person"
(MVP) for his work as one of the lead developers of the 1.5 Joomla Framework and Architecture. In
2009 Louis Landry received the "Most Valued Person" award for his role as Joomla architect and
development coordinator.
Joomla! version 1.5 was released on January 22, 2008. The most recent release (18 July 2010) is
1.5.20.
Since May 2010, beta versions of 1.6 were made available for testing purposes.
Deployment
Joomla can be installed manually from source code on a system running a web server which
supports PHP applications. Manual installation usually requires more time and experience than
other alternatives such as installing Joomla from a package management system or using a TurnKey
Joomla appliance which pre-integrates Joomla and its dependencies as a ready-to-use system.
There are numerous web hosting companies who provide a control panel which automates the
deployment of a basic Joomla web site.
Joomla can also be installed via the Microsoft Web Platform Installer which installs Joomla on
Windows and IIS. The Web PI will automatically detect any missing dependencies such as PHP or
MySQL then install and configure them before installing Joomla.

32
8. Linux — operating system based on Unix

Linux refers to the family of Unix-like computer operating systems using the Linux kernel. Linux
can be installed on a wide variety of computer hardware, ranging from mobile phones, tablet
computers and video game consoles, to mainframes and supercomputers. Linux is predominantly
known for its use in servers; in 2009 it held a server market share ranging between 20–40%. Most
desktop computers run either Microsoft Windows or Mac OS X, with Linux having anywhere from
a low of an estimated 1–2% of the desktop market to a high of an estimated 4.8%. However,
desktop use of Linux has become increasingly popular in recent years, partly owing to the popular
Ubuntu, Fedora, Mint, and openSUSE distributions and the emergence of netbooks and
smartphones running an embedded Linux.
The development of Linux is one of the most prominent examples of free and open source software
collaboration; typically all the underlying source code can be used, freely modified, and
redistributed, both commercially and non-commercially, by anyone under licenses such as the GNU
General Public License. Typically Linux is packaged in a format known as a Linux distribution for
desktop and server use. Linux distributions include the Linux kernel and all of the supporting
software required to run a complete system, such as utilities and libraries, the X Window System,
the GNOME and KDE desktop environments, and the Apache HTTP Server. Commonly used
applications with desktop Linux systems include the Mozilla Firefox web-browser, the
OpenOffice.org office application suite and the GIMP image editor.
The name "Linux" comes from the Linux kernel, originally written in 1991 by Linus Torvalds. The
main supporting user space system tools and libraries from the GNU Project (announced in 1983 by
Richard Stallman) are the basis for the Free Software Foundation's preferred name GNU/Linux.
History

Richard Stallman, left, founder of the GNU
project, and Linus Torvalds, right, principal
author of the Linux kernel

33
Unix
The Unix operating system was conceived and implemented in 1969 at AT&T's Bell Laboratories
in the United States by Ken Thompson, Dennis Ritchie, Douglas McIlroy, and Joe Ossanna. Unix
derived its name as a joke and reference to an experimental operating system that was slow and
ineffective called MULTICS. It was first released in 1971 and was initially entirely written in
assembly language, a common practice at the time. Later, in a key pioneering approach in 1973,
Unix was re-written in the programming language C by Dennis Ritchie, (with exceptions to the
kernel and I/O). The availability of an operating system written in a high-level language allowed
easier portability to different computer platforms. With a legal glitch forcing AT&T to license the
operating system's source code, Unix quickly grew and became widely adopted by academic
institutions and businesses.
GNU
The GNU Project, started in 1983 by Richard Stallman, had the goal of creating a "complete Unix-
compatible software system" composed entirely of free software. Work began in 1984. Later, in
1985, Stallman started the Free Software Foundation and wrote the GNU General Public License
(GNU GPL) in 1989. By the early 1990s, many of the programs required in an operating system
(such as libraries, compilers, text editors, a Unix shell, and a windowing system) were completed,
although low-level elements such as device drivers, daemons, and the kernel were stalled and
incomplete. Linus Torvalds has said that if the GNU kernel had been available at the time (1991),
he would not have decided to write his own.
MINIX


Andrew S. Tanenbaum, author of the MINIX operating system
MINIX was an inexpensive minimal Unix-like operating system, designed for education in
computer science, written by Andrew S. Tanenbaum. Starting with version 3, MINIX is free and
redesigned also for “serious” use.
In 1991 while attending the University of Helsinki, Torvalds, curious about the operating systems
and frustrated by the licensing of MINIX limiting it to educational use only (which prevented any
commercial use) began to work on his own operating system which eventually became the Linux
kernel.
34
Torvalds began the development of the Linux kernel on MINIX and applications written for MINIX
were also used on Linux. Later Linux matured and it became possible for Linux to be developed
under itself. Also GNU applications replaced all MINIX ones because, with code from the GNU
system freely available, it was advantageous if this could be used with the fledgling operating
system. Code licensed under the GNU GPL can be used in other projects, so long as they also are
released under the same or a compatible license. In order to make the Linux available for
commercial use, Torvalds initiated a switch from his original license (which prohibited commercial
redistribution) to the GNU GPL. Developers worked to integrate GNU components with Linux to
make a fully functional and free operating system.
Commercial and popular uptake
Today Linux distributions are used in numerous domains, from embedded systems to
supercomputers, and have secured a place in server installations with the popular LAMP application
stack. Use of Linux distributions in home and enterprise desktops has been expanding. They have
also gained popularity with various local and national governments. The federal government of
Brazil is well known for its support for Linux. News of the Russian military creating their own
Linux distribution has also surfaced, and has come to fruition as the G.H.ost Project. The Indian
state of Kerala has gone to the extent of mandating for all state high schools to run Linux on their
computers. China uses Linux exclusively as the operating system for its Loongson processor family
to achieve technology independence. In Spain some regions have developed their own Linux
distributions, which are widely used in education and official institutions, like gnuLinEx in
Extremadura and Guadalinex in Andalusia. Portugal is also using its own Linux distribution Caixa
Mágica, used in the Magalhães netbook and the e-escola government program. France and Germany
have also taken steps towards the adoption of Linux.
Linux distributions have also become popular with the newly founded netbook market, with many
devices such as the ASUS Eee PC and Acer Aspire One shipping with customized Linux
distributions installed.
Current development
Torvalds continues to direct the development of the kernel. Stallman heads the Free Software
Foundation, which in turn supports the GNU components. Finally, individuals and corporations
develop third-party non-GNU components. These third-party components comprise a vast body of
work and may include both kernel modules and user applications and libraries. Linux vendors and
communities combine and distribute the kernel, GNU components, and non-GNU components, with
additional package management software in the form of Linux distributions.
Design
A Linux-based system is a modular Unix-like operating system. It derives much of its basic design
from principles established in Unix during the 1970s and 1980s. Such a system uses a monolithic
kernel, the Linux kernel, which handles process control, networking, and peripheral and file system
access. Device drivers are either integrated directly with the kernel or added as modules loaded
while the system is running.
35
Separate projects that interface with the kernel provide much of the system's higher-level
functionality. The GNU userland is an important part of most Linux-based systems, providing the
most common implementation of the C library, a popular shell, and many of the common Unix
tools which carry out many basic operating system tasks. The graphical user interface (or GUI) used
by most Linux systems is built on top of an implementation of the X Window System.
User interface
Users can control a Linux-based system through a command line interface (or CLI), a graphical user
interface (or GUI), or through controls attached to the associated hardware (this is common for
embedded systems). For desktop systems, the default mode is usually graphical user interface,
where the CLI is available through terminal emulator windows or on a separate virtual console.
On desktop machines, KDE, GNOME, and Xfce are the most popular user interfaces, though a
variety of additional user interfaces exist. Most popular user interfaces run on top of the X Window
System (often simply called "X"), which provides network transparency, enabling a graphical
application running on one machine to be displayed and controlled from another.
Other GUIs include X window managers such as FVWM, Enlightenment, and Window Maker. The
window manager provides a means to control the placement and appearance of individual
application windows, and interacts with the X Window System. This is a more minimalist goal than
KDE, GNOME et al., which are termed desktop environments.
A Linux system typically provides a CLI through a shell, which is the traditional way of interacting
with a Unix system. A Linux distribution specialized for servers may use the CLI as its only
interface.
Most low-level Linux components, including the GNU userland, use the CLI exclusively. The CLI
is particularly suited for automation of repetitive or delayed tasks, and provides very simple inter-
process communication. A graphical terminal emulator program is often used to access the CLI
from a Linux desktop.
Development


A summarized history of Unix-like operating systems showing Linux's origins. Note that despite
similar architectural designs and concepts being shared as part of the POSIX standard, Linux does
not share any non-free source code with the original Unix or MINIX.

36
The primary difference between Linux and many other popular contemporary operating systems is
that the Linux kernel and other components are free and open source software. Linux is not the only
such operating system, although it is by far the most widely used. Some free and open source
software licenses are based on the principle of copyleft, a kind of reciprocity: any work derived
from a copyleft piece of software must also be copyleft itself. The most common free software
license, the GNU GPL, is a form of copyleft, and is used for the Linux kernel and many of the
components from the GNU project.
Linux based distributions are intended by developers for interoperability with other operating
systems and established computing standards. Linux systems adhere to POSIX, SUS, ISO, and
ANSI standards where possible, although to date only one Linux distribution has been POSIX.1
certified, Linux-FT.
Free software projects, although developed in a collaborative fashion, are often produced
independently of each other. The fact that the software licenses explicitly permit redistribution,
however, provides a basis for larger scale projects that collect the software produced by stand-alone
projects and make it available all at once in the form of a Linux distribution.
A Linux distribution, commonly called a "distro", is a project that manages a remote collection of
system software and application software packages available for download and installation through
a network connection. This allows the user to adapt the operating system to his/her specific needs.
Distributions are maintained by individuals, loose-knit teams, volunteer organizations, and
commercial entities. A distribution is responsible for the default configuration of the installed Linux
kernel, general system security, and more generally integration of the different software packages
into a coherent whole. Distributions typically use a package manager such as Synaptic, YAST, or
Portage to install, remove and update all of a system's software from one central location.
Community
A distribution is largely driven by its developer and user communities. Some vendors develop and
fund their distributions on a volunteer basis, Debian being a well-known example. Others maintain
a community version of their commercial distributions, as Red Hat does with Fedora.
In many cities and regions, local associations known as Linux Users Groups (LUGs) seek to
promote their preferred distribution and by extension free software. They hold meetings and provide
free demonstrations, training, technical support, and operating system installation to new users.
Many Internet communities also provide support to Linux users and developers. Most distributions
and free software / open source projects have IRC chatrooms or newsgroups. Online forums are
another means for support, with notable examples being LinuxQuestions.org and the Gentoo
forums. Linux distributions host mailing lists; commonly there will be a specific topic such as usage
or development for a given list.
There are several technology websites with a Linux focus. Print magazines on Linux often include
cover disks including software or even complete Linux distributions.
Although Linux distributions are generally available without charge, several large corporations sell,
support, and contribute to the development of the components of the system and of free software.
An analysis of the Linux kernel showed 75 percent of the code from December 2008 to January
2010 was developed by programmers working for corporations, leaving about 18 percent to the
traditional, open source community. Some of the major corporations that contribute include Dell,
37
IBM, HP, Oracle, Sun Microsystems, Novell, Nokia. A number of corporations, notably Red Hat,
have built their entire business around Linux distributions.
The free software licenses, on which the various software packages of a distribution built on the
Linux kernel are based, explicitly accommodate and encourage commercialization; the relationship
between a Linux distribution as a whole and individual vendors may be seen as symbiotic. One
common business model of commercial suppliers is charging for support, especially for business
users. A number of companies also offer a specialized business version of their distribution, which
adds proprietary support packages and tools to administer higher numbers of installations or to
simplify administrative tasks. Another business model is to give away the software in order to sell
hardware.
Programming on Linux
Most Linux distributions support dozens of programming languages. The most common collection
of utilities for building both Linux applications and operating system programs is found within the
GNU toolchain, which includes the GNU Compiler Collection (GCC) and the GNU build system.
Amongst others, GCC provides compilers for Ada, C, C++, Java, and Fortran. The Linux kernel
itself is written to be compiled with GCC. Proprietary compilers for Linux include the Intel C++
Compiler, Sun Studio, and IBM XL C/C++ Compiler. BASIC is supported in such forms as
Gambas, FreeBASIC, and XBasic.
Most distributions also include support for PHP, Perl, Ruby, Python and other dynamic languages.
While not as common, Linux also supports C# via the Mono project, sponsored by Novell, C# via
Vala and Scheme. A number of Java Virtual Machines and development kits run on Linux,
including the original Sun Microsystems JVM (HotSpot), and IBM's J2SE RE, as well as many
open-source projects like Kaffe.
The two main frameworks for developing graphical applications are those of GNOME and KDE.
These projects are based on the GTK+ and Qt widget toolkits, respectively, which can also be used
independently of the larger framework. Both support a wide variety of languages. There are a
number of Integrated development environments available including Anjuta, Code::Blocks, Eclipse,
KDevelop, Lazarus, MonoDevelop, NetBeans, Qt Creator and Omnis Studio while the long-
established editors Vim and Emacs remain popular.
Uses
As well as those designed for general purpose use on desktops and servers, distributions may be
specialized for different purposes including: computer architecture support, embedded systems,
stability, security, localization to a specific region or language, targeting of specific user groups,
support for real-time applications, or commitment to a given desktop environment. Furthermore,
some distributions deliberately include only free software. Currently, over three hundred
distributions are actively developed, with about a dozen distributions being most popular for
general-purpose use.
Linux is a widely ported operating system kernel. The Linux kernel runs on a highly diverse range
of computer architectures: in the hand-held ARM-based iPAQ and the mainframe IBM System z9,
System z10 in devices ranging from mobile phones to supercomputers. Specialized distributions
exist for less mainstream architectures. The ELKS kernel fork can run on Intel 8086 or Intel 80286
16-bit microprocessors, while the µClinux kernel fork may run on systems without a memory
38
management unit. The kernel also runs on architectures that were only ever intended to use a
manufacturer-created operating system, such as Macintosh computers (with both PowerPC and Intel
processors), PDAs, video game consoles, portable music players, and mobile phones.
There are several industry associations and hardware conferences devoted to maintaining and
improving support for diverse hardware under Linux, such as FreedomHEC.
Desktop

GNOME


KDE SC


Xfce


LXDE
39
The popularity of Linux on standard desktops (and laptops) has been increasing over the years.
Currently most distributions include a graphical user environment. The two most popular such
environments are GNOME and KDE, both of which are mature and support a wide variety of
languages.
The performance of Linux on the desktop has been a controversial topic; for example in 2007 Con
Kolivas accused the Linux community of favoring performance on servers. He quit Linux kernel
development because he was frustrated with this lack of focus on the desktop, and then gave a "tell
all" interview on the topic. Since then a significant effort has been expended improving the desktop
experience. Projects such as upstart aim for a faster boot time. There are several companies that do
port their own or other companies' games to Linux.
Many types of applications available for Microsoft Windows and Mac OS X are also available for
Linux. Commonly, either a free software application will exist which does the functions of an
application found on another operating systems, or that application will have a version that works
on Linux (such as Skype). Furthermore, the Wine project provides a Windows compatibility layer
to run unmodified Windows applications on Linux. CrossOver is a proprietary solution based on the
open source Wine project that supports running Windows versions of Microsoft Office, Intuit
applications such as Quicken and QuickBooks, Adobe Photoshop versions through CS2, and many
popular games such as World of Warcraft and Team Fortress 2. In other cases, where there is no
Linux port of some software in areas such as desktop publishing and professional audio, there is
equivalent software available on Linux.
Many popular applications are available for a wide variety of operating systems. For example
Mozilla Firefox, and OpenOffice.org have downloadable versions for all major operating systems.
Furthermore, some applications were initially developed for Linux (such as Pidgin, and GIMP) and,
due to their popularity, were ported to other operating systems (including Windows and Mac OS
X).
A growing number of proprietary desktop applications are also supported on Linux, see List of
proprietary software for Linux. In the field of animation and visual effects, most high end software,
such as AutoDesk Maya, Softimage XSI and Apple Shake, is available for Linux, Windows and/or
Mac OS X.
The collaborative nature of free software development allows distributed teams to localize Linux
distributions for use in locales where localizing proprietary systems would not be cost-effective. For
example the Sinhalese language version of the Knoppix distribution was available significantly
before Microsoft Windows XP was translated to Sinhalese. In this case the Lanka Linux User
Group played a major part in developing the localized system by combining the knowledge of
university professors, linguists, and local developers.
Installing new software in Linux is typically done through the use of package managers such as
Synaptic Package Manager, PackageKit, and Yum Extender. While major Linux distributions have
extensive repositories (tens of thousands of packages), not all the software that can run on Linux is
available from the official repositories. Alternatively, users can install packages from unofficial
repositories, download pre-compiled packages directly from websites, or compile the source code