Client-Server Architecture and Software Licenses: An Overview
Client-Server Architecture
Overview
The client-server model aims to provide usability, flexibility, scalability, interoperability, and effective communication. It’s an extension of modular programming where software modules are separated for easier development and maintenance.
Client (Front-End)
The client process allows users to formulate requests and send them to the server. Its functions include:
- Managing the user interface
- Interacting with the user
- Processing application logic and performing local validation
- Generating database requests
- Receiving results from the server
- Formatting results
Server (Back-End)
The server process handles requests from multiple clients for resources it manages. Its functions include:
- Accepting database requests from clients
- Processing database requests
- Formatting data for transmission to clients
- Processing application logic and performing database validation
Characteristics of Client/Server Architecture
- Combines a client that interacts with the user and a server that interacts with shared resources.
- The client process provides the interface between the user and the system.
- The server process manages shared resources like databases, printers, and modems.
Software Licenses
Definitions
A license is a contract between a software developer (holding intellectual property and copyright) and the user, defining their rights and obligations. The developer chooses the license under which the software is distributed.
A patent grants exclusive rights to an inventor for a new product, allowing industrial exploitation for a limited time.
Copyright protects authors of original literary, dramatic, musical, artistic, and intellectual works, both published and unpublished.
Types of Software Licenses
Free Software
- Allows running the program for any purpose.
- Permits studying and adapting the program.
- Enables redistribution of copies.
- Allows improving the program and releasing improvements to the public.
Open Source Software
- Free distribution
- Includes source code
- Allows modifications and derivative works under the same conditions
- Maintains integrity of the author’s source code
- No discrimination against persons or groups
- No field of activity restrictions
- Rights apply to all redistributed software without additional conditions
- Technology-neutral license
Open Standard
- Availability
- Maximizes end-user options
- No deployment fees
- No discrimination
- Permits extension or restriction
- Avoids predatory practices
Other License Types
- Public Domain Software: Not protected by copyright.
- Copyleft Software: Free software with distribution terms preventing redistributors from adding restrictions.
- Semi-Free Software: Non-free software with permission for non-profit private use, copying, distribution, and modification.
- Freeware: Allows redistribution but not modification (source code may be unavailable).
- Shareware: Allows redistribution but requires a license fee for continued use.
- Proprietary Software: Use, redistribution, or modification is prohibited or requires permission.
- Commercial Software: Developed for profit.
Free Software Development
Ethical Motivation
The Free Software Foundation believes software is knowledge and should be freely distributed. Concealing it is considered antisocial, and modifying software is a form of freedom of expression.
Pragmatic Motivation
The Open Source Initiative highlights the technical and economic advantages of open-source software, avoiding the term “free” to prevent confusion with “free of charge.”