Basitçe çekirdek modülleri olarak bilinen KMOD‘un 31 no’lu sürümü çıktı. Bilindiği gibi kernel, işletim sisteminin kalbidir. İşletim sistemlerinde yazılım (software) ve donanım (hardware) arasındaki bağlantı kernel ile sağlanır. KMOD, alışkın olunan programları uygulayan ikili bir yazılımdır. KMOD, Linux çekirdek modüllerini kontrol eder, yönetir, yükler ve kaldırır. Ayrıca çekirdek yüklenebilir modülleri (KLM) ve basitçe çekirdek modülleri (KMOD) olarak bilinir. KMOD yazılım projesi Lucas De Marchi ve diğerleri tarafından sürdürülmektedir. KMOD, kullanım ömrü dolmuş modül init araçlarının yerini alır. Araçlarının çoğu libkmod’un üzerine yeniden yazılır. KMOD 31 hakında bilgi edinmek için GitHub’da yazılan readme incelenebilir.
Tag Archives | software
Basitçe çekirdek modülleri olarak bilinen KMOD‘un 30 no’lu sürümü çıktı. Bilindiği gibi kernel, işletim sisteminin kalbidir. İşletim sistemlerinde yazılım (software) ve donanım (hardware) arasındaki bağlantı kernel ile sağlanır. KMOD, alışkın olunan programları uygulayan ikili bir yazılımdır. KMOD, Linux çekirdek modüllerini kontrol eder, yönetir, yükler ve kaldırır. Ayrıca çekirdek yüklenebilir modülleri (KLM) ve basitçe çekirdek modülleri (KMOD) olarak bilinir. KMOD yazılım projesi Lucas De Marchi ve diğerleri tarafından sürdürülmektedir. KMOD, kullanım ömrü dolmuş modül init araçlarının yerini alır. Araçlarının çoğu libkmod’un üzerine yeniden yazılır. KMOD 30 hakında ayrıntılı bilgi edinmek için GitHub’da yazılan readme incelenebilir.
Basitçe çekirdek modülleri olarak bilinen KMOD‘un 29 no’lu sürümü çıktı. Bilindiği gibi kernel, işletim sisteminin kalbidir. İşletim sistemlerinde yazılım (software) ve donanım (hardware) arasındaki bağlantı kernel ile sağlanır. KMOD, alışkın olunan programları uygulayan ikili bir yazılımdır. KMOD, Linux çekirdek modüllerini kontrol eder, yönetir, yükler ve kaldırır. Ayrıca çekirdek yüklenebilir modülleri (KLM) ve basitçe çekirdek modülleri (KMOD) olarak bilinir. KMOD yazılım projesi Lucas De Marchi ve diğerleri tarafından sürdürülmektedir. KMOD, kullanım ömrü dolmuş modül init araçlarının yerini alır. Araçlarının çoğu libkmod’un üzerine yeniden yazılır. KMOD 29 hakında ayrıntılı bilgi edinmek için Lucas De Marchi ‘nin GitHub’da yazdığı readme incelenebilir.
Basitçe çekirdek modülleri olarak bilinen KMOD‘un 28 no’lu sürümü çıktı. Bilindiği gibi kernel, işletim sisteminin kalbidir. İşletim sistemlerinde yazılım (software) ve donanım (hardware) arasındaki bağlantı kernel ile sağlanır. KMOD, alışkın olunan programları uygulayan ikili bir yazılımdır. KMOD, Linux çekirdek modüllerini kontrol eder, yönetir, yükler ve kaldırır. Ayrıca çekirdek yüklenebilir modülleri (KLM) ve basitçe çekirdek modülleri (KMOD) olarak bilinir. KMOD yazılım projesi Lucas De Marchi ve diğerleri tarafından sürdürülmektedir. KMOD, kullanım ömrü dolmuş modül init araçlarının yerini alır. Araçlarının çoğu libkmod’un üzerine yeniden yazılır. KMOD 28 hakında ayrıntılı bilgi edinmek için Lucas De Marchi ‘nin GitHub’da yazdığı readme incelenebilir.
Basitçe çekirdek modülleri olarak bilinen KMOD‘un 27 no’lu sürümü çıktı. Bilindiği gibi kernel, işletim sisteminin kalbidir. İşletim sistemlerinde yazılım (software) ve donanım (hardware) arasındaki bağlantı kernel ile sağlanır. KMOD, alışkın olunan programları uygulayan ikili bir yazılımdır. KMOD, Linux çekirdek modüllerini kontrol eder, yönetir, yükler ve kaldırır. Ayrıca çekirdek yüklenebilir modülleri (KLM) ve basitçe çekirdek modülleri (KMOD) olarak bilinir. KMOD yazılım projesi Lucas De Marchi ve diğerleri tarafından sürdürülmektedir. KMOD, kullanım ömrü dolmuş modül init araçlarının yerini alır. Araçlarının çoğu libkmod’un üzerine yeniden yazılır. KMOD 27 hakında ayrıntılı bilgi edinmek için Lucas De Marchi ‘nin GitHub’da yazdığı readme incelenebilir.
Docker has had a huge impact on software development life cycle, making the deployment of software at scale easy and secure. This Docker tutorial will cover the basics of running, starting, stopping, and removing Docker containers. Docker makes it so easy to work with different programming languages with different versions on different operating systems all this on the same host. Deploying your software becomes a lot easier after Docker where you don’t have to worry about missing a system configuration or a prerequisite. If you are using any kind of virtual machines to run your work inside it, why you would need Docker to run your work inside it instead? Well… The main difference between them is that Docker is an isolated process that runs in your native OS while the virtual machine is a complete isolated OS that runs on top of your host OS which takes more time to load.
Docker VS Virtual machine
So Docker has benefits over virtual machines such as:
- Loading speed
- Small hardware resources required, unlike virtual machines.
- Running multiple Docker containers at the same time on the same OS.
- You can modify your container and deploy it or give the Docker file definition to a friend to start working on the same environment.
Actually, Docker is not a replacement for virtual machines, it comes to solve specific problems.
Suppose that your application needs 3 or more services which run on different operating systems so instead of running 3 virtual machines on the same host, you can run 3 containers smoothly on the same host. Sounds great!!
Run your container
Before starting, ensure that Docker is installed correctly and is ready to accept your commands. Type the following command in a new Terminal window:
docker -v
The above command outputs the version of Docker installed on your PC:
Docker version 17.12.0-ce-rc2, build f9cde63
Time to start running the container:
docker container run alpine echo "Hello World"
When you run the above command for the first time, you should see an output in your Terminal window similar to this:
Unable to find image 'alpine:latest' locally
latest: Pulling from library/alpine
2fdfe1cd78c2: Pull complete
Digest: sha256:ccba511b...
Status: Downloaded newer image for alpine:latest
Hello World
That was easy, wasn’t it? Try running the same command again:
docker container run alpine echo "Hello World"
The second, third, or nth time you run the above command, you should see only this output in your Terminal:
Hello World
Now that you have successfully run a container, it’s time to analyze what exactly happened. Look at the following command:
docker container run alpine echo "Hello World"
This command contains multiple parts. First and foremost, you have the word docker. This is the name of the Docker command-line interface (CLI), used to interact with the Docker engine responsible for running containers.
Next, you have the word container, which indicates the context you are working with.
Next is the actual command you want to execute in the given context, which is run.
Now, you’d also need to tell Docker which container to run. In this case, this is the so-called alpine container.
Finally, you need to define what kind of a process or a task shall be executed inside the container when it is running. This is the last part of the command, echo “Hello World”.
Run a process inside a container
Now that you have understood the various parts of a command to run a container, try running another container with a different process running inside it:
docker container run centos ping -c 5 127.0.0.1
This is the output:
In the previous example, the container image you’ve used is centos and the process you’re executing inside the centos container is ping -c 5 127.0.0.1, which pings the loopback address five times until it stops.
- The first line is as follows:
Unable to find image 'centos:latest' locally
This tells you that Docker didn’t find an image named centos:latest in the local cache of the system. So, Docker knows that it has to pull the image from some registry where the container images are stored.
By default, your Docker environment is configured such that images are pulled from the Docker Hub at hub.docker.com. This is expressed by the second line, as follows:
latest: Pulling from library/centos
- The next three lines of output are as follows:
85432449fd0f: Pull completeDigest: sha256:3b1a65e9a05...Status: Downloaded newer image for centos:latest
This tells you that Docker has successfully pulled the image, centos:latest, from the Docker Hub.
All the subsequent lines of the output are generated by the process you ran inside the container, which is the ping tool in this case.
You may also have noticed the latest keyword occurring a few times. Each image has a version (also called a tag), and if you don’t specify a version explicitly, then Docker automatically assumes it as the latest version.
If you run the preceding container again on your system, the first five lines of the output will be missing since Docker will find the container image cached locally and so it won’t have to download it first. Try it out and verify.
Running a random quotes container
For the purpose of running a random quotes container, you’ll need an algorithm that produces random quotes. The API that produces those free random quotes can be found at https://talaikis.com/random_quotes_api/.
Now the goal is to have a process running inside a container that produces a new random quote every five seconds and outputs the quote to STDOUT:
while :
do
wget -qO- https://talaikis.com/api/quotes/random
printf 'n'
sleep 5
done
Stop the script by pressing Ctrl+C. Here’s the output:
{"quote":"Martha Stewart is extremely talented. Her designs are picture perfect. Our philosophy is life is messy, and rather than being afraid of those messes we design products that work the way we live.","author":"Kathy Ireland","cat":"design"}{"quote":"We can reach our potential, but to do so, we must reach within ourselves. We must summon the strength, the will, and the faith to move forward - to be bold - to invest in our future.","author":"John Hoeven","cat":"faith"}
Each response is a JSON-formatted string with the quote, its author, and its category.
Now, run this in an alpine container as a daemon in the background. For this, you’ll need to compact the preceding script into a one-liner and execute it using the /bin/sh -c “…” syntax. The Docker expression will look as follows :
docker container run -d --name quotes alpine \ /bin/sh -c "while :; do wget -qO- https://talaikis.com/api/quotes/random; printf '\n'; sleep 5; done"
In the above expression, you used two new command-line parameters, -d and –name. The -d tells Docker to run the process running in the container as a Linux daemon. The –name parameter can be used to give the container an explicit name.
If you don’t specify an explicit container name, Docker will automatically assign the container a random but unique name. This name will be composed of the name of a famous scientist and an adjective.
Such names could be boring_borg or angry_goldberg. Quite humorous, isn’t it?
One important takeaway is that the container name must be unique. Ensure that the quotes container is up and running:
docker container ls -l
The important part of the preceding output is the STATUS column, which, in this case, is Up 16 seconds. This means that the container has been up and running for 16 seconds now.
Listing containers
As you continue to run containers over time, you’d eventually get a lot of them in your system. To find out what is currently running on your host, you can use the container ls command as follows:
docker container ls
This will list all currently-running containers.
By default, Docker outputs seven columns with the following meanings:
If you want to list all the containers defined on your system, you can use the command-line parameter -a or –all as follows:
docker container ls -a
This will list containers in any state, be it created, running, or exited.
Sometimes, you may want to just list the IDs of all the containers. For this, you have the -q parameter:
docker container ls -q
You might wonder where this is useful. Here’s an example:
docker container rm -f $(docker container ls -a -q)
The above command deletes all the containers currently defined on the system, including the stopped ones. The rm command stands for remove, and it will be explained further down in the tutorial.
In the previous section, you used the -l parameter in the list command. Try to use Docker help to find out what the -l parameter stands for. You can invoke help for the list command as follows:
docker container ls -h
Stopping and starting containers
Sometimes, you may need to temporarily stop a running container. Try it out with the quotes container with this command:
docker container run -d --name quotes alpine \ /bin/sh -c "while :; do wget -qO- https://talaikis.com/api/quotes/random; printf '\n'; sleep 5; done"
Now, you can stop this container with the following command:
docker container stop quotes
When you try to stop the quotes container, you will probably note that it takes a while (about 10 seconds) until it’s executed. Why is this the case? Docker sends a Linux SIGTERM signal to the main process running inside the container.
If the process still doesn’t terminate itself, Docker waits for 10 seconds before sending SIGKILL, which kills the process forcefully and terminates the container.
In the above command, the name of the container is used to specify the container to be stopped. The container ID can also be used instead.
How do you get the container ID?
There are several ways of doing so. The manual approach is to list all the running containers and find the one that you’re looking for in the list. Just copy its ID from there.
A more automated way is to use shell scripting and environment variables. For example, if you want to get the ID of the quotes container, here’s an example:
export CONTAINER_ID = $(docker container ls | grep quotes | awk '{print $1}')
Here we used AWK to get the first field which is the container ID. Now, instead of using the container name, you can use the $CONTAINER_ID variable in your expression:
docker container stop $CONTAINER_ID
Once you stop the container, its status changes to Exited.
You can restart a stopped container with the docker container start command.
Removing containers
When you run the docker container ls -a command, you can see quite a few containers that are in the Exited status.
If you don’t need these containers anymore, it’s better to remove them from memory; otherwise, they unnecessarily occupy precious resources. The command to remove a container is as follows:
docker container rm <container ID>
Alternately, you can also use this command:
docker container rm <container name>
Sometimes, removing a running container will not work; if you want to force the removal, you can use the command-line parameter -f or –force.
Containerization has changed the way the industry used to operate by mitigating maintenance costs by over 50% and time-to-market by around 90%. Further, containers make applications more secure as opposed to running them outside containers.
If you found this tutorial helpful and want to learn more about Docker containers, you can read more from Learn Docker – Fundamentals of Docker 18.x, which explain all the critical concepts, related to containerization and orchestration.
Keep coming back. Thank you.
Sayısal bilgi teknolojisi, bilginin güncellenmesini ve kopyalanmasını kolaylaştırarak insanlığa katkıda bulunmaktadır. Bilgisayarlar bu işlemleri hepimiz için daha kolay hale getirmeyi vaad etmektedirler. Bu kolaylaştırma, herkes tarafından istenmemektedir. Telif hakları sistemi yazılım programlarına, çoğunun yazılımının olası faydalarını kamudan saklama gayesinde bulunan “sahip” verir. Kullandığımız yazılımların yalnızca kendileri tarafından kopyalanabilir ve değiştirilebilir olmasını istemektedirler. Telif hakları sistemi matbaa ile eşzamanlı gelişmiştir— kopyalamaya seri üretimi getiren teknoloji. Telif hakları sistemi bu teknoloji ile uyum içindeydi çünkü burada söz konusu olan sadece seri ve yüksek hacimli üretim yapabilecek kopyalayıcıların kısıtlanmasıydı. Bu sistem, kitap okurlarının özgürlüğünü kısıtlamıyordu. Baskı makinasına sahip olmayan sıradan birf okur, kitabını ancak kalem ve mürekkep kullanarak kopyalabilirdi ve bunun için çok az okur suçlanmıştı.
Sayısal teknoloji matbaaya göre çok daha esnektir: bilgi bir kez sayısal hale sokulduktan sonra kolayca kopyalanarak başkaları ile paylaşılabilir. İşte tam da bu esneklik telif hakları gibi bir sistem ile uyumsuzluğa yol açar. Günümüzde yazılım telif haklarının uygulanması için giderek artan şiddette tedbirlerin alınmasına da bu uyumsuzluk yol açmaktadır. Yazılım Yayıncıları Birliği’nin (Software Publishers Association – SPA) şu dört uygulamasına bakalım:
- Arkadaşınıza yardım etme amacıyla dahi olsa yazılım sahiplerine itaat etmemenin yanlış olduğunu vurgulayan yoğun propaganda.
- İş ya da okul arkadaşlarını gizlice şikayet edecek ispiyoncularla işbirliğine gidilmesi.
- İşyerlerine ve okullara (genellikle polis yardımı ile) yapılan baskınlar ve insanlardan kanun dışı kopyalama yapmadıklarına dair kanıt istenmesi.
- MIT‘den David LaMacchia gibi kişilerin, bırakın yazılım kopyalamayı (herhangi bir şey kopyaladığı için suçlanmadı), sadece kopyalama cihazlarını açıkta bırakmaları ve bunların kullanımını sansürlemedikleri gerekçeleri ile resmen suçlanmaları (ABD devleti tarafından, SPA’nın talebi üzerine).
Bu uygulamalar, her kopyalama makinasının başında izinsiz kopyalamayı engellemek üzere bir görevli bulunan ve vatandaşlarının bilgiyi gizlice kopyalayıp el altından ‘samizdat’ olarak dağıtmak zorunda kaldığı eski Sovyetler Birliği’ndeki uygulamaları andırmaktadır. Elbette aralarında bir fark var: Sovyetler Birliği’ndeki bu uygulamaların amacı politikti, ABD’de ise asıl amaç kârdır. Ancak bizi etkileyen amaçlar değil eylemlerdir. Her ne sebeple olursa olsun bilgi paylaşımının engellenmek istenmesi benzer yöntemlere ve sert uygulamalara yol açmaktadır.
Yazılım sahipleri bilgiyi kullanma hakkımızı kontrol etmek için pek çok çeşit görüş hazırlarlar:
- Terim karmaşası yaratmak.Sahipler, “korsanlık” ve “hırsızlık” gibi kötü çağrışımlı sözcüklerin yanı sıra “fikri mülkiyet” ve “zarar” gibi hukuki terimleri kullanarak kamuoyuna belirli bir düşünce şeklini dayatmaya çalışmaktadırlar— programlar ile fiziksel nesneler arasında bir basit benzetme.Fiziksel nesnelerin mülkiyetine dair fikir ve içgüdülerimiz, bu nesnelerin sahibinin elinden alınmalarının> doğru bir şey olup olmadığı üzerine kuruludur. Bir şeyin kopyalanmasına direk olarak ilgilendirmez. Yine de yazılım sahipleri birebir aynı mülkiyet kavramlarını uygulamamızı istemektedirler.
- Abartma.Sahipler, kullanıcılar programları izinsiz olarak kopyaladıklarında “zarar” gördüklerini veya “ekonomik kayba” uğradıklarını söylerler. Ancak kopyalama yazılım sahibi üzerinde doğrudan bir etkiye yol açmaz ve kimseye zarar vermez. Yazılım sahibi, ancak yazılım için para ödeyecek bir kullanıcı bunun yerine kopyalamayı tercih ederse bir kayba uğrayabilir.Biraz düşünürsek görürüz ki çoğu kişi kopyaladığı şeyi para karşılığı satın alacak değildir. Buna rağmen yazılım sahipleri sanki herkes bir kopyayı satın alacakmış gibi ‘kayıp’larını hesaplarlar. Buna en nazik ifade ile abartmak denir.
- Kanun.Yazılım sahipleri sık sık kanunların mevcut durumundan ve bizi tehdit etmek için kullanabilecekleri cezalardan bahsederler. Bu yaklaşım, içinde günümüz yasalarının sorgulanamaz bir ahlak öğretisi olduğu düşüncesini barındırır—aynı zamanda da söz konusu cezaları (hiç kimsenin varlıklarından sorumlu olmadığı) doğa yasaları olarak kabul etmemiz beklenir.Bu ikna etme yöntemi eleştirel düşünceye fazla dayanamaz, alışılmış düşünsel pratikleri kuvvetlendirmeye yöneliktir.
Kanunların haklı/haksız ayrımı getirmediği aşikardır. Her Amerikalı hatırlamalıdır ki, 1950’lerde, pek çok eyalette bir siyahi kişinin otobüsün ön kısmında oturması kanunen yasak idi ancak bunun haklı olduğunu ancak ırkçılar iddia edebilir.
- Doğal haklar.Yazarlar genellikle yazdıkları programlar ile aralarında özel bir bağ bulunduğunu ve bu sebepten dolayı programla ilgili istek ve çıkarlarının geriye kalan herkesinkinden—hatta dünyanın geriye kalanından daha önemli olduğunu savunurlar. (Genellikle yazılımın kopyalama hakkına sahip olan yazarı değil, bir şirkettir, ancak bu çelişkiyi görmezden gelmemiz beklenir.)Bu iddiayı bir etik aksiyomu olarak sunanlara—yazar sizden daha önemlidir aksiyomu—kendim de kayda değer bir yazılım geliştiricisi olarak ancak bu iddianın saçma olduğunu söyleyebilirim.
Ancak insanlar bu doğal haklara dair iddiaları iki sebepten ötürü mantıklı bulmaya eğilimlidir.
Birinci sebep fiziksel nesnelere benzetme eğilimidir. Ben makarna makarna pişirdiğimde bunu bir başkası yerse itiraz ederim çünkü öyle bir durumda ben yiyemem. Karşımdakinin eylemi ona fayda sağladığı ölçüde bana zarar verir; içimizden sadece biri makarna yiyebilir, o halde soru şudur: kim? Aramızdaki en küçük bir ayrım dahi etik dengenin değişmesini getirir.
Yukarıdaki durumdan farklı olarak benim yazdığım bir programı çalıştırmanız ya da değiştirmeniz sizi doğrudan etkilerken beni ancak dolaylı yoldan etkiler. Bir arkadaşınıza verdiğiniz kopya sizi ve arkadaşınızı beni etkilediğinden daha çok etkiler. Böyle şeyleri yapmamanızı söyleme gücüne sahip olmamalıyım. Hiç kimse olmamalı.
İkinci sebep ise yazarların doğal hakları olması gerektiği kuramının, toplumumuzun kabul edilmiş ve sorgulanamaz bir geleneği olarak insanlara anlatılmış olmasıdır.
Tarihi açıdan bakarsak tam tersi durumun söz konusu olduğunu görürüz. ABD Anayasası oluşturulurken yazarların doğal haklara sahip oldukları fikri öne sürülmüş fakat kesin ve net şekilde reddedilmişti. İşte bundan ötürü ABD Anayasası telif hakları sistemine izin verir ancak bunu şart koşmaz. Telif hakkının geçici olmak zorunda olduğunun belirtilmesinin sebebi de zaten budur. Yine ABD Anayasa’sında telif hakkının amacının yazarı ödüllendirmek değil, gelişmeyi teşvik etmek olduğu belirtilmiştir. Telif hakkı kısmen yazarı ve daha fazla da yayıncıları ödüllendirir ancak bu ödüllendirmenin amacı davranış değişikliğini sağlamaktır.
Toplumumuzun asıl geleneği telif hakkının kamunun doğal haklarına tecavüz ettiği yönündedir—ve telif hakkına ancak uzun vadeli kamu yararı yüzünden izin verilmektedir.
- Ekonomi.Yazılımların sahipli olması gerektiği iddiası ile ilgili olarak öne sürülen son görüş ancak bu şekilde daha çok yazılım üretmenin mümkün olacağı düşüncesidir.Diğerlerine kıyasla bu görüş biraz daha mantıklı bir yaklaşım gibi durmaktadır. Geçerli bir hedefe yöneliktir—yazılım kullanıcılarını tatmin etmek. İnsanların bir şeyi üretmelerinin karşılığını iyi bir şekilde almaları halinde o şeyden daha çok ürettikleri deneysel olarak gözlemlenebilir.
Ancak ekonomik görüşün bir kusuru vardır: farkın sadece ne kadar para ödendiği ile ilgili olduğu varsayımına dayanır. Bu varsayıma göre bizim istediğimiz yazılım üretimidir, yazılımın sahibi olsun ya da olmasın.
İnsanlar bu varsayımı olduğu gibi kabul ederler çünkü fiziksel nesnelere dair deneyimlerimizle uyumludur. Bir sandviçi ele alalım. Eşdeğer bir sandvici bedava ya da fiyatını ödeyerek alabilirsiniz. Eğer böyle ise iki eylem arasındaki tek fark ödediğiniz paradır. Satın almak zorunda olmanız ya da olmamanız sandvicin tadını, besleyici değerini değiştirmez ve her halükarda o sandvici sadece bir kez yiyebilirsiniz. Sandivici bir sahipten satın alıp almamanız bu eylemin ardından cebinizde kalan para dışında başka hiçbir şeyi doğrudan etkileyemez.
Bu düşünce her fiziksel nesne için geçerlidir—bir sahibinin olup olmaması onun ne olduğunu doğrudan etkilemez ya da onu aldıktan sonra onunla ne yapacağınızı.
Ancak eğer bir programın sahibi varsa bu onun ne olduğunu ve onu satın alırsanız onunla ne yapacağınızı etkiler. Buradaki fark sadece para farkı değildir. Yazılımların sahiplerinin bulunması sistemi, bu sahiplerin bir şey üretmesini sağlar ancak üretilen şey toplumun ihtiyaç duyduğu şey değildir. Bu da hepimizi etkileyen korkunç bir etik kirliliğe yol açar.
Toplumun neye ihtiyacı vardır? Vatandaşlarının sorunsuzca erişebileceği bilgiye ihtiyacı vardır—örneğin insanların sadece çalıştırabilecekleri değil aynı zamanda okuyabilecekleri, düzeltebilecekleri, uyarlayabilecekleri, geliştirebilecekleri programlar. Ancak yazılım sahiplerinin sunduğu, genellikle inceleyemeyeceğimiz ya da değiştiremeyeceğimiz bir kara kutudan ibarettir.
Toplumun aynı zamanda özgürlüğe ihtiyacı vardır. Bir programın bir sahibi olduğunda insanlar hayatlarının bir bölümü üzerindeki kontrolü kaybetmiş olurlar.
Tüm bunların ötesinde toplumun ihtiyacı olan şey vatandaşlar arasındaki gönüllü işbirliği ruhunun pekiştirilmesidir. Yazılım sahipleri, bizler komşularımıza doğal olarak yardım ederken bu yaptığımız şeyin “korsanlık” olduğunu söylediklerinde toplumumuzun ruhunu kirletmiş olurlar.
Bu yüzden özgür yazılımdan bahsederken kast ettiğimiz özgürlük kavramıdır; fiyat kavramı değil.
Sahiplerin öne sürdüğü ekonomik görüş hatalıdır ancak ekonomi meselesi gerçek bir meseledir. Bazı insanlar sırf işin zevkinden ve getireceği ruhsal tatmin, şöhret gibi şeylerden ötürü faydalı yazılımları geliştirirler ancak bu insanların geliştirdiklerinin ötesinde yazılımları istiyorsak para bulmamız gerektiği doğrudur.
10 yıldır özgür yazılım geliştiricileri para bulmak için bazı yöntemleri denemiş ve bazen başarılı olmuşlardır. Kimsenin çok zengin olması şart değildir; ortalama bir Amerikan ailesinin geliri yıllık olarak yaklaşık 35.000$’dır ve bu miktarın programlamadan çok daha zevksiz işler için bile yeterli motivasyonu sağladığı görülmüştür.
Yıllar boyunca, ta ki bir üniversite vakfı bunu gereksiz kılana dek, geliştirmiş olduğum özgür yazılımlara talebe yönelik özelleştirmeler yaparak hayatımı kazandım. Eklediğim her özellik süreç içinde standart sürüme de eklendi ve böylece halka sunuldu. Müşterilerim, bireysel olarak öncelikli olduğunu düşündüğüm özellikleri bir an önce geliştirmem yerine kendi ihtiyaçları için gerekli olan özellikleri geliştirmem için bana para ödediler.
Bazı özgür yazılım geliştiricileri teknik destek hizmeti satarak para kazanmaktadır. 50 kişiyi istihdam eden Cygnus Support [bu yazı yazıldığı esnada], yaptığı hesaplara dayanarak personelinin vaktinin %15’inin özgür yazılım geliştirmeye gittiğini belirtmektedir — bir yazılım firması için kayda değer bir oran.
Aralarında Intel, Motorola, Texas Instruments ve Analog Devices’ında bulunduğu bazı şirketler bir araya gelerek C dili için özgür GNU derleyicisinin geliştirilmesi amacı ile finansal destek vermişlerdir. Bu arada Ada dili için GNU derleyicisi ABD Hava Kuvvetleri tarafından parasal olarak desteklenmektedir çünkü bu kurum kaliteli bir derleyiciye sahip olmanın en düşük maliyetli yolu olarak bunu görmektedir. [Hava Kuvvetleri parasal desteği bir süre önce bitmiştir, şu anda GNU Ada derleyicisi çalışmaktadır ve bununla ilgili bakım ve geliştirmeler ticari olarak desteklenmektedir.]
Bunlar küçük örneklerdir, özgür yazılım hareketi henüz yolun başındadır. Ancak ABD’deki dinleyici tarafından desteklenen radyo örneğinde de görüldüğü gibi kullanıcıları para ödemeye zorlamadan da büyük eylemleri başarmak mümkündür.
Günümüzde yaşayan bir bilgisayar kullanıcısı olarak bir mülk program kullanıyor olabilirsiniz. Eğer arkadaşınız sizden bir kopya isterse onu reddetmek doğru olmaz. İşbirliği telif hakkından daha önemlidir. Ancak yeraltı olarak da tabir edebileceğimiz gizli kapaklı işbirliği iyi bir topluma yol açmaz. Kişi hayatı dürüstçe, açık bir şekilde ve gururla yaşamalıdır; bu da mülk yazılımlara “Hayır” demektir.
Yazılım kullanan diğer insanlarla açık açık ve özgür şekilde işbirliğine gitmeyi hak ediyorsunuz. Yazılımın nasıl çalıştığını öğrenmeyi hak ediyorsunuz ve öğrencilere bu bilgiyi öğretmeyi hak ediyorsunuz. Yazılım bozulursa takdir ettiğiniz bir programcıyı tutup onu düzeltebilmeyi hak ediyorsunuz.
Özgür yazılımı hak ediyorsunuz.