Introduction To Free/Open - Source Software: University of Puerto Rico at Mayagüez Department of Mathematical Sciences

Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

University of Puerto Rico at Mayagüez Department of Mathematical Sciences

Introduction to
Free/Open--Source Software

Version 1.1 August 1, 2008


Version 1.1 - Marko Schütz
Copyright 2008
C University of Puerto Rico at Mayagüez. All Rights Reserved.
Version 1.0, the initial version, of this document was produced as a part of the
sponsored research The Asia Open Source Software (OSS) Infrastructure Building
Program of The Center of the International Cooperation for Computerization (CI-
CC) by Kazuo Hiyane, Jun Iio.
Copyright 2006
C Mitsubishi Research Institute, Inc. All Rights Reserved.
Copyright 2006
C Center of the International Cooperation for Computerization. All
Rights Reserved.
This documents is licensed under a Creative Commons Attribution 2.5 License. You
are free to:

· copy, distribute, display, and perform the work

· make derivative works

· make commercial use of the work

Under the following conditions:


Attribution. You must attribute the work in the manner specified by the author or
licensor.

· For any reuse or distribution, you must make clear to others the license terms of
this work.

· Any of these conditions can be waived if you get permission from the copyright
holder.

Your fair use and other rights are in no way affected by the above.
Microsoft Office and Microsoft Windows 98/Me/2000/XP are trade mark of Mi-
crosoft Corporation in the United States and other countries. Linux is trade mark
of Linux Tovalds in the United States and other countries. All other names of prod-
ucts and companies are in general property of their respective companies. Please
note that TM, C and R marks are omitted in the text of this document.

2
1 What is Free/Open--Source Software? 12
1.1 Why Choose Free/Open--Source Software? 12
1.2 Process of Writing Software 13
1.2.1 Operating Principles of Computers 13
1.2.2 Binary Code and Source Code 14
1.2.3 Compilers and Interpreters 14
1.2.4 Programming Languages 16
1.3 Free/Open--Source Software and Proprietary Software 16
1.3.1 Software as a Product 17
1.3.2 Issues with Software Products 17
1.3.3 Countermeasures 18
1.3.4 Emergence of Free/Open--Source Software 18
1.4 Releasing Source Code 19
1.4.1 Levels of Releasing Source Code 19
1.4.2 Benefits of Releasing Source Code 20
1.5 Truth and Misconceptions about Free/Open--Source Software 21
1.5.1 “Open--Source” is a Proper Noun 21
1.5.2 “Free Software” and “Free Beer” 22
1.5.3 More Than Just Releasing Source Code 22
1.6 FOSS Technology and Career Paths 23
1.6.1 Skill Sets for FOSS Engineers 23
1.6.2 Types of FOSS Engineers 25
1.6.3 Skill Matrix for FOSS Engineers 26
1.6.4 Career Paths for FOSS Engineers 26
1.7 Chapter Review 27

2 FOSS Application Fields and Installation of FOSS 29


2.1 FOSS Application Fields 29
2.1.1 Network Servers 30
2.1.2 Internet Business and Enterprise Systems 30
2.1.3 Embedded Systems 31
2.1.4 Engineering Workstations (EWS) 32
2.1.5 Desktops 33
2.2 Deploying Free/Open--Source Software 34
2.2.1 Dual Booting 34
2.2.2 CD Booting 35
2.2.3 Using a Virtual Machine 36
2.2.4 Using FOSS on Windows 36
2.2.5 Cygwin 37
2.3 Installing GNU/Linux 38
2.3.1 Running the Installer 38

3
2.3.2 Basic Configuration 39
2.3.3 Drive Formatting/Partitioning 40
2.3.4 Network Configuration 40
2.3.5 Time Zone Selection, Root Password Setting 41
2.3.6 Package Installation 42
2.3.7 Configuration After Software Installation 43
2.3.8 Date, Display and Other Settings 43
2.4 Chapter Review 44

3 Major FOSS and Distributions 46


3.1 Operating Systems 46
3.1.1 Linux 47
3.1.2 FreeBSD, NetBSD, OpenBSD 47
3.1.3 Darwin 48
3.1.4 Other Free/Open--Source Operating Systems 49
3.1.5 Other OS Trends 50
3.2 Middleware 51
3.2.1 Web Application Frameworks 51
3.2.2 Libraries 52
3.2.3 Examples of Libraries 53
3.3 Servers 54
3.3.1 Web (HTTP) Servers 54
3.3.2 Mail Transfer Agents 55
3.3.3 Mailing List Servers 56
3.3.4 POP3/IMAP Servers 57
3.3.5 Database Management Systems (DBMS) 58
3.3.6 Domain Name System (DNS) 59
3.3.7 File Sharing 59
3.3.8 Lightweight Directory Access Protocol (LDAP) 60
3.3.9 Information Retrieval 60
3.3.10 Content Management Systems (CMS) 61
3.3.11 Business Applications 62
3.4 Desktop Environment 63
3.4.1 GUI Environment 63
3.4.2 Integrated Desktop Environments 64
3.4.3 Mail User Agents 65
3.4.4 Web Browsers 65
3.4.5 Editors 66
3.4.6 Office Suites 67
3.4.7 Typesetting 68
3.4.8 Printing 69

4
3.4.9 Image Processing 69
3.4.10 Computer Graphics (CG) 70
3.4.11 Video 71
3.4.12 Audio, Music 72
3.4.13 Computation, Science and Technology 72
3.4.14 Kana--Kanji Conversion 73
3.4.15 Input of Non--Latin Scripts 73
3.5 Development Environments 74
3.5.1 Languages 74
3.5.2 Integrated Development Environments 75
3.5.3 Development Frameworks 76
3.6 Major GNU/Linux Distributions 76
3.6.1 About Distributions 77
3.6.2 Red Hat Linux, Fedora Core, CentOS, Etc. 78
3.6.3 Turbolinux 78
3.6.4 SUSE Linux 79
3.6.5 Vine Linux 79
3.6.6 Debian GNU/Linux 80
3.6.7 KNOPPIX 80
3.6.8 Ubuntu 81
3.7 Chapter Review 81

4 Philosophy and History of Free/Open--Source Software 83


4.1 History of Free/Open--Source Software 83
4.1.1 Birth of Hackers (1950s) 84
4.1.2 Free Software Movement and FSF (1980s) 85
4.1.3 Copy--left 86
4.1.4 Spread of the Internet 87
4.1.5 Birth of GNU/Linux (Early 1990s) 87
4.1.6 Growth of Open Source and Launch of Open Source Initiative
(Late 1990s) 88
4.1.7 Penetrating the Enterprise Market (2000s) 89
4.2 Definition of “Free/Open--Source Software” 90
4.2.1 GNU Definition of “Free Software” 90
4.2.2 Definition by Open Source Initiative 91
4.3 Free/Open--Source Software Licenses 92
4.3.1 Software Licenses 93
4.3.2 Click--On Contract 93
4.3.3 Major FOSS Licenses and Their Features 94
4.3.4 OSI--Approved Licenses 97
4.4 Chapter Review 97

5
5 FOSS Development and FOSS Community 99
5.1 Free/Open--Source Software and the FOSS Community 99
5.1.1 FOSS Distribution: Community to Users 100
5.1.2 Types of FOSS Communities 101
5.1.3 User Communities 102
5.2 Development Structure 102
5.2.1 Cathedral-- and Bazaar--Style Development 103
5.2.2 Roles of Project Members 104
5.2.3 Development Resources 104
5.2.4 SourceForge.net 105
5.2.5 BerliOS, FSF/UNESCO Free Software Directory, Savannah 105
5.2.6 Freshmeat.net, Rpmfind.net 106
5.2.7 Getting Involved in Projects 106
5.2.8 Tips for Getting Involved 107
5.2.9 Project Management 108
5.3 Topics Related to FOSS Development 108
5.3.1 Agile Development and Similar Methodologies 109
5.3.2 Stable Versions and Development Versions 110
5.3.3 Project Forks 111
5.3.4 Advantages of Free/Open--Source Development 112
5.3.5 Risks of Free/Open--Source Development 112
5.4 Communication 113
5.4.1 Communication Tools 114
5.4.2 Pros and Cons of Online Communication Tools 114
5.4.3 Offline Communication 115
5.4.4 Participating in Conferences 115
5.5 FOSS Developers 116
5.5.1 FLOSS Surveys 116
5.5.2 Free/Libre/Open--Source Software Japanese Developers
Online Survey 117
5.5.3 Developer Background and Involvement 118
5.5.4 Reason for Getting Involved 119
5.5.5 Reasons for Staying Involved 119
5.5.6 Type of Involvement 120
5.5.7 Global Involvement 120
5.5.8 Compensation 121
5.6 Chapter Review 121

6 FOSS Business 123


6.1 Reasons for Interest in FOSS Business 123
6.1.1 Changes in IT Environment 124

6
6.1.2 Changes in the Software Business 125
6.1.3 Shift from Package Sales to Services 125
6.2 Factors Driving FOSS Business 126
6.2.1 Growth of GNU/Linux Market 126
6.2.2 GNU/Linux in the Japanese Market 128
6.3 Types of Systems Development Using FOSS 129
6.3.1 Market Penetration and Reasons for FOSS System Adoption 129
6.3.2 LAMP and LAPP Systems 130
6.3.3 Java--Based Systems 130
6.3.4 Conventional Applications for FOSS Servers 131
6.4 Entry of Major Vendors into FOSS Business 131
6.4.1 On--Demand Computing and FOSS 132
6.4.2 IBM’s GNU/Linux Branding Strategy 133
6.4.3 Situation for Leading Japanese Manufacturers 134
6.5 Chapter Review 134

7 Case Studies in FOSS Business 135


7.1 Types of FOSS Business 135
7.2 Flagship Business (Major Manufacturers) 136
7.3 System Integrators 137
7.3.1 NTT Comware Corporation 138
7.3.2 Nihon Unisys, Ltd. 139
7.3.3 FOSS Deployment for Large--Scale Systems 140
7.4 Distributors 141
7.4.1 Ebb and Flow of Distributors 141
7.5 In--House FOSS Business 142
7.5.1 Network Applied Communication Laboratory 142
7.5.2 Ten Art--ni Corporation 143
7.5.3 ForeOneFirst Co., Ltd. 144
7.6 FOSS Specialization 144
7.6.1 SRA 145
7.6.2 Zend Japan, Ltd. 145
7.6.3 Good--Day Inc. 146
7.7 Package Software Business 147
7.8 Server Sales and Embedded Business 147
7.9 Embedded Development Tools Business 148
7.10 Proprietary Business Use 149
7.10.1 Amazon.com, Google 149
7.10.2 Rakuten, LiveDoor 150
7.11 Education Business 151
7.11.1 GNU/Linux and FOSS Certification 151

7
7.11.2 Training Courses 152
7.12 Chapter Review 152

8 FOSS Government Policy and E--Government 153


8.1 Reasons for FOSS Promotion by National and Local Governments 153
8.1.1 Reduce Costs and Vendor Lock--In 154
8.1.2 Transparency of Procurement and Security 155
8.1.3 Fostering the Development of Domestic Industry 156
8.1.4 Overcoming the Digital Divide 157
8.2 Trends in Europe 158
8.2.1 European Union 158
8.2.2 Germany 160
8.2.3 Case Study: Munich Municipal Government 162
8.2.4 Barriers to GNU/Linux Migration 162
8.2.5 United Kingdom 163
8.2.6 France 165
8.3 Trends in the United States 166
8.3.1 Federal Government 166
8.3.2 State Governments 168
8.3.3 Case Study: State of Massachusetts 169
8.4 Trends in Asia 170
8.4.1 East Asia: China, Taiwan and South Korea 170
8.4.2 Northeast Asia OSS Promotion Forum 171
8.4.3 Southeast Asia: Thailand, Malaysia, Philippines and Vietnam 172
8.4.4 Asia Open Source Software Symposium 174
8.5 Trends in National and Local Japanese Government 174
8.5.1 FOSS Policies by Ministry of Economy, Trade and Industry 175
8.5.2 FOSS Policies in E--Government by Ministry of Internal
Affairs and Communications (MIC) 177
8.5.3 Trends in FOSS Deployment at Local Government Level 178
8.5.4 Reasons for FOSS Deployment by Local Governments 179
8.6 Systems Procurement by Local Government and Issues for Local
IT Firms 180
8.6.1 Case Study: Nagasaki Prefecture 182
8.6.2 Case Study: Hokkaido Government 183
8.7 Education and FOSS 184
8.7.1 IT Use in Educational Settings 184
8.7.2 Situation in Japanese Schools 185
8.7.3 Aim of Software Vendors 186
8.7.4 Case Study: FOSS Trials in Education 187

8
9 Features of FOSS 188
9.1 Performance 188
9.1.1 Innovative and Fast Development 189
9.1.2 FOSS Performance Testing in Japan 189
9.2 Cost 190
9.2.1 Myth of Low Cost 191
9.2.2 Evaluating Total Cost of Ownership (TCO) 192
9.2.3 Cost Reduction Factors 192
9.2.4 Cost Disadvantages of FOSS 193
9.3 Vendor Lock--In 194
9.3.1 What is Vendor Lock--In 194
9.3.2 Examples of Lock--In Business Strategies 195
9.3.3 Separation of Interface and Implementation 196
9.3.4 Free/Open--Source Software and Open Standards 197
9.4 Security 198
9.4.1 Security of Software 198
9.4.2 Is FOSS Really More Secure? 199
9.4.3 “Many Eyes” of Developers 199
9.4.4 Naked Implementation 200
9.4.5 FOSS Security Tools 201
9.5 Educational Benefits 202
9.5.1 Source Code as an Example 202
9.5.2 Using a Debugger to Verify how Source Code Runs 203
9.5.3 Low Cost of Development Environments and Resources 203
9.5.4 Educational Benefits of Communities 204
9.6 Sustainability 205
9.6.1 Necessity of Sustainable Software Development 205
9.6.2 Realizing Sustainable Software Development 206
9.6.3 Scientific Progress and Advancement of Software 206
9.6.4 For the Advancement of Software 207

10 Issues with FOSS 208


10.1 Lack of Applications, Human Resources and Guarantees 208
10.1.1 Refinement of Applications 209
10.1.2 Underdeveloped FOSS--Related Market and Support Concerns 209
10.1.3 Shortage of Human Resources 210
10.2 Legal Risks 211
10.2.1 Relationship of FOSS versus Copyright and Patents 211
10.2.2 SCO Controversy 212
10.2.3 Responsibility of Warranty 213
10.2.4 License Violations 214

9
10.3 FOSS Deployment on Desktops 215
10.3.1 Trends in FOSS Desktop Market 215
10.3.2 Phases for Spread of FOSS Desktop Deployment 216
10.3.3 Barriers to Spread of FOSS Desktops 217
10.3.4 Examples of Issues with Japanese Language Environments 218
10.4 Diversity 219
10.4.1 Driving Factors behind Diversity 219
10.4.2 Diversity of Data 220
10.4.3 Diversity of Platforms 220
10.4.4 Diversity of User Interfaces 221
10.5 Standardization Trends and Localization 222
10.5.1 Standardization of GNU/Linux 222
10.5.2 Standardization of Documents 223
10.5.3 I18n, M17n and L10n 224
10.5.4 Examples of Internationalized Applications 225

11 Development Tools 227


11.1 Program Builds 227
11.1.1 GCC 228
11.1.2 Make 228
11.2 The GNU Linker Ld 229
11.3 Debugger 229
11.3.1 Debugging 229
11.3.2 Debugger 230
11.3.3 Debugging Example 230
11.4 Analysis Tools 232
11.4.1 Profilers 233
11.4.2 GNU Gprof 233
11.4.3 Memory Testing 234
11.4.4 Tracers 234
11.5 Source Code Management 235
11.5.1 Diff and Patch 236
11.5.2 Version Control (SCCS, RCS, CVS and Subversion) 237
11.6 Other Tools 238
11.6.1 Maintaining Compatibility 239
11.6.2 GNU Autotools 240
11.6.3 Localization 241
11.6.4 GNU Gettext 242
11.6.5 Documentation 242
11.6.6 Doxygen, Javadoc, Doc++ 243
11.6.7 Integrated Development Environments 244

10
11.6.8 Eclipse 245
11.6.9 Bug Reporting Tools 245
11.6.10 Bugzilla 246
11.7 Chapter Review 246

12 Maintaining Software and Development Examples 248


12.1 Updating Software Environments 248
12.1.1 Maintaining Software Environments 249
12.1.2 Configuration of Software 250
12.1.3 Compiling Source Code and Installing Builds 250
12.1.4 Binary Packages 251
12.1.5 Package Management Tools 252
12.2 Software Components 253
12.2.1 Finding and Using Components 253
12.2.2 Types of Components (Data Structure, XML, GUI, Etc.) 254
12.2.3 Language Specific Components 256
12.2.4 System Building Example 258
12.2.5 Web System 258
12.2.6 Application Building Example 260
12.2.7 Location of Application Files 260
12.3 Chapter Review 261

11

You might also like