Pergi ke kandungan

Transwiki:Risalah Konsep FLOSS

Daripada Wikibuku

[masih dalam process penterjemahan, sila buat perbandingan kepada en:FLOSS Concept Booklet ]

Pengenalan / Konsep


Apa itu perisian bebas (Free Software) ?


Perisian bebas merupakan perisian yang boleh digunakan, disalin, dipertingkatkan persembahannya, diperiksa atau diedarkan, sama ada percuma atau dengan harga yang tertentu. Dengan lebih tepat, ia merujuk kepada empat jenis kebebasan asas, di mana pengguna-pengguna perisian boleh:

  1. Para pengguna seharusnya boleh melaksanakan perisian untuk sebarang tujuan.
  2. Para pengguna seharusnya boleh memeriksa dan belajar perisian secara terperinci dan seharusnya boleh mengubahsuai dan memperbaiki perisian secara bebas supaya lebih memenuhkan keperluan mereka.
  3. Para pengguna seharusnya boleh memberikan salinan perisian kepada orang-orang yang memerlukan perisian tersebut.
  4. Para pengguna seharusnya boleh memperbaiki perisian dan mengedarkan pengubahsuaian mereka kepada orang ramai supaya mereka akan memperoleh manfaat bersama-sama.

Konsep ini bukan sesuatu yang baru atau istimewa. Ini merupakan cara perisian dihasilkan di permulaan sejarah perisian. Tetapi setelah perusahaan-perusahan besar masuk ke bidang ini, mereka bermula mengubah peraturan bidang ini. Mereka menganggap perisian sebagai satu cara untuk mendapatkan keuntungan dan bukan lagi cara untuk memudahkan kehidupan.

Sebagai seorang pengguna, mengapa saya ingin memeriksa dan mengubahsuai perisian saya?


What is important is not that you can modify or view the sources, but the fact that you are not dependent on a particular person or entity to do it. As technology evolves, hardware, software and users' requirements change. And software, being a tool to make life easier, too has to be subject to easy and quick modification. So, even if you, as a user cannot change or modify the software, you can be sure that you are not subject to monopoly power of the person from whom you purchased the software.

That apart, it is necessary to be able to examine the software, to see if it has malicious features. For example, to check whether the program is spying on you. One version of Windows was designed to report to Microsoft all the software on your hard disk. But Microsoft is not alone: the KaZaa music sharing software is designed so that KaZaa's business partner can rent out the use of your computer to their clients. You need to be able to examine and modify your software to be able to protect yourself against such mistreatment.

There are other reasons such as being able to fix bugs, and modify programs to your needs. These wil be explained a little latter.

Doesn't "free" mean that I do not have to pay for the software?


No. The word "free" has two meanings in the English language.

  1. The "free" in "free beer", which refers to zero cost.
  2. The "free" in "free speech", which refers to freedom.

The free in free software refers to the freedoms that we've talked about above that people have. There's nothing in the definition of free software that says that you cannot sell it to someone for a price. Indeed, there are companies whose entire business model is centred around collecting, compiling and selling free software. However, since someone to whom free software is licensed is free to sell or give it away in turn, you can almost always easily find it openly (and legally) downloadable on the Internet.

When you hear of "free software", think of liberty, freedom, and "free enterprise".

Well, what's not "free" about other kinds of software?


Most non-free software in the world today is not sold, it is licensed. From complex operating systems to tiny games or screen savers, the end users of the software have a license to use it under conditions laid out in an End User Licence Agreement. This agreement lists out the conditions under which the user can use the software – often restrictions are imposed on the use to which the software can be put. In almost all cases, users are explicitly prohibited from "taking the software apart" to study how it works, cannot modify or improve it, are only allowed to make a single copy of the software (for backup purposes) and are strictly prohibited from giving copies to other people.

What do you mean by "Copyleft"? What's wrong with copyright? How is this different?


Copyleft is a general method for making a program free software and requiring all modified and extended versions of the program to be free software as well. The simplest way to make a program free is to put it in the public domain, uncopyrighted. This allows people to share the program and their improvements, if they are so minded. But it also allows uncooperative people to convert the program into proprietary software. They can make changes, many or few, and distribute the result as a proprietary product. People who receive the program in that modified form do not have the freedom that the original author gave them; the middleman has stripped it away. Also the developers of free software will be forced to compete with improved versions of their own software.

Copyleft says that anyone who redistributes the software, with or without changes, must pass along the freedom to further copy and change it. Copyleft guarantees that every user has freedom, and ensures that somebody does not remove the freedom from free software.

To copyleft a program, first state that it is copyrighted; then add distribution terms in the form of a license document – they comprise a legal instrument that gives everyone the rights to use, modify, and redistribute the program's code or any program derived from it but only if the distribution terms are unchanged. Thus, the code and the freedoms become legally inseparable.

According to the Free Software Foundation, "Proprietary software developers use copyright to take away the users' freedom; we use copyright to guarantee their freedom. That's why we reverse the name, changing 'copyright' into 'copyleft'."

Is this copyleft against the law?


No. Copyleft relies on the concept of license in law of copyright.

Legally, a license is a contract between the licensor and the licensee and legally, parties have the freedom of contract – meaning that they can enter into contracts with each other after mutual agreement on the terms. Unless the terms incorporate elements that are illegal, parties can agree on any terms that they wish. When we say that something is copylefted, we refer to a particular feature in a legally binding license agreement between the parties. While copyleft may be a novel concept, it certainly is not illegal.

But the Free Software Foundation believes that its GNU GPL is not a contract. It is a mere license; a unilateral permission granted by owner of the copyright.

What other licenses exist to protect free software?


There are many license that make a software free. But only some of them preserve user freedom aka copyleft. The non-copyleft license include X11, BSD, Artistic... The copyleft licenses include the LGPL, GFDL, ...

For a more complete list of licenses check out the GNU website.


We in the free software community feel that the harm caused by obstructing software use cannot be justified by the profit obtained through selling software. We use other means to earn money.

Contrary to your assumption that allowing distribution and modification causes loss, Stallman lists three levels of material harm caused by restrictions on distribution and modification:

  1. Fewer people use the program.
  2. None of the users can adapt or fix the program.
  3. Other developers cannot learn from the program, or base new work on it.

For a detailed analysis, check out the essay [ "Why Software Should Be Free"] by Richard Stallman.

This freedom with software programs is interesting. Can this be extended to other forms of information like books?


Yes. Most user manuals for free software programs, for example are released under either free or copyleft licenses. Already, much literature is available under permissive terms. But unlike software, books and articles contains speech and personal opinion. So, the benefit of unlimited modification is not always desirable in case of literature.

History of Free Software


When did this whole free software thing start?


Software sharing is as old as computers. But the Free Software Movement traces its history to a software sharing community at the MIT Artificial Intelligence Lab. Richard Stallman became a member of this software sharing community when he joined the lab in 1971.

In the early 1980s due to a series of events, the hacker community collapsed. Richard Stallman was one of the few hackers left out in the lab and he was faced with a stark moral choice. He could accept the world has changed and start using proprietary software. Or he could create a free operating system which could recreate a community of cooperating hackers. In short, he could either change himself or change the world.

Stallman decided to change the world. And thus the GNU(pronounced Guh-new) project, a free replacement for the Unix operating system was born. In January 1984, Stallman quit his job at MIT and began writing GNU software. One of the first pieces of GNU software that Stallman wrote was the Emacs text editor. Slowly more hackers joined Stallman and started putting together a complete body of free software. This ranged from tiny programs like ls and cp to the huge packages like the GNU compiler collection and the Bash shell.

Free software Timeline

Larger version

Okay, but now what is Linux? When did that come about?


Until 1991, most of the programs required to create a complete operating system had been created by the GNU project, except for one important piece - the kernel. By then, a Finnish student called Linus Torvalds had written a free Unix compatible kernel called Linux(pronounced Lee-nux). The kernel combined with the rest of GNU packages formed a complete usable operating system. Today though this combination is called Linux, it is more accurately called GNU/Linux.

Production Methodology


How is Free Software actually made?


Same way other software is made. People sit on the computer keyboard and type in commands and codes and compile them.

To properly understand how free software is made, we have to have a good idea how all software – free and proprietary is made.

Follow this link to find more about Who is doing it?

Okay, how is software made then?


A software program is simply a set of instructions to a computer to do something. Since the computer is a machine without any capacity to think for itself, it can only understand instructions written in a particular language – this format is called "object code". Unfortunately, to human beings, object code looks like gibberish. While they are creating software, humans use a particular format that they can easily understand called "source code". Source code uses letters, numbers and punctuation and, like any human language, can be understood by humans who learn to do so. So now we have source code, a format that programs are written in or created by humans but which looks like gibberish to a computer and object code – a set of instructions that a computer can understand but which look like gibberish to a human. A special program called a compiler transforms the source code into the object code. To reiterate, a human being writes down what it wants the computer to do in a format called source code. It's then translated into the only language that computers understand – object code. A special program called a compiler does this translation.

So now that I understand how software is made, how is free software made ?


Remember, humans cannot understand object code. Therefore, if a human wants to closely study, modify or improve a piece of software, she has to have access to the source code of the software. Since being free to examine, modify or improve software is central to the concept of Free Software, it follows that humans have to have access to the source code of a piece of software for it to be considered free.

Unlike proprietary software where only the original software creators (or those they explicitly provide access) have access to the source code, anyone who is interested can get access to the source code of free software. Therefore, if a user of free software wants to modify or improve it, she is free to do so. In many cases, the people who make the improvements make the improved software available to the broader public via the Internet. By definition and in practice, people who, in most cases, are connected to each other just through the Internet create free software collaboratively. One critical aspect of the creation of free software that is often overlooked is the feedback in the form of complaints and suggestions from normal users. This feedback is actively sought and many tools exist that make it easy for lay users to integrate these complaints, bug reports and suggestions into the production methodology.

So how is this different from the production of other kinds of software?


Typically, entities that produce non-free software usually have very tight restrictions on who has access to the source code of their programs and distribute their software only in object code format. The reason for this is that while it is very easy to compile source code into object code, it is very difficult to get the original source code from the object code. An analogy would be curds. While it's easy to make curds from milk, it's pretty much impossible to get milk from curds.

What kinds of people make free software?


The short answer:- Anybody who knows how to write code. Any corporate body which benefits from software.

Many people who write free software are volunteers, they probably have an unrelated day time job. These people spend their free time developing free software.

Commercial organizations that benefit from free software distribution or that provide free software support also develop free software by investing portions of their profit. Example of such organizations are Redhat and Mandrake.

There are many non-profit organizations that raise funds to develop free software, through donations from free software users. The Free Software Foundation is one such organization. Other examples are SPI, Gnome Foundation, Mozilla Foundation, and the like.

Some free software packages are developed by universities. The Festival text to speech engine, Octave - the Matlab clone are examples of software developed by universities.

Many commercial organizations also contribute to the development of free software, because these organizations benefit from the existing free software code base. For example IBM maintains the port of the Linux kernel to the PowerPC, because it needs a OS for its processor.

But I still don't understand why anyone would want to give away their work for free? What's in it for them!?


For love or for money!!!

Yes, people do make money by releasing software created by them as free software. Corporate bodies like MySQL, RedHat, Mandrake, to name a few, make money because they release software created by them as free software. And they do find that they are able to make more money than they ever would have made if they kept the software as non-free.

It's misleading to use the term give away to mean distribute a program as free software. It implies the issue is price, not freedom. One way to avoid the confusion is to say release as free software.

There are many reasons why people write free software. Many people would like to live in freedom. They contribute to free software so that they can continue to live in freedom. Some people write free software just for the fun of it. They love programming and hence use their programming skills to do something useful.

You might want to read Eric Raymond's paper titled [ "Homesteading the Noosphere"]. Eben Moglen in his paper titled [ "Anarchism Triumphant: Free Software and the Death of Copyright"] explains "Moglen's Metaphorical Corollary to Farday's Law". This law also explains why people develop free software.

What do you mean by a Digital Commons?


In what ways could I benefit from involving myself in this Digital Commons?


Arguments for using Free Software


I'm still not convinced. Surely a big computer company knows best when it comes to designing software? Why would I want to use software designed by an amateur?


Well, free software is NOT created by amateurs. The free software development process is open and transparent. If you want to include your code into a free software project, it will be scrutinised by several people. Amateurish and or badly written code will be rejected outright.

Though your assumption that "big companies" are better at designing software is questionable, "big companies" are free to develop free software too. And they do develop free software. For example IBM develops free software, Redhat develops free software, Mandrake develops free software.

If there are a group of people who would like to have a particular software written, they can bring together funds, hire a programming company, get the software written by professionals and then release it as free software. There is no reason why free software has to be written by amateurs. May be it is common today, but it doesn't have to be that way.

Even if the free software designed by the amateur is inferior than the non-free software designed by a professional, you might want to use the free software because it gives you freedom, which is more important.

What we use depends on what we want. For computer users, software that can do the things they wants done is a necessity. If such software does not exist, then they cannot do the particular kind of work. How well the work can be done, and how quickly, depends on the quality of the software available. It is, therefore, desirable to have software that enables the users to do the work with least effort and to get the best possible output. These qualities of the software generally improve with time. But more important than all these is the quality of freedom that the software has. If the software is restricted, and the company that makes it withholds all information about how the software is created and in what format the files are created, then the users become dependent on the company, and subject to exploitation. Because these are much more important in the larger context, it is important to use free software rather than proprietary software. And it is certainly not true that larger companies know better about designing software. They depend on a small group of programmers and are not generally in close contact with the users as in the case of free software. Thus, free software developers are often more aware of the needs of the users and their complaints about the existing versions. In any case, an examination of many free software applications show that today they are as good as or better than equivalent proprietary applications, or are reaching there fast. And a large fraction of free software developers are not amateurs.

And, finally, how do you know if the big company which sells non-free software did not hire an amateur programmer to write that code?

But what about bugs? Surely free software is more likely to be virus prone?


The question involves two different types of computer related problems - Bugs and Viruses.

Bugs are unintentional errors in programs. With free software when you find a bug in the program, you have the freedom to exercise freedom two, the freedom to help yourself and correct the program. If you are not a programmer you are free to hire any programmer and correct the program. You are not under the mercy of any single organization. By submitting the bug fixes to the maintainer of the package the software package becomes better and better.

Virus is a malicious program that infects other programs by embedding a copy of itself in them. When these programs are executed the embedded virus is executed too, thus propagating the infection. Viruses are prevalent in systems that lack proper security. The GNU operating system is based on POSIX standards, and was designed from ground up with proper security and hence shows high immunity to viruses. This has nothing much to do with free software itself.

Since the source code is available, won't it be easy for someone to find out a security loop hole and exploit it?


Yes. But before the source gets to the hands of people who *exploit* loopholes, it passes through hands of people who *develop* free software. And they usually fix such loopholes.

And with free software, exploitation of a loophole is very, very, very quickly reported and fixed, often within hours.

Look at it this way, since the source is available, it would be easy for someone to find out a security loop hole, and make a patch for it, even before its exploited !

So you're saying that free software actually evolves at a faster pace than proprietary software?


Free software tends to evolve extremely rapidly. This is primarily because of the way it involves its users, who contribute bug reports and even code patches to the tool's development. The path and the pace of development is extremely open and only features and issues that are needed ever gets done. Release fast and release often is the main 'mantra' of this kindof development.

Note however that this benefits only tools which have reached the stage of being in popular use. Once this happens it is in the interest of the users too to promote and actually contribute to the development. In a way this ensures only the deserving and useful tools gets supported in this manner.

Contrary to popular assumptions this model is laissez faire in the truest and most efficient manner as possible. Demand and supply works best with more than finite number of suppliers and consumers. And this is what happens here.

The pace of evolution is actually controlled by the popularity and the usefullness of the sofware. The more popular a piece of software is, the faster it evolves. In fact if something hinders this pace in any manner, like a dis-interested maintainer or an abandoned company, often project "forks" spring up to continue with the development, under another banner since the original source is free to be used or maintained by anyone.

Compared to the isloated model of developement employed by the proprietary software, this is a tremendous plus. There exists no questions about the continuity of the tool either, which is the ultimate barrier in the path of software evolution.

This concept is explained really well in Eric Raymond's Cathedral and Baazar paper.

Free software is only something used by computer enthusiasts, right?



Free software is used by people who value their freedom more than anything else.

Have any established organizations actually used free software to their advantage?


To start with, this page is hosted on a server running free software. And more than 98% of all the Domain Name Servers, which identify the machine on which a page (like http://wikibooks/org) is situated, is free software. More than 80% of all web server software is free software, called Apache. More than 60% of all network servers run the Linux kernel, another free software. The TCP/IP implementation on most computers, (including those running non-free operating systems) is free software.

Personal Relationship to Free Software


What kinds of problems might I expect to encounter using free software?


Exactly same kind of problems you face with non free software.

Some problems with free software today is,

  • Incoherence. Take manuals for example. Some free software come with info manuals, some with man pages, some with html documents, some others with plain text files, and yet some other with source code comments!
  • Inability to use certain patented algorithms. But that is not a problem with free software as such.
  • Non-availability of drivers for certain devices like modems.
  • Free software cannot be legally used (at least in the US) for certain activities that involve copy-protection techniques. This includes playing encrypted DVDs.

Okay, but why would I want to modify my software anyway?


There are a plenty of reasons. Say for example a software does not support your local language. You would like this software to be available in your local language so that you can use it. If the software is proprietary you will have to go and beg the "owner" of the software. If he finds making the change wouldn't be profitable, he will not make the change. With free software, you can make the change yourself or you can got to a programming company and ask them to make the changes for you. With free software you are not helpless.

Look, I'm no computer whiz! Isn't it easier for me to just use packaged software? Who do I turn to when something goes wrong?


Using free software is all more important if you are not a computer expert. That way, you do not have to depend on the company from whom you purchased non-free software.

If you are looking for ``free of cost help, there will always be a free software user group or Linux User Group in your locality. Find one. Or ask any of the innumerable mailing lists which provide support. You will be surprised at the response and support you receive.

If you are willing to spend money, you can always hire a company or a consulting programmer to help you.

You can also buy support from expert companies. Since the software itself is open, the support vendor cannot lock you down like it happens with proprietary softwares. You are always free to go to another support vendor.

Also if your requirement is pretty huge, it will be highly cost effective to have an in house software development and support team who will take the free software and customize it for your needs and constantly maintain it.

But how do I know I can trust someone not linked to a big company that has a reputation to uphold?


Several big companies do provide support for free software. Several big companies charge several times more than several individual or small companies for their services. Remember, in free software scenario, you are paying only for he services, not the product or package. So, there will be immense savings, and companies, or consultants who work on free software will always have lesser turnover, even if they experts and market leadersin their field.

Okay, so how would I begin to install free software on my machine?


Once again, the same way you begin to install non-free software on your machine. You can buy computers with free software pre-installed. Or you can get a friend to do it for you. Or find a professional for doing it.

If you decide to do it yourselves, it will certainly be a pleasant experience. You should fitst find a good distributor, and read their installation manual.

Which GNU/Linux distribution should I use?


There are more than 60 publicly available GNU/Linux distros out there. Debian, fedora, and Mandrake, are the more popular ones (listed in alphabetical order). There are also distros called DamnSmall Linux, Gentoo, Knoppix, Morphix, SkoleLinux, Slackware, SuSe, TurboLinux, etc.

If you are a new user you might want to try out Mandrake Linux. Mandrake Linux is particularly targeted at new users.

Fedora is also new user friendly.

Try Debian if you are good at computers and have a little working knowledge of the GNU/Linux system. The primary strength of Debian is the sheer number of packages. It also has support for many differnt architectures. Best thing about Debian is that is distinguishes between softwares which are entirely free and not exactly free. Debian also has a distribution which is based on the Hurd kernel, instead of the Linux kernel. Use Hurd only if you are really interested in developing free software.

You might want to stay out of Suse, United Linux... These distributions come with non-free software packages, that essentially take away your freedom. United Linux in particular comes with a per seat licensing, which gives you as much as freedom as Microsoft Windows.

Depending on your need there are even specialised GNU/Linux distributions. There is one which plays only Video CDs. There are several which are used only as firewalls. Some distros run from one or two floppies. Some distros are intended to be used as rescue disks There is a distro even for Geographical Information Systems (GIS). Most major distros come with several Compact Disks, but you can have a running and usable system with usually the first one or two CDs.