Vapaan ohjelmiston ideologia ja GNU-projekti: nykyinen tila ja välittömät haasteet.

Maksut Tulo

Lua-virhe Module:Wikidata rivillä 170: yritys indeksoida kenttä "wikibase" (nolla-arvo).

Lahjoitukset

Lua-virhe Module:Wikidata rivillä 170: yritys indeksoida kenttä "wikibase" (nolla-arvo).

Vapaaehtoisten määrä

Lua-virhe Module:Wikidata rivillä 170: yritys indeksoida kenttä "wikibase" (nolla-arvo).

Työntekijöiden määrä

Lua-virhe Module:Wikidata rivillä 170: yritys indeksoida kenttä "wikibase" (nolla-arvo).

Jäsenten lukumäärä

Lua-virhe Module:Wikidata rivillä 170: yritys indeksoida kenttä "wikibase" (nolla-arvo).

Tytäryhtiöt

Lua-virhe Module:Wikidata rivillä 170: yritys indeksoida kenttä "wikibase" (nolla-arvo).

Oma

Lua-virhe Module:Wikidata rivillä 170: yritys indeksoida kenttä "wikibase" (nolla-arvo).

Tunnuslause

Lua-virhe Module:Wikidata rivillä 170: yritys indeksoida kenttä "wikibase" (nolla-arvo).

Verkkosivusto

Lua-virhe Module:Wikidata rivillä 170: yritys indeksoida kenttä "wikibase" (nolla-arvo).

Purkamispäivä

Lua-virhe Module:Wikidata rivillä 170: yritys indeksoida kenttä "wikibase" (nolla-arvo).

GNU-projektin nykyiseen työhön kuuluu ohjelmistokehitys, tietoisuuden lisääminen, poliittinen kampanjointi ja uuden materiaalin jakelu.

Projektin alkuperä

Kun projekti aloitettiin, he...

  • Asteroidi on nimetty GNU-projektin mukaan - (9965) GNU.

Katso myös

Kirjoita arvostelu aiheesta "The GNU Project"

Huomautuksia

Linkit

  • (Englanti) - GNU-projektin virallinen sivusto

Ote, joka kuvaa GNU-projektia

- Valheita, murhaa, pettämistä... Eikö sinulla ole sellaisia ​​sanoja? ..
- Se oli kauan sitten... kukaan ei muista enää. Vain minä. Mutta tiedämme mitä se oli. Tämä on upotettu "muinaiseen muistiimme", jota ei koskaan unohda. Oletko tullut sieltä, missä paha asuu?
Nyökkäsin surullisesti. Olin hyvin pahoillani kotimaani Maan puolesta ja siitä, että elämä siellä oli niin villin epätäydellistä, että se sai minut esittämään sellaisia ​​kysymyksiä... Mutta samalla halusin todella pahan jättävän talomme ikuisesti, koska se Rakastin tätä taloa koko sydämestäni ja haaveilin usein, että joskus tulisi niin ihana päivä, kun:
ihminen hymyilee ilosta tietäen, että ihmiset voivat tuoda hänelle vain hyvää ...
kun yksinäinen tyttö ei pelkää kävellä pimeimmän kadun läpi illalla, pelkäämättä, että joku loukkaa häntä...
kun voit avata sydämesi ilolla, ilman pelkoa, että paras ystäväsi pettää sinut...
kun on mahdollista jättää jotain erittäin kallista suoraan kadulle, pelkäämättä, että jos käännyt pois - ja se varastetaan heti ...
Ja uskoin vilpittömästi, koko sydämestäni, että jossain todella on olemassa niin upea maailma, jossa ei ole pahaa ja pelkoa, vaan on yksinkertaista elämäniloa ja kauneutta... Siksi naiivia unelmaani seuraten minä käytin pienintäkään tilaisuutta oppiakseen ainakin jotain siitä, kuinka on mahdollista tuhota tämä sama, niin sitkeä ja niin tuhoutumaton, maallinen Pahumme... Ja vielä yksi asia - jotta ei koskaan häpeäisi kertoa jollekin jollekin, että minä olen Ihminen...
Tietenkin nämä olivat naiiveja lapsuuden unelmia ... Mutta silloin olin vielä lapsi.
– Nimeni on Atis, Svetlana Man. Asun täällä alusta asti, olen nähnyt Pahan... Paljon pahaa...
– Ja kuinka pääsit hänestä eroon, viisas Hatis?! Auttoiko joku sinua? .. - kysyin toiveikkaana. - Voitko auttaa meitä? .. Anna ainakin neuvoja?
– Löysimme syyn... Ja tapimme sen. Mutta pahuutesi on meidän hallinnassamme. Se on erilaista... Aivan kuten muut ja sinä. Eikä aina jonkun muun hyvä voi olla hyväksi sinulle. Sinun on löydettävä oma syysi. Ja tuhoa se, - hän laittoi varovasti kätensä pääni päälle ja ihana rauha virtasi minuun... - Hyvästi, Ihminen Svetlana... Löydät vastauksen kysymykseesi. Lepoa sinulle...
Seisoin syvällä ajatuksissani, enkä kiinnittänyt huomiota siihen, että minua ympäröivä todellisuus oli muuttunut kauan sitten, ja oudon, läpinäkyvän kaupungin sijaan "kellimme" tiheässä purppurassa "vedessä" jollain epätavallisella, litteä ja läpinäkyvä laite, jossa ei ollut kahvoja, ei airoja - ei mitään, ikään kuin seisoisimme suuren, ohuen, liikkuvan läpinäkyvän lasin päällä. Vaikka liikettä tai nykimistä ei tuntunut ollenkaan. Se liukui pinnan yli yllättävän tasaisesti ja rauhallisesti, jolloin unohdat sen liikkuvan ollenkaan...
– Mikä se on?.. Minne purjehdimme? kysyin hämmästyneenä.
"Haemaan pientä ystävääsi", Veya vastasi rauhallisesti.
- Mutta miten?!. Hän ei voi...
- Pystyvät. Hänellä on sama kristalli kuin sinulla, oli vastaus. - Tapaamme hänet "sillalla", - ja mitään muuta selittämättä hän pian pysäytti oudon "veneemme".
Nyt olimme jo jonkin loistavan "kiillotetun" mustan kuin yöseinän juurella, joka erosi jyrkästi kaikesta kirkkaasta ja kimaltelevasta ympärillä ja vaikutti keinotekoisesti luodulta ja vieraalta. Yhtäkkiä seinä "eroutui", ikään kuin siinä paikassa se olisi koostunut tiheästä sumusta, ja kultaisessa "kotelossa" ilmestyi ... Stella. Raikas ja terve, ikään kuin hän olisi juuri lähtenyt mukavalle kävelylle... Ja tietysti hän oli villisti tyytyväinen tapahtumiin... Kun hän näki minut, hänen kauniit kasvonsa säteilivät iloisesti ja tottumuksesta hän huusi heti:
– Oletko sinäkin täällä?!... Voi kuinka hyvää!!! Ja minä olin niin huolissani! .. Niin huolissani! .. Luulin, että sinulle on täytynyt tapahtua jotain. Mutta miten pääsit tänne? .. - vauva tuijotti minua mykistyneenä.

PÄÄSTANDARDIT

Tietokonevalmistajien toimittamat UNIX-laitteet

Auto Käyttöjärjestelmä "Alkuperäinen"
su 1,2,10,... SunOS 4.1.2 BSD 4.3
su 10,20,1000 SunOS 5.5 SVR4.0
IBM RS/6000 AIX SV 3.2
HP Apollo 900 HP/UX 10 BSD 4.2 & SV 3.2
Jakso Dynix SW 4.0
Motorola 922 SVR4/88 SVR4.0
Besta-88 bestix SV 3.1
DEC Ultrix BSD 4.2
DEC Alpha AXP OSF/1 BSD 4.3
SGCS Silicon Graphic IRIX 6.0

Valitsemalla alustan saamme sen mukana automaattisesti "oman" UNIXin. Kenties käyttäjä- ja järjestelmänvalvojaympäristön mukavuuden ja eheyden kannalta miellyttävin niistä on AIX. Ja yleisin on Solaris 2.5 (tietenkin).

Unixin kaupallisten toteutusten tulo johti niin kutsuttuihin Unix-sotiin. Jokainen yritys, pyrkiessään saavuttamaan ylivoiman markkinoilla, sisällytti järjestelmäänsä joitakin ominaisuuksia, omia parannuksiaan ja parannuksiaan, joskus jopa suorana tavoitteenaan eristää järjestelmänsä muista markkinoilla olevista. Yritykset-kehittäjät pyrkiessään saavuttamaan etulyöntiaseman kilpailijoihin nähden tekivät muutoksia jopa vuonna sovellusohjelmointirajapinta(API- Applications Programmer "s Interface), - määrittely joukosta toimintoja, joita ohjelmistokehittäjien on noudatettava, jotta heidän ohjelmansa olisivat yhteensopivia käyttöjärjestelmän kanssa. Tämä lisäsi entisestään Unixin eri versioiden yhteensopimattomuutta ja johti yhteensopimattomuuteen ohjelmistokehittäjien kanssa. eri (mukaan lukien riippumattomat) toimittajat.

Mutta paljon pahempi seuraus Unixin eri versioiden välisistä sodista oli, että Unixin nopeaa paranemista sen kehitysvaiheessa auttanut vapaa lähdekoodin vaihto lakkasi. AT&T kielsi jyrkästi lähdekoodien jakelun, koska se ei tiennyt mitään muuta mallia ohjelmistoista hyötymiseen kuin sen salassa pitäminen ja täydellinen hallinta kaupallisen tuotteen kehittämiseen. Harvoja ihmisiä houkutteli oikeustoimien uhka Unix-nauhojen laittoman levittämisen vuoksi. Uusien ideoiden virta yliopistoista on kuivunut.

Tämän ongelman ratkaisemiseksi tehtiin useita yrityksiä standardoida Unix.

Ensimmäinen vakava yritys System V:lle ja Berkeleylle kehitetyn API:n (ohjelmointiliittymän) versioiden standardoimiseksi tehtiin vuonna 1983 aloiteryhmässä /usr/group. Käyttöjärjestelmän versioiden määrän kasvaessa standardin tehokkuus kuitenkin heikkeni, ja vuotta myöhemmin, vuonna 1985, syntyi POSIX (Portable Operating System Interface for Computing Environment) -standardi.



Vuonna 1988 kehitettiin POSIX 1003.1-1988 -standardi, joka määritti sovellusohjelmointirajapinnan. Tämä standardi on löytänyt laajan sovelluksen monissa käyttöjärjestelmissä, mukaan lukien ei-UNIX-arkkitehtuurit. Kaksi vuotta myöhemmin standardi hyväksyttiin IEEE (Institute of Electrical and Electronic Engineers, edelleen olemassa) IEEE 1003.1-1990 -standardiksi. Standardi määrittelee vain rajapinnan ja esim tietty organisaatio, joten se ei tee eroa järjestelmäkutsujen ja kirjastotoimintojen välillä, vaan kutsuu kaikkia API-elementtejä vain funktioiksi.

Kaikki myöhemmät Unix-standardit sisältävät POSIXin, ja kaikki myöhemmät Unix-versiot noudattavat tätä standardia. Ainoa suuri lisäys, joka myöhemmin ilmestyi Unix-ytimeen, olivat socketit, jotka tulivat BSD:ltä.

Voittoa tavoittelematon organisaatio - useiden eurooppalaisten yritysten vuonna 1984 perustama X / Open -konsortio (myöhemmin Open Group) ryhtyi kehittämään yhteisen käyttöjärjestelmärajapintasarjan, josta sovittiin eri valmistajien kesken, ja luomaan aidosti avoimen käyttöjärjestelmän. järjestelmät, joissa sovellusten siirrettävyyden kustannukset olisivat minimaaliset.

Vuonna 1992 ilmestyi asiakirja, joka tunnetaan nimellä X/OpenPortability Guide version 3 (XPG3), joka sisälsi POSIX 1003.1-1988:n ja Massachusetts Institute of Technologyssa (USA) kehitetyn X Windows System -grafiikkajärjestelmän standardin. Vuonna 1994 - XPG4.2.

Vuonna 1996 X / Openin ja OSF:n liitto johti The Open Group -konsortion syntymiseen, joka jatkoi kehitystä avoimien järjestelmien alalla, mm. Common Desktop Environment -käyttöliittymän jatkokehitystä, käyttöliittymiä Distributed Computing Environment -ympäristöön. - DCE jne.

(American National Standards Institute)

Vuonna 1989 American National Standards Institute hyväksyi X3.159-1989 standardin C-ohjelmointikielelle. Standardi määrittelee standardikirjaston syntaksin, semantiikan ja sisällön.

GNU on kehittäjien yhdistys, joka luo kaikenlaisia ​​ilmaisia ​​ohjelmistoja.

GNU on projekti, joka on luonut paljon ilmaisia ​​ohjelmistoja osana avoimen lähdekoodin strategiaa.

Samaan aikaan nämä ohjelmat voivat tehdä kaiken tiedostojen käsittelystä tekstinkäsittelyyn, ja gcc-kääntäjä (GNU C) on yksi luotettavimmista ja tehokkaimmista UNIX-kääntäjistä. Tämä mahdollistaa lähes minkä tahansa UNIX-tyyppisen käyttöjärjestelmän varustamisen ilmaisilla ohjelmistoilla.

Mikä on GNU/Linux?

Koska Linux on vain ydin, tällaiset laitteet ovat välttämättömiä. Ydin vastaa työskentelystä muistin, levyjen, sisäisten laitteiden kanssa, mutta siinä ei ole esimerkiksi tekstieditoria. Mutta se voi ajaa muita ohjelmia. Siksi ilmaisen ytimen lisääminen ilmaisiin ohjelmiin näyttää erittäin luonnolliselta. Tuloksena on GNU/Linux-tandem.

"Lyhenne GNU tarkoittaa "GNU ei ole UNIX" (GNU - Ei UNIX). GNU-järjestelmän kehittämisen pääidea on sen täydellinen ero UNIXista. UNIX on aina ollut ja on edelleen oma ohjelmisto, mikä tarkoittaa, että se riistää käyttäjiltä vapauden tehdä yhteistyötä ja hallita tietokoneitaan. Jotta voisimme olla yhteisö, joka käyttää vapaasti omia tietokoneitaan, tarvitsimme ilmaisen käyttöjärjestelmän. Meillä ei ollut tarpeeksi rahaa ostaa ja tehdä vapaaksi olemassa olevia järjestelmiä, mutta meillä oli tarpeeksi tietoa ja taitoa uuden luomiseen. GNU:n luominen oli valtava hanke. Teimme sen vapautemme nimissä ja myös sinun."

Vuonna 1985 R. Stallman kirjoitti kuuluisan GNU Manifestonsa (se julkaistiin Dr. Dobb's Journalin maaliskuussa 1985) ja perusti Free Software Foundationin (FSF) - hyväntekeväisyyssäätiön vapaiden ohjelmistojen kehittämiseen. Emacs-nauhojen jakelu , ja myöhemmin muiden ilmaisten ohjelmistojen jakelu (sekä GNU-projektista että sen ulkopuolella) ja heidän käsikirjojensa myyminen, jotka antoivat varoja GNU-projektin kehittämiseen. FSF otti vastaan ​​lahjoituksia, mutta suurin osa tuloista on aina tullut kopioiden myynnistä. ilmaisista ohjelmistoista ja niihin liittyvistä palveluista.

Ilmaisten ohjelmistojen kehittäminen oli erittäin tärkeä askel, mutta R.Stallmanin vielä suurempi ansio on tunnustettava GNU General Public License (GPL) -lisenssin luomisena. Eri kirjoittajat kääntävät tämän nimen venäjäksi eri tavoin - Universal Public License, Generalized Public License jne. Mutta niin katsotaan Vain tämän lisenssin englanninkielinen versio on voimassa. GPL:n perusideana on, että käyttäjällä on oltava seuraavat neljä oikeutta (tai neljä vapautta):

Oikeus suorittaa ohjelmaa mihin tahansa tarkoitukseen (vapaus 0)

· Oikeus tutkia ohjelman rakennetta ja mukauttaa se tarpeidesi mukaan (vapaus 1), johon sisältyy pääsy ohjelman lähdekoodiin.

· Oikeus levittää ohjelmaa samalla kun voi auttaa muita (vapaus 2).

· Oikeus parantaa ohjelmaa ja julkaista parannuksia koko yhteisön hyödyksi (vapaus 3), joka sisältää myös pääsyn ohjelman lähdekoodiin.

Voit käyttää, kopioida, muokata, muokata, siirtää tai myydä muokattuja (tai muokkaamattomia) versioita muille haluamallasi tavalla edellyttäen, että tällaisen käsittelyn tulos jaetaan myös GPL-lisenssin alaisena. Viimeinen ehto on tämän lisenssin tärkein ja määräävin. Se varmistaa, että ilmaisten ohjelmistojen kehittäjien ponnistelujen tulokset pysyvät avoimena lähdekoodina eivätkä tule osaksi mitään perinteisesti lisensoitua tuotetta. Se myös erottaa vapaat ohjelmistot vapaista ohjelmistoista. Yksi tämän lisenssin vaatimuksista on, että kun myyt ohjelmistoja GPL:n alaisena, sinun on asetettava ohjelmiston lähdekoodi kaikkien saataville, jotka haluavat päästä käsiksi siihen. FSF:n luojien sanojen mukaan GPL "tekee ohjelmistoista ilmaisia ​​ja varmistaa, että se pysyy maksuttomana".

GPL:n päätarkoitus on suojata vapaita ohjelmistoja "yksityistämiseltä". Mutta on huomattava, että se on suunniteltu siten, että se sallii kaikki "reilut" tavat ansaita rahaa ilmaisilla ohjelmistoilla.Tämä on erittäin merkittävä seikka, joka vaatii erityistä huomiota. Kun GPL esitellään ensimmäisen kerran, voidaan ymmärtää väärin, että tämä lisenssi yleensä kieltää kaiken tavan ansaita rahaa ohjelmistosta tai sen kehityksestä. Itse asiassa GPL erityisesti ja FSF yleensä kannustavat suoraan liiketoimintaan, joka liittyy siihen liittyvien palvelujen tarjoamiseen - koulutukseen, konsultointiin ja kaupallisiin ohjelmistojen replikointiin. Tämä mahdollistaa yhteistyön houkuttelemisen sekä yrityksiä että ihmisiä, joille aineellinen etu on moraalista kannustinta tärkeämpää.

Alunperin julkaistu kirjassa avoimet lähteet. Richard Stallman oli , mutta lisäsi tämän artikkelin, jotta vapaiden ohjelmistojen liikkeen ideat eivät kokonaan puuttuisi kirjasta.

Ensimmäinen ohjelmistojen jakamisyhteisö

Kun aloin työskennellä MIT Artificial Intelligence Labissa vuonna 1971, minusta tuli osa ohjelmistojen jakamisyhteisöä, joka oli ollut olemassa useita vuosia. Ohjelmistojen jakaminen ei rajoittunut tiettyyn yhteisöömme; se on yhtä vanha kuin tietokoneet, aivan kuten reseptien jakaminen on yhtä vanhaa kuin ruoanlaitto. Mutta teimme sen enemmän kuin useimmat.

Tekoälylaboratorio käytti ITS-nimistä aikajakokäyttöjärjestelmää (The Independent Timesharing System), jonka laboratorion henkilöstöhakkerit (1) olivat suunnitelleet ja kirjoittaneet assembler-kielellä Digital PDP -10:lle, joka oli yksi aikakauden suurista tietokoneista. Tämän yhteisön jäsenenä, AI Labin henkilöstöjärjestelmän hakkeri, tehtäväni oli parantaa tätä järjestelmää.

Emme kutsuneet ohjelmistojamme "vapaaksi ohjelmistoksi", koska sitä termiä ei vielä ollut olemassa; mutta sitä se oli. Aina kun ihmiset toisesta yliopistosta tai yrityksestä halusivat siirtää ja käyttää ohjelmaa, annoimme heille mielellämme. Jos näit jonkun käyttävän tuntematonta ja mielenkiintoista ohjelmaa, voit aina pyytää nähdäksesi lähdekoodin, jotta voit lukea sen, muuttaa sitä tai kannibalisoida sen osia uuden ohjelman tekemiseksi.

(1) Sanan "hakkeri" käyttö "turvan katkaisijalla" aiheuttaa hämmennystä joukkotiedotusvälineissä. Me hakkerit kieltäydymme tunnustamasta tätä merkitystä ja jatkamme sanan käyttämistä tarkoittamaan jotakuta, joka rakastaa ohjelmointia, jotakuta, joka nauttii leikkisästä älykkyydestä tai näiden kahden yhdistelmästä. Katso artikkelini Hakkerointi.

Yhteisön romahtaminen

Tilanne muuttui radikaalisti 1980-luvun alussa, kun Digital lopetti PDP-10-sarjan. Sen 60-luvun tyylikäs ja voimakas arkkitehtuuri ei luonnollisesti voinut ulottua laajempiin osoiteavaruuksiin, jotka olivat tulossa toteuttamiskelpoisiksi 80-luvulla. Tämä tarkoitti, että lähes kaikki ITS:n muodostavat ohjelmat olivat vanhentuneita.

AI ​​Lab -hakkeriyhteisö oli jo romahtanut, ei kauan ennen. Vuonna 1981 spin-off-yritys Symbolics oli palkannut lähes kaikki hakkerit pois AI ​​Labista, eikä autioitunut yhteisö pystynyt ylläpitämään itseään. (Steve Levyn kirjoittama kirja Hakkerit kuvaa näitä tapahtumia ja antaa selkeän kuvan tästä yhteisöstä parhaimmillaan.) Kun AI ​​Lab osti uuden PDP-10:n vuonna 1982, sen ylläpitäjät päättivät käyttää Digitalin ei-ilmaista aikajakojärjestelmä ITS:n sijaan.

Aikakauden moderneissa tietokoneissa, kuten VAX tai 68020, oli omat käyttöjärjestelmänsä, mutta mikään niistä ei ollut ilmaista ohjelmistoa: jouduttiin allekirjoittamaan salassapitosopimus jopa saadakseen suoritettavan kopion.

Tämä tarkoitti, että ensimmäinen askel tietokoneen käytössä oli lupaus olla auttamatta lähimmäistäsi. Yhteistyöyhteisö oli kielletty. Omien ohjelmistojen omistajien tekemä sääntö oli: "Jos jaat naapurisi kanssa, olet merirosvo. Jos haluat muutoksia, pyydä meitä tekemään ne."

Ajatus siitä, että patentoitu ohjelmisto sosiaalinen järjestelmä – järjestelmä, joka sanoo, että ohjelmistoja ei saa jakaa tai muuttaa – on epäsosiaalinen, että se on epäeettistä, että se on yksinkertaisesti väärä, voi tulla yllätyksenä joillekin lukijoille. Mutta mitä muuta voisimme sanoa järjestelmästä, joka perustuu yleisön jakamiseen ja käyttäjien avuttomaan pitämiseen? Lukijat, jotka pitävät ideaa yllättävänä, ovat saattaneet pitää patentoitujen ohjelmistojen sosiaalista järjestelmää itsestäänselvyytenä tai arvioida sitä ohjelmistoyritysten ehdottamien ehtojen mukaan. Ohjelmistojen julkaisijat ovat työskennelleet pitkään ja lujasti vakuuttaakseen ihmiset siitä, että on olemassa vain yksi tapa tarkastella asiaa.

Kun ohjelmistojen julkaisijat puhuvat "oikeuksiensa täytäntöönpanosta" tai "piratismin lopettamisesta", mitä he itse asiassa sanoa on toissijainen. Näiden lausuntojen varsinainen viesti on niiden itsestäänselvyytenä pidetyissä sanomattomissa oletuksissa, jotka yleisöä pyydetään hyväksymään ilman tarkastelua. Tarkastellaanpa niitä siis.

Yksi oletus on, että ohjelmistoyrityksillä on kiistaton luonnollinen oikeus omistaa ohjelmistoja ja siten valtaa kaikkiin käyttäjiinsä. (Jos tämä olisi luonnollinen oikeus, emme voi vastustaa sitä kuinka paljon haittaa se yleisölle tahansa.) Mielenkiintoista on, että Yhdysvaltain perustuslaki ja oikeusperinte hylkäävät tämän näkemyksen; tekijänoikeus ei ole luonnollinen oikeus, vaan keinotekoinen hallituksen määräämä monopoli, joka rajoittaa käyttäjien luonnollista kopiointioikeutta.

Toinen määrittelemätön oletus on, että ohjelmistojen ainoa tärkeä asia on se, mitä töitä sen avulla voit tehdä – että meidän tietokoneen käyttäjien ei pitäisi välittää siitä, millainen yhteiskunta meillä on.

Kolmas oletus on, että meillä ei olisi käyttökelpoista ohjelmistoa (tai meillä ei koskaan olisi ohjelmaa tämän tai tuon työn suorittamiseen), jos emme tarjoa yritykselle valtaa ohjelman käyttäjiin. Tämä oletus saattoi tuntua uskottavalta, ennen kuin vapaiden ohjelmistojen liike osoitti, että voimme tehdä paljon hyödyllisiä ohjelmistoja laittamatta niihin ketjuja.

Jos kieltäydymme hyväksymästä näitä oletuksia ja arvioimme näitä asioita tavallisen terveen järjen moraalin perusteella asettaen samalla käyttäjät etusijalle, päädymme hyvin erilaisiin johtopäätöksiin. Tietokoneen käyttäjien tulee voida vapaasti muokata ohjelmia tarpeidensa mukaan ja vapaasti jakaa ohjelmistoja, koska muiden ihmisten auttaminen on yhteiskunnan perusta.

Törkeä moraalinen valinta

Yhteisöni mentyä ei ollut mahdollista jatkaa entiseen tapaan. Sen sijaan jouduin jyrkän moraalisen valinnan eteen.

Helppo valinta oli liittyä omaan ohjelmistomaailmaan allekirjoittamalla salassapitosopimukset ja lupaamalla olla auttamatta hakkeritoveriani. Todennäköisesti kehittäisin myös ohjelmistoja, jotka julkaistiin salassapitosopimusten mukaisesti, mikä lisäisi muiden ihmisten painetta pettää myös tovereitaan.

Olisin voinut ansaita rahaa tällä tavalla ja ehkä huvitella itseäni kirjoittamalla koodia. Mutta tiesin, että urani lopussa katsoisin taaksepäin vuosia rakentamassa muureja erottaakseni ihmisiä ja minusta tuntuu, että olin käyttänyt elämäni tekemällä maailmasta huonomman paikan.

Olin jo kokenut olevani salassapitosopimuksen vastaanottopäässä, kun joku kieltäytyi antamasta minulle ja MIT AI Labille tulostimemme ohjausohjelman lähdekoodia. (Tämän ohjelman tiettyjen ominaisuuksien puute teki tulostimen käytöstä erittäin turhauttavaa.) Joten en voinut sanoa itselleni, että salassapitosopimukset olivat viattomia. Olin hyvin vihainen, kun hän kieltäytyi jakamasta sitä kanssamme; En voinut kääntyä ympäri ja tehdä samaa kaikille muille.

Toinen vaihtoehto, suoraviivainen mutta epämiellyttävä, oli jättää tietokonekenttä. Näin taitojani ei käytetä väärin, mutta ne silti menisi hukkaan. En olisi syyllinen tietokoneen käyttäjien jakamiseen ja rajoittamiseen, mutta niin tapahtuisi kuitenkin.

Joten etsin tapaa, jolla ohjelmoija voisi tehdä jotain hyvää. Kysyin itseltäni, oliko olemassa ohjelmaa tai ohjelmia, jotka voisin kirjoittaa, jotta yhteisön olisi jälleen mahdollista?

Vastaus oli selvä: ensin tarvittiin käyttöjärjestelmä. Se on ratkaiseva ohjelmisto tietokoneen käytön aloittamisessa. Käyttöjärjestelmän avulla voit tehdä monia asioita; ilman sitä et voi käyttää tietokonetta ollenkaan. Ilmaisella käyttöjärjestelmällä meillä voisi olla jälleen yhteistyössä toimivien hakkereiden yhteisö ja kutsua ketä tahansa liittymään. Ja kuka tahansa voisi käyttää tietokonetta aloittamatta salaliittoa riistääkseen ystävänsä.

Käyttöjärjestelmän kehittäjänä minulla oli oikeat taidot tähän työhön. Joten vaikka en voinut pitää menestystä itsestäänselvyytenä, tajusin, että minut valittiin tekemään tätä työtä. Päätin tehdä järjestelmästä yhteensopivan Unixin kanssa, jotta se olisi kannettava ja jotta Unix-käyttäjät voivat helposti vaihtaa siihen. Nimi GNU valittiin hakkeriperinteen mukaisesti rekursiiviseksi lyhenteeksi sanoista "GNU's Not Unix". Se lausutaan yhtenä tavuna kovalla g:llä.

Käyttöjärjestelmä ei tarkoita vain ydintä, joka tuskin riittää muiden ohjelmien suorittamiseen. 1970-luvulla jokainen nimen arvoinen käyttöjärjestelmä sisälsi komentoprosessorit, kokoajat, kääntäjät, tulkit, virheenkorjaajat, tekstieditorit, postittajat ja paljon muuta. ITS:llä oli ne, Multicsilla, VMS:llä ja Unixilla. GNU-käyttöjärjestelmä sisältäisi myös ne.

Myöhemmin kuulin nämä Hillelin (1) antavat sanat:

Jos en ole itseäni varten, kuka on minua varten?
Jos olen vain itseäni varten, mikä minä olen?
Jos ei nyt, milloin?

Päätös aloittaa GNU-projekti perustui samanlaiseen henkeen.

(1) Ateistina en seuraa uskonnollisia johtajia, mutta joskus huomaan ihailevani jotakin, mitä joku heistä on sanonut.

Vapaa kuin vapaudessa

Termi "ilmainen ohjelmisto" ymmärretään joskus väärin - sillä ei ole mitään tekemistä hinnan kanssa. Kyse on vapaudesta. Tässä on siis vapaan ohjelmiston määritelmä.

Ohjelma on ilmainen ohjelmisto sinulle, tietylle käyttäjälle, jos:

  • Sinulla on vapaus ajaa ohjelmaa haluamallasi tavalla mihin tahansa tarkoitukseen.
  • Sinulla on vapaus muokata ohjelmaa tarpeidesi mukaan. (Jotta tämä vapaus olisi tehokasta käytännössä, sinä täytyy olla pääsy lähdekoodiin, koska muutosten tekeminen ohjelmaan ilman lähdekoodia on erittäin vaikeaa.)
  • Sinulla on vapaus jakaa kopioita uudelleen joko ilmaiseksi tai maksua vastaan.
  • Sinulla on vapaus jakaa ohjelman muokattuja versioita, jotta yhteisö voi hyötyä parannuksistasi.

Koska "ilmainen" viittaa vapauteen, ei hintaan, kopioiden myynnin ja ilmaisten ohjelmistojen välillä ei ole ristiriitaa. Itse asiassa kopioiden myynnin vapaus on ratkaisevan tärkeää: CD-ROM-levyillä myytävien ilmaisten ohjelmistojen kokoelmat ovat tärkeitä yhteisölle, ja niiden myyminen on tärkeä tapa kerätä varoja ilmaisten ohjelmistojen kehittämiseen. Siksi ohjelma, jota ihmiset eivät voi vapaasti sisällyttää näihin kokoelmiin, ei ole ilmainen ohjelmisto.

"Vapaa"-sanan epäselvyyden vuoksi ihmiset ovat pitkään etsineet vaihtoehtoja, mutta kukaan ei ole löytänyt parempaa termiä. Englannin kielessä on enemmän sanoja ja vivahteita kuin missään muussa, mutta siitä puuttuu yksinkertainen, yksiselitteinen sana, joka tarkoittaa "vapaata", kuten vapaudessa - "rajoittamaton" on sana, joka on merkitykseltään lähinnä. Sellaisilla vaihtoehdoilla kuin "vapautettu", "vapaus" ja "avoin" on joko väärä merkitys tai jokin muu haitta.

GNU-ohjelmisto ja GNU-järjestelmä

Koko järjestelmän kehittäminen on erittäin suuri projekti. Saadakseni sen saataville päätin mukauttaa ja käyttää olemassa olevia ilmaisia ​​ohjelmistoja aina kun se oli mahdollista. Esimerkiksi päätin heti alussa käyttää TeX:ää pääasiallisena tekstinmuotoilijana; Muutamaa vuotta myöhemmin päätin käyttää X Window Systemiä sen sijaan, että kirjoitin toisen ikkunajärjestelmän GNU:lle.

Näiden ja muiden vastaavien päätösten vuoksi GNU-järjestelmä ei ole sama kuin kaikkien GNU-ohjelmistojen kokoelma. GNU-järjestelmä sisältää ohjelmia, jotka eivät ole GNU-ohjelmistoja, muiden ihmisten kehittämiä ohjelmia ja projekteja omiin tarkoituksiinsa, mutta joita voimme käyttää, koska ne ovat vapaita ohjelmia.

Projektin aloittaminen

Tammikuussa 1984 lopetin työni MIT:ssä ja aloin kirjoittaa GNU-ohjelmistoa. MIT:stä poistuminen oli välttämätöntä, jotta MIT ei pystyisi häiritsemään GNU:n levittämistä vapaana ohjelmistona. Jos olisin pysynyt henkilökunnan palveluksessa, MIT olisi voinut väittää omistavansa teoksen, ja olisi voinut määrätä omat jakeluehdot tai jopa muuttaa teoksen omaksi ohjelmistopaketiksi. Minulla ei ollut aikomustakaan tehdä suurta määrää työtä vain nähdäkseni sen muuttuvan hyödyttömäksi aiottuun tarkoitukseen: uuden ohjelmistonjakoyhteisön luomiseen.

Professori Winston, silloinen MIT:n tekoälylaboratorion johtaja, kutsui minua kuitenkin ystävällisesti jatkamaan laboratorion tilojen käyttöä.

Ensimmäiset askeleet

Vähän ennen GNU-projektin aloittamista kuulin Free University Compiler Kitistä, joka tunnetaan myös nimellä VUCK. (Hollannin sana "ilmaiseksi" on kirjoitettu kirjaimella a v.) Tämä oli kääntäjä, joka on suunniteltu käsittelemään useita kieliä, mukaan lukien C ja Pascal, ja tukemaan useita kohdekoneita. Kirjoitin sen kirjoittajalle ja kysyin, voisiko GNU käyttää sitä.

Hän vastasi pilkallisesti ja totesi, että yliopisto oli ilmainen, mutta kääntäjä ei. Siksi päätin, että ensimmäinen ohjelmani GNU-projektille olisi monikielinen, monikäyttöinen kääntäjä.

Toivoen välttäväni tarvetta kirjoittaa koko kääntäjä itse, hankin lähdekoodin Pastel-kääntäjälle, joka oli Lawrence Livermore Labissa kehitetty monikäyttöinen kääntäjä. Se tuki Pascalin laajennettua versiota, joka on suunniteltu järjestelmäohjelmointikieleksi, ja se oli kirjoitettu siinä. Lisäsin C-käyttöliittymän ja aloitin sen siirtämisen Motorola 68000 -tietokoneeseen. Mutta minun oli luovuttava siitä, kun huomasin, että kääntäjä tarvitsi monta megatavua pinotilaa ja käytettävissä oleva 68000 Unix -järjestelmä sallisi vain 64 kt.

Sitten tajusin, että Pastel-kääntäjä toimi jäsentämällä koko syötetiedoston syntaksipuuksi, muuntamalla koko syntaksipuun "ohjeiden" ketjuksi ja luomalla sitten koko tulostiedoston vapauttamatta koskaan tallennustilaa. Tässä vaiheessa päätin, että minun on kirjoitettava uusi kääntäjä tyhjästä. Tämä uusi kääntäjä tunnetaan nyt nimellä GCC; siinä ei käytetä yhtään Pastel-kääntäjää, mutta onnistuin mukauttamaan ja käyttämään kirjoittamaani C-käyttöliittymää. Mutta se oli joitakin vuosia myöhemmin; Ensin työskentelin GNU Emacsilla.

GNU Emacs

Aloitin työskentelyn GNU Emacsin parissa syyskuussa 1984, ja vuoden 1985 alussa se alkoi olla käyttökelpoinen. Tämän ansiosta aloin käyttämään Unix-järjestelmiä editoimiseen; Koska minulla ei ollut kiinnostusta opetella käyttämään vi:tä tai ed:tä, olin tehnyt editointini muilla koneilla siihen asti.

Tässä vaiheessa ihmiset alkoivat haluta käyttää GNU Emacsia, mikä herätti kysymyksen sen levittämisestä. Tietenkin laitoin sen käyttämäni MIT-tietokoneen nimettömälle ftp-palvelimelle. (Tästä tietokoneesta, prep.ai.mit.edu, tuli siis tärkein GNU ftp -jakelupaikka; kun se poistettiin käytöstä muutama vuosi myöhemmin, siirsimme nimen uudelle ftp-palvelimellemme.) Mutta tuolloin monet kiinnostuneet ihmiset eivät olleet Internetissä eivätkä voineet saada kopiota ftp:llä. Joten kysymys oli, mitä sanoisin heille?

Olisin voinut sanoa: "Etsi ystävä, joka on verkossa ja joka tekee kopion sinulle." Tai olisin voinut tehdä samoin kuin alkuperäisen PDP-10 Emacsin kanssa: sano heille: "Lähetä minulle nauha ja SASE, niin lähetän sen takaisin Emacsin kanssa." Mutta minulla ei ollut työtä, ja etsin tapoja ansaita rahaa ilmaisilla ohjelmistoilla. Joten ilmoitin, että lähetän nauhan kenelle tahansa, joka sen halusi, 150 dollarin maksua vastaan. Tällä tavalla aloitin ilmaisten ohjelmistojen jakeluyrityksen, joka on niiden yritysten edeltäjä, jotka nykyään jakavat kokonaisia ​​GNU/Linux-järjestelmäjakeluja.

Onko ohjelma ilmainen kaikille käyttäjille?

Jos ohjelma on vapaa ohjelmisto, kun se lähtee tekijänsä käsistä, se ei välttämättä tarkoita, että se olisi ilmainen ohjelmisto kaikille, joilla on kopio siitä. Esimerkiksi julkiset ohjelmistot (ohjelmistot, jotka eivät ole tekijänoikeuksilla suojattuja) ovat ilmaisia ​​ohjelmistoja; mutta kuka tahansa voi tehdä siitä oman muokatun version. Samoin monet ilmaiset ohjelmat ovat tekijänoikeudella suojattuja, mutta niitä jaetaan yksinkertaisilla sallivilla lisensseillä, jotka sallivat omistusoikeudelliset muokatut versiot.

Paradigmaattinen esimerkki tästä ongelmasta on X Window System. Se kehitettiin MIT:ssä ja julkaistiin vapaana ohjelmistona sallivalla lisenssillä, ja useat tietokoneyritykset ottivat sen pian käyttöön. He lisäsivät X:n omistamiinsa Unix-järjestelmiinsä, vain binäärimuodossa, ja saman salassapitosopimuksen piiriin. Nämä X:n kopiot eivät olleet sen enempää ilmaisia ​​ohjelmistoja kuin Unix.

X Window Systemin kehittäjät eivät pitäneet tätä ongelmana – he odottivat ja aikoivat tämän tapahtuvan. Heidän tavoitteenaan ei ollut vapaus, vain "menestys", joka määritellään "paljon käyttäjiksi". He eivät välittäneet siitä, onko näillä käyttäjillä vapautta, vain siitä, että heitä pitäisi olla useita.

Tämä johti paradoksaaliseen tilanteeseen, jossa kaksi eri tapaa laskea vapauden määrää antoivat erilaiset vastaukset kysymykseen "Onko tämä ohjelma ilmainen?" Jos arvioisit MIT-julkaisun jakeluehtojen tarjoaman vapauden perusteella, sanoisit, että X oli ilmainen ohjelmisto. Mutta jos mittaisit X:n keskimääräisen käyttäjän vapautta, sinun pitäisi sanoa, että se oli patentoitu ohjelmisto. Suurin osa X-käyttäjistä käytti Unix-järjestelmien mukana tulleita patentoituja versioita, ei ilmaista versiota.

Copyleft ja GNU GPL

GNU:n tavoitteena oli antaa käyttäjille vapautta, ei vain olla suosittu. Joten meidän piti käyttää jakeluehtoja, jotka estäisivät GNU-ohjelmiston muuttamisen patentoiduksi ohjelmistoksi. Käyttämämme menetelmä on nimeltään "copyleft".(1)

Copyleft käyttää tekijänoikeuslakia, mutta kääntää sen päinvastoin palvellakseen sen tavanomaista tarkoitusta: ohjelman rajoittamisen sijaan siitä tulee keino pitää ohjelma vapaana.

Copyleftin keskeinen idea on, että annamme kaikille luvan ajaa ohjelmaa, kopioida ohjelmaa, muokata ohjelmaa ja levittää muokattuja versioita – mutta emme oikeutta lisätä omia rajoituksiaan. Siten "vapaan ohjelmiston" määrittelevät keskeiset vapaudet taataan kaikille, joilla on kopio; niistä tulee luovuttamattomia oikeuksia.

Jotta copyleft toimisi tehokkaasti, myös muokattujen versioiden on oltava ilmaisia. Näin varmistetaan, että meidän teoksiimme perustuva teos tulee yhteisömme saataville, jos se julkaistaan. Kun ohjelmoijat, joilla on ohjelmoijatöitä, vapaaehtoisesti parantavat GNU-ohjelmistoa, copyleft estää heidän työnantajiaan sanomasta: "Et voi jakaa näitä muutoksia, koska aiomme käyttää niitä omien versioiden tekemiseen ohjelmasta."

Vaatimus, että muutokset ovat ilmaisia, on olennainen, jos haluamme varmistaa vapauden jokaiselle ohjelman käyttäjälle. X Window Systemin yksityistäneet yritykset tekivät yleensä joitain muutoksia siirtääkseen sen järjestelmiinsä ja laitteistoihinsa. Nämä muutokset olivat pieniä verrattuna X:n suureen laajuuteen, mutta ne eivät olleet triviaaleja. Jos muutosten tekeminen olisi tekosyy kieltää käyttäjien vapaus, kenen tahansa olisi helppo käyttää tekosyytä hyväkseen.

Tähän liittyvä ongelma koskee ilmaisen ohjelman yhdistämistä ei-vapaan koodin kanssa. Tällainen yhdistelmä olisi väistämättä ei-vapaa; mikä tahansa vapaus puuttuu ei-vapaalta osalta, puuttuisi myös kokonaisuudesta. Tällaisten yhdistelmien salliminen avaisi riittävän suuren reiän laivan upottamiseksi. Siksi olennainen vaatimus copyleftille on tämän aukon tukkiminen: kaiken copyleft-ohjelmaan lisätyn tai siihen yhdistetyn on oltava sellainen, että suurempi yhdistetty versio on myös ilmainen ja copylefted.

Copyleftin erityinen toteutus, jota käytämme useimmissa GNU-ohjelmistoissa, on GNU General Public License tai lyhennettynä GNU GPL. Meillä on muitakin copyleft-tyyppejä, joita käytetään tietyissä olosuhteissa. GNU-käsikirjat ovat myös copylefttejä, mutta käyttävät paljon yksinkertaisempaa copyleft-tyyppiä, koska GNU GPL:n monimutkaisuus ei ole käsikirjoissa välttämätöntä.(2)

(1) Vuonna 1984 tai 1985 Don Hopkins (erittäin mielikuvituksellinen kaveri) lähetti minulle kirjeen. Kirjekuoreen hän oli kirjoittanut useita hauskoja sanontoja, mukaan lukien tämän: "Copyleft – kaikki oikeudet käännettyinä." Käytin sanaa "copyleft" nimittääkseni tuolloin kehittämäni jakelukonseptin.

Free Software Foundationin työntekijät ovat kirjoittaneet ja ylläpitäneet useita GNU-ohjelmistopaketteja. Kaksi merkittävää ovat C-kirjasto ja kuori. GNU C -kirjasto on se, mitä jokainen GNU/Linux-järjestelmässä toimiva ohjelma käyttää kommunikoidakseen Linuxin kanssa. Sen on kehittänyt Free Software Foundationin henkilökunnan jäsen Roland McGrath. Useimmissa GNU/Linux-järjestelmissä käytetty kuori on BASH, Bourne Again Shell(1), jonka on kehittänyt FSF:n työntekijä Brian Fox.

Rahoitimme näiden ohjelmien kehitystä, koska GNU-projektissa ei ollut kyse vain työkaluista tai kehitysympäristöstä. Tavoitteemme oli täydellinen käyttöjärjestelmä, ja näitä ohjelmia tarvittiin tätä tavoitetta varten.

(1) "Bourne Again Shell" on näytelmä nimellä "Bourne Shell", joka oli tavallinen kuori Unixissa.

Ilmainen ohjelmistotuki

Vapaan ohjelmiston filosofia torjuu tietyn laajalle levinneen liiketoimintakäytännön, mutta se ei ole liiketoimintaa vastaan. Kun yritykset kunnioittavat käyttäjien vapautta, toivomme heille menestystä.

Emacsin kopioiden myynti on eräänlainen ilmaisten ohjelmistojen liiketoiminta. Kun FSF otti yrityksen haltuunsa, tarvitsin toisen tavan ansaita elantonsa. Löysin sen myydessäni kehittämiini ilmaisiin ohjelmistoihin liittyviä palveluita. Tämä sisälsi opetusta sellaisille aineille kuin GNU Emacsin ohjelmointi ja GCC:n mukauttaminen sekä ohjelmistokehitys, enimmäkseen GCC:n siirtäminen uusille alustoille.

Nykyään kutakin tällaista ilmaisten ohjelmistojen liiketoimintaa harjoittavat useat yritykset. Jotkut jakavat ilmaisia ​​ohjelmistokokoelmia CD-ROM-levyillä; toiset myyvät tukea tasoilla, jotka vaihtelevat käyttäjien kysymyksiin vastaamisesta virheiden korjaamiseen ja merkittävien uusien ominaisuuksien lisäämiseen. Alamme jopa nähdä ilmaisia ​​ohjelmistoyrityksiä, jotka perustuvat uusien ilmaisten ohjelmistotuotteiden lanseeraukseen.

Varo kuitenkin – monet yritykset, jotka yhdistävät itsensä termiin "avoin lähdekoodi", perustavat liiketoimintansa ei-vapaisiin ohjelmistoihin, jotka toimivat ilmaisten ohjelmistojen kanssa. Nämä eivät ole vapaita ohjelmistoyrityksiä, ne ovat ohjelmistoyrityksiä, joiden tuotteet houkuttelevat käyttäjiä pois vapaudesta. He kutsuvat näitä ohjelmia "lisäarvopaketeiksi", mikä osoittaa arvot, jotka he haluaisivat meidän omaksuvan: mukavuus vapauden edelle. Jos arvostamme vapautta enemmän, meidän pitäisi kutsua niitä "vapaudesta vähennetyiksi" paketeiksi.

tekniset tavoitteet

GNU:n päätavoite on olla vapaa ohjelmisto. Vaikka GNU:lla ei olisi teknistä etua Unixiin verrattuna, sillä olisi sosiaalinen etu, joka mahdollistaisi käyttäjien yhteistyön, ja eettinen etu, joka kunnioittaa käyttäjän vapautta.

Mutta oli luonnollista soveltaa tunnettuja hyvien käytäntöjen standardeja työhön – esimerkiksi dynaamisesti allokoida tietorakenteita mielivaltaisten kiinteiden kokorajoitusten välttämiseksi ja käsitellä kaikkia mahdollisia 8-bittisiä koodeja aina, kun se oli järkevää.

Lisäksi hylkäsimme Unixin keskittymisen pieneen muistin kokoon, koska päätimme olla tukematta 16-bittisiä koneita (oli selvää, että 32-bittiset koneet olisivat normi GNU-järjestelmän valmistuttua) emmekä ponnistellut. vähentää muistin käyttöä, ellei se ylitä megatavua. Ohjelmissa, joissa erittäin suurten tiedostojen käsittely ei ollut ratkaisevaa, rohkaisimme ohjelmoijia lukemaan koko syöttötiedoston ytimeen ja tarkistamaan sen sisällön ilman, että heidän tarvitsee huolehtia I/O:sta.

Näiden päätösten ansiosta monet GNU-ohjelmat ylittivät Unix-vastineensa luotettavuudessa ja nopeudessa.

lahjoitetut tietokoneet

GNU-projektin maineen kasvaessa ihmiset alkoivat tarjota Unix-koneiden lahjoittamista projektille. Nämä olivat erittäin hyödyllisiä, koska helpoin tapa kehittää GNU:n komponentteja oli tehdä se Unix-järjestelmässä ja korvata sen järjestelmän komponentit. Mutta he nostivat esille eettisen kysymyksen: oliko oikein, että meillä on kopio Unixista ollenkaan.

Unix oli (ja on) patentoitu ohjelmisto, ja GNU-projektin filosofia sanoi, että meidän ei pitäisi käyttää patentoituja ohjelmistoja. Mutta soveltaen samaa päättelyä, joka johtaa siihen johtopäätökseen, että väkivalta itsepuolustuksessa on perusteltua, päätin, että sen käyttö oli laillista. patentoitu paketti, kun se oli ratkaisevan tärkeää sellaisen ilmaisen korvaavan paketin kehittämisessä, joka auttaisi muita lopettamaan patentoidun paketin käytön.

Mutta vaikka tämä olikin oikeutettu paha, se oli silti paha. Tänään meillä ei ole enää Unix-kopioita, koska olemme korvanneet ne ilmaisilla käyttöjärjestelmillä. Jos emme pystyneet korvaamaan koneen käyttöjärjestelmää ilmaisella, vaihdoimme sen sijaan koneen.

GNU-tehtävälista

GNU-projektin edetessä ja yhä useampia järjestelmäkomponentteja löydettiin tai kehitettiin, lopulta oli hyödyllistä tehdä luettelo jäljellä olevista aukoista. Käytimme sitä rekrytoimme kehittäjiä kirjoittamaan puuttuvia kappaleita. Tämä luettelo tunnettiin nimellä GNU Task List. Puuttuvien Unix-komponenttien lisäksi listasimme useita muita hyödyllisiä ohjelmisto- ja dokumentaatioprojekteja, jotka mielestämme todella täydellisessä järjestelmässä pitäisi olla.

Nykyään (1) tuskin yhtään Unix-komponenttia on jäljellä GNU Task Listissä – ne työt oli tehty, lukuun ottamatta muutamia välttämättömiä töitä. Mutta lista on täynnä projekteja, joita jotkut saattavat kutsua "sovelluksiksi". Mikä tahansa ohjelma, joka vetoaa useampaan kuin kapeaan käyttäjäryhmään, olisi hyödyllinen lisättävä käyttöjärjestelmään.

Jopa pelit ovat mukana tehtäväluettelossa - ja ovat olleet alusta asti. Unix sisälsi pelejä, joten luonnollisesti myös GNU:n pitäisi. Mutta yhteensopivuus ei ollut pelien ongelma, joten emme seuranneet Unixin peliluetteloa. Sen sijaan listasimme joukon erilaisia ​​pelejä, joista käyttäjät saattavat pitää.

(1) Se on kirjoitettu vuonna 1998. Vuonna 2009 emme enää ylläpidä pitkää tehtävälistaa. Yhteisö kehittää ilmaisia ​​ohjelmistoja niin nopeasti, että emme voi edes seurata kaikkea. Sen sijaan meillä on lista korkean prioriteetin projekteista, paljon lyhyempi luettelo projekteista, joita haluamme todella rohkaista ihmisiä kirjoittamaan.

GNU Library GPL

GNU C -kirjasto käyttää erityistä copyleft-tyyppiä nimeltä GNU Library General Public License(1), joka antaa luvan linkittää oma ohjelmisto kirjastoon. Miksi tehdä tämä poikkeus?

Se ei ole periaatekysymys; ei ole olemassa periaatetta, jonka mukaan patentoidut ohjelmistotuotteet voivat sisältää koodimme. (Miksi osallistua hankkeeseen, joka perustuu siihen, että kieltäydytään jakamasta kanssamme?) LGPL:n käyttäminen C-kirjastossa tai missä tahansa kirjastossa on strategiakysymys.

C-kirjasto tekee yleistä työtä; jokaisessa omassa järjestelmässä tai kääntäjässä on C-kirjasto. Siksi C-kirjastomme asettaminen vain vapaiden ohjelmistojen saataville ei olisi antanut ilmaisille ohjelmistoille mitään etua – se olisi vain lannistanut kirjastomme käyttöä.

Yksi järjestelmä on poikkeus tästä: GNU-järjestelmässä (ja tämä sisältää GNU/Linuxin) GNU C -kirjasto on ainoa C-kirjasto. Joten GNU C -kirjaston jakeluehdot määräävät, onko mahdollista kääntää oma ohjelma GNU-järjestelmää varten. Ei ole eettistä syytä sallia patentoituja sovelluksia GNU-järjestelmässä, mutta strategisesti näyttää siltä, ​​että niiden kieltäminen vähentäisi GNU-järjestelmän käyttöä enemmän kuin rohkaisisi ilmaisten sovellusten kehittämistä. Tästä syystä Library GPL:n käyttö on hyvä strategia C-kirjastolle.

Muiden kirjastojen osalta strateginen päätös on harkittava tapauskohtaisesti. Kun kirjasto tekee erityistä työtä, joka voi auttaa kirjoittamaan tietyntyyppisiä ohjelmia, sen julkaiseminen GPL:n alaisuudessa ja rajoittaminen vain ilmaisiin ohjelmiin on tapa auttaa muita vapaiden ohjelmistojen kehittäjiä ja antaa heille etua patentoituihin ohjelmistoihin verrattuna.

Harkitse GNU Readlinea, kirjastoa, joka on kehitetty tarjoamaan komentorivimuokkausta BASH:lle. Readline julkaistaan ​​tavallisella GNU GPL:llä, ei Library GPL:llä. Tämä todennäköisesti vähentää Readlinen käyttöä, mutta se ei ole meille menetys. Sillä välin ainakin yksi hyödyllinen sovellus on tehty vapaaksi ohjelmistoksi nimenomaan Readlinen käyttöä varten, ja se on todellinen hyöty yhteisölle.

Omien ohjelmistojen kehittäjillä on rahan tarjoamat edut; ilmaisten ohjelmistojen kehittäjien on hyödynnettävä toisiaan. Toivon, että meillä on jonain päivänä suuri kokoelma GPL-suojattuja kirjastoja, joilla ei ole rinnakkaisuutta patentoiduille ohjelmistoille. Ne tarjoavat hyödyllisiä moduuleja uusien ilmaisten ohjelmistojen rakennuspalikoihin ja lisäävät merkittävän edun ilmaisten ohjelmistojen jatkokehitykseen.

(1) Tätä lisenssiä kutsutaan nyt GNU Lesser General Public License -lisenssiksi, jotta vältytään siltä, ​​että kaikkien kirjastojen pitäisi käyttää sitä. Katso lisätietoja kohdasta Miksi sinun ei pitäisi käyttää Lesser GPL:ää seuraavassa kirjastossasi.

Raapii kutinaa?

Eric Raymond sanoo, että "Jokainen hyvä ohjelmistotyö alkaa kehittäjän henkilökohtaisesta kutinasta." Ehkä näin tapahtuu joskus, mutta monet olennaiset osat GNU-ohjelmistosta kehitettiin täydellisen ilmaisen käyttöjärjestelmän aikaansaamiseksi.

Esimerkiksi kehitimme GNU C -kirjaston, koska Unix-tyyppinen järjestelmä tarvitsee C-kirjaston, BASH, koska Unix-tyyppinen järjestelmä tarvitsee kuoren, ja GNU tar, koska Unix-tyyppinen järjestelmä tarvitsee tar-ohjelman. Sama koskee omia ohjelmiani - GNU C -kääntäjä, GNU Emacs, GDB ja GNU Make.

Jotkut GNU-ohjelmat kehitettiin selviytymään erityisistä vapautemme uhista. Näin ollen kehitimme gzipin korvaamaan Compress-ohjelman, joka oli kadonnut yhteisölle LZW-patenttien vuoksi. Löysimme ihmisiä kehittämään LessTifiä ja äskettäin aloittanut GNOME:n ja Harmonyn ratkaisemaan tiettyjen omien kirjastojen aiheuttamia ongelmia (katso alla). Kehitämme GNU Privacy Guardia korvaamaan suosittuja ei-ilmaisia ​​salausohjelmistoja, koska käyttäjien ei tarvitse valita yksityisyyden ja vapauden välillä.

Tietysti näiden ohjelmien kirjoittajat kiinnostuivat teoksesta, ja niihin lisättiin monia ominaisuuksia eri henkilöiden toimesta omien tarpeidensa ja kiinnostuksen kohteidensa vuoksi. Mutta siksi ohjelmia ei ole olemassa.

odottamattomia kehityskulkuja

GNU-projektin alussa kuvittelin, että kehitämme koko GNU-järjestelmän ja julkaisemme sen sitten kokonaisuudessaan. Näin ei käynyt.

Koska jokainen GNU-järjestelmän komponentti toteutettiin Unix-järjestelmässä, jokainen komponentti saattoi toimia Unix-järjestelmissä kauan ennen kuin täydellinen GNU-järjestelmä oli olemassa. Joistakin näistä ohjelmista tuli suosittuja, ja käyttäjät alkoivat laajentaa niitä ja siirtää niitä eri Unixin yhteensopimattomiin versioihin ja joskus myös muihin järjestelmiin.

Prosessi teki näistä ohjelmista paljon tehokkaampia ja houkutteli sekä varoja että rahoittajia GNU-projektiin. Mutta se luultavasti myös viivästytti minimaalisen toimivan järjestelmän valmistumista useilla vuosilla, koska GNU-kehittäjien aikaa käytettiin näiden porttien ylläpitoon ja ominaisuuksien lisäämiseen olemassa oleviin komponentteihin sen sijaan, että olisi siirrytty kirjoittamaan puuttuvia komponentteja toisensa jälkeen.

GNU Hurd

Vuoteen 1990 mennessä GNU-järjestelmä oli melkein valmis; ainoa merkittävä puuttuva komponentti oli ydin. Olimme päättäneet toteuttaa ytimen kokoelmana palvelinprosesseja, jotka toimivat Machin päällä. Mach on mikroydin, joka on kehitetty Carnegie Mellonin yliopistossa ja sitten Utahin yliopistossa; GNU Hurd on kokoelma palvelimia (eli GNU-lauma), jotka toimivat Machin päällä ja tekevät Unix-ytimen erilaisia ​​töitä. Kehityksen aloitus viivästyi, kun odotimme Machin julkaisua ilmaisena ohjelmistona, kuten oli luvattu.

Yksi syy tämän mallin valitsemiseen oli välttää työn vaikeimmalta tuntuvaa osaa: ydinohjelman virheenkorjausta ilman lähdetason debuggeria. Tämä osa työstä oli tehty jo Machissa, ja odotimme Hurd-palvelimien virheenjäljitystä käyttäjäohjelmina GDB:n avulla. Mutta se kesti kauan tee se mahdollista, ja monisäikeiset palvelimet, jotka lähettävät viestejä toisilleen, ovat osoittautuneet erittäin vaikeiksi vianjäljittää. Hurdin saaminen toimimaan vakaasti on kestänyt monta vuotta.

Alix

GNU-ytimen ei alun perin pitänyt olla nimeltään Hurd. Sen alkuperäinen nimi oli Alix – nimetty naisen mukaan, joka oli silloin rakkaani. Hän, Unix-järjestelmänvalvoja, oli huomauttanut, kuinka hänen nimensä sopisi Unix-järjestelmän versioiden yleiseen nimeämismalliin; vitsinä hän sanoi ystävilleen: "Jonkun pitäisi nimetä ydin minun mukaani." En sanonut mitään, mutta päätin yllättää hänet Alix-nimisellä ytimellä.

Se ei jäänyt sellaiseksi. Michael (nykyisin Thomas) Bushnell, ytimen pääkehittäjä, piti parempana nimeä Hurd ja määritti Alixin uudelleen viittaamaan tiettyyn ytimen osaan - osaan, joka vangitsisi järjestelmäkutsut ja käsittelee niitä lähettämällä viestejä Hurd-palvelimille.

Myöhemmin Alix ja minä erosimme, ja hän muutti nimensä; itsenäisesti Hurd-suunnittelua muutettiin siten, että C-kirjasto lähettää viestejä suoraan palvelimille, ja tämä sai Alix-komponentin katoamaan suunnittelusta.

Mutta ennen kuin nämä asiat tapahtuivat, hänen ystävänsä törmäsi nimeen Alix Hurd-lähdekoodissa ja mainitsi sen hänelle. Joten hänellä oli mahdollisuus löytää hänen mukaansa nimetty ydin.

Linux ja GNU/Linux

GNU Hurd ei sovellu tuotantokäyttöön, emmekä tiedä tuleeko koskaan olemaan.Osakkuuspohjaisessa suunnittelussa on ongelmia, jotka johtuvat suoraan suunnittelun joustavuudesta, eikä ole selvää, onko ratkaisuja olemassa.

Onneksi toinen ydin on saatavilla. Vuonna 1991 Linus Torvalds kehitti Unix-yhteensopivan ytimen ja kutsui sitä Linuxiksi. Se oli aluksi omistusoikeus, mutta vuonna 1992 hän teki siitä ilmaisen ohjelmiston; Linuxin yhdistäminen ei aivan täydelliseen GNU-järjestelmään johti täydelliseen ilmaiseen käyttöjärjestelmään. (Niiden yhdistäminen oli tietysti sinänsä merkittävä työ.) Linuxin ansiosta voimme itse asiassa käyttää versiota GNU-järjestelmästä tänään.

Tulevaisuudessamme haasteita

Meillä on todistettu kykymme kehittää laaja valikoima ilmaisia ​​ohjelmistoja. Tämä ei tarkoita, että olisimme voittamattomia ja pysäyttämättömiä. Useat haasteet tekevät vapaiden ohjelmistojen tulevaisuuden epävarmaksi; niiden täyttäminen vaatii vankkumatonta ponnistelua ja kestävyyttä, joskus vuosia kestävää. Se vaatii sellaista päättäväisyyttä, jota ihmiset osoittavat, kun he arvostavat vapauttaan, eivätkä anna kenenkään viedä sitä pois.

Seuraavat neljä osiota käsittelevät näitä haasteita.

salainen laitteisto

Laitevalmistajat pitävät yhä useammin laitteiston tiedot salassa. Tämä vaikeuttaa ilmaisten ohjainten kirjoittamista, jotta Linux ja XFree86 voivat tukea uusia laitteita. Meillä on tänään täydellisiä ilmaisia ​​järjestelmiä, mutta meillä ei ole niitä huomenna, jos emme voi tukea huomisen tietokoneita.

On kaksi tapaa käsitellä tätä ongelmaa. Ohjelmoijat voivat tehdä käänteissuunnittelua selvittääkseen, kuinka laitteistoa voidaan tukea. Me muut voimme valita laitteiston, jota ilmaiset ohjelmistot tukevat; Kun lukumäärämme kasvaa, teknisten tietojen salassapidosta tulee itseään tuhoava käytäntö.

Käänteinen suunnittelu on iso työ; Onko meillä ohjelmoijia, joilla on riittävä määrä päättäväisyyttä toteuttaa se? Kyllä – jos meillä on vahva tunne, että ilmaiset ohjelmistot ovat periaatekysymys ja ei-vapaat ajurit ovat sietämättömiä. Ja kuluttavatko monet meistä ylimääräistä rahaa tai edes vähän ylimääräistä aikaa, jotta voimme käyttää ilmaisia ​​kuljettajia? Kyllä, jos päättäväisyys saada vapautta on laajalle levinnyt.

(Vuoden 2008 huomautus: tämä ongelma ulottuu myös BIOS:iin. On ilmainen BIOS, LibreBoot (coreboot-jakelu); ongelmana on teknisten tietojen saaminen koneille, jotta LibreBoot voi tukea niitä ilman ei-vapaita "blobeja".)

ei-vapaat kirjastot

Ei-ilmainen kirjasto, joka toimii ilmaisissa käyttöjärjestelmissä, toimii ansana ilmaisten ohjelmistojen kehittäjille. Kirjaston "houkuttelevat ominaisuudet ovat syötti; jos käytät kirjastoa, joudut ansaan, koska ohjelmasi ei voi hyödyllisesti olla osa ilmaista käyttöjärjestelmää. (Tarkasti ottaen voisimme sisällyttää ohjelmasi, mutta se voitti" t juosta kirjasto puuttuu.) Vielä pahempaa, jos omaa kirjastoa käyttävästä ohjelmasta tulee suosittu, se voi houkutella muita hyväuskoisia ohjelmoijia ansaan.

Ensimmäinen esimerkki tästä ongelmasta oli Motif-työkalupakki 80-luvulla. Vaikka vapaita käyttöjärjestelmiä ei vielä ollut, oli selvää, mitä ongelmaa Motif aiheuttaa niille myöhemmin. GNU-projekti vastasi kahdella tavalla: pyytämällä yksittäisiä ilmaisia ​​ohjelmistoprojekteja tukemaan ilmaisia ​​X Toolkit -widgetejä sekä Motifia ja pyytämällä jotakuta kirjoittamaan ilmainen korvaava Motif. Työ kesti useita vuosia; Hungry Programmersin kehittämä LessTif tuli tarpeeksi tehokkaaksi tukemaan useimpia Motif-sovelluksia vasta vuonna 1997.

Vuosina 1996-1998 toista ei-vapaata GUI-työkalusarjakirjastoa, nimeltään Qt, käytettiin merkittävässä kokoelmassa ilmaisia ​​ohjelmistoja, työpöytä-KDE:tä.

Ilmaiset GNU/Linux-järjestelmät eivät voineet käyttää KDE:tä, koska emme voineet käyttää kirjastoa. Jotkut GNU/Linux-järjestelmien kaupalliset jakelijat, jotka eivät kuitenkaan pitäneet tiukasti ilmaisista ohjelmistoista, lisäsivät järjestelmiinsä KDE:n, mikä tuotti järjestelmän, jossa on enemmän ominaisuuksia, mutta vähemmän vapautta. KDE-ryhmä rohkaisi aktiivisesti useampia ohjelmoijia käyttämään Qt:tä, ja miljoonat uudet "Linux-käyttäjät" eivät olleet koskaan olleet alttiina ajatukselle, että tässä oli ongelma. Tilanne vaikutti synkältä.

Vapaa ohjelmistoyhteisö vastasi ongelmaan kahdella tavalla: GNOME ja Harmony.

GNOME, GNU Network Object Model Environment, on GNU:n työpöytäprojekti. Miguel de Icazan vuonna 1997 aloittama ja Red Hat Softwaren tuella kehittämä GNOME pyrki tarjoamaan samanlaisia ​​työpöytätoimintoja, mutta käyttämällä yksinomaan ilmaisia ​​ohjelmistoja. Siinä on tekninen myös etuja, kuten tuki useille kielille, ei vain C++:lle.

Harmony on yhteensopiva korvaava kirjasto, joka on suunniteltu mahdollistamaan KDE-ohjelmiston käyttäminen ilman Qt:tä.

Marraskuussa 1998 Qt:n kehittäjät ilmoittivat lisenssin muutoksesta, jonka pitäisi toteutuessaan tehdä Qt:stä ​​vapaan ohjelmiston. Ei ole mitään keinoa olla varma, mutta uskon, että tämä johtui osittain yhteisön lujasta vastauksesta Qt:n epävapaana aiheuttamaan ongelmaan. (Uusi lisenssi on hankala ja epäoikeudenmukainen, joten on toivottavaa välttää sen käyttöä. Qt.)

Miten reagoimme seuraavaan houkuttelevaan ei-vapaaseen kirjastoon? Ymmärtääkö koko yhteisö tarpeen pysyä poissa ansasta? Vai luopuvatko monet meistä vapaudesta mukavuuden vuoksi ja aiheuttavatko suuren ongelman? Tulevaisuutemme riippuu filosofiastamme.

Ohjelmistopatentit

Pahin kohtaamamme uhka tulee ohjelmistopatenteista, jotka voivat asettaa algoritmien ja ominaisuuksien rajoitukset ilmaisille ohjelmistoille jopa kahdeksikymmeneksi vuodeksi. LZW-pakkausalgoritmien patentteja haettiin vuonna 1983, emmekä vieläkään voi julkaista ilmaisia ​​ohjelmistoja kunnon pakattujen GIF-tiedostojen tuottamiseksi. Vuonna 1998 ilmainen ohjelma MP3-pakatun äänen tuottamiseksi poistettiin levityksestä patenttioikeudenkäynnin uhalla.

On olemassa tapoja selviytyä patenteista: voimme etsiä todisteita patentin pätemättömyydestä ja etsiä vaihtoehtoisia tapoja tehdä työtä. Mutta jokainen näistä menetelmistä toimii vain joskus; kun molemmat epäonnistuvat, patentti saattaa pakottaa kaikilta ilmaisilta ohjelmistoilta puuttumaan jokin käyttäjien toivoma ominaisuus. Pitkän odotuksen jälkeen patentit umpeutuvat (MP3-patenttien odotetaan päättyvän vuoteen 2018 mennessä), mutta mitä teemme siihen asti?

Ne meistä, jotka arvostavat vapaita ohjelmistoja vapauden vuoksi, jäävät joka tapauksessa vapaisiin ohjelmistoihin. Me pärjäämme ilman patentoituja ominaisuuksia. Mutta ne, jotka arvostavat vapaita ohjelmistoja, koska he odottavat sen olevan teknisesti parempia, kutsuvat sitä todennäköisesti epäonnistuminen, kun patentti jarruttaa sitä.. Siten vaikka on hyödyllistä puhua "basaari"-kehitysmallin käytännön tehokkuudesta ja joidenkin vapaiden ohjelmistojen luotettavuudesta ja voimasta, emme saa pysähtyä tähän.vapaus ja periaatteet.

Ilmainen dokumentaatio

Suurin puute ilmaisissa käyttöjärjestelmissämme ei ole ohjelmistossa – se on hyvien ilmaisten käyttöoppaiden puute, joita voimme sisällyttää järjestelmiimme. Dokumentaatio on olennainen osa mitä tahansa ohjelmistopakettia; Kun tärkeän ilmaisen ohjelmistopaketin mukana ei tule hyvää ilmaista käyttöopasta, se on suuri aukko. Meillä on nykyään monia tällaisia ​​aukkoja.

Ilmainen dokumentaatio, kuten vapaat ohjelmistot, on vapauskysymys, ei hinta. Ilmaisen käyttöoppaan kriteeri on pitkälti sama kuin ilmaisten ohjelmistojen kohdalla: kyse on siitä, että kaikille käyttäjille annetaan tiettyjä vapauksia. Jakelu (mukaan lukien kaupallinen myynti) on sallittava verkossa ja paperilla, jotta opas voidaan liittää jokaisen ohjelman kopion mukana.

Myös muutoslupa on tärkeä. Yleisenä sääntönä en usko, että ihmisille on välttämätöntä saada lupa muokata kaikenlaisia ​​artikkeleita ja kirjoja. En esimerkiksi usko, että sinun tai minun tarvitse antaa lupaa muokata tämän kaltaisia ​​artikkeleita, jotka kuvaavat toimintaamme ja näkemyksiämme.

Mutta on erityinen syy, miksi muokkausvapaus on ratkaisevan tärkeää vapaiden ohjelmistojen dokumentoinnissa. Kun ihmiset käyttävät oikeuttaan muokata ohjelmistoa ja lisätä tai muuttaa sen ominaisuuksia, he muuttavat myös ohjetta, jos he ovat tunnollisia, jotta he voivat tarjota tarkan ja käyttökelpoisen dokumentaation muokatun ohjelman kanssa. Ei-ilmainen käsikirja, joka ei anna ohjelmoijien olla tunnollisia ja lopettaa työtä, ei täytä yhteisömme tarpeita.

Tietyt rajoitukset, joilla muutokset tehdään, eivät aiheuta ongelmia. Esimerkiksi vaatimukset alkuperäisen tekijän tekijänoikeusilmoituksen, jakeluehtojen tai kirjoittajaluettelon säilyttämisestä ovat kunnossa. Ei ole myöskään ongelmallista vaatia muokatuissa versioissa ilmoitus, että niitä on muutettu, vaikka niissä olisi kokonaisia ​​osia, jotka eivät välttämättä ole voidaan poistaa tai muuttaa, kunhan nämä osiot käsittelevät ei-teknisiä aiheita. Toisin sanoen ne eivät estä ilmaisten ohjelmistojen yhteisöä hyödyntämästä käsikirjaa täysimääräisesti.

Kaikkia on kuitenkin voitava muokata tekninen käyttöoppaan sisältö ja jaa sitten tulos kaikissa tavanomaisissa tiedotusvälineissä kaikkien tavanomaisten kanavien kautta; Muuten rajoitukset haittaavat yhteisöä, käsikirja ei ole ilmainen ja tarvitsemme toisen oppaan.

Onko ilmaisten ohjelmistojen kehittäjillä tietoisuutta ja päättäväisyyttä tuottaa täysi valikoima ilmaisia ​​käyttöoppaita? Jälleen kerran tulevaisuutemme riippuu filosofiasta.

Meidän on puhuttava vapaudesta

Nykyisten arvioiden mukaan GNU/Linux-järjestelmillä, kuten Debian GNU/Linux ja Red Hat "Linux", on kymmenen miljoonaa käyttäjää. Vapaat ohjelmistot ovat kehittäneet sellaisia ​​käytännön etuja, että käyttäjät ryntäävät niihin puhtaasti käytännön syistä.

Tämän hyvät seuraukset ovat ilmeisiä: lisääntynyt kiinnostus ilmaisten ohjelmistojen kehittämiseen, enemmän asiakkaita ilmaisten ohjelmistojen yrityksille ja enemmän kykyä kannustaa yrityksiä kehittämään kaupallisia vapaita ohjelmistoja patentoitujen ohjelmistotuotteiden sijaan.

Mutta kiinnostus ohjelmistoa kohtaan kasvaa nopeammin kuin tietoisuus sen filosofiasta, johon se perustuu, ja tämä johtaa ongelmiin. Kykymme vastata yllä oleviin haasteisiin ja uhkiin riippuu halusta puolustaa lujasti vapautta. Varmistaaksemme, että yhteisöllämme on tämä tahto, meidän on levitettävä ideaa uusille käyttäjille, kun he tulevat yhteisöön.

Mutta emme onnistu siinä: pyrkimykset houkutella uusia käyttäjiä yhteisöömme ovat paljon enemmän kuin pyrkimykset opettaa heille yhteisömme kansalaistaitoja. Meidän on tehtävä molemmat, ja meidän on pidettävä nämä kaksi pyrkimystä tasapainossa.

"avoin lähdekoodi"

Uusien käyttäjien opettaminen vapaudesta vaikeutui vuonna 1998, kun osa yhteisöstä päätti lopettaa termin "vapaat ohjelmistot" käytön ja sanoa sen sijaan "avoimen lähdekoodin ohjelmistot".

Jotkut, jotka suosivat tätä termiä, pyrkivät välttämään "ilmaisen" ja "ilmaisen" sekoittamisen – pätevän tavoitteen. Toiset kuitenkin pyrkivät jättämään syrjään periaatteellisen hengen, joka oli motivoinut vapaiden ohjelmistojen liikettä ja GNU-projektia, ja vetoamaan sen sijaan johtajiin ja yrityskäyttäjiin, joista monet pitävät ideologiaa, joka asettaa voiton vapauden, yhteisön ja yhteisön edelle. periaatteita. Siten "avoimen lähdekoodin" retoriikka keskittyy mahdollisuuksiin tehdä korkealaatuisia ja tehokkaita ohjelmistoja, mutta välttelee ajatuksia vapaudesta, yhteisöllisyydestä ja periaatteesta.

"Linux"-lehdet ovat selkeä esimerkki tästä – ne ovat täynnä mainoksia patentoiduista ohjelmistoista, jotka toimivat GNU/Linuxin kanssa. Kun seuraava Motif tai Qt ilmestyy, varoittavatko nämä lehdet ohjelmoijia pysymään poissa siitä vai näyttävätkö ne mainoksia siitä?

yritysten tukeminen voi edistää yhteisöä monin tavoin; Jos kaikki muu on sama, se on hyödyllistä. mutta heidän tukensa saaminen puhumalla vielä vähemmän vapaudesta ja periaatteista voi olla tuhoisaa; se pahentaa entisestään epätasapainoa etsinnän ja kansalaisopetuksen välillä.

"Ilmainen ohjelmisto" ja "avoin lähdekoodi" kuvaavat enemmän tai vähemmän samaa ohjelmistoluokkaa, mutta kertovat eri asioita ohjelmistosta ja arvoista. GNU-projekti käyttää edelleen termiä "vapaa ohjelmisto" ilmaistakseen ajatuksen, että vapaus, ei vain teknologia, on tärkeää.

Yrittää!

Yodan aforismi ("Ei ole 'yritystä") kuulostaa siistiltä, ​​mutta se ei toimi minulle. Olen tehnyt suurimman osan työstäni ollessani huolissani siitä, pystynkö tekemään työn, enkä ole varma, riittääkö se tavoitteen saavuttamiseen, jos tekisin. Mutta yritin silti, koska vihollisen ja kaupunkini välissä ei ollut ketään muuta kuin minä. Yllättäen itseni, olen joskus onnistunut.

Joskus epäonnistuin; jotkut kaupungeistani ovat kaatuneet. Sitten löysin toisen kaupungin uhattuna ja valmistauduin uuteen taisteluun. Ajan myötä olen oppinut etsimään uhkia ja asettumaan niiden ja kaupunkini väliin kutsuen muita hakkereita tulemaan mukaani.

Nykyään en usein ole ainoa. On helpotus ja ilo, kun näen rykmentin hakkereita pitämään linjaa, ja ymmärrän, että tämä kaupunki saattaa selviytyä – toistaiseksi. Mutta vaarat ovat joka kerta suuremmat vuonna, ja nyt Microsoft on kohdistanut nimenomaisesti yhteisöömme. Emme voi pitää vapauden tulevaisuutta itsestäänselvyytenä. Älä pidä sitä itsestäänselvyytenä! Jos haluat säilyttää vapautesi, sinun on oltava valmis puolustamaan sitä.

TH.arial ( font-family: Arial, Serif;) P.topic ( font-family: sans-serif;) A.plain ( tekstin koristelu: ei mitään;) A.topic01 ( väri: #006890; font-family: sans-serif; tekstin koristelu: ei mitään;) A.topic02 ( väri: #099771; font-family: sans-serif; tekstin koristelu: ei mitään;) serif; tekstin koristelu: ei mitään;) A.topic04 ( väri: #98650A; kirjasinperhe: sans-serif; tekstin koristelu: ei mitään;) tekstin koristelu: ei mitään;) A.topic06 ( väri: #099607; kirjasinperhe: sans-serif; tekstin koristelu: ei mitään;) A .topic07 ( väri: #9E1215; kirjasinperhe: sans-serif; koristelu: ei mitään;) A.topic08 ( väri: #970941; font-family: sans-serif; tekstin koristelu: ei mitään;) A.topic09 ( väri : #950995; kirjasinperhe: sans-serif; tekstin koristelu: ei mitään;) A.topic010 ( väri: #390A98; kirjasinperhe: sans-serif; tekstin koristelu: ei mitään -serif;) H2 (fonttiperhe: sans-serif;) H3 (kirjasinperhe: sans-serif;) H4 (fonttiperhe: sans-seri f;) H5 (fonttiperhe: sans-serif;) H6 (fonttiperhe: sans-serif;)

Vapaan ohjelmiston ideologia ja GNU-projekti: nykyinen tila ja välittömät haasteet

S.D. Kuznetsov

Free Software Foundation (FSF) on erittäin mielenkiintoinen ja monella tapaa poikkeuksellinen ilmiö nykypäivän ohjelmointimaailmassa. Monet kotimaiset ohjelmoijat joutuivat käsittelemään FSF:n ohjelmia (erityisen hyvin tunnetaan GCC-ohjelmointijärjestelmä), mutta venäjänkielisten julkaisujen puute vaikeuttaa FSF:n ideologian ja tavoitteiden ymmärtämistä ja tekee myös mahdottomaksi arvioida olemassa olevia ohjelmia. ruuhkaa. Tämän lyhyen artikkelin tarkoituksena on täyttää tämä aukko ainakin osittain. Artikkeli perustuu kokonaan FSF:n materiaaleihin ja siksi tämän organisaation yleisten periaatteiden mukaisesti se voidaan vapaasti painaa, kopioida tai levittää millään muulla tavalla (tämä huomautus säilyttäen).

1. FSF-ideologia ja GNU-projektin yleiset tavoitteet

FSF on Richard Stallmanin perustama ja johtama ohjelmointiorganisaatio. Yleisimmissä puitteissa FSF:n tehtävänä on poistaa rajoituksia tietokoneohjelmien kopioimiselta, jakelulta, opiskelulta ja muokkaamiselta. Tämän yhteisen tavoitteen saavuttamiseksi FSF kannustaa kehittämään ja käyttämään ilmaisia ​​ohjelmistoja, jotka on suunnattu monenlaisiin sovelluksiin.

Vuonna 1985 kirjoitetussa "GNU manifestissaan" R. Stallman esittelee pääajatuksena, joka johti FSF:n ja GNU-projektin syntymiseen, kieltäytyvänsä ohjelmiston omistamisesta. Ohjelmointiyhteisön ihmissuhteiden erityispiirteet saavat ihmiset usein valitsemaan luonnollista ystävyyden ja keskinäisen avun tunteen tai alistumisen, joka häiritsee tätä omaisuuslakia. Ilmaisilla ohjelmistoilla tämä työläs valinta ei ole enää tarpeen.

Integroidun ilmaisen ohjelmistojärjestelmän luominen välttää ohjelmoijien päällekkäisen työn (mitä usein vaaditaan vain siksi, että joku omistaa ohjelmiston). Ohjelmien lähdekoodien ilmainen jakelu helpottaa niiden ylläpitoa ja mukauttamista tietyn käyttäjän tarpeisiin (ei tarvitse turvautua vain lähdekoodien lisenssejä omistavien yritysten palveluihin). Tässä on ylimääräinen ja erittäin tärkeä mahdollisuus käyttää hyviä ohjelmistoja opetustarkoituksiin.

R. Stallmanin mukaan ohjelmoijat eivät kuole nälkään siirtyessään vapaisiin ohjelmistoihin (vaikka he ilmeisesti ansaitsevatkin hieman vähemmän). Ohjelmistojen kopioinnin rajoittaminen ei ole ainoa tapa ansaita rahaa. Stallmanin perusideana on, että ei pitäisi myydä ohjelmia, vaan ohjelmoijan työtä. Erityisesti tulonlähde voi olla ohjelmistojärjestelmien ylläpito tai niiden konfigurointi käytettäväksi uusissa tietokoneissa ja/tai uusissa olosuhteissa, opetus jne.

Stallmanin "Manifesto" on kirjoitettu erittäin tunnepitoisesti ja paikoin liian utopistinen. Näyttää kuitenkin siltä, ​​että ajatukset vapaista ohjelmistoista ovat historiallisesti lähellä perinteisiä (viimeisimmät vuosia lukuun ottamatta) neuvostoohjelmoijien asenteita. Ehkä FSF-linja on luonnollisin tapa integroida syvään ohjelmoijayhteisön kotimaassa ja maailmassa.

Tarkemmin sanottuna FSF kehittää ohjelmia GNU-projektin puitteissa (lyhenne GNU on laajennettu rekursiivisesti - GNU "s Not Unix). GNU-projektin tavoitteena on luoda täydellinen integroitu ohjelmistojärjestelmä, joka on yhteensopiva GNU-projektin kanssa. Unix-käyttöjärjestelmäympäristö (yleensä GNU-ohjelmien ominaisuudet ovat Unix-ympäristön analogien laajempia ominaisuuksia).

FSF-ohjelmisto on "ilmainen" kahdessa mielessä. Ensinnäkin mitä tahansa ohjelmaa voidaan vapaasti kopioida ja siirtää kenelle tahansa. Toiseksi ohjelmien lähdekoodien saatavuus tarjoaa mahdollisuuden ohjelmien ilmaiseen tutkimiseen, niiden parantamiseen ja muokattujen versioiden jakeluun.

Aivan kuten tavallisten ohjelmistoyritysten oikeuksia suojaa niiden tekijänoikeusmerkki (copyright), FSF-ohjelmistojärjestelmien "vapaus" on suojattu "copyleftillä" - tekijänoikeuden ja asiakirjan, jonka otsikko on "GNU General Public License", yhdistelmä. kaikissa FSF-teksteissä. Tämä asiakirja ilmoittaa oikeudet, jotka tämän tekstin nykyisellä omistajalla on, ja mahdotonta riistää näitä oikeuksia muilta subjektilta.

FSF:n päätoimiala on uusien ilmaisten ohjelmistokomponenttien kehittäminen GNU-projektin puitteissa. Pääosin GNU-projekti kehittyy suunnitellusti (katso erityisesti tämän artikkelin kohta 3), mutta FSF hyväksyy myös yritysten ja yksityishenkilöiden omasta aloitteestaan ​​kehittämiä ilmaisjakeluohjelmia. Lisäksi FSF tuottaa ja myy ilmaisia ​​ohjelmistonauhoja, valmistelee, julkaisee ja jakelee käsikirjoja GNU-ohjelmiston eri komponenteille sekä ylläpitää ja jakaa palveluhakemistoa, luetteloa yrityksistä ja henkilöistä, jotka tarjoavat maksullisia palveluita GNU-ohjelmien käyttäjille ja järjestelmät.

FSF:n taloudellinen perusta on nauhojen ja dokumenttien myynti sekä kaupallisten yritysten ja yksityishenkilöiden sponsorointi.

2. Saatavilla oleva GNU-ohjelmisto

Tällä hetkellä kaikki GNU Project -ohjelmiston komponentit eivät ole valmiita. FSF kuitenkin jakelee monia ohjelmia, joista osa on suoraan FSF:n ohjelmoijien kirjoittamia, ja osa lahjoitetaan FSF:lle muiden organisaatioiden ja yksityishenkilöiden ilmaista jakelua varten. Listataan nyt lyhyesti FSF:n jakamat ohjelmistotuotteet.

Emacs on laajennettava, muokattavissa oleva editori erilaisille päätelaitteille ja käyttäjien tarpeille. Editorin laajennettavuus perustuu editoriin sisäänrakennetun Lisp-kielen tulkin (Common Lispin murre) käyttöön. Samanaikaisesti editorin lähdetekstien kanssa jaetaan Emacsin käyttöoppaat ja ohjekirja ohjelmointiin Lispissä Emacs-ympäristössä.

Bison korvaa tavallisen Yacc-jäsennysgeneraattorin joillakin laajennuksilla. Ohjetta myös jaetaan.

Kaksi toteutusta Lisp-kielen yksinkertaistetusta murteesta - Scheme: yksi MIT:stä (kirjoitettu C-kielellä), toinen Yalen yliopistosta (kirjoitettu Scheme).

Texi2roff-apuohjelma on suunniteltu muuntamaan TeX-muotoiset tekstitiedostot Unix-käyttöjärjestelmän roff-standardin tekstitiedostoiksi (FSF:n konemedialla jakama dokumentaatio on alustettu TeX-muotoon).

Apuohjelmat tekstitiedostojen pakkaamiseen/purkamiseen.

GNU-shakkiohjelma.

GNU CC on kannettava optimoiva C-kääntäjä. Tukee täysin ANSI C -standardia. Sisältää työkalut koodigeneraattoreiden puoliautomaattiseen rakentamiseen uusille tietokoneille. Jaetaan ohjekirjan mukana.

Yksivaiheinen kannettava GAS-kokoonpanolaite, joka on lähes kaksi kertaa nopeampi kuin tavallinen Unix-asentaja.

Ilmaiset apuohjelmat objektitiedostojen kanssa työskentelemiseen: ar, ld, nm, koko, gprof, strip ja ranlib. Uusi dynaaminen latausapuohjelma, dld, on myös jakelussa.

GNU make sisältää lähes kaikki BSD-, System V- ja POSIX make -apuohjelmat sekä joukon laajennuksia. Jaetaan ohjekirjan mukana.

GDB-debuggeria voidaan käyttää C-, C++- ja Fortran-kielillä kirjoitettujen ohjelmien virheenkorjaukseen. Jaetaan ohjekirjan mukana.

BASH (Bourne Again SHell) - GNU Shell on yhteensopiva standardin Unix sh -komennon kanssa ja sisältää joukon laajennuksia, jotka on otettu muista Shell-versioista.

GAWK on Unix AWK -standardin GNU-versio.

flex on GNU-korvaus tavalliselle leksikaalisen analysaattorin generaattorille lex. flexin avulla voit saada tehokkaampia skannereita kuin lex.

GNU tar on tavallisen tar-arkistotyökalun laajennus.

Osa BSD 4.3-tahoen tiedostoista, jotka eivät sisällä AT&T-lähdekoodia ja jotka Berkeleyn yliopisto on julkaissut ilmaiseksi jakeluun. Nämä tiedostot sisältävät erityisesti joidenkin apuohjelmien, pelien, kirjastorutiinien jne. täydet lähdetekstit.

Järjestelmät, jotka tukevat ohjelmistoversioiden käyttöä suurissa ohjelmistoprojekteissa, RCS (Revision Control System) ja CVS (Concurrent Version System).

Nopeampi kuin grep- ja diff-apuohjelmien tavalliset ilmaiset versiot.

Lähes kokonaan Postscript-yhteensopiva graafinen kieli, Ghostscript.

Interaktiivinen ohjelma matemaattisten lausekkeiden ja datan gnuplotin piirtämiseen.

Joukko työkaluja GCC-kääntäjän muuttamiseksi C++-kääntäjäksi, mukaan lukien edistyneet luokkakirjastot.

Valtava määrä X11-ohjelmia, MIT X-Windows -toteutus (versio 11, julkaisu 4). Artikkelin volyymi ei anna aihetta pohtia asiaa tarkemmin.

Periaatteessa kaikki FSF:n jakamat ohjelmat on suunniteltu toimimaan Unix-ympäristössä ja niitä käytetään jo tämän järjestelmän eri versioiden kanssa, mutta joistakin ohjelmista on olemassa versioita työskentelyyn VMS:n ja jopa MS-DOS:n kanssa.

3. GNU-projektin välittömät tehtävät

Lista töistä, jotka on suunniteltu tehtäväksi osana GNU-projektia, on melko laaja. Annamme vain lyhyen yleiskatsauksen pääsuunnista.

3.1. Dokumentointi

On valmisteltava useita oppaita ohjelmille, jotka ovat jo valmiita tai melkein valmiita: C-kielen viitekäsikirja, kuvaus GCC:stä, mukaan lukien käsikirja kohdekoneiden määrittämiseen, käsikirja sovellusjärjestelmien ohjelmointiin X- Windows-ympäristö jne.

3.2. Ilmaisen Unix-ytimen kehittämiseen liittyvät projektit

FSF rakentaa Unix-ytimen, joka perustuu ilmaiseen Mach-mikroytimeen. Välittömiin tehtäviin kuuluvat TCP/IP-verkkoprotokollien ja uuden tiedostojärjestelmän käyttöönotto (toivotaan hyödyntävän joitain valmiita ohjelmistoja, joiden odotetaan julistettavan vapaaksi). On muita tehtäviä, mukaan lukien etäkäyttöjärjestelmän ytimen vianetsintäohjelman kehittäminen.

3.3. Ilmaisen Unix-ympäristön kehittäminen

Jotkut apuohjelmat on otettava käyttöön (sdiff, mailx, join jne.). On tarpeen kehittää useita kirjastoja. Tehtäviin kuuluu käyttäjäystävällisen pääteliittymän kehittäminen.

3.4. Laajennukset olemassa olevaan GNU-ohjelmistoon

Periaatteessa Emacs, GCC ja GDB tarvitsevat työtä.

Mitä tulee Emacsiin, tarvitaan kaksi parannusaluetta: Emacsin laajentaminen, jotta sitä voidaan käyttää julkaisujärjestelmänä, ja Emacsin kansainvälistäminen täysin niin, että mitä tahansa kansallista komentosarjaa voidaan käyttää.

GCC on viimeisteltävä kertyneiden kommenttien korjaamiseksi ja olemassa olevien ehdotusten toteuttamiseksi (kommenttien ja ehdotusten luettelo jaetaan GCC:n kanssa).

GDB:tä on parannettava C-tulkin lisäämiseksi debuggeriin; joitain säätöjä tarvitaan myös, jotta GDB:tä voidaan käyttää muilla kielillä kuin C:llä kirjoitettujen ohjelmien virheenkorjauksessa.

3.5. Uudet kääntäjät

Vaaditaan kääntäjien käyttöönotto useille ohjelmointikielille (Algol, Algol-68, PL/1, Ada jne.), joissa on pääsy GCC-koodigeneraattoriin. (Tällainen työ on jo käynnissä Fortranille, Pascalille ja Modula-2:lle.)

3.5. Paljon muita projekteja

GNU Projectin nykyinen välittömien tehtävien lista sisältää laajan valikoiman muita töitä. Mainittakoon halu saada ilmaisia ​​analogeja Page Maker-, Ventura Publisher-, dbase2- tai dbase3-järjestelmille jne. Vaatii useita X-Windows-ohjelmia. Jne. jne.

4. Kuinka saada lisätietoja ja/tai GNU-ohjelmia

Kommunikoidaksesi FSF:n kanssa nykypäivän kotiympäristössä on parasta käyttää sähköpostia. FSF:n yhteyshenkilö ihmisille, jotka haluavat liittyä GNU-projektiin, on Walter Poxon. Hänen sähköpostiosoitteensa: Voit myös saada tietoa GNU-ohjelmistolla varustettujen nauhojen vastaanottamisen säännöistä FSF:ltä. Valitettavasti tämä luonnollinen polku ei ole kovin sopiva nykyiseen neuvostotodellisuuteen (nauhojen maksu, vaikkakin symbolinen, on edelleen kovaa valuuttaa).

Itse asiassa maassamme on kaikki nämä nauhat. Jokainen niiden haltija on FSF-pelin sääntöjen mukaisesti velvollinen helpottamaan niiden jakelua edelleen. Valitettavasti tämä on melko paljon teknistä työtä. Neuvostoliiton UNIX-käyttäjien yhdistys (SUG) aikoo ottaa haltuunsa heti, kun tekniset olosuhteet sen sallivat, ilmaisten ohjelmistojen ilmaisen jakelun jäsenilleen ja nauhojen maksullisen kopioinnin kaikille (tämä on tulevien kuukausien asia). Kaikki SUUG-jäsenet saavat asiaankuuluvat tiedot, ajankohtaiset tiedot osoitteesta sähköpostitse tai tavallisesta SUUG-osoitteesta: 125502, Moskova, st. Lavochkina, 19.

Kirjallisuus.

  1. Richard M. Stallman. GNU manifesti.
  2. GNU General Public License // Free Software Foundation, 1989.
  3. GNU's Bulletin // Free Software Foundation, 1991.
  4. GNU Task List (säännöllisin väliajoin päivitettävä tiedosto saatavilla sähköpostitse; me perustuimme 24. heinäkuuta 1991 julkaistuun versioon)