Introduction To Free/Open - Source Software: University of Puerto Rico at Mayagüez Department of Mathematical Sciences
Introduction To Free/Open - Source Software: University of Puerto Rico at Mayagüez Department of Mathematical Sciences
Introduction To Free/Open - Source Software: University of Puerto Rico at Mayagüez Department of Mathematical Sciences
Introduction to
Free/Open--Source Software
· 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
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
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
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
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
7.11.2 Training Courses 152
7.12 Chapter Review 152
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
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
10
11.6.8 Eclipse 245
11.6.9 Bug Reporting Tools 245
11.6.10 Bugzilla 246
11.7 Chapter Review 246
11