Brevi informazioni sul progetto Gnu. Cosa sono GNU e GPL? UNIX forniti dai produttori di computer

Originariamente pubblicato nel libro Fonti aperte. Richard Stallman lo era, ma ha contribuito con questo articolo in modo che le idee del movimento del software libero non fossero del tutto assenti da quel libro.

La prima comunità di condivisione di software

Quando ho iniziato a lavorare presso l’Artificial Intelligence Lab del MIT nel 1971, sono entrato a far parte di una comunità di condivisione di software che esisteva da molti anni. La condivisione del software non era limitata alla nostra particolare comunità; è vecchia quanto i computer, così come la condivisione di ricette è vecchia quanto la cucina. Ma lo abbiamo fatto più di molti altri.

Il laboratorio di intelligenza artificiale utilizzava un sistema operativo di timesharing chiamato ITS (the Independent Timesharing System) che gli hacker dello staff del laboratorio (1) avevano progettato e scritto in linguaggio assembler per il Digital PDP -10, uno dei grandi computer dell'epoca In qualità di membro di questa comunità, hacker di sistema dello staff di AI Lab, il mio compito era migliorare questo sistema.

Non chiamavamo il nostro software “software libero”, perché quel termine non esisteva ancora; ma questo è quello che era. Ogni volta che persone di un'altra università o di un'azienda volevano trasferire e utilizzare un programma, noi glielo permettevamo volentieri. Se vedevi qualcuno usare un programma sconosciuto e interessante, potresti sempre chiedere di vedere il codice sorgente, in modo da poterlo leggere, modificare o cannibalizzare parti di esso per creare un nuovo programma.

(1) L'uso del termine "hacker" per indicare "violatore della sicurezza" crea confusione da parte dei mass media. Noi hacker ci rifiutiamo di riconoscere questo significato e continuiamo a usare la parola per indicare qualcuno che ama programmare, qualcuno a cui piace l'intelligenza giocosa o la combinazione dei due. Vedi il mio articolo, Sull'hacking.

Il collasso della comunità

La situazione cambiò drasticamente all'inizio degli anni '80 quando la Digital interruppe la produzione della serie PDP-10. La sua architettura, elegante e potente negli anni '60, non poteva estendersi naturalmente agli spazi di indirizzamento più ampi che diventavano realizzabili negli anni '80. Ciò significava che quasi tutti i programmi che componevano ITS erano obsoleti.

La comunità hacker di AI Lab era già crollata, non molto tempo prima. Nel 1981 la società derivata Symbolics aveva assunto quasi tutti gli hacker dell’AI Lab e la comunità spopolata non era più in grado di mantenersi. (Il libro Hackers, di Steve Levy, descrive questi eventi, oltre a fornire un quadro chiaro di questa comunità nel suo periodo migliore.) Quando l'AI Lab acquistò un nuovo PDP-10 nel 1982, i suoi amministratori decisero di utilizzare Digital" s sistema di time sharing non libero invece di ITS.

I moderni computer dell'epoca, come il VAX o il 68020, avevano i propri sistemi operativi, ma nessuno di essi era software libero: bisognava firmare un accordo di non divulgazione anche per ottenerne una copia eseguibile.

Ciò significava che il primo passo nell’usare un computer era promettere di non aiutare il tuo vicino. Una comunità cooperante era vietata. La regola stabilita dai proprietari di software proprietario era: “Se condividi con il tuo vicino, sei un pirata. Se vuoi qualche cambiamento, pregaci di apportarlo”.

L’idea che il sistema sociale del software proprietario – il sistema che dice che non è consentito condividere o modificare il software – sia antisociale, non etico, semplicemente sbagliato, potrebbe sorprendere alcuni lettori. Ma cos’altro potremmo dire di un sistema basato sulla divisione del pubblico e sull’impotenza degli utenti? I lettori che trovano l'idea sorprendente potrebbero aver dato per scontato il sistema sociale del software proprietario o averlo giudicato secondo i termini suggeriti dalle aziende produttrici di software proprietario. Gli editori di software hanno lavorato a lungo e duramente per convincere la gente che esiste un solo modo di affrontare la questione.

Quando gli editori di software parlano di “far rispettare” i loro “diritti” o di “fermare la pirateria”, ciò che in realtà fanno Direè secondario. Il vero messaggio di queste affermazioni sta nei presupposti non dichiarati che danno per scontati, che il pubblico è invitato ad accettare senza esaminarli. Andiamo quindi ad esaminarli.

Un presupposto è che le società di software abbiano un diritto naturale indiscutibile a possedere il software e quindi ad avere potere su tutti i suoi utenti. (Se questo fosse un diritto naturale, non importa quanto danno arrechi al pubblico, non potremmo obiettare.) È interessante notare che la Costituzione e la tradizione giuridica degli Stati Uniti rifiutano questa visione; il copyright non è un diritto naturale, ma un monopolio artificiale imposto dal governo che limita il diritto naturale di copia degli utenti.

Un altro presupposto non dichiarato è che l’unica cosa importante del software è quali lavori ti consente di svolgere: a noi utenti di computer non dovrebbe interessare il tipo di società che ci è consentito avere.

Un terzo presupposto è che non avremmo software utilizzabile (o non avremmo mai un programma per svolgere questo o quel particolare lavoro) se non offrissimo a un’azienda il potere sugli utenti del programma. Questo presupposto poteva sembrare plausibile, prima che il movimento del software libero dimostrasse che possiamo creare un sacco di software utile senza metterci catene.

Se rifiutiamo di accettare questi presupposti e giudichiamo questi problemi sulla base della moralità ordinaria del buon senso, ponendo gli utenti al primo posto, arriviamo a conclusioni molto diverse. Gli utenti di computer dovrebbero essere liberi di modificare i programmi per adattarli alle loro esigenze e liberi di condividere il software, perché aiutare gli altri è la base della società.

Una dura scelta morale

Senza la mia comunità, continuare come prima era impossibile. Invece, ho dovuto affrontare una dura scelta morale.

La scelta più semplice è stata quella di entrare nel mondo del software proprietario, firmando accordi di non divulgazione e promettendo di non aiutare i miei colleghi hacker. Molto probabilmente avrei anche sviluppato software rilasciato sotto accordi di non divulgazione, aumentando così la pressione su altre persone affinché tradissero anche i loro simili.

Avrei potuto guadagnare soldi in questo modo e forse divertirmi a scrivere codice. Ma sapevo che alla fine della mia carriera, avrei ripensato agli anni trascorsi a costruire muri per dividere le persone, e avrei avuto la sensazione di aver passato la vita a rendere il mondo un posto peggiore.

Avevo già sperimentato di essere il destinatario di un accordo di non divulgazione, quando qualcuno si rifiutò di fornire a me e al MIT AI Lab il codice sorgente del programma di controllo della nostra stampante. (La mancanza di alcune funzionalità in questo programma che utilizza la stampante è estremamente frustrante.) Quindi non potevo dirmi che gli accordi di non divulgazione fossero innocenti. Ero molto arrabbiato quando si è rifiutato di condividere con noi; Non potevo voltarmi e fare la stessa cosa a tutti gli altri.

Un'altra scelta, semplice ma spiacevole, è stata quella di abbandonare il campo dell'informatica. In questo modo le mie capacità non verrebbero abusate, ma sarebbero comunque sprecate. Non sarei colpevole di dividere e limitare gli utenti di computer, ma ciò accadrebbe comunque.

Quindi ho cercato un modo in cui un programmatore potesse fare qualcosa per il bene. Mi sono chiesto: c'è un programma o dei programmi che potrei scrivere per rendere nuovamente possibile una comunità?

La risposta era chiara: occorreva innanzitutto un sistema operativo. Questo è il software fondamentale per iniziare a utilizzare un computer. Con un sistema operativo puoi fare molte cose; senza uno, non è possibile eseguire affatto il computer. Con un sistema operativo libero, potremmo nuovamente avere una comunità di hacker cooperanti e invitare chiunque a unirsi. E chiunque potrebbe usare un computer senza cominciare a cospirare per privare i propri amici.

Come sviluppatore di sistemi operativi, avevo le competenze giuste per questo lavoro. Quindi, anche se non potevo dare per scontato il successo, mi sono reso conto di essere stato eletto per svolgere questo lavoro. Ho scelto di rendere il sistema compatibile con Unix in modo che fosse portabile e in modo che gli utenti Unix potessero facilmente passare ad esso. Il nome GNU è stato scelto, seguendo una tradizione hacker, come acronimo ricorsivo per "GNU"s Not Unix". Si pronuncia come una sillaba con la g dura.

Un sistema operativo non significa solo un kernel, appena sufficiente per eseguire altri programmi. Negli anni '70, ogni sistema operativo degno di questo nome includeva processori di comandi, assemblatori, compilatori, interpreti, debugger, editor di testo, mailer e molto altro. ITS li aveva, Multics li aveva, VMS li aveva e Unix li aveva. Anche il sistema operativo GNU li includerebbe.

Più tardi sentii queste parole, attribuite a Hillel (1):

Se non sono per me stesso, chi sarà per me?
Se sono solo per me stesso, cosa sono?
Se non ora quando?

La decisione di avviare il progetto GNU si basava su uno spirito simile.

(1) Essendo ateo, non seguo nessun leader religioso, ma a volte mi trovo ad ammirare qualcosa che ha detto uno di loro.

Libero come in libertà

Il termine “software libero” a volte viene frainteso: non ha nulla a che fare con il prezzo. Si tratta di libertà. Ecco, quindi, la definizione di software libero.

Un programma è software gratuito per te, un particolare utente, se:

  • Hai la libertà di eseguire il programma come desideri, per qualsiasi scopo.
  • Hai la libertà di modificare il programma in base alle tue esigenze. (Per rendere effettiva questa libertà nella pratica, è necessario avere accesso al codice sorgente, poiché apportare modifiche a un programma senza avere il codice sorgente è estremamente difficile.)
  • Hai la libertà di ridistribuire le copie, gratuitamente o a pagamento.
  • Hai la libertà di distribuire versioni modificate del programma, in modo che la comunità possa beneficiare dei tuoi miglioramenti.

Dato che “libero” si riferisce alla libertà, non al prezzo, non c’è contraddizione tra la vendita di copie e il software libero. In effetti, la libertà di vendere copie è cruciale: le raccolte di software libero vendute su CD-ROM sono importanti per la comunità, e venderle è un modo importante per raccogliere fondi per lo sviluppo di software libero. Pertanto, un programma che le persone non sono libere di includere in queste raccolte non è un software libero.

A causa dell’ambiguità del termine “libero”, le persone hanno cercato a lungo alternative, ma nessuno è riuscito a trovare un termine migliore. La lingua inglese ha più parole e sfumature di qualsiasi altra, ma manca una parola semplice e inequivocabile che significhi “libero”, come nella libertà – “senza vincoli” è la parola che si avvicina di più al significato. Alternative come “liberato”, “libertà” e “aperto” hanno o il significato sbagliato o qualche altro svantaggio.

Software GNU e sistema GNU

Lo sviluppo di un intero sistema è un progetto molto vasto. Per renderlo accessibile, ho deciso di adattare e utilizzare software libero esistente ovunque ciò fosse possibile. Ad esempio, ho deciso fin dall'inizio di utilizzare TeX come principale formattatore di testo; qualche anno dopo, decisi di utilizzare il sistema X Window invece di scrivere un altro sistema a finestre per GNU.

A causa di queste decisioni, e di altre simili, il sistema GNU non è la stessa raccolta di tutto il software GNU. Il sistema GNU comprende programmi che non sono software GNU, programmi che sono stati sviluppati da altre persone e progetti per i propri scopi, ma che possiamo utilizzare perché sono software libero.

Comunicare il progetto

Nel gennaio 1984 lasciai il lavoro al MIT e cominciai a scrivere software GNU. Lasciare il MIT era necessario affinché il MIT non potesse interferire con la distribuzione di GNU come software libero. Se fossi rimasto nello staff, il MIT avrebbe potuto rivendicare la proprietà del lavoro e avrebbe potuto imporre i propri termini di distribuzione o addirittura trasformare il lavoro in un pacchetto software proprietario. Non avevo intenzione di fare una grande quantità di lavoro solo per vederlo diventare inutile per lo scopo previsto: creare una nuova comunità di condivisione di software.

Tuttavia, il professor Winston, allora capo del laboratorio di intelligenza artificiale del MIT, mi invitò gentilmente a continuare a utilizzare le strutture del laboratorio.

I primi passi

Poco prima di iniziare il progetto GNU, ho sentito parlare del Free University Compiler Kit, noto anche come VUCK. (La parola olandese per “gratuito” si scrive con la a v.) Questo era un compilatore progettato per gestire più linguaggi, inclusi C e Pascal, e per supportare più macchine di destinazione. Ho scritto al suo autore chiedendo se GNU potesse usarlo.

Lui rispose in modo derisorio, affermando che l'università era gratuita ma il compilatore no. Decisi quindi che il mio primo programma per il progetto GNU sarebbe stato un compilatore multilinguaggio e multipiattaforma.

Sperando di evitare la necessità di scrivere da solo l'intero compilatore, ho ottenuto il codice sorgente per il compilatore Pastel, che era un compilatore multipiattaforma sviluppato presso Lawrence Livermore Lab. È supportato ed è stato scritto in una versione estesa di Pascal, progettata per essere un linguaggio di programmazione di sistema. Ho aggiunto un front-end C e ho iniziato a trasferirlo sul computer Motorola 68000. Ma ho dovuto rinunciarci quando ho scoperto che il compilatore aveva bisogno di molti megabyte di spazio nello stack e che il sistema Unix 68000 disponibile consentiva solo 64k.

Mi sono poi reso conto che il compilatore Pastel funzionava analizzando l'intero file di input in un albero di sintassi, convertendo l'intero albero di sintassi in una catena di "istruzioni" e quindi generando l'intero file di output, senza mai liberare spazio di archiviazione. A questo punto ho concluso che avrei dovuto scrivere un nuovo compilatore da zero. Quel nuovo compilatore è ora conosciuto come GCC; non viene utilizzato alcun compilatore Pastel, ma sono riuscito ad adattare e utilizzare il front-end C che avevo scritto. Ma ciò avvenne alcuni anni dopo; innanzitutto ho lavorato su GNU Emacs.

GNU Emacs

Ho iniziato a lavorare su GNU Emacs nel settembre 1984 e all'inizio del 1985 cominciava a essere utilizzabile. Ciò mi ha permesso di iniziare a utilizzare i sistemi Unix per eseguire l'editing; non avendo alcun interesse a imparare a usare vi o ed, fino ad allora avevo eseguito le modifiche su altri tipi di macchine.

A questo punto la gente cominciò a voler usare GNU Emacs, il che sollevò la questione di come distribuirlo. Naturalmente l'ho messo sul server ftp anonimo del computer del MIT che ho usato. (Questo computer, prep.ai.mit.edu, divenne così il principale sito di distribuzione ftp GNU; quando fu dismesso qualche anno dopo, trasferimmo il nome al nostro nuovo server ftp.) Ma a quel tempo, molti degli interessati le persone non erano su Internet e non potevano ottenerne una copia tramite ftp. Quindi la domanda era: cosa avrei detto loro?

Avrei potuto dire: "Trova un amico che è in rete e che ti farà una copia". Oppure avrei potuto fare quello che ho fatto con l’Emacs PDP-10 originale: dire loro: “Speditemi un nastro e un SASE e lo rispedirò con Emacs sopra”. Ma non avevo lavoro e cercavo modi per guadagnare soldi con il software libero. Così ho annunciato che avrei spedito un nastro a chiunque ne avesse voluto uno, per un compenso di 150 dollari. Ho avviato così un'attività di distribuzione di software libero, precursore delle aziende che oggi distribuiscono intere distribuzioni di sistemi GNU/Linux.

Un programma è gratuito per ogni utente?

Se un programma è software libero quando lascia le mani del suo autore, ciò non significa necessariamente che sarà software libero per chiunque ne abbia una copia. Ad esempio, il software di pubblico dominio (software non protetto da copyright) è software libero; ma chiunque può crearne una versione modificata proprietaria. Allo stesso modo, molti programmi gratuiti sono protetti da copyright ma distribuiti sotto semplici licenze permissive che consentono versioni modificate proprietarie.

L'esempio paradigmatico di questo problema è il sistema X Window. Sviluppato al MIT e rilasciato come software libero con una licenza permissiva, fu presto adottato da varie società informatiche. Hanno aggiunto X ai loro sistemi Unix proprietari, solo in forma binaria, e coperti dallo stesso accordo di non divulgazione. Queste copie di X non erano software libero più di quanto lo fosse Unix.

Gli sviluppatori del sistema X Window non lo consideravano un problema: si aspettavano e intendevano che ciò accadesse. Il loro obiettivo non era la libertà, ma solo il “successo”, definito come “avere molti utenti”. A loro non importava se questi utenti avessero libertà, ma solo che dovessero essere numerosi.

Ciò ha portato a una situazione paradossale in cui due diversi modi di contare la quantità di libertà hanno dato risposte diverse alla domanda: “Questo programma è gratuito?” Se giudicassi in base alla libertà fornita dai termini di distribuzione della versione del MIT, diresti che X era software libero. Ma se misurassi la libertà dell'utente medio di X, dovresti dire che si tratta di software proprietario. La maggior parte degli utenti X utilizzavano le versioni proprietarie fornite con i sistemi Unix, non la versione gratuita.

Copyleft e la GNU GPL

L'obiettivo di GNU era dare libertà agli utenti, non solo essere popolari. Quindi dovevamo usare termini di distribuzione che impedissero che il software GNU venisse trasformato in software proprietario. Il metodo che utilizziamo si chiama “copyleft”.(1)

Il copyleft utilizza la legge sul copyright, ma la capovolge per servire l'opposto del suo scopo abituale: invece di un mezzo per limitare un programma, diventa un mezzo per mantenerlo libero.

L'idea centrale del copyleft è che diamo a tutti il ​​permesso di eseguire il programma, copiare il programma, modificare il programma e distribuire versioni modificate, ma non il permesso di aggiungere restrizioni proprie. Pertanto, le libertà cruciali che definiscono il “software libero” sono garantite a chiunque ne abbia una copia; diventano diritti inalienabili.

Per un copyleft efficace, anche le versioni modificate devono essere libere. Ciò garantisce che il lavoro basato sul nostro diventi disponibile per la nostra comunità se viene pubblicato. Quando i programmatori che lavorano come programmatori si offrono volontari per migliorare il software GNU, è il copyleft che impedisce ai loro datori di lavoro di dire: "Non puoi condividere quei cambiamenti, perché li useremo per realizzare la nostra versione proprietaria del programma".

Il requisito che le modifiche siano libere è essenziale se vogliamo garantire la libertà a ogni utente del programma. Le aziende che hanno privatizzato il sistema X Window solitamente apportavano alcune modifiche per portarlo sui propri sistemi e hardware. Questi cambiamenti erano piccoli rispetto alla grande estensione di X, ma non erano banali. Se apportare modifiche fosse una scusa per negare la libertà agli utenti, sarebbe facile per chiunque approfittare di questa scusa.

Una questione correlata riguarda la combinazione di un programma libero con codice non libero. Una tale combinazione sarebbe inevitabilmente non libera; qualunque libertà manchi alla parte non libera mancherebbe anche al tutto. Per consentire tali combinazioni si aprirebbe un buco abbastanza grande da affondare una nave. Pertanto, un requisito cruciale per il copyleft è quello di colmare questo buco: qualsiasi cosa aggiunta o combinata con un programma copyleft deve essere tale che anche la versione combinata più grande sia gratuita e con copyleft.

L'implementazione specifica del copyleft che utilizziamo per la maggior parte del software GNU è la GNU General Public License, o GNU GPL in breve. Abbiamo altri tipi di copyleft che vengono utilizzati in circostanze specifiche. Anche i manuali GNU hanno il copyleft, ma usano un tipo di copyleft molto più semplice, perché la complessità della GNU GPL non è necessaria per i manuali.(2)

(1) Nel 1984 o 1985, Don Hopkins (un tipo molto fantasioso) mi inviò una lettera. Sulla busta aveva scritto diverse frasi divertenti, inclusa questa: “Copyleft – tutti i diritti invertiti”. Ho usato la parola “copyleft” per nominare il concetto di distribuzione che stavo sviluppando in quel momento.

I dipendenti della Free Software Foundation hanno scritto e mantenuto numerosi pacchetti software GNU. Due degni di nota sono la libreria C e la shell. La libreria GNU C è ciò che ogni programma in esecuzione su un sistema GNU/Linux utilizza per comunicare con Linux. È stato sviluppato da un membro dello staff della Free Software Foundation, Roland McGrath. La shell utilizzata sulla maggior parte dei sistemi GNU/Linux è BASH, la Bourne Again Shell(1), sviluppata dal dipendente della FSF Brian Fox.

Abbiamo finanziato lo sviluppo di questi programmi perché il progetto GNU non riguardava solo strumenti o un ambiente di sviluppo. Il nostro obiettivo era un sistema operativo completo e questi programmi erano necessari per raggiungere questo obiettivo.

(1) "Bourne Again Shell" è un gioco di parole con il nome "Bourne Shell", che era la solita shell su Unix.

Supporto software gratuito

La filosofia del software libero rifiuta una specifica pratica commerciale diffusa, ma non è contro il business. Quando le aziende rispettano la libertà degli utenti, auguriamo loro il successo.

La vendita di copie di Emacs dimostra un tipo di business del software libero. Quando la FSF rilevò quell'attività, avevo bisogno di un altro modo per guadagnarmi da vivere. L'ho trovato nella vendita di servizi relativi al software libero che avevo sviluppato. Ciò includeva l'insegnamento, per argomenti come come programmare GNU Emacs e come personalizzare GCC, e lo sviluppo di software, principalmente il porting di GCC su nuove piattaforme.

Oggi ciascuno di questi tipi di business del software libero è praticato da un certo numero di aziende. Alcuni distribuiscono raccolte di software libero su CD-ROM; altri vendono supporto a livelli che vanno dalla risposta alle domande degli utenti, alla correzione di bug, all'aggiunta di nuove importanti funzionalità. Stiamo addirittura iniziando a vedere aziende di software libero impegnate nel lancio di nuovi prodotti di software libero.

Attenzione, però: un certo numero di aziende che si associano al termine “open source” in realtà basano la propria attività su software non libero che funziona con software libero. Queste non sono aziende di software libero, sono aziende di software proprietario i cui prodotti tentano gli utenti ad allontanarli dalla libertà. Chiamano questi programmi “pacchetti a valore aggiunto”, il che dimostra i valori che vorrebbero che adottassimo: la comodità al di sopra della libertà. Se diamo più valore alla libertà, dovremmo chiamarli pacchetti “a libertà sottratta”.

Obiettivi tecnici

L'obiettivo principale di GNU è quello di essere software libero. Anche se GNU non avesse alcun vantaggio tecnico rispetto a Unix, avrebbe comunque un vantaggio sociale, consentendo agli utenti di cooperare, e un vantaggio etico, rispettando la libertà dell'utente.

Ma è stato naturale applicare al lavoro gli standard conosciuti di buona pratica, ad esempio allocando dinamicamente le strutture dati per evitare limiti di dimensione fissi arbitrari e gestendo tutti i possibili codici a 8 bit ovunque ciò avesse senso.

Inoltre, abbiamo rifiutato la focalizzazione di Unix sulle piccole dimensioni della memoria, decidendo di non supportare le macchine a 16 bit (era chiaro che le macchine a 32 bit sarebbero state la norma una volta terminato il sistema GNU) e di non fare alcuno sforzo per ridurre l'utilizzo della memoria a meno che non superi un megabyte. Nei programmi per i quali la gestione di file molto grandi non era fondamentale, abbiamo incoraggiato i programmatori a leggere un intero file di input nel core, quindi a scansionarne il contenuto senza doversi preoccupare dell'I/O.

Queste decisioni hanno consentito a molti programmi GNU di superare le loro controparti Unix in termini di affidabilità e velocità.

Computer donati

Man mano che la reputazione del progetto GNU cresceva, le persone iniziarono a offrirsi di donare al progetto macchine con sistema Unix, che si rivelarono molto utili, perché il modo più semplice per sviluppare componenti GNU era farlo su un sistema Unix e sostituire i componenti di quel sistema con uno nuovo. per uno, ma sollevarono una questione etica: se fosse giusto per noi avere una copia di Unix.

Unix era (ed è) software proprietario, e la filosofia del progetto GNU diceva che non dovremmo usare software proprietario. Ma, applicando lo stesso ragionamento che porta alla conclusione che la violenza per legittima difesa è giustificata, ho concluso che era legittimo usare un pacchetto proprietario quando ciò era cruciale per sviluppare un sostituto gratuito che aiutasse gli altri a smettere di usare il pacchetto proprietario.

Ma anche se questo era un male giustificabile, era pur sempre un male. Oggi non abbiamo più copie di Unix, perché le abbiamo sostituite con sistemi operativi liberi. Se non potevamo sostituire il sistema operativo di una macchina con uno libero, sostituivamo invece la macchina.

L'elenco delle attività GNU

Man mano che il progetto GNU procedeva e venivano trovati o sviluppati un numero crescente di componenti del sistema, alla fine divenne utile fare un elenco delle lacune rimanenti. L'abbiamo usato per reclutare sviluppatori per scrivere i pezzi mancanti. Questo elenco divenne noto come Elenco delle attività GNU. Oltre ai componenti Unix mancanti, abbiamo elencato vari altri utili progetti software e di documentazione che, secondo noi, un sistema veramente completo dovrebbe avere.

Oggi (1), quasi nessun componente Unix è rimasto nella Task List GNU: quei lavori sono stati svolti, a parte alcuni non essenziali. Ma l’elenco è pieno di progetti che alcuni potrebbero definire “applicazioni”. Qualsiasi programma che si rivolge a più di una ristretta classe di utenti sarebbe una cosa utile da aggiungere a un sistema operativo.

Anche i giochi sono inclusi nell'elenco delle attività, e lo sono fin dall'inizio. Unix includeva giochi, quindi naturalmente anche GNU dovrebbe farlo. Ma la compatibilità non era un problema per i giochi, quindi non abbiamo seguito l'elenco dei giochi disponibili in Unix. Invece, abbiamo elencato una gamma di diversi tipi di giochi che potrebbero piacere agli utenti.

(1) Questo è stato scritto nel 1998. Nel 2009 non manteniamo più un lungo elenco di compiti. La comunità sviluppa software libero così velocemente che non riusciamo nemmeno a tenerne traccia. Abbiamo invece un elenco di progetti ad alta priorità, un elenco molto più breve di progetti che vogliamo davvero incoraggiare le persone a scrivere.

La licenza GPL della libreria GNU

La libreria GNU C utilizza un tipo speciale di copyleft chiamato GNU Library General Public License(1), che dà il permesso di collegare software proprietario alla libreria. Perché fare questa eccezione?

Non è una questione di principio; non esiste alcun principio che dica che i prodotti software proprietari abbiano il diritto di includere il nostro codice. (Perché contribuire ad un progetto basato sul rifiuto di condividere con noi?) Usare la LGPL per la libreria C, o per qualsiasi libreria, è una questione di strategia.

La libreria C svolge un lavoro generico; ogni sistema o compilatore proprietario viene fornito con una libreria C. Pertanto, rendere la nostra libreria C disponibile solo al software libero non avrebbe dato alcun vantaggio al software libero: avrebbe solo scoraggiato l’uso della nostra libreria.

Un sistema fa eccezione: sul sistema GNU (e questo include GNU/Linux), la libreria GNU C è l'unica libreria C. Quindi i termini di distribuzione della libreria GNU C determinano se è possibile compilare un programma proprietario per il sistema GNU. Non esiste alcuna ragione etica per consentire applicazioni proprietarie sul sistema GNU, ma strategicamente sembra che vietarle farebbe di più per scoraggiare l'uso del sistema GNU che per incoraggiare lo sviluppo di applicazioni libere. Ecco perché usare la Library GPL è una buona strategia per la libreria C.

Per le altre biblioteche, la decisione strategica deve essere considerata caso per caso. Quando una libreria svolge un lavoro speciale che può aiutare a scrivere determinati tipi di programmi, rilasciarla sotto GPL, limitandola ai soli programmi liberi, è un modo per aiutare altri sviluppatori di software libero, dando loro un vantaggio rispetto al software proprietario.

Considera GNU Readline, una libreria sviluppata per fornire la modifica della riga di comando per BASH. Readline è rilasciato sotto la normale GNU GPL, non sotto la Library GPL. Questo probabilmente riduce la quantità di utilizzo di Readline, ma questa non è una perdita per noi. Nel frattempo, almeno un'applicazione utile è stata resa software libero appositamente per poter utilizzare Readline, e questo è un vero vantaggio per la comunità.

Gli sviluppatori di software proprietario hanno i vantaggi offerti dal denaro; gli sviluppatori di software libero devono trarre vantaggi reciproci. Spero che un giorno avremo una vasta raccolta di librerie coperte da GPL che non hanno alcun parallelo disponibile con il software proprietario, fornendo moduli utili da utilizzare come elementi costitutivi del nuovo software libero e aggiungendo un grande vantaggio per l'ulteriore sviluppo di software libero.

(1) Questa licenza è ora chiamata GNU Lesser General Public License, per evitare di dare l'idea che tutte le biblioteche dovrebbero usarla. Vedi Perché non dovresti usare la Lesser GPL per la tua prossima libreria per maggiori informazioni.

Grattarsi un prurito?

Eric Raymond afferma che "Ogni buon lavoro di software inizia grattandosi il prurito personale di uno sviluppatore". Forse a volte succede, ma molte parti essenziali del software GNU sono state sviluppate per avere un sistema operativo completamente libero e nascono da una visione e da un piano, non da un impulso.

Ad esempio, abbiamo sviluppato la libreria GNU C perché un sistema simile a Unix ha bisogno di una libreria C, BASH perché un sistema simile a Unix ha bisogno di una shell e GNU tar perché un sistema simile a Unix ha bisogno di un programma tar. Lo stesso vale per i miei programmi: il compilatore GNU C, GNU Emacs, GDB e GNU Make.

Alcuni programmi GNU sono stati sviluppati per far fronte a minacce specifiche alla nostra libertà. Per questo motivo abbiamo sviluppato gzip per sostituire il programma Compress, che la comunità aveva perso a causa dei brevetti LZW. Abbiamo trovato persone per sviluppare LessTif e, più recentemente, abbiamo avviato GNOME e Harmony, per risolvere i problemi causati da alcune librerie proprietarie (vedi sotto). Stiamo sviluppando GNU Privacy Guard per sostituire il popolare software di crittografia non libero, perché gli utenti non dovrebbero essere costretti a scegliere tra privacy e libertà.

Naturalmente, le persone che scrivevano questi programmi si interessarono al lavoro e molte funzionalità furono aggiunte loro da varie persone per il bene dei propri bisogni e interessi. Ma non è per questo che esistono i programmi.

Sviluppi inattesi

All'inizio del progetto GNU, immaginavo che avremmo sviluppato l'intero sistema GNU, per poi rilasciarlo nella sua interezza. Non è così che è successo.

Poiché ogni componente del sistema GNU è stato implementato su un sistema Unix, ogni componente poteva essere eseguito su sistemi Unix molto prima che esistesse un sistema GNU completo. Alcuni di questi programmi divennero popolari e gli utenti iniziarono ad estenderli e a trasferirli su varie versioni incompatibili di Unix e talvolta anche su altri sistemi.

Il processo rese questi programmi molto più potenti e attirò sia fondi che contributori al progetto GNU. Ma probabilmente ha anche ritardato di diversi anni il completamento di un sistema funzionante minimo, poiché il tempo degli sviluppatori GNU è stato dedicato alla manutenzione di queste porte e all'aggiunta di funzionalità ai componenti esistenti, invece di passare alla scrittura di un componente mancante dopo l'altro.

Il GNU Hurd

Nel 1990 il sistema GNU era quasi completo; l'unico componente importante mancante era il kernel. Avevamo deciso di implementare il nostro kernel come una raccolta di processi server eseguiti su Mach. Mach è un microkernel sviluppato alla Carnegie Mellon University e poi all'Università dello Utah; GNU Hurd è una raccolta di server (cioè un branco di GNU) che girano su Mach e svolgono i vari lavori del kernel Unix. L'inizio dello sviluppo è stato ritardato in attesa che Mach venisse rilasciato come software libero, come era stato promesso.

Uno dei motivi per scegliere questo progetto è stato quello di evitare quella che sembrava essere la parte più difficile del lavoro: eseguire il debug di un programma del kernel senza un debugger a livello sorgente con cui farlo. Questa parte del lavoro era già stata fatta, in Mach, e ci aspettavamo di eseguire il debug dei server Hurd come programmi utente, con GDB. Ma c'è voluto molto tempo per renderlo possibile, e si è rivelato molto difficile eseguire il debug dei server multithread che si scambiano messaggi. Far funzionare in modo solido l'Hurd è durato molti anni.

Alice

Originariamente il kernel GNU non avrebbe dovuto chiamarsi Hurd. Il suo nome originale era Alix, dal nome della donna che all'epoca era la mia dolce metà. Lei, un'amministratore di sistema Unix, aveva sottolineato come il suo nome si sarebbe adattato a uno schema di denominazione comune per le versioni del sistema Unix; per scherzo, disse ai suoi amici: "Qualcuno dovrebbe dare il mio nome a un chicco". Non ho detto nulla, ma ho deciso di farle una sorpresa con un kernel chiamato Alix.

Le cose non sono rimaste così. Michael (ora Thomas) Bushnell, il principale sviluppatore del kernel, preferì il nome Hurd e ridefinì Alix per riferirsi a una certa parte del kernel, la parte che avrebbe intrappolato le chiamate di sistema e le avrebbe gestite inviando messaggi ai server Hurd.

Più tardi, io e Alix ci siamo lasciati e lei ha cambiato nome; indipendentemente, il progetto di Hurd è stato modificato in modo che la libreria C inviasse messaggi direttamente ai server, e questo ha fatto scomparire il componente Alix dal progetto.

Ma prima che accadessero queste cose, una sua amica si è imbattuta nel nome Alix nel codice sorgente di Hurd e glielo ha menzionato. Quindi ha avuto la possibilità di trovare un kernel che porta il suo nome.

Linux e GNU/Linux

GNU Hurd non è adatto all'uso in produzione, e non sappiamo se lo sarà mai. La progettazione basata sulle capacità presenta problemi che derivano direttamente dalla flessibilità del progetto, e non è chiaro se esistano soluzioni.

Fortunatamente è disponibile un altro kernel. Nel 1991 Linus Torvalds sviluppò un kernel compatibile con Unix e lo chiamò Linux. All'inizio era proprietario, ma nel 1992 lo rese software libero; la combinazione di Linux con il sistema GNU non del tutto completo ha prodotto un sistema operativo completamente libero. (Combinarli è stato di per sé un lavoro sostanziale, ovviamente.) È grazie a Linux se oggi possiamo effettivamente eseguire una versione del sistema GNU.

Le sfide del nostro futuro

Abbiamo dimostrato la nostra capacità di sviluppare un ampio spettro di software libero. Ciò non significa che siamo invincibili e inarrestabili. Diverse sfide rendono incerto il futuro del software libero; affrontarli richiederà uno sforzo costante e una perseveranza, che a volte durerà per anni. Richiederà il tipo di determinazione che le persone mostrano quando apprezzano la propria libertà e non permetteranno a nessuno di portargliela via.

Le quattro sezioni seguenti discutono queste sfide.

Hardware segreto

I produttori di hardware tendono sempre più a mantenere segrete le specifiche hardware. Ciò rende difficile scrivere driver liberi in modo che Linux e XFree86 possano supportare il nuovo hardware. Oggi disponiamo di sistemi completamente gratuiti, ma non li avremo domani se non saremo in grado di supportare i computer di domani.

Esistono due modi per affrontare questo problema. I programmatori possono eseguire il reverse engineering per capire come supportare l'hardware. Il resto di noi può scegliere l'hardware supportato dal software libero; man mano che il nostro numero aumenta, la segretezza delle specifiche diventerà una politica controproducente.

Il reverse engineering è un grosso lavoro; avremo programmatori con sufficiente determinazione per intraprenderlo? Sì, se abbiamo sviluppato la forte convinzione che il software libero sia una questione di principio e che i conducenti non liberi siano intollerabili. E molti di noi spenderanno denaro extra, o anche un po' di tempo in più, per poter utilizzare autisti gratuiti? Sì, se la determinazione ad avere la libertà è diffusa.

(Nota del 2008: questo problema si estende anche al BIOS. Esiste un BIOS gratuito, LibreBoot (una distribuzione di coreboot); il problema è ottenere le specifiche per le macchine in modo che LibreBoot possa supportarle senza "blob" non liberi.)

Librerie non libere

Una libreria non libera che gira su sistemi operativi liberi agisce come una trappola per gli sviluppatori di software libero. Le caratteristiche attraenti della libreria sono l'esca; se usi la libreria, cadi nella trappola, perché il tuo programma non può essere utilmente parte di un sistema operativo libero. (A rigor di termini, potremmo includere il tuo programma, ma non lo farà correre con la libreria mancante.) Ancora peggio, se un programma che utilizza la libreria proprietaria diventa popolare, può attirare nella trappola altri programmatori ignari.

Il primo esempio di questo problema è stato il toolkit Motif, negli anni '80. Sebbene non esistessero ancora sistemi operativi liberi, era chiaro quali problemi Motif avrebbe causato loro in seguito. Il progetto GNU ha risposto in due modi: chiedendo ai singoli progetti di software libero di supportare i widget gratuiti di X Toolkit e Motif, e chiedendo a qualcuno di scrivere un sostituto gratuito di Motif. Il lavoro durò molti anni; LessTif, sviluppato da Hungry Programmers, divenne abbastanza potente da supportare la maggior parte delle applicazioni Motif solo nel 1997.

Tra il 1996 e il 1998, un'altra libreria di toolkit GUI non libera, chiamata Qt, è stata utilizzata in una vasta raccolta di software libero, il desktop KDE.

I sistemi GNU/Linux gratuiti non erano in grado di utilizzare KDE perché non potevamo utilizzare la libreria. Tuttavia, alcuni distributori commerciali di sistemi GNU/Linux che non erano rigidi nel restare fedeli al software libero aggiunsero KDE ai loro sistemi, producendo un sistema con più capacità, ma meno libertà. Il gruppo KDE incoraggiava attivamente più programmatori a utilizzare Qt e milioni di nuovi "utenti Linux" non erano mai stati esposti all'idea che ci fosse un problema in questo. La situazione appariva cupa.

La comunità del software libero ha risposto al problema in due modi: GNOME e Harmony.

GNOME, GNU Network Object Model Environment, è il progetto desktop GNU. Iniziato nel 1997 da Miguel de Icaza e sviluppato con il supporto di Red Hat Software, GNOME si proponeva di fornire funzionalità desktop simili, ma utilizzando esclusivamente software libero. presenta anche vantaggi tecnici, come il supporto di una varietà di linguaggi, non solo C++, ma il suo scopo principale era la libertà: non richiedere l'uso di software non libero.

Harmony è una libreria sostitutiva compatibile, progettata per rendere possibile l'esecuzione del software KDE senza utilizzare Qt.

Nel novembre 1998, gli sviluppatori di Qt annunciarono un cambio di licenza che, una volta effettuato, dovrebbe rendere Qt un software libero. Non c'è modo di esserne sicuri, ma penso che ciò sia dovuto in parte alla ferma risposta della comunità al problema che Qt poneva quando non era libero. (La nuova licenza è scomoda e iniqua, quindi resta desiderabile evitare di usare Qt.)

Come risponderemo alla prossima allettante libreria non libera? L’intera comunità capirà la necessità di restare fuori dalla trappola? Oppure molti di noi rinunceranno alla libertà per comodità, creando un grave problema? Il nostro futuro dipende dalla nostra filosofia.

Brevetti software

La minaccia peggiore che affrontiamo proviene dai brevetti software, che possono mettere algoritmi e funzionalità off-limits al software libero per un periodo fino a vent’anni. I brevetti per l'algoritmo di compressione LZW sono stati richiesti nel 1983 e ancora non possiamo rilasciare software libero per produrre GIF compresse adeguate. Nel 1998, un programma gratuito per produrre audio compresso MP3 fu rimosso dalla distribuzione sotto la minaccia di una causa sui brevetti.

Esistono modi per gestire i brevetti: possiamo cercare prove che un brevetto non è valido e possiamo cercare modi alternativi per svolgere un lavoro. Ma ciascuno di questi metodi funziona solo qualche volta; quando entrambi falliscono, un brevetto può costringere tutto il software libero a mancare di alcune funzionalità desiderate dagli utenti. Dopo una lunga attesa, i brevetti scadono (i brevetti MP3 dovrebbero scadere entro il 2018), ma cosa faremo fino ad allora?

Quelli di noi che apprezzano il software libero per amore della libertà rimarranno comunque con il software libero. Riusciremo a portare a termine il lavoro senza le funzionalità brevettate. Ma coloro che apprezzano il software libero perché si aspettano che sia tecnicamente superiore probabilmente lo chiameranno un fallimento quando un brevetto lo frena. Pertanto, anche se è utile parlare dell’efficacia pratica del modello di sviluppo “bazar”, e dell’affidabilità e della potenza di alcuni software liberi, non dobbiamo fermarci qui. libertà e principio.

Documentazione gratuita

La più grande carenza dei nostri sistemi operativi gratuiti non è nel software: è la mancanza di buoni manuali gratuiti che possiamo includere nei nostri sistemi. La documentazione è una parte essenziale di qualsiasi pacchetto software; quando un importante pacchetto software libero non è accompagnato da un buon manuale gratuito, si crea una grave lacuna. Oggi abbiamo molte di queste lacune.

La documentazione libera, come il software libero, è una questione di libertà, non di prezzo. Il criterio per un manuale libero è più o meno lo stesso del software libero: si tratta di dare a tutti gli utenti determinate libertà. La ridistribuzione (compresa la vendita commerciale) deve essere consentita, online e su carta, in modo che il manuale possa accompagnare ogni copia del programma.

Anche il permesso per la modifica è fondamentale. Come regola generale, non credo che sia essenziale che le persone abbiano il permesso di modificare tutti i tipi di articoli e libri. Ad esempio, non penso che tu o io siamo obbligati a dare il permesso per modificare articoli come questo. , che descrivono le nostre azioni e le nostre opinioni.

Ma c'è una ragione particolare per cui la libertà di modifica è cruciale per la documentazione del software libero. Quando le persone esercitano il loro diritto di modificare il software e di aggiungere o modificare le sue funzionalità, se sono coscienziose cambieranno anche il manuale, in modo da poter fornire una documentazione accurata e utilizzabile con il programma modificato. Un manuale non libero, che non consente ai programmatori di essere coscienziosi e portare a termine il lavoro, non soddisfa i bisogni della nostra comunità.

Alcuni tipi di limiti su come vengono apportate le modifiche non rappresentano un problema. Ad esempio, i requisiti per preservare l'avviso di copyright dell'autore originale, i termini di distribuzione o l'elenco degli autori, sono accettabili. Non è nemmeno un problema richiedere che le versioni modificate includano l'avviso che sono state modificate, anche per avere intere sezioni che non possono essere cancellate o modificate, purché queste sezioni trattino argomenti non tecnici. Questo tipo di restrizioni non costituiscono un problema perché non impediscono al programmatore coscienzioso di adattare il manuale al programma modificato. In altre parole, non impediscono alla comunità del software libero di sfruttare appieno il manuale.

Tuttavia, deve essere possibile modificare tutti i file tecnico contenuto del manuale, per poi distribuire il risultato su tutti i mezzi di comunicazione consueti, attraverso tutti i canali consueti; altrimenti le restrizioni ostacolano la comunità, il manuale non è gratuito e abbiamo bisogno di un altro manuale.

Gli sviluppatori di software libero avranno la consapevolezza e la determinazione necessarie per produrre una gamma completa di manuali gratuiti? Ancora una volta, il nostro futuro dipende dalla filosofia.

Dobbiamo parlare di libertà

Oggi si stima che ci siano dieci milioni di utenti di sistemi GNU/Linux come Debian GNU/Linux e Red Hat “Linux”. Il software libero ha sviluppato vantaggi pratici tali che gli utenti lo utilizzano per ragioni puramente pratiche.

Le conseguenze positive di ciò sono evidenti: maggiore interesse nello sviluppo di software libero, più clienti per le aziende di software libero e maggiore capacità di incoraggiare le aziende a sviluppare software libero commerciale invece di prodotti software proprietari.

Ma l'interesse per il software cresce più velocemente della consapevolezza della filosofia su cui si basa, e questo porta a problemi. La nostra capacità di affrontare le sfide e le minacce sopra descritte dipende dalla volontà di difendere con fermezza la libertà. Per assicurarci che la nostra comunità abbia questa volontà, dobbiamo diffondere l'idea ai nuovi utenti man mano che entrano nella comunità.

Ma non riusciamo a farlo: gli sforzi per attirare nuovi utenti nella nostra comunità superano di gran lunga gli sforzi per insegnare loro l’educazione civica della nostra comunità. Dobbiamo fare entrambe le cose e dobbiamo mantenere i due sforzi in equilibrio.

"Fonte aperta"

Insegnare la libertà ai nuovi utenti è diventato più difficile nel 1998, quando una parte della comunità ha deciso di smettere di usare il termine “software libero” e parlare invece di “software open source”.

Alcuni di coloro che erano a favore di questo termine miravano a evitare la confusione tra “gratis” e “gratis”, un obiettivo valido. Altri, tuttavia, miravano a mettere da parte lo spirito di principio che aveva motivato il movimento del software libero e il progetto GNU, e ad appellarsi invece ai dirigenti e agli utenti aziendali, molti dei quali sostengono un’ideologia che pone il profitto al di sopra della libertà, al di sopra della comunità, al di sopra principio Pertanto, la retorica dell’“open source” si concentra sul potenziale di creare software potente e di alta qualità, ma rifugge le idee di libertà, comunità e principio.

Le riviste “Linux” ne sono un chiaro esempio: sono piene di pubblicità di software proprietario che funziona con GNU/Linux. Quando apparirà il prossimo Motif o Qt, queste riviste avvertiranno i programmatori di starne lontani o ne pubblicheranno annunci?

Il sostegno delle imprese può apportare un contributo alla comunità in molti modi; a parità di tutti gli altri, è utile. Ma ottenere il loro sostegno parlando ancor meno di libertà e principi può essere disastroso; ciò peggiora ulteriormente il precedente squilibrio tra sensibilizzazione ed educazione civica.

“Software libero” e “open source” descrivono più o meno la stessa categoria di software, ma dicono cose diverse sul software e sui valori. Il Progetto GNU continua a usare il termine “software libero”, per esprimere l’idea che la libertà, non solo la tecnologia, è importante.

Tentativo!

L'aforisma di Yoda ("Non esiste un "provare") suona bene, ma per me non funziona. Ho svolto la maggior parte del mio lavoro mentre ero ansioso di poterlo fare e non ero sicuro che sarebbe stato sufficiente per raggiungere l'obiettivo se lo avessi fatto. Ma ci ho provato lo stesso, perché tra il nemico e la mia città c'ero solo io. Sorprendendomi, a volte ci sono riuscito.

A volte ho fallito; alcune delle mie città sono cadute. Poi ho trovato un'altra città minacciata e mi sono preparato per un'altra battaglia. Col tempo, ho imparato a cercare le minacce e a mettermi tra loro e la mia città, invitando altri hacker a unirsi a me.

Al giorno d'oggi, spesso non sono l'unico. È un sollievo e una gioia quando vedo un reggimento di hacker che si trincera per mantenere la linea e mi rendo conto che questa città potrebbe sopravvivere, per ora. Ma i pericoli sono ogni volta più grandi. anno, e ora Microsoft ha preso di mira esplicitamente la nostra comunità. Non possiamo dare per scontato il futuro della libertà. Non darlo per scontato! Se vuoi mantenere la tua libertà, devi essere pronto a difenderla.

STANDARD FONDAMENTALI

UNIX forniti dai produttori di computer

Auto sistema operativo "Originale"
Dom 1,2,10, ... SunOS 4.1.2 BSD 4.3
Dom 10,20,1000 SunOS 5.5 SVR4.0
IBMRS/6000 AIX SV3.2
HPApollo 900 HP/UX 10 BSD 4.2 e SV 3.2
Sequenziale Dynix SV4.0
Motorola922 SVR4/88 SVR4.0
Besta-88 Bestix SV3.1
DIC Ultrix BSD 4.2
DEC Alfa AXP OSF/1 BSD 4.3
Grafica in silicio SGCS IRIX 6.0

Scegliendo una piattaforma, otteniamo automaticamente il "proprio" UNIX. Forse, dal punto di vista della comodità e dell'integrità dell'ambiente dell'utente e dell'amministratore, il più piacevole è AIX. E il più comune è Solaris 2.5 (naturalmente).

Fu l'avvento delle implementazioni commerciali di Unix che portò alle cosiddette guerre Unix. Ognuna delle aziende, nel tentativo di raggiungere la superiorità sul mercato, ha incluso nel proprio sistema alcune caratteristiche, modifiche e miglioramenti propri, a volte anche con l'obiettivo diretto di distinguere il proprio sistema dagli altri sul mercato. Le società di sviluppo, nei loro sforzi per ottenere un vantaggio rispetto ai concorrenti, hanno apportato modifiche anche in Interfaccia di programmazione applicazioni(API- Interfaccia del programmatore di applicazioni), - una specifica di un insieme di funzioni che gli sviluppatori di software devono rispettare affinché i loro programmi siano compatibili con il sistema operativo. Ciò ha ulteriormente aumentato l'incompatibilità tra le diverse versioni di Unix e ha portato all'incompatibilità del software sviluppati da diversi fornitori (compresi quelli indipendenti).

Ma una conseguenza molto peggiore delle guerre tra le diverse versioni di Unix fu che pose fine al libero scambio del codice sorgente che aveva così facilitato il rapido miglioramento di Unix nelle prime fasi del suo sviluppo. Non avendo altro modo di trarre profitto dal software se non quello di mantenerlo segreto e avere il controllo completo sullo sviluppo di un prodotto commerciale, AT&T proibì severamente la distribuzione del codice sorgente. La minaccia di azioni legali per la distribuzione illegale di nastri Unix non aveva molta attrattiva. Il flusso di nuove idee provenienti dalle università si è esaurito.

Per superare questo problema, furono fatti diversi tentativi per standardizzare Unix.

Il primo serio sforzo per standardizzare le versioni dell'API (interfaccia di programmazione) sviluppate per System V e Berkeley fu intrapreso nel 1983 da un gruppo di iniziativa chiamato /usr/group. Tuttavia, con l'aumento del numero di versioni del sistema operativo, l'efficacia dello standard diminuì e un anno dopo, nel 1985, fu creato lo standard POSIX (Portable Operating System Interface for Computing Environment).



Nel 1988 è stato sviluppato lo standard POSIX 1003.1-1988, che definisce l'interfaccia di programmazione dell'applicazione. Questo standard è ampiamente utilizzato in molti sistemi operativi, comprese le architetture non UNIX. Due anni dopo, lo standard fu adottato come standard IEEE (Institute of Electrical and Electronic Engineers, ancora esistente) IEEE 1003.1-1990. Lo standard definisce solo un'interfaccia, non un'organizzazione specifica, quindi non fa distinzione tra chiamate di sistema e funzioni di libreria, chiamando semplicemente funzioni tutti gli elementi dell'interfaccia di programmazione.

Tutti gli standard Unix successivi includono POSIX e tutte le versioni successive di Unix aderiscono a questo standard. L'unica aggiunta importante apparsa in seguito nel kernel Unix furono i socket, che provenivano da BSD.

Un'organizzazione senza scopo di lucro, il consorzio X/Open (poi Open Group), creato nel 1984 da alcune aziende europee, si è assunto il compito di sviluppare un insieme comune di interfacce di sistemi operativi, concordato tra diversi produttori, e di creare sistemi veramente aperti per i quali il costo della portabilità delle applicazioni sarebbe minimo.

Nel 1992 apparve un documento noto come X/OpenPortability Guide versione 3 (XPG3), che includeva POSIX 1003.1-1988 e lo standard del sistema grafico X Windows System sviluppato presso il Massachusetts Institute of Technology (USA). Nel 1994: XPG4.2.

Nel 1996, la fusione di X/Open e OSF ha portato alla creazione del consorzio The Open Group, che ha continuato gli sviluppi nel campo dei sistemi aperti, ad esempio, l'ulteriore sviluppo dell'interfaccia utente Common Desktop Environment, interfacce per il calcolo distribuito ambiente Ambiente di calcolo distribuito - DCE, ecc.

(Istituto nazionale americano per gli standard)

Nel 1989, l'American National Standards Institute approvò lo standard X3.159-1989 per il linguaggio di programmazione C. Lo standard definisce la sintassi, la semantica e il contenuto della libreria standard.

GNU è un'associazione di sviluppatori che creano programmi gratuiti di un'ampia varietà di tipi.

GNU è un progetto che ha creato molti programmi gratuiti come parte della sua strategia open source.

Inoltre, questi programmi possono fare qualsiasi cosa, dall'utilizzo dei file all'elaborazione dei testi, e il compilatore gcc (GNU C) è uno dei compilatori UNIX più affidabili ed efficienti. Ciò rende possibile dotare quasi tutti i sistemi operativi simili a UNIX di software libero.

Cos'è GNU/Linux?

Poiché Linux è solo un kernel, tale attrezzatura è indispensabile. Il kernel è responsabile del funzionamento della memoria, dei dischi e dei dispositivi interni, ma, ad esempio, non dispone di un editor di testo. Ma può eseguire altri programmi. Pertanto, integrare il kernel gratuito con una serie di programmi gratuiti sembra molto naturale. Il risultato è un tandem GNU/Linux.

"L'abbreviazione GNU sta per "GNU is not UNIX" (GNU - Not UNIX). L'idea principale dietro lo sviluppo del sistema GNU è la sua completa differenza da UNIX. UNIX è sempre stato e rimane software proprietario, cioè priva i suoi utenti hanno la libertà di collaborare e il controllo sui nostri computer. Per diventare una comunità informatica libera, avevamo bisogno di un sistema operativo libero. Non avevamo abbastanza soldi per acquistare e rendere libero nessuno dei sistemi esistenti, ma noi " Avevamo abbastanza conoscenze e capacità per crearne uno nuovo. La creazione di GNU è stata un'opera monumentale. L'abbiamo fatto in nome della nostra libertà, e anche della vostra."

Nel 1985, R. Stallman scrisse il suo famoso Manifesto GNU (fu pubblicato nel numero di marzo 1985 del Dr. Dobb's Journal) e fondò la Free Software Foundation (FSF), una fondazione di beneficenza per lo sviluppo di software libero. in seguito iniziò a fornire altro software libero (sia all'interno che all'esterno del progetto GNU) e a venderne i manuali, che fornirono fondi per lo sviluppo del progetto GNU. La FSF accettava donazioni, ma la maggior parte delle entrate proveniva sempre dalla vendita di copie del software libero e dei servizi correlati.

Lo sviluppo del software libero è stato un passo molto importante, ma ancora più importante è la creazione della GNU General Public License (GPL). Questo nome è tradotto in russo da diversi autori in modi diversi: Licenza pubblica generale, Licenza pubblica generalizzata, ecc. Ma si crede questo Solo la versione inglese di questa licenza è legalmente vincolante. L'idea di base della GPL è che l'utente deve avere i seguenti quattro diritti (o quattro libertà):

· Il diritto di eseguire un programma per qualsiasi scopo (libertà 0)

· Il diritto di studiare la struttura del programma e adattarla alle proprie esigenze (libertà 1), che implica l'accesso al codice sorgente del programma.

· Il diritto di distribuire il programma, avendo l'opportunità di aiutare gli altri (libertà 2).

· Il diritto di migliorare il programma e pubblicare miglioramenti a beneficio dell'intera comunità (libertà 3), che implica anche l'accesso al codice sorgente del programma.

Il software distribuito sotto questa licenza può essere utilizzato, copiato, modificato, modificato, trasferito o venduto versioni modificate (o non modificate) ad altri in qualsiasi modo, a condizione che il risultato di tale elaborazione sia distribuito anche sotto la licenza GPL. L'ultima condizione è la più importante e decisiva in questa licenza. Garantisce che i risultati degli sforzi degli sviluppatori di software libero rimangano aperti e non diventino parte di alcun prodotto con licenza convenzionale. Distingue inoltre il software libero dal software distribuito gratuitamente. Uno dei requisiti di questa licenza è che quando vendi software con licenza GPL, devi rendere disponibile il codice sorgente di quel software a chiunque desideri accedervi. Secondo le parole dei creatori della FSF, la licenza GPL "rende il software libero e garantisce che rimanga libero".

L'obiettivo principale della GPL è proteggere il software libero dalla "privatizzazione". Ma va notato che è progettato in modo tale da consentire tutti i modi “onesti” di guadagnare con il software libero: questo è un punto molto significativo a cui bisogna prestare particolare attenzione. Quando vieni a conoscenza della GPL per la prima volta, potresti avere l'idea sbagliata che questa licenza generalmente proibisca qualsiasi modo di guadagnare denaro dal software o dal suo sviluppo. Infatti, la GPL in particolare e la FSF in generale incoraggiano direttamente le attività legate alla fornitura di servizi correlati: formazione, consulenza e replica commerciale del software. Ciò ci consente di attrarre alla cooperazione sia le aziende che le persone per le quali gli interessi materiali sono più importanti degli incentivi morali.

Qualsiasi utente che abbia iniziato a comprendere il mondo dei sistemi operativi simili a UNIX e del software libero incontrerà probabilmente le abbreviazioni nel titolo.

GNU sta per "GNU non è UNIX" e si riferisce ad un progetto su larga scala all'interno del quale vengono sviluppate varie librerie di sistema e applicazioni. Tutto ciò che è stato creato all'interno di questo progetto è open source. Ciò significa che chiunque abbia un'adeguata conoscenza di programmazione può utilizzare questo codice come base per i propri sviluppi, avendo il pieno diritto di modificarlo e distribuirlo.

I prodotti software sviluppati nell'ambito del progetto, integrati dal kernel del sistema GNU Hard, hanno costituito la base di un sistema operativo completo, denominato anche con il termine GNU. Ma la sua creazione, iniziata nel 1990, ad oggi non è stata completata. Ma nel 1991 apparve l'idea di Linus Torvalds: il kernel Linux. È qui che il progetto GNU ha svolto un ruolo enorme nello sviluppo di Linux come sistema operativo. Dopotutto, il sistema non è solo il kernel, ma un insieme integrale di software di sistema, comprese librerie, utilità, driver e molto altro. E sono stati gli sviluppi dei partecipanti GNU, utilizzati insieme al kernel Linux, a rivelare al mondo proprio il prodotto che ora compete con successo con Windows e MacOS. E si chiama “GNU/Linux”, e la prima parte viene spesso scartata, il che, in generale, è sbagliato.

Oltre al software, il progetto GNU ha creato la General Public License (GNU GPL), che è diventata la licenza principale nel mondo open source ed è stata ampiamente utilizzata. Regola la distribuzione del software libero ed è estremamente democratico. Si afferma che qualsiasi utente ha il diritto di modificare, distribuire e utilizzare nei propri progetti il ​​codice sorgente delle applicazioni coperte da questa licenza. Allo stesso tempo, anche tutti i programmi sussidiari saranno soggetti alla GPL. Cioè, uno sviluppatore che utilizza open source produce anche open source e la licenza stessa viene quindi ereditata. Questa è una regola obbligatoria, ma ci sono modi per aggirare la GPL e chiudere i propri codici in base a quelli aperti utilizzati.

GNU e la GPL da esso creata hanno avuto un impatto notevole sul settore tecnologico. Il software libero ha attratto un numero enorme di programmatori di talento nel suo settore, costituendo la sua comunità più grande. I prodotti creati con GPL non solo hanno ricevuto un ampio utilizzo pratico, ma, grazie al codice accessibile e di alta qualità, sono diventati un eccellente campo di formazione per milioni di sviluppatori alle prime armi. Il concetto di tale scambio di informazioni e l'alternativa più forte ai tradizionali diritti d'autore, sebbene non ovvio, ha reso possibile lo sviluppo del software e sta attualmente guadagnando slancio.

GNU 3DLDF supporta il disegno 3D con output nel formato MetaPost tramite un linguaggio simile a Metafont. È destinato principalmente a fornire un mezzo per creare contenuto 3D per documenti TeX, ma può anche creare animazioni contenenti testo composto da TeX. (doc)

8sincronizzazione

8sync (pronunciato Eight-sync) è una libreria di programmazione asincrona per GNU Guile. Fa uso di continuazioni delimitate per evitare confusione di callback, risultando in un codice pulito, facile da leggere e non bloccante. (doc)

a2ps

GNU a2ps converte quasi tutto in un file PostScript, pronto per la stampa. Ciò è possibile grazie alla possibilità di delegare file a gestori esterni, come Groff e Gzip. Gestisce tutti i passaggi necessari per produrre un file ben stampato. Include anche alcune capacità extra per casi speciali, come l'output di Pretty-printing --help. (doc)

Acc

GNU acct fornisce agli amministratori di sistema un mezzo per determinare i modelli di utilizzo del sistema. Fornisce informazioni, ad esempio, sulle connessioni, sui programmi eseguiti e sulle risorse di sistema utilizzate. (doc)

Acm

GNU ACM è un simulatore di volo in cui i giocatori possono competere in combattimenti aerei da diversi computer, pilotando aerei a reazione ben equipaggiati simili a un F-16C Falcon o un MiG-29 Fulcrum. (doc)

Adns

GNU adns è una libreria C che fornisce funzionalità di risoluzione DNS di facile utilizzo. La libreria è asincrona e consente più chiamate simultanee. Il pacchetto include anche diverse utilità della riga di comando da utilizzare negli script. (doc)

Vivo

GNU Alive invia ping periodici a un server, generalmente per mantenere attiva una connessione. (doc)

Anubi

Anubis è un demone che si trova tra il Mail User Agent (MUA) e il Mail Transfer Agent (MTA). Quando un messaggio di posta viene inviato da un utente nel MUA, viene prima passato ad Anubis, che esegue un'ulteriore elaborazione sul messaggio prima di trasmetterlo per la consegna da parte dell'MTA. Anubis può, ad esempio, modificare le intestazioni o il corpo del messaggio, oppure crittografare o firmare il messaggio. (doc)

APL

GNU APL è un interprete gratuito per il linguaggio di programmazione APL. Si tratta di un'implementazione dello standard ISO 13751. (doc)

Archimede

Archimedes è un pacchetto gratuito per simulazioni di dispositivi a semiconduttore. È destinato ad assistere gli ingegneri nella progettazione e simulazione di dispositivi a semiconduttore submicronici e mesoscopici basati sul metodo Ensemble Monte Carlo. È in grado di gestire un'ampia varietà di materiali e strutture, descritti tramite semplici script. (doc)

Aris

Aris è un programma per eseguire dimostrazioni logiche. Supporta la logica proposizionale e dei predicati, nonché l'algebra booleana e la logica aritmetica. Oltre alle regole di inferenza ed equivalenza predefinite, Aris supporta anche i riferimenti a dimostrazioni precedenti. L'uso di simboli logici standard e la sua interfaccia di deduzione naturale lo rendono facile da usare per i principianti. (doc)

Artanis

GNU Artanis è un framework per applicazioni web scritto in Guile Scheme. Un framework per applicazioni web (WAF) è un framework software progettato per supportare lo sviluppo di siti Web dinamici, applicazioni Web, servizi Web e risorse Web. Il framework mira ad alleviare il sovraccarico associato alle attività comuni eseguite nello sviluppo web. Artanis fornisce diversi strumenti per lo sviluppo web: accesso al database, framework di modelli, gestione delle sessioni, rimappatura degli URL per RESTful, memorizzazione nella cache delle pagine e altro ancora. (doc)

Un incantesimo

Aspell è un correttore ortografico che può essere utilizzato sia come libreria che come programma autonomo. Le caratteristiche degne di nota di Aspell includono il pieno supporto di documenti scritti nella codifica UTF-8 e la sua capacità di utilizzare più dizionari, compresi quelli personali. (doc)

AUCTeX

AUCTeX è un ambiente integrato per la produzione di documenti TeX in Emacs. Consente di inserire molte macro TeX standard diverse con semplici sequenze di tasti o selezioni di menu. Offre un'interfaccia per programmi esterni, consentendoti di compilare o visualizzare i tuoi documenti dall'interno di Emacs. AUCTeX offre anche la possibilità di inserire anteprime in linea di istruzioni TeX complesse come le formule matematiche. (doc)

Conf. autom

Autoconf offre allo sviluppatore un robusto set di macro M4 che si espandono nel codice shell per testare le funzionalità dei sistemi simili a Unix e per adattare automaticamente il proprio pacchetto software a questi sistemi. Gli script di shell risultanti sono autonomi e portabili, liberando l'utente dalla necessità di sapere qualcosa su Autoconf o M4. (doc)

Archivio autoconf

L'archivio Autoconf è una raccolta di oltre 450 nuove macro per Autoconf, che espande notevolmente il dominio delle sue funzionalità. Queste macro sono state fornite come software gratuito dalla comunità. (doc)

Autogeno

AutoGen è un programma per facilitare la manutenzione di programmi che contengono grandi quantità di testo ripetitivo. Automatizza la costruzione di queste sezioni del codice, semplificando il compito di mantenere sincronizzato il testo. Include anche un pacchetto aggiuntivo chiamato AutoOpts, specializzato per la manutenzione e la documentazione delle opzioni del programma. (doc)

Produzione automatica

Automake è la parte del sistema di compilazione GNU per la produzione di Makefile conformi agli standard. I requisiti di build vengono inseriti in un formato intuitivo e quindi Automake collabora con Autoconf per produrre un Makefile robusto, semplificando l'intero processo per lo sviluppatore. (doc)

Avl

libavl fornisce un'ampia raccolta di alberi di ricerca binari e routine di alberi bilanciati per C. Questi alberi offrono prestazioni almeno O(log n) per operazioni solitamente costose come la ricerca, l'inserimento o l'eliminazione di elementi da una struttura dati. (doc)

Palla e pagaia

Ball and Paddle è un classico gioco arcade in cui usi una pagaia nella parte inferiore dello schermo per far rimbalzare una palla contro i mattoni nella regione superiore, eliminando i mattoni mentre vengono colpiti. Come novità, gli eventi e gli attributi di tutti gli oggetti (mattoni, palla, ecc.) possono essere scritti con GNU Guile. (doc)

Codice a barre

GNU Barcode è uno strumento flessibile per produrre codici a barre stampati da stringhe di testo. Supporta una varietà di standard di codifica e misurazioni di dimensionamento. I codici a barre possono essere emessi nei formati PostScript o Encapsulated PostScript. (doc)

Bash

Bash è la shell, o interprete della riga di comando, del sistema GNU. È compatibile con Bourne Shell, ma integra anche funzionalità utili di Korn Shell e C Shell e nuovi miglioramenti propri. Consente la modifica della riga di comando, una cronologia illimitata dei comandi, funzioni e alias della shell e il controllo dei lavori, pur consentendo l'esecuzione della maggior parte degli script sh senza modifiche. (doc)

Bayona

Bayonne è il server di telefonia del progetto GNU Telephony. Offre un ambiente scalabile per lo sviluppo e l'implementazione di soluzioni di telefonia, con particolare attenzione al SIP. (doc)

Bazar

GNU Bazaar è un sistema di controllo della versione che ti consente di registrare le modifiche ai file di progetto nel tempo. Supporta sia un flusso di lavoro distribuito che il classico flusso di lavoro centralizzato. (doc)

bc è un linguaggio di elaborazione numerica di precisione arbitraria. Include un ambiente interattivo per la valutazione delle affermazioni matematiche. La sua sintassi è simile a quella del C, quindi l'utilizzo di base è familiare. Include anche dc, una calcolatrice con lucidatura inversa. (doc)

B.F.D.

Binutils

GNU Binutils è una raccolta di strumenti per lavorare con file binari. Forse i più notevoli sono ld , un linker, e as , un assemblatore. Altri strumenti includono programmi per visualizzare informazioni sul profilo binario, elencare le stringhe in un file binario e utilità per lavorare con gli archivi. È inclusa anche la libreria bfd per lavorare con formati eseguibili e oggetti. (doc)

Bisonte

GNU Bison è un generatore di parser generico. Può costruire un parser LR deterministico o generalizzato da una grammatica annotata e priva di contesto. È abbastanza versatile da avere molte applicazioni, dai parser per strumenti semplici fino a linguaggi di programmazione complessi. (doc)

Bool

GNU Bool è un'utilità per eseguire ricerche di testo su file utilizzando espressioni booleane. Ad esempio, la ricerca di ciao AND mondo restituirebbe un file contenente la frase Ciao, mondo! . Supporta sia le istruzioni AND che OR, nonché l'istruzione NEAR per cercare l'occorrenza di parole molto vicine tra loro. Gestisce il contesto con garbo, tenendo conto delle nuove righe e delle modifiche ai paragrafi. Ha anche un solido supporto per l'analisi dei file HTML. (doc)

BPEL2oWFN

GNU BPEL2oWFN traduce un servizio web espresso in Web Service Business Process Execution Language (WS-BPEL) in una rete di flussi di lavoro aperta (oWFN). Può inoltre convertire una coreografia BPEL4Chor in un modello Petri Net. Le proprietà delle reti di Petri possono essere analizzate in modo efficiente, grazie all'uso dell'analisi statica per rendere compatti i modelli. Sono disponibili il controllo e l'analisi del flusso di dati, nonché i controlli di base per i deadlock e altre proprietà simili. (doc)

Grafico C

GNU C-Graph è uno strumento per dimostrare la teoria della convoluzione. Pertanto, può rappresentare un eccellente aiuto per gli studenti di teoria dei segnali e dei sistemi nella visualizzazione del processo di convoluzione. Invece di costringere lo studente a scrivere codice, il programma offre un'interfaccia intuitiva con finestre di dialogo interattive per guidarlo. (doc)

ccAudio

GNU ccAudio2 è una classe C++ portatile per lavorare con dati audio da disco. Le classi sono sia endian che consapevoli del contenuto; Invece di trattare l'audio come dati binari, questa libreria lo tratta come una sequenza di campioni. Può anche gestire informazioni sui metadati. ccAudio2 supporta audio sun, campioni grezzi e dati audio codificati RIFF. (doc)

CCd2cue

GNU ccd2cue è un preprocessore per software di masterizzazione di CD che consente la conversione del formato CCD proprietario nel formato CUE, che è ben supportato dal software libero. Questi file vengono comunemente distribuiti con immagini CD e vengono utilizzati per descrivere come sono disposte le tracce sull'immagine. (doc)

Ccide

GNU Ccide è un generatore di codici di tabelle decisionali per il linguaggio C. Ciò aiuta a evitare catene di istruzioni if-else nidificate ingestibili e soggette a errori. Invece, le tabelle decisionali vengono inserite in un formato intuitivo e di facile lettura, che viene poi espanso in codice C portatile. (doc)

ccRTP

GNU ccRTP è un'implementazione di RTP, il protocollo di trasporto in tempo reale dell'IETF. È adatto sia per server ad alta capacità che per applicazioni client personali. È flessibile nella sua progettazione, permettendogli di funzionare come un framework per il framework, piuttosto che essere semplicemente una libreria per la manipolazione dei pacchetti. (doc)

ccScript

GNU ccScript3 è una libreria per aggiungere un sistema di esecuzione di una macchina virtuale da utilizzare con/come linguaggio di scripting o assembler per sistemi guidati da transizioni di stato in tempo reale. (doc)

FlussoC

GNU cflow analizza i file sorgente C e produce un grafico che traccia il flusso di controllo del programma. Può produrre il grafico in diversi stili e nel formato POSIX o in un formato GNU esteso. cflow include anche una modalità principale per Emacs per esaminare i diagrammi di flusso che produce. (doc)

CGICC

GNU cgicc è una libreria C++ conforme ANSI per la scrittura di applicazioni CGI, con supporto per FastCGI. La libreria supporta diverse funzionalità, inclusa la gestione dei dati GET e POST, la gestione di una varietà di tipi di dati dei moduli e la generazione immediata di HTML. (doc)

Scacchi

GNU Chess è un motore di scacchi. Ti consente di competere contro il computer in una partita a scacchi, sia tramite l'interfaccia terminale predefinita che tramite un'interfaccia visiva esterna come GNU XBoard. (doc)

Cim

Cim è il compilatore GNU per Simula, il primo linguaggio di programmazione orientato agli oggetti. (doc)

Percorso di classe

GNU Classpath fornisce librerie essenziali per macchine virtuali Java e compilatori. È compatibile con un'ampia percentuale delle specifiche API del linguaggio e fornisce un'ampia gamma di funzionalità. (doc)

CLISP

GNU CLISP è un'implementazione di ANSI Common Lisp. Common Lisp è un linguaggio di programmazione funzionale di alto livello orientato agli oggetti. CLISP include un interprete, un compilatore, un debugger e molto altro. (doc)

Combina

GNU Combine funziona per unire file in base a una chiave comune in una tabella hash. Può essere visto come simile, anche se molto più potente, all'utilità di join standard. A differenza di join , è possibile unire qualsiasi numero di file in base alle corrispondenze trovate. combine ha anche altre funzionalità avanzate, come l'analisi della data e l'attraversamento delle directory. (doc)

[u]C++ comune

GNU Common C++ è un framework di classi portabile e ottimizzato per applicazioni threaded, che supporta la sincronizzazione simultanea, le comunicazioni tra processi tramite socket e vari metodi per la gestione dei dati, come la serializzazione e l'analisi XML. Include la libreria uCommon C++, una reimplementazione più piccola. (doc)

Complessità

La complessità di GNU fornisce strumenti per trovare procedure contorte, eccessivamente lunghe o altrimenti difficili da comprendere. Ciò può essere utile per apprendere o rivedere codice non familiare o forse per evidenziare il tuo codice che sembrava comprensibile quando lo hai scritto. (doc)

Configurazione

Lo script config.guess tenta di indovinare una tripla di sistema canonico e config.sub convalida e canonicalizza. Questi vengono utilizzati come parte della configurazione in quasi tutti i pacchetti GNU (e molti altri). (doc)

Coreutils

GNU Coreutils include tutti gli strumenti di base della riga di comando previsti in un sistema POSIX. Questi forniscono le funzioni base di manipolazione di file, shell e testo del sistema GNU. La maggior parte di questi strumenti offre funzionalità estese oltre a quelle delineate nello standard POSIX. (doc)

Cpio

GNU cpio copia i file dentro o fuori dagli archivi cpio o tar. In effetti, sono supportati molti formati, inclusi i formati legacy. Il formato viene determinato automaticamente dal programma e viene gestito in modo appropriato. Inoltre, l'ubicazione dell'archivio non è importante. Può essere un altro file sull'unità, un nastro o dati su una pipe. (doc)

Cppi

GNU Cppi elabora i file di codice sorgente C per rientrare correttamente le direttive del preprocessore per riflettere la loro nidificazione. Esegue anche altre standardizzazioni, come la correzione del numero di spazi tra le direttive e il testo che le segue. (doc)

CSSC

GNU CSSC fornisce un sostituto per il sistema di controllo del codice sorgente Unix legacy SCCS. Ciò consente l'accesso al vecchio codice ancora presente in quel sistema e la migrazione su sistemi moderni. (doc)

Cursynth

GNU cursynth è un sintetizzatore polifonico che viene eseguito graficamente nel terminale. È costruito su un motore di sintesi sottrattiva completo. Le note e le modifiche ai parametri possono essere immesse tramite MIDI o tramite la tastiera del computer. (doc)

Dap

GNU Dap è un pacchetto di statistica e grafica. Può leggere programmi scritti per il sistema statistico proprietario SAS. La sua sintassi è simile, ma più semplice, a quella del C, rendendo l'esecuzione della maggior parte delle attività relativamente semplice pur fornendo funzionalità grafiche avanzate. (doc)

Datamash

Eseguire operazioni numeriche, testuali e statistiche di base su file di testo normale. Progettato per funzionare all'interno di pipeline standard senza codice aggiuntivo. (doc)

DDD

GNU DDD, il Data Display Debugger, è un front-end grafico per debugger da riga di comando. Sono supportati molti debugger back-end, in particolare il debugger GNU, GDB. Oltre alle consuete funzionalità di debug come la visualizzazione dei file sorgente, DDD dispone di funzionalità grafiche interattive aggiuntive per facilitare il debug. (doc)

ddrescue

GNU ddrescue è uno strumento di recupero dati completamente automatizzato. Copia i dati da un file all'altro, lavorando per salvare i dati in caso di errori di lettura. Il programma include anche uno strumento per manipolare i file di registro, che vengono utilizzati per recuperare i dati in modo più efficiente leggendo solo i blocchi necessari. (doc)

DejaGnu

DejaGnu è un framework per testare il software. In effetti, funge da front-end per tutti i test scritti per un programma. Pertanto, ogni programma può avere più suite di test, che vengono quindi tutte gestite da un unico cablaggio. (doc)

Denemo

GNU Denemo è un editor di notazioni musicali che fornisce una comoda interfaccia al potente programma di incisione musicale Lilypond. La musica può essere digitata utilizzando la tastiera del computer, riprodotta utilizzando una tastiera MIDI o persino immessa tramite un microfono collegato alla scheda audio. Il prodotto finale è una notazione musicale di qualità di pubblicazione che viene generata continuamente in background mentre lavori. (doc)

Dia

Dico

GNU Dico implementa un server e client dizionario flessibile secondo RFC 2229 (DICT Server). È in grado di accedere a qualsiasi database disponibile, indipendentemente dal formato, grazie alla sua struttura modulare. Nuovi moduli possono essere scritti in C, Guile o Python. Dico include anche un client da riga di comando, che può essere utilizzato per interrogare database di dizionari remoti. (doc)

Dizione

Un pacchetto che fornisce due classici comandi Unix, style e diction. La dizione viene utilizzata per identificare frasi prolisse e comunemente usate in modo improprio in un corpo di testo. Lo stile analizza invece gli aspetti superficiali di un'opera scritta, come la lunghezza della frase e altre misure di leggibilità. (doc)

Diffusori

GNU Diffutils è un pacchetto contenente strumenti per trovare le differenze tra i file. Il comando diff viene utilizzato per mostrare come differiscono due file, mentre cmp mostra gli offset e i numeri di riga in cui differiscono. diff3 ti consente di confrontare tre file. Infine, sdiff offre un mezzo interattivo per unire due file. (doc)

Dioniso

GNU Dionysus è un comodo sistema per recuperare rapidamente i valori delle costanti matematiche utilizzate nella scienza e nell'ingegneria. I valori possono essere ricercati utilizzando un semplice strumento da riga di comando, scegliendo tra tre database: costanti universali, numeri atomici e costanti relative ai semiconduttori. (doc)

Direvente

Un demone che monitora le directory per eventi, come la creazione, l'eliminazione o la modifica di file. Può monitorare diversi set di directory per eventi diversi. Quando viene rilevato un evento, Direvent chiama un programma esterno specificato con informazioni sull'evento, come la posizione all'interno del file system in cui si è verificato. Pertanto, direvent fornisce un modo semplice per reagire immediatamente se determinati file subiscono modifiche, ad esempio per tenere traccia delle modifiche in importanti file di configurazione del sistema. (doc)

Dominio

GNU Dominion è un gioco di simulazione mondiale multigiocatore. In esso, ogni giocatore governa una nazione e deve mantenere la propria nazione nonostante la concorrenza degli altri giocatori. I giocatori devono prendere decisioni politiche, economiche, militari e diplomatiche affinché le loro nazioni sopravvivano. Questo gioco è pensato per essere giocato da giocatori che hanno tutti accesso allo stesso sistema informatico. (doc)

Easejs

easy.js è un classico framework orientato agli oggetti per JavaScript, destinato a eliminare il codice standard e facilitare la transizione a JavaScript da altri linguaggi orientati agli oggetti. (doc)

Ed è un editor di testo orientato alla riga: invece di offrire una panoramica di un documento, ed esegue la modifica di una riga alla volta. Può essere eseguito sia in modo interattivo che tramite script di shell. Il suo metodo di input dei comandi consente di eseguire attività complesse in modo automatizzato. GNU ed offre diverse estensioni rispetto all'utilità standard. (doc)

EDMA

GNU EDMA è un ambiente di sviluppo che combina idee provenienti sia dalla programmazione orientata agli oggetti che dai sistemi basati su componenti. Viene utilizzato per creare applicazioni modulari e in evoluzione, nonché componenti riutilizzabili. EDMA fornisce un mezzo conveniente per creare programmi orientati agli oggetti in C senza richiedere C++. Inoltre, ha un sistema di componenti unico, a differenza di altri sistemi basati su componenti di software libero che imitano il design delle controparti proprietarie. Include una procedura guidata grafica, gidfwizard, uno strumento per creare file di definizione dell'interfaccia GNU EDMA e per creare file scheletrici necessari per creare classi EDMA, e un browser di classi grafico, gecb. (doc)

Elettrico

GNU Electric è un programma CAD per la progettazione di circuiti elettrici, la gestione di layout IC personalizzati, disegni schematici e specifiche del linguaggio di descrizione dell'hardware. Sono supportate diverse operazioni CAD, come il controllo delle regole e la simulazione. È possibile produrre molti tipi diversi di progetti e inserirli o emetterli in un'ampia varietà di formati. (doc)

Emacs

GNU Emacs è un editor di testo estensibile e altamente personalizzabile. Si basa su un interprete Emacs Lisp con estensioni per l'editing di testi. Emacs è stato esteso essenzialmente a tutte le aree dell'informatica, dando origine a una vasta gamma di pacchetti che supportano, ad esempio, posta elettronica, messaggistica IRC e XMPP, fogli di calcolo, modifica di server remoti e molto altro. Emacs include un'ampia documentazione su tutti gli aspetti del sistema, dall'editing di base alla scrittura di grandi programmi Lisp. Ha il supporto completo Unicode per quasi tutte le lingue umane. (doc)

La musa di Emacs

Muse è un ambiente di creazione e pubblicazione per GNU Emacs. Supporta l'immissione di testo in un formato comodo e facile da imparare. Successivamente, i tuoi documenti potrebbero essere pubblicati in una varietà di formati diversi, come HTML, LaTeX o PDF. Muse supporta progetti costituiti da più documenti, che vengono opportunamente uniti in base al formato di output. (doc)

EMMS

EMMS è il Sistema Multimediale di Emacs. È un piccolo front-end che può controllare uno dei lettori esterni supportati. Pertanto, supporta qualsiasi formato supportato dal tuo lettore musicale. Supporta anche il tagging e la gestione delle playlist, il tutto dietro un'interfaccia utente pulita e leggera. (doc)

Enscrizione

GNU Enscript è un programma per convertire file di testo ASCII in formati PostScript, HTML o RTF, per essere archiviati in file o inviati immediatamente a una stampante. Include anche la capacità di eseguire l'evidenziazione della sintassi per diversi linguaggi di programmazione. (doc)

Fdisk

GNU fdisk fornisce una versione GNU del comune strumento di partizionamento dei dischi fdisk. fdisk viene utilizzato per la creazione e la manipolazione di tabelle delle partizioni del disco e comprende una varietà di formati diversi. (doc)

Furetto

GNU Ferret è un modellatore grafico di dati per il paradigma Entità/Relazione. Può creare automaticamente schemi relazionali dai modelli di dati e può essere utilizzato per generare istruzioni SQL in una varietà di dialetti. (doc)

Findutils

Findutils fornisce le utilità di base per la ricerca delle directory dei file del sistema GNU. È costituito da due utilità di ricerca principali: trova cerca ricorsivamente i file in una directory in base a determinati criteri e individua elenca i file in un database che corrispondono a una query. Sono inclusi due strumenti ausiliari: aggiornatob aggiorna il database dei nomi dei file e xargs può essere utilizzato per applicare comandi con argomenti arbitrariamente lunghi. (doc)

FisicaLab

GNU FisicaLab è un'applicazione educativa per risolvere problemi di fisica. Il suo obiettivo principale è consentire all'utente di concentrarsi sui concetti di fisica, tralasciando i dettagli matematici. (doc)

Fogliot

GNU Foliot è un'applicazione per tenere traccia del tempo impiegato a lavorare sui progetti. (doc)

Fontopia

Fontopia è un editor di caratteri per console facile da usare, basato su testo. Viene utilizzato per modificare i caratteri che GNU/Linux utilizza per visualizzare il testo su terminali basati su testo. Fontopia funziona su entrambi i caratteri PSF 1 e 2, BDF, caratteri Code Paged (CP) e file di caratteri Raw. Fornisce un'interfaccia utente editor di glifi intuitivo e facile da usare e può modificare facilmente le metriche dei caratteri (ad esempio lunghezza, larghezza e altezza) e convertire tra diversi formati di carattere. (doc)

Fontutils

GNU Fontutils è una raccolta di programmi per la gestione dei caratteri. Le bitmap possono essere estratte da immagini scansionate di caratteri, modificate e convertite in caratteri di contorno. In generale, Fontutils supporta i formati di carattere supportati dall'ambiente di composizione TeX, inclusi i caratteri PostScript Type 1. (doc)

FreeDink

GNU FreeDink è una reimplementazione gratuita e portatile del motore per il gioco di ruolo Dink Smallwood. Supporta non solo i file di dati di gioco originali, ma supporta anche le mod di gioco o D-Mod prodotte dagli utenti. In tal senso, include anche un front-end per la gestione di tutti i tuoi D-Mod. (doc)

Caratteri di contorno UCS gratuiti

GNU FreeFont è una raccolta di caratteri di contorno scalabili adatti all'uso generale del computer e al desktop publishing. Sono inclusi un carattere serif, un sans serif e un carattere a spaziatura fissa, tutti disponibili nei formati TrueType e OpenType. I caratteri supportano un'ampia gamma di caratteri per molti sistemi di scrittura diversi e hanno un'eccellente copertura della notazione matematica. (doc)

IPMI gratuito

GNU FreeIPMI è una raccolta di software IPMI in banda e fuori banda in conformità con la specifica IPMI v1.5/2.0. Questi programmi forniscono una serie di interfacce per la gestione della piattaforma. Le funzionalità comuni includono il monitoraggio dei sensori, il monitoraggio degli eventi di sistema, il controllo dell'alimentazione e la connessione seriale su LAN. (doc)

Parlare liberamente

GNU Freetalk è un client di chat Jabber/XMPP da riga di comando. Utilizza in particolare la libreria Readline per gestire l'input, quindi offre una comoda navigazione del testo e il completamento con tabulazioni di nomi di amici, comandi e parole inglesi. È anche scriptabile ed estensibile tramite Guile. Questo pacchetto sta cercando un manutentore. (doc)

VenBiDi

GNU FriBidi è un'implementazione dell'algoritmo bidirezionale Unicode. Questo algoritmo viene utilizzato per visualizzare correttamente il testo nell'ordine da sinistra a destra o da destra a sinistra, a seconda delle necessità. (doc)

G-Golf

G-Golf (Gnome: (Guile Object Library for)) è una libreria per lo sviluppo di applicazioni moderne in Guile Scheme. Comprende un collegamento diretto all'API GObject Introspection e funzionalità di livello superiore per importare librerie Gnome e rendere disponibili classi (e metodi) GObject nel sistema di programmazione orientato agli oggetti di Guile, GOOPS. (doc)

Gama

GNU Gama è un programma per l'adattamento delle reti geodetiche. È utile nelle misurazioni in cui il sistema di posizionamento globale (GPS) non è disponibile, come nel sottosuolo. Presenta la possibilità di effettuare regolazioni in coordinate cartesiane locali nonché un supporto parziale per regolazioni in sistemi di coordinate globali. (doc)

Demone ARP gratuito

GNU garpd trasmette richieste/risposte ARP (Address Risoluzione Protocol) gratuite per un elenco di indirizzi MAC<->Mappature degli indirizzi IP su interfacce specifiche a intervalli regolari. I pacchetti di richiesta ARP gratuiti sono quelli in cui l'IP di origine e quello di destinazione sono entrambi l'IP della macchina richiedente. Sono risposte ARP gratuite quelle effettuate senza corrispondente richiesta. (doc)

Stupito

Gawk è l'implementazione GNU di Awk, un linguaggio di programmazione specializzato per la facile manipolazione di testo formattato, come tabelle di dati. Gawk presenta molte estensioni oltre l'implementazione tradizionale, incluso l'accesso alla rete, l'ordinamento e le grandi librerie. (doc)

Gbehistun

GNU Behistun è costituito da software e utilità per la modellazione geologica e geofisica e la mappatura di strutture e dinamiche interne. Come l'Iscrizione Multilingue Behistun, le utilità software Behistun forniscono conoscenze e funzionalità per lavorare sui sistemi planetari e indagarne l'interno in libertà. (doc)

Gcal

Gcal è un programma per calcolare e stampare calendari dalla riga di comando. I calendari possono essere stampati con visualizzazione di 1 mese, 3 mesi o anno intero. Inoltre, per molti paesi è possibile generare elenchi di festività eterne, che possono essere integrati da elenchi di date fisse creati dall'utente per creare un'agenda. Gcal può anche calcolare dati astronomici, come le fasi lunari, e supporta formati di calendario alternativi: giuliano, gregoriano, islamico, cinese e altri. (doc)

CCG

GCC è la raccolta di compilatori GNU. Fornisce front-end del compilatore per diversi linguaggi, tra cui C, C++, Objective-C, Fortran, Java, Ada e Go. Include anche librerie di supporto runtime per questi linguaggi. (doc)

Gcide

GCIDE è un dizionario gratuito basato su una combinazione di fonti. Può essere utilizzato tramite il programma GNU Dico o accessibile online su http://gcide.site.ua/ (doc)

Lisp comune GNU

GCL è un'implementazione del linguaggio Common Lisp. Presenta la capacità di compilare in codice oggetto nativo e di caricare moduli di codice oggetto nativo direttamente nel suo nucleo lisp. Presenta inoltre una strategia di garbage collection stratificata, un debugger a livello di sorgente e un'interfaccia integrata per il sistema widget Tk. (doc)

GCompris

GCompris è una suite di software educativo per bambini. Presenta una varietà di attività adatte a bambini dai 2 ai 10 anni. La suite include attività per introdurre e sviluppare competenze nell'uso del computer, algebra, scienze, lettura e altro ancora. Presenta anche alcuni giochi come gli scacchi e il sudoku. (doc)

G.D.B.

GDB è il debugger GNU. Con esso, puoi monitorare cosa sta facendo un programma mentre è in esecuzione o cosa stava facendo subito prima di un arresto anomalo. Ti consente di specificare le condizioni di runtime, definire punti di interruzione e modificare il modo in cui il programma viene eseguito per provare a correggere i bug. Può essere utilizzato per eseguire il debug di programmi scritti in C, C++, Ada, Objective-C, Pascal e altro. (doc)

Gdbm

GDBM è una libreria per manipolare database con hash. Viene utilizzato per archiviare coppie chiave/valore in un file in modo simile alla libreria dbm Unix e fornisce interfacce al formato di file tradizionale. (doc)

Gengen

GNU Gengen è un programma per generare generatori di testo, cioè funzioni che producono testo con sezioni variabili. Il testo viene prima specificato dall'utente in un file modello contenente parametri, quindi elaborato da gengen per creare il generatore di testo. In fase di esecuzione, la variabile testo viene definita dal resto del programma e passata al generatore di testo, che poi la sostituisce nei parametri del modello e restituisce il risultato. Gengen può essere utilizzato per generare codice C e C++. (doc)

Gengetopt

GNU Gengetopt è un programma per generare una funzione C/C++ per analizzare le opzioni della riga di comando utilizzando la funzione getopt_long trovata in GNU libc, rimuovendo parte della noia di questa attività per programmi di grandi dimensioni che accettano molte opzioni. Le opzioni analizzate dalla funzione generata possono essere sia in formato breve (ad esempio, -h) che lungo (--help), come specificato dagli standard di codifica GNU. Inoltre, l'output delle opzioni standard --help e --version viene generato automaticamente. (doc)

Ottieni testo

GNU Gettext è un pacchetto che fornisce un framework per tradurre l'output testuale dei programmi in più lingue. Fornisce ai traduttori i mezzi per creare cataloghi di messaggi, nonché una modalità Emacs per lavorare con loro e una libreria runtime per caricare i messaggi tradotti dai cataloghi. Quasi tutti i pacchetti GNU utilizzano Gettext. (doc)

Gforth

Gforth è un'implementazione veloce e portatile del linguaggio ANSI Forth. Include una modalità di modifica per Emacs e un interprete con completamento e cronologia. È incluso anche un ambiente di macchina virtuale generico, vmgen. (doc)

Ggradebook

GNU Gradebook è un'applicazione per insegnanti per tenere traccia dei voti degli studenti. Supporta diversi stili di valutazione, comprese le scale numeriche americane (A, B, C, D, F) ed europee. (doc)

GNU Ghostscript

Ghostscript è un interprete per il linguaggio PostScript e il formato file PDF. Include anche una libreria C che implementa le capacità grafiche del linguaggio PostScript. Supporta un'ampia varietà di formati di file di output e stampanti. (doc)

REGALO

GNU Image-Finding Tool (GIFT) è un sistema di recupero di immagini basato sui contenuti. Utilizza il contenuto delle immagini per eseguire query su una raccolta, consentendoti di eseguire query per esempio. Inoltre, è incluso uno strumento per indicizzare interi alberi di directory. (doc)

GIMP

GIMP è un'applicazione per attività di manipolazione delle immagini come il ritocco fotografico, la composizione e la creazione. Supporta tutti i formati di immagine comuni e quelli specializzati. È dotato di un'interfaccia altamente personalizzabile che è estensibile tramite un sistema di plugin. (doc)

Spigolare

GNU glean è un sistema modulare per lo studio autonomo, considerevolmente più complesso del metodo standard delle flashcard. È molto personalizzabile e consente all'utente di definire argomenti di interesse e attività per studiarli. Per ora, ha un'interfaccia testuale all'interno di Guile REPL e un'interfaccia web sperimentale. (doc)

Gleem

GNU gleem è una libreria per Java e C++ che offre una serie di widget 3D che supportano l'interazione diretta dell'utente con una scena 3D. Questi widget vengono utilizzati per traslare lungo una linea, traslare su un piano ed eseguire traslazioni e rotazioni tridimensionali. Questo pacchetto sta cercando un manutentore. (doc)

GLib

Globale

GNU GLOBAL è un sistema di tagging del codice sorgente che funziona allo stesso modo in un'ampia gamma di ambienti, come diversi editor di testo, shell e browser web. I tag risultanti sono utili per spostarsi rapidamente in un progetto ampio e profondamente nidificato. (doc)

GLPK

GLPK è una libreria C per risolvere la programmazione lineare su larga scala (LP), la programmazione intera mista (MIP) e altri problemi correlati. Supporta il linguaggio di modellazione GNU MathProg, un sottoinsieme del linguaggio AMPL, e dispone di un traduttore per il linguaggio. Oltre alla libreria C, nel pacchetto è incluso un solutore LP/MIP autonomo. (doc)

Gmediaserver

GMediaServer è un server multimediale compatibile con UPnP. Fornisce file audio e video ai lettori multimediali connessi alla rete tramite un programma da riga di comando che viene eseguito in background. (doc)

GMP

GMP è una libreria per l'aritmetica di precisione arbitraria, che opera su numeri interi con segno, numeri razionali e numeri in virgola mobile. La precisione è limitata solo dalla memoria disponibile. La libreria è altamente ottimizzata, con un focus progettuale sulla velocità di esecuzione. È finalizzato all'uso, ad esempio, nella crittografia e nell'algebra computazionale. (doc)

Digrignare

Gnash è un riproduttore di filmati Flash gratuito. Supporta la versione SWF v7 e alcune versioni v8 e v9. È possibile configurare Gnash per utilizzare diversi backend audio o video, garantendo buone prestazioni. (doc)

MOSCERINO

Moscerini

GNATS è un insieme di strumenti per tenere traccia di bug e altri problemi software segnalati dagli utenti. È completamente aperto nel modo in cui il suo database può essere interrogato, modificato e mantenuto, con interfacce che vanno dalla riga di comando a Emacs, sebbene il principale mezzo di interazione sia tramite la sua interfaccia web. È anche sufficientemente flessibile da supportare le utilità create dagli utenti. (doc)

Gnatsweb

Rete Gneurale

Gneural Network implementa una rete neurale programmabile. Attualmente supporta reti feed-forward che possono apprendere compiti semplici come l'adattamento di curve. (doc)

GNOMO

GNOME è il desktop grafico per GNU. Include un'ampia varietà di applicazioni per navigare sul Web, modificare testo e immagini, creare documenti e diagrammi, riprodurre contenuti multimediali, eseguire scansioni e molto altro. (doc)

Manuale di riferimento GNU C

Questo è un manuale di riferimento per il linguaggio di programmazione C, come implementato dal compilatore GNU C (gcc). Come riferimento, non è inteso come un tutorial del linguaggio. Piuttosto, delinea tutti i costrutti del linguaggio. Le funzioni della libreria non sono incluse. (doc)

GNU-pw-mgr

Questo programma è progettato per facilitare la ricostruzione di password difficili quando sono necessarie, limitando al contempo il rischio di attacco. L'utente di questo programma inserisce una trasformazione autodefinita dell'URL di un sito Web e ottiene il suggerimento per la password e il nome utente per quel sito Web. (doc)

GNUbatch

GNUbatch è un sistema avanzato di pianificazione batch. Esegue lavori di calcolo in date e orari specificati o in base alle interdipendenze. I lavori possono essere completati su qualsiasi numero di processori condivisi in una rete. È supportato il controllo completo degli accessi ai lavori. (doc)

Backgammon

L'applicazione GNU backgammon può essere utilizzata per giocare, analizzare e insegnare il gioco. Dispone di un motore di valutazione avanzato basato su reti neurali artificiali adatto sia ai principianti che ai giocatori esperti. Oltre a un'interfaccia a riga di comando, presenta anche un'attraente rappresentazione 3D del tavolo da gioco. (doc)

GNUbiff

GNUbiff è un programma che controlla la posta e ti avvisa quando arrivano nuovi messaggi. Supporta più caselle di posta a cui è possibile accedere tramite una varietà di metodi come POP3, IMAP, MH e file di posta. Le notifiche grafiche sono fornite con GTK ed è supportata l'integrazione completa con GNOME. (doc)

GNUbik

GNUbik è un puzzle game in cui devi manipolare un cubo per far sì che ciascuna delle sue facce abbia un colore uniforme. Il gioco è personalizzabile, permettendoti di impostare la dimensione del cubo (l'impostazione predefinita è 3x3) o di cambiare i colori. Puoi anche applicare foto ai volti invece che ai colori. Il gioco è programmabile con Guile. (doc)

GNUcap

GNUcap è un pacchetto di analisi dei circuiti. Offre un simulatore di circuiti per uso generale e può eseguire analisi CC e transitori, analisi di Fourier e analisi CA. Il motore è progettato per eseguire una vera simulazione in modalità mista. (doc)

GnuCash

GnuCash è un software di contabilità finanziaria personale e professionale. Può essere utilizzato per tenere traccia di conti bancari, azioni, entrate e uscite, in base alla pratica della contabilità a partita doppia. Include il supporto per l'importazione QIF/OFX/HBCI e la corrispondenza delle transazioni. Automatizza inoltre diverse attività, come calcoli finanziari o transazioni pianificate. (doc)

GnuComm

Sottosistema telecomunicazioni del progetto GNU: progetto ombrello per il software di telefonia GNU, attualmente Bayonne, SIP Witch, e le relative librerie di supporto (Common C++ / uCommon, ccAudio, ccScript, ccRTP e ZRTP / ZRTP4J). (doc)

GnuDOS

GnuDOS è un insieme di programmi progettati per aiutare i nuovi utenti del sistema GNU ad abituarsi al sistema, in particolare gli utenti che potrebbero provenire da un background DOS. Consiste in un file manager, un editor di testo e un designer di moduli per la console, nonché una libreria principale per la creazione di utilità simili. (doc)

GNU Enterprise

GNU Enterprise supporta la pianificazione aziendale. Include un server applicativo, una libreria di sviluppo comune, un IDE per la progettazione di moduli dati, interfaccia moduli, navigatore e sistema di menu e sistema di reporting dei dati. (doc)

GNUgo

GNU Go è un programma che riproduce il gioco del Go, in cui i giocatori posizionano le pietre su una griglia per formare un territorio o catturare altre pietre. Sebbene possa essere giocato direttamente dal terminale, reso in caratteri ASCII, è anche possibile giocare a GNU Go con interfacce grafiche di terze parti o anche in Emacs. Supporta il formato di archiviazione dei giochi standard (SGF, Smart Game Format) e il formato di comunicazione tra processi (GMP, Go Modem Protocol). (doc)

Strumenti interattivi GNU

Gli GNU Interactive Tools sono un insieme di strumenti da riga di comando leggeri e interattivi. Includono un file manager estensibile e ortodosso (a due riquadri), un visualizzatore di file ASCII/hex e un visualizzatore/killer di processi. Il pacchetto include anche alcune utilità e script correlati, come uno strumento per decomprimere qualsiasi tipo di file di archivio. Tutti gli strumenti possono essere migliorati ed estesi attraverso i loro file di configurazione per eseguire nuovi comandi. (doc)

GNUjump

GNUjump è un gioco semplice ma avvincente in cui devi saltare da una piattaforma all'altra per evitare di cadere, mentre le piattaforme scendono a una velocità maggiore man mano che si sale. Il gioco offre multiplayer, FPS illimitati, caduta fluida del pavimento, grafica e suoni tematici e replay. (doc)

GNUlib

Gnulib è una posizione centrale per l'infrastruttura comune necessaria ai pacchetti GNU. Fornisce un'ampia varietà di funzionalità, ad esempio portabilità su molti sistemi, funzionamento con stringhe Unicode, calcolo crittografico e molto altro. Il codice è destinato ad essere condiviso a livello di file sorgente, anziché essere una libreria autonoma distribuita, creata e installata. Lo script gnulib-tool incluso aiuta con l'utilizzo del codice Gnulib in altri pacchetti. Gnulib include anche copie dei file relativi alla licenza e alla manutenzione, per comodità. (doc)

Mach

GNUmed

GNUmed è un software di cartella clinica elettronica, che supporta le pratiche mediche senza supporto cartaceo. Sono supportate diverse lingue di interfaccia. (doc)

GNUmerico

GNUmeric è un'applicazione per fogli di calcolo GNU, eseguita sotto GNOME. È interoperabile con altre applicazioni per fogli di calcolo. Ha una vasta gamma di funzionalità oltre alle tipiche funzionalità dei fogli di calcolo, come il supporto per solutori lineari e non lineari, analisi statistica e ingegneria delle telecomunicazioni. (doc)

GNUmp3d

GNUMP3d è un server di streaming per file audio, film e altri formati multimediali MP3 e Ogg Vorbis. È piccolo e autonomo e presenta un'interfaccia HTML semplice e tematica. I file audio possono quindi essere riprodotti su qualsiasi lettore che supporti lo streaming su HTTP. (doc)

GNNazioni Unite

GNUnited Nations è un sistema di compilazione per tradurre il sito web all'indirizzo www.site. Funziona tramite file modello, che consentono di unire le modifiche nelle singole traduzioni di una pagina, da cui viene generato l'HTML finale. In effetti, questo aiuta a mantenere aggiornate tutte le traduzioni di una pagina. (doc)

GNUnet

GNUnet è un framework per reti peer-to-peer sicure. L'obiettivo di alto livello è fornire una solida base di software libero per una rete globale e distribuita che garantisca sicurezza e privacy. GNUnet in questo senso mira a sostituire l'attuale stack di protocolli Internet. Insieme ad un'applicazione per la pubblicazione sicura di file, è cresciuta fino a includere tutti i tipi di applicazioni di base per la fondazione di un'Internet GNU. (doc)

GnuPG

GNU Privacy Guard è un'implementazione completa dello standard OpenPGP. Viene utilizzato per crittografare e firmare dati e comunicazioni. È dotato di una potente gestione delle chiavi e della possibilità di accedere ai server a chiave pubblica. Include diverse librerie: libassuan (IPC tra componenti GnuPG), libgpg-error (valori di errore GnuPG centralizzati) e libskba (funziona con certificati X.509 e dati CMS). (doc)

GNUpod

GNUpod è una raccolta di script per utilizzare gli iPod con GNU/Linux e altri sistemi operativi. Può essere utilizzato per trasferire musica e copertine, cercare file, rimuovere file, modificare tag, creare playlist e altro ancora. (doc)

GNUprologjava

GNU Prolog per Java è un'implementazione dello standard ISO Prolog come libreria Java (gnu.prolog). Pertanto, con esso puoi utilizzare Prolog dall'interno dei programmi Java. (doc)

Radio

GNU Radio è un toolkit per implementare radio software. I suoi blocchi di elaborazione del segnale possono essere combinati con hardware RF esterno a basso costo per creare radio definite dal software. Senza hardware, può essere utilizzato per la simulazione. Le applicazioni radio sono scritte principalmente in Python, con supporto C++ per attività di elaborazione critiche per le prestazioni. (doc)

Robot

GNU Robots è un gioco in cui programmi un robot per esplorare un mondo pieno di nemici che possono ferirlo, ostacoli e cibo da mangiare. L'obiettivo del gioco è rimanere in vita e raccogliere premi. Il programma del robot può essere convenientemente scritto in un file di testo semplice nel linguaggio di programmazione Scheme. (doc)

GNUschool

GNUschool è un'applicazione web per studenti, insegnanti e amministratori scolastici. Con esso, gli insegnanti possono creare test da far svolgere online agli studenti, fornire feedback e assegnare voti. Gli amministratori scolastici possono utilizzarlo per monitorare la presenza degli studenti e modificare le informazioni sugli studenti. (doc)

GNUshogi

GNU Shogi è un programma che gioca al gioco Shogi (scacchi giapponesi). Include anche un'interfaccia grafica per il gioco. Sebbene simile agli scacchi standard, questa variante è molto più complicata. (doc)

GNUsound

GNUsound è un editor audio multitraccia per GNOME 1 e 2. Può leggere e scrivere molti formati di file audio come WAV, MP3 e FLAC. Può funzionare con i backend audio OSS, ALSA o JACK. Fornisce molti diversi moduli di elaborazione audio integrati, come dissolvenze in entrata/uscita, ritardo e filtri. I plugin GLADSPA possono essere utilizzati anche per ulteriori elaborazioni. (doc)

GNUspool

GNUspool è un sistema di spooling di stampa avanzato. Oltre alle funzionalità del sistema di stampa standard, fornisce funzionalità di post-elaborazione, gestione del tipo di modulo, allineamento delle pagine e altre funzionalità. Funziona in modo trasparente su una rete, condividendo lavori su qualsiasi host con stampanti su qualsiasi altro host. Sono disponibili diverse interfacce utente. (doc)

GNUstep

GNUstep è un ambiente di sviluppo orientato agli oggetti completamente funzionale; sono incluse anche una serie di applicazioni utente. Segue da vicino le API Cocoa ma è indipendente dalla piattaforma. (doc)

GnuTLS

GnuTLS è una libreria di comunicazioni sicure che implementa i protocolli SSL, TLS e DTLS. Viene fornito sotto forma di libreria C per supportare i protocolli, nonché per analizzare e scrivere X.5009, PKCS 12, OpenPGP e altre strutture richieste. (doc)

GNUtrizione

GNUtrition è un software gratuito di analisi nutrizionale. Con esso è possibile tenere traccia delle informazioni nutrizionali degli alimenti. Il software utilizza il database dei nutrienti di riferimento standard del Dipartimento dell'Agricoltura degli Stati Uniti come fonte di informazioni sui nutrienti alimentari. (doc)

GNUzilla

Ottico

Goptical è una libreria per la progettazione ottica e la simulazione in C++. Fornisce classi di modelli per componenti ottici, superfici e materiali. Con esso, è possibile simulare la costruzione di un sistema ottico creando e posizionando componenti ottici in uno spazio 3D e visualizzare la propagazione della luce attraverso il sistema. (doc)

Gorm

Gpaint

GNU Paint è un programma di disegno semplice e facile da usare per l'ambiente GNOME. Supporta il disegno a mano libera, nonché forme e testo di base. È dotato di taglia e incolla per regioni irregolari o poligoni. (doc)

Gperf

gperf è un generatore di funzioni hash perfetto. Per un dato elenco di stringhe, produce una funzione hash e una tabella hash in codice C o C++. Il fatto che la funzione hash sia perfetta significa che non possono esistere collisioni e che le ricerche possono essere effettuate mediante confronti di singole stringhe. (doc)

Gprolog

GNU Prolog è un compilatore Prolog conforme agli standard con risoluzione di vincoli su domini finiti. Accetta programmi di vincoli Prolog+ e produce un binario nativo compilato che può funzionare in modo autonomo. Dispone anche di un interprete interattivo. (doc)

phpGrabComics

phpGrabComics è un programma che recupera e salva fumetti dal web. È dotato sia di un server, che può scaricare strisce da diverse fonti, sia di port, piccole applicazioni che ottengono l'elenco dei fumetti disponibili dal server. (doc)

Greg

GNU Greg è un framework per testare programmi e librerie. Fornisce un unico front-end per tutti i test di un pacchetto nonché un semplice framework per scrivere i test. Viene caricato come modulo Guile in qualsiasi software con un interprete Guile incorporato. Fornisce anche un modulo compilato che può essere collegato dinamicamente a Guile per consentire di testare programmi esterni. (doc)

Grep

grep è uno strumento per trovare testo all'interno dei file. Il testo viene trovato corrispondendo a un modello fornito dall'utente in uno o più file. Il modello può essere fornito come espressione regolare di base o estesa oppure come stringhe fisse. Per impostazione predefinita, il testo corrispondente viene semplicemente stampato sullo schermo, tuttavia l'output può essere notevolmente personalizzato per includere, ad esempio, numeri di riga. GNU grep offre molte estensioni rispetto all'utilità standard, inclusa, ad esempio, la ricerca ricorsiva nelle directory. (doc)

Gretl

GNU Gretl è un pacchetto per eseguire calcoli statistici per l'econometria. È costituito sia da un client della riga di comando che da un client grafico. Presenta una varietà di stimatori come i minimi quadrati e la massima verosimiglianza; diversi metodi di serie temporali come ARIMA e GARCH; variabili dipendenti limitate quali logit, probit e tobit; e un potente linguaggio di scripting. Può generare modelli come file LaTeX. Può anche essere collegato a GNU R e GNU Octave per un'ulteriore analisi dei dati. (doc)

Groff

Groff è un pacchetto di composizione che legge testo semplice e produce output formattato in base ai comandi di formattazione contenuti nel testo. Di solito è il formattatore delle pagine di documentazione man. (doc)

GRUB

GRUB è un bootloader multiboot. Viene utilizzato per caricare inizialmente il kernel di un sistema operativo e quindi trasferirgli il controllo. Il kernel procede quindi a caricare il resto del sistema operativo. In quanto bootloader multiboot, GRUB gestisce la presenza di più sistemi operativi installati sullo stesso computer; all'avvio del computer, all'utente viene presentato un menu per selezionare uno dei sistemi operativi installati. (doc)

Gsasl

GNU SASL è un'implementazione del framework Simple Authentication and Security Layer. Sui server di rete come i server IMAP o SMTP, SASL viene utilizzato per gestire l'autenticazione client/server. Questo pacchetto contiene sia una libreria che uno strumento da riga di comando per accedere alla libreria. (doc)

Gsegrafix

GSEGrafix è un'applicazione che produce grafici di alta qualità per la scienza e l'ingegneria. I grafici vengono specificati tramite semplici file di parametri ASCII e file di dati e sono presentati in un canvas GNOME con anti-alias. Il programma supporta grafici bidimensionali rettangolari, istogrammi, grafici ad asse polare e grafici tridimensionali. I grafici possono essere stampati o salvati nei formati immagine BMP, JPEG o PNG. (doc)

Biblioteca scientifica GNU

La GNU Scientific Library è una libreria per l'analisi numerica in C e C++. Include un'ampia gamma di routine matematiche, con oltre 1000 funzioni in totale. Le aree tematiche coperte dalla libreria includono: equazioni differenziali, algebra lineare, trasformate veloci di Fourier e numeri casuali. (doc)

La scivolata GNU

GNU Slip è un'estensione funzionale delle funzionalità fornite nell'elenco C++ Standard Template Library (STL) e nei contenitori di coda, sebbene SLIP non sostituisca i contenitori STL. Le celle dati SLIP possono essere utilizzate in calcoli specifici dell'applicazione, oltre ad altri miglioramenti. (doc)

GSRC supporta l'installazione delle ultime versioni dei pacchetti GNU su un sistema esistente. Le nuove versioni vengono installate in un luogo separato per non interferire con le versioni del sistema. L'obiettivo è rendere più semplice il lavoro con i sorgenti GNU originali, upstream, e forse aiutare con lo sviluppo e il test. (doc)

Servizio di sicurezza generico

Il GNU Generic Security Service fornisce un'implementazione gratuita della specifica GSS-API. Fornisce un'interfaccia di programmazione dell'applicazione generica per consentire ai programmi di accedere ai servizi di sicurezza. I servizi di sicurezza presentano un'interfaccia GSS generica, con la quale l'applicazione chiamante interagisce tramite questa libreria, liberando lo sviluppatore dell'applicazione dalla necessità di conoscere l'implementazione della sicurezza sottostante. (doc)

GTick

GTick è un'applicazione metronomo. Supporta diversi contatori, come 2/4, 3/4, 4/4, ecc. Supporta inoltre un'ampia gamma di velocità, da 10 a 1000 BPM. Fornisce un'interfaccia utente basata su GTK+ e può utilizzare sia OSS che ALSA come back-end audio. (doc)

GTK+

Dattilografo

GNU Typist è un tutor di digitazione universale. Può essere utilizzato per imparare e praticare la digitazione tattile. Sono inclusi diversi tutorial; oltre ai tutorial per il layout QWERTY standard, ci sono anche tutorial per i layout alternativi Dvorak e Colemak, nonché per il tastierino numerico. I tutorial sono principalmente in inglese, ma ne vengono forniti alcuni in altre lingue. (doc)

Astuzia

Guile è il GNU Ubiquitous Intelligent Language for Extensions, il linguaggio ufficiale delle estensioni del sistema GNU. Si tratta di un'implementazione del linguaggio Scheme che può essere facilmente incorporata in altre applicazioni per fornire un mezzo conveniente per estendere la funzionalità dell'applicazione senza richiedere la riscrittura del codice sorgente. (doc)

Guile-cv

Guile-CV è una libreria di programmazione funzionale di visione artificiale per il linguaggio Guile Scheme. Guile-CV è basato su Vigra (Visione con algoritmi generici). Comprende un collegamento diretto a vigra_c (un wrapper C per un sottoinsieme della libreria Vigra) e un'API di livello superiore scritta in Guile Scheme. (doc)

Guile-dbi

guile-dbi è una libreria per Guile che fornisce una comoda interfaccia ai database SQL. La programmazione del database con guile-dbi è generica nel senso che viene presentata la stessa interfaccia di programmazione indipendentemente dal sistema di database utilizzato. Attualmente supporta MySQL, Postgres e SQLite3. (doc)

Gnomo dell'Astuzia

Include guile-clutter, guile-gnome-gstreamer, guile-gnome-platform (librerie per sviluppatori GNOME) e guile-gtksourceview. (doc)

Maledizioni astute

guile-ncurses fornisce i collegamenti linguistici Guile per la libreria ncurses. (doc)

Guile-opengl

Guile-OpenGL è una libreria per Guile che fornisce collegamenti all'API grafica OpenGL. (doc)

Guile-SDL

Guile-SDL è un insieme di collegamenti al Simple DirectMedia Layer (SDL). Con essi, i programmatori Guile possono avere facile accesso alla grafica, al suono e all'input del dispositivo (tastiere, joystick, mouse, ecc.). (doc)

Guix

GNU Guix è un gestore di pacchetti funzionale per il sistema GNU e ne è anche una distribuzione. Include un'immagine della macchina virtuale. Oltre alle consuete funzionalità di gestione dei pacchetti, supporta anche aggiornamenti e rollback transazionali, profili per utente e molto altro. Si basa sul gestore di pacchetti Nix. (doc)

Gorgogliare

GURGLE produce elenchi di report del database dalle informazioni sui record e sui campi di un file. Utilizza il report per produrre output in formato (La)TeX, testo ASCII semplice, troff, PostScript, HTML, XML o qualsiasi altro formato di output basato su ASCII. Può essere utilizzato per produrre grandi quantità di testo in cui piccole parti del testo vengono sostituite con informazioni dal database. GURGLE supporta i database GNUSQL, PostgreSQL, MySQL e CA-Ingres. (doc)

GNU GV è un'interfaccia utente grafica per l'interprete Ghostscript. Con esso, è possibile visualizzare e navigare tra documenti PostScript e PDF in X Windows. (doc)

GVPE

GNU Virtual Private Ethernet crea una rete virtuale con più nodi utilizzando una varietà di protocolli di trasporto. Funziona creando tunnel da host a host crittografati tra più endpoint. (doc)

G.W.L.

GWL è un linguaggio di flusso di lavoro che estende il linguaggio dichiarativo di Guix per la gestione dei pacchetti per automatizzare l'esecuzione dei programmi. Inoltre, GWL può utilizzare Grid Engine per scaricare l'esecuzione del programma. (doc)

Gxmessaggio

GNU gxmessage è un programma che apre finestre di dialogo che visualizzano un messaggio all'utente e attendono la sua azione. Il programma quindi esce con un codice di uscita corrispondente alla risposta. (doc)

Gzip

GNU Gzip fornisce utilità di compressione e decompressione dei dati; l'estensione tipica è .gz . A differenza del formato zip, comprime un singolo file; di conseguenza, viene spesso utilizzato insieme a tar , risultando in .tar.gz o .tgz , ecc. (doc)

HaliFAX

HaliFAX supporta l'invio e la visualizzazione di fax, incluso un wrapper attorno al comando lpr. Questo pacchetto sta cercando un manutentore. (doc)

Salute

GNU Health è un sistema software medico gratuito, che include il supporto per cartelle cliniche elettroniche (EMR), un sistema informativo ospedaliero (HIS) e un sistema informativo sanitario. Supporta sia l'interfaccia spagnola che quella inglese. È stato adottato dall'Università delle Nazioni Unite per l'implementazione e la formazione, e da diversi ospedali e ministeri della sanità in tutto il mondo. (doc)

Ciao

GNU Hello stampa il messaggio Hello, world! e poi esce. Serve come esempio di pratiche di codifica GNU standard. In quanto tale, supporta argomenti della riga di comando, più lingue e così via. (doc)

Help2man

GNU help2man è un programma che converte automaticamente l'output degli argomenti standard della riga di comando --help e --version in una pagina di manuale. (doc)

Hp2xx

GNU hp2xx converte la grafica vettoriale specificata nel linguaggio plotter HP-GL in una varietà di formati grafici, sia vettoriali che raster, inclusi EPS, PCX, IMG e formati destinati all'uso all'interno di documenti TeX. (doc)

httptunnel

httptunnel GNU crea un percorso dati bidirezionale incanalato nelle richieste HTTP. Ciò consente agli utenti dietro firewall di inviare e ricevere dati che altrimenti verrebbero bloccati, come connessioni telnet o ssh. (doc)

Hurd

L'Hurd è il kernel per il sistema GNU, una sostituzione e un ampliamento dei kernel Unix standard. È una raccolta di protocolli per l'interazione del sistema (file system, reti, autenticazione) e server che li implementano. I sottoprogetti includono Mach, il microkernel su cui è basato Hurd, che fornisce un meccanismo di comunicazione tra processi di base, e MIG, un generatore di interfacce per Mach. (doc)

Iperbole

Hyperbole è un sistema di informazioni e ipertesto programmabile per GNU Emacs. Permette di incorporare ipertesti all'interno di documenti, messaggi di posta e articoli di notizie. Ciò consente il controllo tramite mouse delle informazioni visualizzate. (doc)

Icecat

IceCat è la versione GNU del browser Firefox. È un software completamente gratuito, che non consiglia plug-in e componenti aggiuntivi non gratuiti. Dispone inoltre di funzionalità integrate di protezione della privacy. (doc)

Idutils

Il pacchetto GNU idutils include strumenti per creare un indice di token testuali utilizzati in un elenco di nomi di file e quindi per interrogare tale indice. In questo modo l'utente può, ad esempio, trovare tutti gli usi di una determinata funzione in un grande progetto di programmazione. Oltre a gestire token testuali, può anche gestire costanti numeriche e il contenuto di stringhe di caratteri. (doc)

Accensione

Ignuit è uno strumento per aiutare nella memorizzazione di nuove informazioni basato sul sistema flashcard Leitner. In questo sistema le nuove carte vengono studiate con frequenza decrescente man mano che invecchiano, a meno che non si incontrino difficoltà a memorizzarle, dopodiché le si incontrano più spesso. Le carte possono includere audio incorporato, immagini e formule matematiche e una raccolta di carte può essere esportata in diversi formati. (doc)

Rientro

Indent è un programma che semplifica la lettura del codice sorgente riformattandolo in uno stile coerente. Può cambiare lo stile in uno dei tanti stili diversi come GNU, BSD o K&R. Ha una certa flessibilità per gestire la sintassi incompleta o non corretta. Il rientro GNU offre diverse estensioni rispetto all'utilità standard. (doc)

Inetutils

Inetutils è una raccolta di programmi di rete comuni, come un client e server ftp, un client e server telnet e un client e server rsh. (doc)

Inklingreader

GNU InklingReader è un pacchetto per supportare il dispositivo Wacom Inkling, inclusa la conversione dei dati in vari formati gratuiti, funzionalità di modifica di base e un plug-in Inkscape. (doc)

Caratteri internazionali

Gli intlfonts GNU contengono font X11 gratuiti nei formati BDF e TrueType. Coprono in particolare un gran numero di caratteri di diversi sistemi di scrittura: europeo, asiatico, cinese, giapponese, coreano, etiope e altri. (doc)

JACAL

GNU JACAL è un programma interattivo di matematica simbolica basato su Scheme. Manipola e semplifica una gamma di espressioni matematiche come equazioni, scalari, vettori e matrici. (doc)

Jami

Jami è un programma di comunicazione universale che rispetta le libertà e la privacy dei suoi utenti. Jami utilizza tabelle hash distribuite per stabilire la comunicazione. Ciò evita di mantenere registri centralizzati degli utenti e di archiviare dati personali. (doc)

Java-getopt

java-getopt fornisce un port Java della funzione GNU getopt di glibc. Supporta l'analisi di argomenti della riga di comando sia lunghi che brevi in ​​modo flessibile, completamente compatibile con la versione C. (doc)

Gel

GNU JEL è una libreria che consente a un programma di accettare espressioni definite dall'utente da inserire e valutare in fase di runtime. In effetti, le espressioni vengono compilate da JEL in bytecode Java per evitare la penalizzazione delle prestazioni derivante dall'aggiunta di espressioni interpretate a un linguaggio già interpretato. (doc)

Ruote da allenamento Java

Le ruote GNU Java Training Wheel forniscono una curva di apprendimento meno ripida per imparare a programmare in Java. Il sistema è alimentato da un preprocessore che aggiunge funzionalità a Java come una macro superfor e un sistema di inclusione di file molto simile al preprocessore del linguaggio C. (doc)

Jwhois

GNU jwhois è un client per il protocollo WHOIS, che permette di interrogare il proprietario di un nome di dominio. Il programma utilizza un file di configurazione estensibile per determinare il server più appropriato su cui interrogare e, in caso di successo, visualizza il risultato all'utente, altrimenti può facoltativamente reindirizzare la query su un altro server. (doc)

Kawa

GNU Kawa è un'implementazione del linguaggio di programmazione Scheme costruito sulla piattaforma Java. È quindi convenientemente integrato con Java e ne trae vantaggio avendo un compilatore, tipizzazione statica opzionale e così via. Kawa funge anche da framework per l'implementazione di altri linguaggi di programmazione sulla piattaforma Java. In Kawa è incluso qexo, un'implementazione parziale di XQuery in Java. (doc)

Gamba

GNU Leg è un insieme di librerie per motori di gioco e sviluppo di giochi. Oltre alle librerie, include anche editor di risorse progettati per semplificare la creazione di giochi. Il pacchetto è progettato per essere generico e modulare e supportare molti stili di giochi diversi. (doc)

Meno

GNU less è un cercapersone, un programma che consente di visualizzare grandi quantità di testo in blocchi grandi quanto una pagina. A differenza dei cercapersone tradizionali, consente il movimento sia avanti che indietro nel documento. Inoltre, non è necessario leggere l'intero file di input prima di iniziare, quindi si avvia più velocemente della maggior parte degli editor di testo. (doc)

Libreria GNU C

La libreria GNU C è la libreria C standard del sistema GNU. Definisce le chiamate di sistema e altre funzionalità di base necessarie per scrivere programmi in linguaggio C. Gestisce funzionalità di basso livello che comunicano con il kernel, come la gestione di processi e file, nonché funzionalità di livello superiore come la manipolazione di stringhe o la gestione di argomenti della riga di comando. (doc)

Libcdio

La libreria GNU Compact Disc Input and Control (libcdio) è una libreria per l'accesso ai file immagine CD-ROM e CD. Consente allo sviluppatore di aggiungere l'accesso da CD a un'applicazione senza doversi preoccupare delle proprietà del CD-ROM dipendenti dal sistema operativo e dal dispositivo o dai dettagli specifici dei formati di immagine del CD. Include pycdio, un'interfaccia Python per libcdio, e libcdio-paranoia, una libreria che fornisce un'estrazione audio senza jitter e senza errori dai CD. (doc)

Libdbh

libdbh fornisce tabelle hash basate su disco, fornendo una rapida ricerca di coppie chiave-valore. Sebbene il suo utilizzo sia simile in generale a quello di (G)DBM, ha un design diverso che supporta un utilizzo avanzato e atipico. (doc)

Libertà Eiffel

Il progetto Liberty Eiffel è il compilatore GNU Eiffel. Eiffel è un linguaggio di programmazione avanzato orientato agli oggetti che enfatizza la progettazione e la costruzione di software riutilizzabile e di alta qualità. Liberty Eiffel è un compilatore Eiffel completo, piccolo e veloce, che include un compilatore Eiffel-C, strumenti di documentazione, una bella stampante, un debugger e vari altri strumenti. Include anche un'ampia libreria di classi nonché un set completo di wrapper/binding per le librerie di software libero più diffuse. (doc)

Estrattore di libri

GNU libextractor è una libreria per estrarre metadati dai file. Supporta un numero molto elevato di formati di file, inclusi file audio, file di documenti e file di archivio. Ogni formato di file è implementato come plug-in, quindi è possibile aggiungere facilmente nuovi formati. Il pacchetto contiene anche uno strumento da riga di comando per estrarre metadati da un file e stampare i risultati. (doc)

Libgcrypt

Libgcrypt è una libreria crittografica di uso generale. Fornisce gli elementi costitutivi crittografici standard come cifrari simmetrici, algoritmi hash, algoritmi a chiave pubblica, funzioni intere di grandi dimensioni e generazione di numeri casuali. (doc)

Libiconv

libiconv fornisce un'implementazione della funzione iconv per i sistemi che ne sono sprovvisti. iconv viene utilizzato per convertire tra codifiche di caratteri in un programma. Supporta un'ampia varietà di codifiche diverse. (doc)

Libidine

libidn è una libreria che implementa le specifiche Stringprep, Punycode e IDNA. Questi vengono utilizzati per codificare e decodificare i nomi di dominio internazionalizzati. Include librerie native C, C# e Java. (doc)

Libmateval

GNU libmatheval è una libreria per analizzare e valutare le espressioni simboliche inserite dall'utente come testo. Può essere caricato sia da C che da Fortran. L'interprete è flessibile e supporta qualsiasi numero di variabili con nomi arbitrari, costanti decimali e simboliche, operatori unari e binari di base e funzioni matematiche elementari. Può anche calcolare derivate simboliche e restituire espressioni in stringhe. (doc)

Libmicrohttpd

GNU libmicrohttpd è un piccolo server HTTP incorporabile implementato come libreria C. Semplifica l'esecuzione di un server HTTP come parte di un'altra applicazione. La libreria è completamente compatibile con HTTP 1.1. Può ascoltare su più porte, supporta quattro diversi modelli di threading e supporta IPv6. Dispone inoltre di funzionalità di sicurezza come l'autenticazione di base e digest e il supporto per SSL3 e TLS. (doc)

librejs

LibreJS è un componente aggiuntivo per GNU Icecat e altri browser basati su Firefox. Rileva il caricamento di codice JavaScript non banale e non libero senza il tuo consenso durante la navigazione sul Web. È consentito caricare codice JavaScript gratuito o banale. (doc)

Libsigsegv

GNU libsigsegv è una libreria per gestire gli errori di pagina, che si verificano quando un programma tenta di accedere a una regione di memoria non disponibile, in modalità utente. Rilevando e gestendo gli errori di pagina, il programma può implementare memoria virtuale paginabile, gestori di stack overflow e così via. (doc)

Libtasn1

GNU libtasn1 è una libreria che implementa la notazione ASN.1. Viene utilizzato per trasmettere codifiche indipendenti dalla macchina di oggetti dati nelle reti di computer, consentendo la convalida formale dei dati secondo alcune specifiche. (doc)

Libtool

GNU Libtool aiuta nella creazione e nell'uso di librerie condivise, presentando un'unica interfaccia coerente e portatile che nasconde la consueta complessità di lavorare con librerie condivise su più piattaforme. (doc)

Libunistringa

GNU libunistring è una libreria che fornisce funzioni per manipolare stringhe Unicode e per manipolare stringhe C secondo lo standard Unicode. (doc)

Libxmi

GNU libxmi è una libreria per rasterizzare la grafica vettoriale 2D per C e C++. Supporta il disegno di primitive 2D in una matrice di pixel fornita dall'utente. Supporta inoltre la specifica di stili di linea sofisticati come motivi tratteggiati multicolori. Sono supportati anche il riempimento e la texturizzazione dei poligoni. (doc)

Fulmine

GNU Lightning è una libreria che genera codice in linguaggio assembly in fase di esecuzione. Pertanto, è utile nella creazione di compilatori Just-In-Time. Astrae sulla CPU di destinazione esponendo ai client un set di istruzioni RISC standardizzato. (doc)

Lilypond

GNU LilyPond è un tipografo musicale che produce spartiti di alta qualità. La musica viene inserita in un file di testo contenente sequenze di controllo che vengono interpretate da LilyPond per produrre il documento finale. È estensibile con Guile. (doc)

Lims

GNU LIMS è un sistema di gestione delle informazioni di laboratorio. Viene utilizzato per la gestione di un laboratorio scientifico di qualsiasi campo. Consiste in una serie di moduli per il framework di gestione aziendale Tryton, quindi è flessibile alle esigenze specifiche del laboratorio. Ad esempio, il sistema include moduli per la gestione dei campioni, l'integrazione delle apparecchiature di laboratorio, la contabilità e la gestione delle scorte. (doc)

Linux-libero

GNU Linux-Libre è una variante gratuita (come libertà) del kernel Linux. È stato modificato per rimuovere tutti i blob binari non liberi. (doc)

Guerra liquida 6

GNU Liquid War 6 è un gioco d'azione unico e frenetico. Ogni giocatore controlla una massa di liquido con l'obiettivo di conquistare l'intera mappa. Ha 13 livelli predefiniti e oltre 100 in più con un pacchetto bonus; nuovi livelli possono essere facilmente creati utilizzando semplici file di immagine. (doc)

Lispintro

Lrzsz

GNU lrzsz è un pacchetto di comunicazione che supporta i protocolli di trasferimento file XMODEM, YMODEM e ZMODEM. (doc)

Lsh

GNU lsh è un'implementazione gratuita del protocollo SSH versione 2. Viene utilizzato per creare una linea di comunicazione sicura tra due computer, fornendo l'accesso shell al sistema server dal client. Fornisce sia il demone server che l'applicazione client, nonché strumenti per manipolare i file chiave. (doc)

GNU M4 è un'implementazione del linguaggio macro M4, che presenta alcune estensioni rispetto ad altre implementazioni, alcune delle quali sono richieste da GNU Autoconf. Viene utilizzato come processore macro, il che significa che elabora il testo, espandendo le macro man mano che le incontra. Ha anche alcune funzioni integrate, ad esempio per eseguire comandi di shell o per eseguire operazioni aritmetiche. (doc)

Cambia MAC

GNU MAC Changer è un'utilità per visualizzare e modificare gli indirizzi MAC dei dispositivi di rete. I nuovi indirizzi possono essere impostati in modo esplicito o casuale. Possono includere indirizzi MAC dello stesso o di altri fornitori di hardware o, più in generale, indirizzi MAC della stessa categoria di hardware. (doc)

Postino

GNU Mailman è un software per la gestione delle discussioni via email e delle mailing list. Sia gli utenti che gli amministratori generalmente eseguono le loro azioni in un'interfaccia web, sebbene siano fornite anche interfacce di posta elettronica e a riga di comando. Il sistema dispone di archiviazione integrata, elaborazione automatica del mancato recapito, filtraggio dei contenuti, consegna digest e altro ancora. (doc)

Mailutils

GNU Mailutils è una raccolta di programmi per la gestione, la visualizzazione e l'elaborazione della posta elettronica. Contiene sia utilità che demoni del server e funzionano tutti in modo indipendente dal protocollo. Sono disponibili anche le librerie sottostanti, semplificando l'aggiunta di funzionalità di posta al nuovo software. (doc)

Fare

Make è un programma utilizzato per controllare la produzione di eseguibili o altri file dai relativi file sorgente. Il processo è controllato da un Makefile, in cui lo sviluppatore specifica come ciascun file viene generato dalla sua fonte. Ha una potente risoluzione delle dipendenze e la capacità di determinare quando i file devono essere rigenerati dopo la modifica delle loro origini. GNU offre molte potenti estensioni rispetto all'utilità standard. (doc)

MARST

GNU MARST è un traduttore da Algol a C. Il pacchetto è costituito dal traduttore stesso, da una libreria che contiene le procedure Algol 60 necessarie e da un convertitore che converte i programmi Algol 60 esistenti da altre rappresentazioni alla rappresentazione MARST. (doc)

Maverik

GNU MAVERIK è un toolkit di sviluppo che supporta ambienti virtuali 3D e l'interazione con tali ambienti. Si basa su un motore di rendering di basso livello che utilizza OpenGL o Mesa e fornisce meccanismi per eseguire il rendering di diversi tipi di oggetti, gestire gli ambienti e fornire supporto per l'interazione 3D. (doc)

Comandante di mezzanotte

GNU Midnight Commander è un file manager da riga di comando strutturato in un comune formato a due riquadri. Oltre alle attività standard di gestione dei file come la copia e lo spostamento, Midnight Commander supporta anche la visualizzazione del contenuto dei file del pacchetto RPM e di altri archivi e la gestione dei file su altri computer tramite FTP o FISH. Include anche un potente editor di testo per l'apertura di file di testo. (doc)

Macron

GNU Mcron è un sostituto completo di Vixie cron. Viene utilizzato per eseguire attività in base a una pianificazione, ad esempio ogni ora o ogni lunedì. Macron è scritto in Guile, quindi la sua configurazione può essere scritta in Scheme; è supportato anche il formato cron originale. Questo pacchetto sta cercando un manutentore. (doc)

MCSim

GNU MCSim è un pacchetto per eseguire simulazioni. Supporta modelli di simulazione statistici o deterministici tramite simulazioni stocastiche Monte Carlo o simulazioni dinamiche basate su ODE. Può anche eseguire inferenza bayesiana attraverso simulazioni Markov Chain Monte Carlo. (doc)

Kit di sviluppo MIX

GNU MDK è il Mix Development Kit, un'emulazione del computer pedagogico MIX e del suo linguaggio assembly MIXAL. MIX ha una CPU virtuale con caratteristiche standard come registri, celle di memoria, interruttore di overflow, flag di confronto, dispositivi di input-output e un set di istruzioni binarie. Il pacchetto include un compilatore, una macchina virtuale, una GUI per la macchina virtuale e altro ancora. (doc)

Mediagoblin

GNU MediaGoblin è una piattaforma di pubblicazione multimediale gratuita. Funziona in modo federale, liberando l'utente dai servizi web centralizzati. Supporta immagini, video e audio. (doc)

Fusione

GNU MELTING calcola l'entalpia, l'entropia e la temperatura di fusione delle transizioni elica-spira di un duplex di acidi nucleici. (doc)

MemPool

La libreria MemPool è una libreria di allocazione della memoria autonoma. È una libreria di allocazione blocchi che utilizza un singolo pool di memoria di dimensione fissa per allocare blocchi di memoria di dimensione variabile ed esporta funzioni simili a malloc, realloc e free. È destinato a simulare obiettivi di memoria insufficiente su GNU/Linux e altri sistemi o a sostituire completamente la gestione della memoria del sistema. (doc)

Mes

GNU Mes mira ad aiutare a creare il bootstrap completo dei sorgenti per sistemi GNU/Linux come GuixSD. È dotato di un interprete Scheme di mutuo self-hosting scritto in un semplice C e di un compilatore C basato su Nyacc scritto in Scheme compatibile con GNU Guile. La libreria Mes C supporta il bootstrap di gcc. (doc)

Metahtml

GNU MetaHTML è un linguaggio di programmazione lato server progettato per il World Wide Web. Ha una sintassi simile a HTML e Lisp. Fornisce un'ampia libreria di funzioni, incluso il supporto per socket, creazione di immagini e connessioni ad altri programmi. (doc)

Mifluz

GNU mifluz è una libreria C++ per archiviare un indice invertito full-text. Memorizza le occorrenze delle parole in un insieme di testi in modo tale da poterle successivamente cercare. Dopo aver cercato una parola, l'indice restituisce l'elenco dei documenti che contengono quella parola. (doc)

Mig

Miscfiles

GNU Miscfiles è una raccolta di file di dati comuni. Includono, ad esempio, abbreviazioni di paesi, nomi e capitali; abbreviazioni e nomi di valuta; un indice delle migliori pratiche attuali; una mappa del set di caratteri ASCII; un elenco di codici aeroportuali di tre lettere; e un elenco di parole inglesi. (doc)

Schema MIT/GNU

GNU/MIT Scheme è un'implementazione del linguaggio di programmazione Scheme. Fornisce un interprete, un compilatore e un debugger. Dispone inoltre di un editor integrato simile a Emacs e di un'ampia libreria runtime. (doc)

Moe

GNU Moe è un editor di testo potente ma semplice da usare. Funziona in modo non modale e presenta un insieme intuitivo di associazioni di tasti che assegnano un grado di gravità a ciascun tasto; ad esempio, le combinazioni di tasti con il tasto Alt sono per comandi innocui come i movimenti del cursore mentre le combinazioni con il tasto Control sono per comandi che modificheranno il testo. Moe dispone di finestre multiple, operazioni di annullamento/ripristino illimitate, lunghezza di riga illimitata, ricerca e sostituzione globale e altro ancora. (doc)

Motti

GNU Motti è un semplice gioco di strategia multiplayer giocato su un terminale. L'obiettivo del gioco è conquistare le capitali nemiche occupando e circondando il territorio. (doc)

MPc

GNU MPC è una libreria C per eseguire operazioni aritmetiche su numeri complessi. Supporta una precisione arbitrariamente elevata e arrotonda correttamente i risultati. (doc)

Mpfr

GNU MPFR è una libreria C per eseguire calcoli a virgola mobile e precisione multipla con arrotondamento corretto. (doc)

Mprià

GNU MPRIA è una libreria C per eseguire calcoli aritmetici razionali con precisione arbitrariamente elevata. Si basa sulla libreria GMP. (doc)

Mtools

GNU Mtools è un insieme di utilità per accedere ai dischi MS-DOS da un sistema GNU o Unix. Supporta nomi di file lunghi e formati di dischi multipli. Supporta anche alcune funzionalità specifiche di FAT come etichette di volume e attributi di file specifici di FAT. (doc)

Nonna

GNU Nana è un framework per aggiungere il controllo delle asserzioni, la registrazione e la misurazione delle prestazioni ai programmi C e C++. Le operazioni possono essere implementate direttamente in C o generando comandi del debugger. Le funzionalità di controllo e registrazione possono essere abilitate o disabilitate in fase di compilazione o runtime. (doc)

Nano

GNU nano è un editor di testo piccolo e semplice da utilizzare in un terminale. Oltre alla modifica di base, supporta: annulla/ripristina, evidenziazione della sintassi, controllo ortografico, giustificazione, rientro automatico, corrispondenza tra parentesi, ricerca e sostituzione interattiva (con espressioni regolari) e la modifica di più file. (doc)

Nano-Archimede

nano-archimedes è un pacchetto gratuito per la simulazione di sistemi quantistici. Si basa sull'equazione di Wigner, una formulazione della meccanica quantistica in termini di spazio delle fasi che è matematicamente equivalente all'equazione di Schroedinger. nano-archimede implementa il metodo Wigner Monte Carlo. Il codice può essere facilmente esteso alla teoria del funzionale della densità (DFT) e alle simulazioni ab-initio dipendenti dal tempo. (doc)

Ncurses

GNU Ncurses è una libreria che fornisce funzionalità per scrivere testo su un terminale in modo indipendente dal terminale. Supporta pad e colori, oltre a molteplici evidenziazioni e forme di caratteri. Viene generalmente utilizzato per implementare interfacce utente per applicazioni da riga di comando. La libreria ncursesw di accompagnamento fornisce un ampio supporto di caratteri. (doc)

Ortica

GNU Nettle è una libreria crittografica di basso livello. È progettato per adattarsi facilmente a quasi tutti i contesti. Può essere facilmente incluso nei toolkit crittografici per linguaggi orientati agli oggetti o nelle applicazioni stesse. (doc)

Ocrad

GNU Ocrad è un programma di riconoscimento ottico dei caratteri basato su un metodo di estrazione delle caratteristiche. Può leggere immagini nei formati PBM, PGM o PPM e produce testo nei formati a 8 bit o UTF-8. (doc)

Ottava

GNU Octave è un linguaggio interpretato di alto livello specializzato per calcoli numerici. Può essere utilizzato sia per applicazioni lineari che non lineari e fornisce un ottimo supporto per la visualizzazione dei risultati. Il lavoro può essere eseguito sia dalla riga di comando interattiva che tramite file di script. (doc)

Oleo

GNU Oleo è un programma per fogli di calcolo. Offre sia un'interfaccia terminale che un'interfaccia utente grafica basata su LessTif. Presenta combinazioni di tasti familiari, simili a quelle di Emacs. Supporta molte funzionalità standard dei fogli di calcolo come macro e funzioni. (doc)

OrgaDoc

siteDoc è un sistema per mantenere facilmente un pool di documenti tra computer. I documenti sono sincronizzati tramite rsync o unison; non è richiesto alcun database o server HTTP. (doc)

oSIP

GNU oSIP è un'implementazione del protocollo SIP. Viene utilizzato per fornire agli sviluppatori di software multimediale e di telecomunicazione un'interfaccia per avviare e controllare le sessioni SIP. (doc)

Panorama

GNU Panorama è un framework per la produzione di grafica 3D. Può eseguire vari effetti, come sfocatura focale, fonti di luce arbitrarie, bump mapping e diversi effetti di luce. (doc)

Parallelo

GNU Parallel è uno strumento per eseguire lavori di shell in parallelo utilizzando uno o più computer. I lavori possono consistere in singoli comandi o script e vengono eseguiti su elenchi di file, host, utenti o altri elementi. (doc)

Separato

GNU Parted è un pacchetto per creare e manipolare tabelle delle partizioni del disco. Include una libreria e un'utilità da riga di comando. (doc)

Toppa

Patch è un programma che applica modifiche ai file in base alle differenze stabilite dal programma diff. Le modifiche possono essere applicate a uno o più file a seconda del contenuto del file diff. Accetta diversi formati diff. Può anche essere utilizzato per annullare le differenze applicate in precedenza. (doc)

Paxutil

GNU paxutils è una suite di utilità di archivio. Contiene le versioni degli archiviatori cpio, tar e pax. (doc)

PCB

GNU PCB è uno strumento interattivo per modificare i layout dei circuiti stampati. Presenta un'implementazione rats-nest, importazione di schemi/netlist e controllo delle regole di progettazione. Include anche un autorouter e un ottimizzatore di traccia; e può produrre immagini fotorealistiche e di revisione del design. (doc)

Pem

GNU Pem è un semplice strumento per tenere traccia delle entrate e delle spese personali. Funziona dalla riga di comando e memorizza i suoi dati in un formato di testo di base nella tua directory home. Può stampare facilmente resoconti delle tue spese su diverse spese tramite una funzione di ricerca di base. (doc)

Pexec

GNU pexec è un programma per eseguire comandi o script di shell in parallelo su uno o più computer. Mentre funziona, è possibile modificare i parametri di esecuzione come le variabili di ambiente o l'input, l'output e l'errore standard. (doc)

Torte

GNU pies è un programma che supervisiona l'invocazione e l'esecuzione di altri programmi. Legge l'elenco dei programmi da avviare dal suo file di configurazione, li esegue e quindi monitora il loro stato, rieseguendoli se necessario. (doc)

Plotutils

GNU Plotutils è un pacchetto per tracciare e lavorare con la grafica 2D. Include una libreria, libplot, per C e C++ per esportare grafica vettoriale 2D in molti formati di file. Supporta anche le animazioni grafiche vettoriali 2D. Il pacchetto contiene anche programmi da riga di comando per tracciare dati scientifici. (doc)

Colpisci

GNU poke è un editor interattivo ed estensibile per dati binari. Non si limita alla modifica di entità di base come bit e byte, ma fornisce un linguaggio di programmazione interattivo e procedurale completo, progettato per descrivere strutture di dati e operare su di esse. (doc)

Coltello proxy

GNU proxyknife è uno strumento per convalidare proxy gratuiti dietro un firewall. Il processo di convalida è completamente personalizzabile per soddisfare le vostre esigenze. (doc)

PSPP

GNU PSPP è un programma di analisi statistica. Può eseguire statistiche descrittive, test T, regressione lineare e test non parametrici. Presenta sia un'interfaccia grafica che input da riga di comando. PSPP è progettato per interagire con Gnumeric, LibreOffice e OpenOffice. I dati possono essere importati da fogli di calcolo, file di testo e fonti di database e possono essere restituiti in formato testo, PostScript, PDF o HTML. (doc)

Psicosintetizzatore

GNU Psychosynth è un soft synth interattivo e modulare. Emula una superficie 3D su cui i moduli vengono posizionati e manipolati, generando e alterando la musica. Psychosynth è costituito da una libreria C++, un'interfaccia 3D e un'interfaccia a riga di comando. (doc)

Pth

GNU Pth è una libreria portatile che fornisce una pianificazione senza prelazione e basata sulla priorità per più thread di esecuzione. Ogni thread ha il proprio contatore di programma, stack di runtime, maschera di segnale e variabile errno. I thread vengono pianificati in modo cooperativo, anziché in modo preventivo standard, in modo tale da essere gestiti in base alla priorità e agli eventi. Tuttavia, Pth offre anche l'emulazione dei thread POSIX.1c (pthreads) per la compatibilità con le versioni precedenti. (doc)

Pyconfigure

GNU pyconfigure fornisce file modello per implementare facilmente script di configurazione conformi agli standard e Makefile per pacchetti basati su Python. È progettato per funzionare insieme agli script di configurazione Python esistenti, semplificando l'integrazione nei progetti esistenti. Sono disponibili macro Autoconf potenti e flessibili, che consentono di apportare facilmente modifiche alla procedura di installazione in base alle capacità del computer di destinazione. (doc)

Qexo

R è un linguaggio e un ambiente per il calcolo statistico e la grafica. Fornisce una varietà di tecniche statistiche, come la modellazione lineare e non lineare, test statistici classici, analisi di serie temporali, classificazione e clustering. Fornisce inoltre un solido supporto per la produzione di grafici di dati di qualità da pubblicazione. È disponibile una grande quantità di pacchetti di terze parti, che ne aumentano notevolmente l'ampiezza e la portata. (doc)

Raggio

Radius è un server per l'autenticazione e la contabilità degli utenti remoti. È generalmente utile per le reti che richiedono servizi di autenticazione e contabilità centralizzati per le proprie workstation. L'autenticazione può essere eseguita in vari modi, ad esempio tramite /etc/passwd o credenziali archiviate in un database SQL. (doc)

R.C.S.

RCS è l'originale sistema di controllo delle revisioni. Funziona file per file, a differenza dei successivi sistemi di controllo della versione come CVS, Subversion e Git. Ciò può renderlo adatto, ad esempio, ai file di amministrazione del sistema, che spesso sono intrinsecamente locali su una macchina. (doc)

Linea di lettura

La libreria GNU readline consente agli utenti di modificare le righe di comando mentre vengono digitate. Può mantenere una cronologia ricercabile dei comandi immessi in precedenza, consentendoti di richiamare, modificare e reinserire facilmente i comandi precedenti. Presenta combinazioni di tasti simili a Emacs e Vi, rendendone l'utilizzo comodo per chiunque. (doc)

Recutili

GNU Recutils è un insieme di strumenti e librerie per creare e manipolare database basati su testo e modificabili dall'uomo. Nonostante siano basati su testo, i database creati con Recutils presentano tutte le funzionalità previste come campi univoci, chiavi primarie, timestamp e altro ancora. Sono supportati molti tipi di campi diversi, così come la crittografia. (doc)

Reftex

GNU RefTex è un pacchetto per implementare etichette, riferimenti, citazioni e indici nei documenti LaTeX. Funziona avvolgendo quattro macro LaTeX: label, ref, cite e index. Automatizza le attività comuni normalmente richieste quando si utilizzano queste macro. (doc)

Controllo remoto

GNU Remotecontrol è un'applicazione web per la gestione di termostati HVAC abilitati IP e altri dispositivi di automazione degli edifici. L'applicazione può leggere e scrivere dati su più dispositivi di questo tipo. (doc)

Rottlog

GNU Rot[t]log è un programma per la gestione dei file di registro. Viene utilizzato per ruotare automaticamente i file di registro quando hanno raggiunto una determinata dimensione o secondo una determinata pianificazione. Può anche essere utilizzato per comprimere e archiviare automaticamente tali registri. Rot[t]log invierà rapporti sulla sua attività all'amministratore di sistema. (doc)

RPG

Il motore di gioco di ruolo GNU fornisce un motore per la creazione di giochi di ruolo grafici bidimensionali, fornendo, ad esempio, una griglia di affiancamento degli sprite, rendering degli sprite e gestione degli eventi. (doc)

Fretta

GNU Rush è una shell utente limitata, per sistemi sui quali agli utenti devono essere fornite solo funzionalità o risorse limitate. Gli amministratori impostano i diritti utente tramite un file di configurazione che può essere utilizzato per limitare, ad esempio, i comandi che possono essere eseguiti, il tempo della CPU o l'utilizzo della memoria virtuale. (doc)

Sather

GNU Sather è un linguaggio di programmazione orientato agli oggetti simile a Eiffel. È progettato per essere semplice, efficiente, sicuro e non proprietario. È dotato di garbage collection, tipizzazione forte controllata staticamente, ereditarietà multipla, classi parametrizzate e altro ancora. Questo pacchetto è costituito da un compilatore, una libreria di classi, il manuale di programmazione e specifica del linguaggio e un browser per visualizzare sorgenti e grafici diretti dell'ereditarietà delle classi. (doc)

SCM

GNU SCM è un'implementazione di Scheme. Questa implementazione include Hobbit, un compilatore Scheme-to-C, che può generare file C i cui binari possono essere collegati dinamicamente o staticamente con un eseguibile SCM. (doc)

Schermo

GNU Screen è un gestore di finestre di terminale che multiplexa un singolo terminale tra diversi processi. Ciascun terminale virtuale fornisce funzionalità come un buffer di scorrimento indietro e un meccanismo di copia e incolla. Screen gestisce poi i diversi terminali virtuali, permettendoti di passare facilmente dall'uno all'altro, di staccarli dalla sessione corrente o addirittura di dividere la visualizzazione per mostrare due terminali contemporaneamente. (doc)

Sed

Sed è un editor di flussi di testo non interattivo. Riceve un input di testo da un file o da uno standard input, quindi applica una serie di comandi di modifica del testo allo stream e stampa il suo output sullo standard output. Viene spesso utilizzato per sostituire modelli di testo in uno stream. L'implementazione GNU offre diverse estensioni rispetto all'utilità standard. (doc)

Serviz

GNU Serveez è un framework server che fornisce le routine necessarie per implementare facilmente server basati su IP nella tua applicazione. Dimostra gli aspetti della programmazione di rete in modo portabile, rendendolo utile sia per semplificare il processo di aggiunta di un server alla tua applicazione sia per apprendere come funzionano i servizi di rete. Sono già forniti diversi server di esempio, come un server HTTP e un server IRC. (doc)

Sharutils

GNU sharutils è un pacchetto per creare e manipolare archivi di shell che possono essere facilmente inviati via email. Un archivio di shell è un file che può essere elaborato da una shell di tipo Bourne per decomprimere la raccolta originale di file. Questo pacchetto è principalmente per compatibilità e interesse storico. (doc)

Pastore

GNU Shepherd è un demone di gestione dei demoni, il che significa che supervisiona l'esecuzione dei servizi di sistema, sostituendo funzionalità simili trovate nei tipici sistemi init. Fornisce la gestione delle dipendenze attraverso una comoda interfaccia ed è basato su GNU Guile. (doc)

Shishi

GNU Shishi è un'implementazione gratuita del sistema di sicurezza di rete Kerberos 5. Viene utilizzato per consentire ai nodi di rete non sicuri di comunicare in modo sicuro tramite l'autenticazione reciproca client-server tramite ticket. (doc)

Shmm

GNU SHMM è un gestore di memoria condivisa. Può leggere o scrivere sulla memoria condivisa. Supporta anche altri comandi come il blocco o lo sblocco di un blocco di memoria condivisa identificato da chiave e dimensione. (doc)

Sgabello

GNU shtool è uno strumento di shell multiuso. Può eseguire le funzioni di molti comandi diversi, in modo da fornire un unico strumento da distribuire con una distribuzione sorgente in modo da garantire la portabilità degli script di shell. Ad esempio, shtool può eseguire i lavori dei comandi comuni install , mkdir o echo sui sistemi che ne sono sprovvisti. (doc)

Sipwitch

GNU SIP Witch è un server Voice-over-IP peer-to-peer che utilizza il protocollo SIP. Le chiamate possono essere effettuate dietro i firewall NAT e senza la necessità di un fornitore di servizi. Il suo design peer-to-peer garantisce che non vi sia alcun punto centrale per l'intercettazione o la cattura dei media e quindi può essere utilizzato per costruire un sistema telefonico sicuro che opera sull'Internet pubblica. (doc)

SLIB

GNU SLIB è una libreria comune portabile per il linguaggio di programmazione Scheme. Supporta un'ampia varietà di diverse implementazioni di Scheme, offrendo loro un framework per l'utilizzo di pacchetti di procedure e sintassi di Scheme. (doc)

Chiacchiere

GNU Smalltalk è un'implementazione gratuita del linguaggio Smalltalk. Implementa lo standard ANSI per il linguaggio e include anche classi extra come quelle per il networking e la programmazione GUI. (doc)

Solfeggio

GNU Solfege è un programma per praticare l'allenamento dell'orecchio musicale. Con esso, puoi esercitarti nel riconoscimento di vari intervalli e accordi musicali. È dotato di una panoramica delle statistiche in modo da poter monitorare i tuoi progressi in diverse sessioni. Solfege è inoltre progettato per essere estensibile in modo da poter scrivere facilmente le proprie lezioni. (doc)

Carta spaziale

GNU SpaceChart ti consente di visualizzare come sono distribuite le stelle nello spazio tridimensionale. Ti permette, ad esempio, di determinare le distanze tra le stelle, di vederle da qualsiasi punto di vista o di filtrare la vista per classe spettrale e luminosità. (doc)

Speex

GNU Speex è un codec di compressione audio esente da brevetto appositamente progettato per il parlato. È ben adattato alle applicazioni Internet, come VoIP. È dotato di compressione di bande diverse nello stesso bitstream, codifica stereo di intensità e rilevamento dell'attività vocale. (doc)

Sillabare

Spell è un programma di controllo ortografico da riga di comando. Legge un input di testo e stampa ogni parola errata su una riga a parte. È implementato come wrapper per GNU aspell o ispell. (doc)

Sqltutor

GNU Sqltutor è un tutorial SQL interattivo basato sul web. È dotato di più tutorial disponibili in diverse lingue. I tutorial presentano una serie di domande in una finestra di dialogo e, una volta completati, mostrano una valutazione finale che include le risposte corrette per le soluzioni sbagliate. (doc)

Src-highlite

GNU source-highlight legge un file di codice sorgente e produce un file di output in cui le parole chiave sono evidenziate in diversi colori per designare il loro ruolo sintattico. Supporta oltre 150 lingue diverse e può produrre in 8 formati diversi, inclusi HTML, LaTeX e ODF. Può anche essere emesso in sequenze di escape colore ANSI, in modo che il codice sorgente evidenziato possa essere visto in un terminale. (doc)

Widget Foglio di calcolo

Un widget Gtk+ che fornisce un array bidimensionale per visualizzare e manipolare dati tabulari simili a quelli forniti dai popolari programmi di fogli di calcolo. Il design segue il paradigma modello-vista-controller ed è O(1) sia nel tempo che nello spazio, garantendo un funzionamento molto veloce ed efficiente anche su dati di grandi dimensioni. Sono incluse funzionalità come taglia e incolla, trascina e rilascia, ecc. (doc)

Riporre

GNU Stow è un gestore di collegamenti simbolici. Genera collegamenti simbolici a directory di dati e li fa sembrare uniti nella stessa directory. Viene generalmente utilizzato per gestire i pacchetti software installati dal sorgente, consentendo di installarli separatamente in directory distinte e quindi creare collegamenti simbolici ai file in una directory comune come /usr/local. (doc)

Ceppo

GNU STUMP è un programma robomoderatore per newsgroup e mailing list USENET, dotato di moderazione basata sul web. Supporta la moderazione del gruppo tramite più moderatori umani. Può anche rifiutare automaticamente i messaggi non conformi senza intervento umano. Include un'interfaccia web. (doc)

Superopt

GNU Superopt è un generatore di sequenze di funzioni per la superottimizzazione. Utilizza un approccio esaustivo di generazione e test per trovare la sequenza di istruzioni più breve per una determinata funzione. (doc)

Swbis

Swbis è un sistema di amministrazione software specificato da POSIX. Offre una gestione trasparente della rete dei pacchetti software per gli amministratori di sistema. Ad esempio, intere directory del file system possono essere copiate da host a host attraverso una rete in modo trasparente. Il pacchetto include anche metodi avanzati per la creazione di tarball e meccanismi di controllo dell'integrità. (doc)

Filtri di conversazione

I GNU Talk Filters sono programmi che convertono il testo inglese in dialetti stereotipati o comunque divertenti. I filtri vengono forniti come libreria C, quindi possono essere facilmente integrati in altri programmi. (doc)

Catrame

Tar offre la possibilità di creare archivi tar, nonché la possibilità di estrarre, aggiornare o elencare file in un archivio esistente. È utile per combinare molti file in un file più grande, mantenendo la struttura delle directory e le informazioni sui file come autorizzazioni e date di creazione/modifica. GNU tar offre molte estensioni rispetto all'utilità standard. (doc)

Termine

GNU termcap è una libreria e un database che vengono utilizzati per consentire l'uso dei terminali di visualizzazione in modo indipendente dal terminale. Il database descrive le capacità di molti terminali di visualizzazione diversi. La biblioteca può quindi adattare le istruzioni generalizzate fornite da un programma alle capacità specifiche del terminale di visualizzazione presenti nel database. (doc)

Termutils

Il pacchetto GNU Termutils contiene due programmi, tput e tabs. tput viene utilizzato negli script di shell per manipolare la visualizzazione del terminale, ad esempio cancellandolo o spostando il cursore su un punto specifico, centrando il testo o sottolineando il testo. tabs viene utilizzato per specificare e impostare i punti di tabulazione hardware sui terminali che lo supportano. (doc)

Teseq

GNU Teseq è un programma che analizza i file che contengono sequenze di controllo. Converte le sequenze che incontra in una descrizione leggibile dall'uomo delle azioni eseguite da tali sequenze. Può anche tradurre il suo output in sequenze di controllo leggibili dalla macchina. (doc)

TeX per gli impazienti

TeX for the Impatient è un libro di circa 350 pagine su TeX, TeX semplice ed Eplain, scritto da Paul Abrahams, Kathryn Hargreaves e Karl Berry. (doc)

Texinfo

Texinfo è il formato di documentazione ufficiale del progetto GNU. Utilizza un singolo file sorgente utilizzando comandi espliciti per produrre un documento finale in uno qualsiasi dei numerosi formati di output supportati, come HTML o PDF. Questo pacchetto include sia gli strumenti necessari per produrre documenti Info dalla loro sorgente sia il lettore Info da riga di comando. L'enfasi del linguaggio è sull'espressione semantica del contenuto, evitando comandi di markup fisico. (doc)doc

Il pacchetto vc-dwim contiene due strumenti, vc-dwim e vc-chlog . vc-dwim è uno strumento che semplifica il compito di mantenere un ChangeLog e utilizzare allo stesso tempo il controllo della versione, ad esempio stampando un promemoria quando una modifica al file è stata descritta nel ChangeLog ma il file non è stato aggiunto al VC. vc-chlog esegue la scansione dei file modificati e genera voci ChangeLog conformi agli standard in base alle modifiche rilevate. (doc)

VCDImager

GNU VCDImager è una suite di programmi per lavorare con Video CD e Super Video CD. Può essere utilizzato per creare, disassemblare e analizzare i dischi. Supporta il controllo completo della riproduzione, la riproduzione di segmenti, il riempimento automatico dei flussi MPEG al volo e l'estrazione di CD video in file. (doc)

Vera

V.E.R.A. (Virtual Entity of Relevant Acronyms) è un elenco di acronimi informatici distribuito come documento informativo. (doc)

Vmgen

GNU WB è un pacchetto database basato su disco, ordinato e con array associativi per C, Scheme, Java e C#. Invece di essere implementato tramite hashing, WB utilizza alberi B, ottimizzati per utilizzare il numero minimo di operazioni su disco. (doc.doc)

XBoard

GNU XBoard è una scheda grafica per tutte le varietà di scacchi, inclusi gli scacchi internazionali, xiangqi (scacchi cinesi), shogi (scacchi giapponesi) e Makruk. Sono supportate anche diverse varianti meno conosciute. Presenta un'interfaccia grafica completamente interattiva e può caricare e salvare giochi nella Portable Game Notation. (doc)

Xlogmaster

GNU Xlogmaster è un programma con un'interfaccia utente grafica che ti consente di monitorare i log di sistema in modo conveniente. I registri possono essere visualizzati con filtri per evidenziare o nascondere le righe. Il programma può anche essere utilizzato per eseguire automaticamente azioni su eventi definiti dall'utente. (doc)

Xnee

GNU Xnee è un programma in grado di registrare, riprodurre e distribuire le azioni dell'utente in X11. Può essere utilizzato per automatizzare le interazioni dell'utente a scopo di test o dimostrazione. (doc)

Xorriso

GNU Xorriso è uno strumento per copiare file da e verso ISO 9660 Rock Ridge, a.k.a. Compact Disc File System, filesystem e ne consente la manipolazione a livello di sessione. È dotato di un formattatore e un masterizzatore per CD, DVD e BD. Può operare su immagini ISO esistenti o crearne di nuove. xorriso può quindi essere utilizzato per copiare file direttamente dentro o fuori file ISO. (doc)

Zile

GNU Zile è un clone leggero di Emacs. Il suo utilizzo è simile alla configurazione predefinita di Emacs, ma include un set di funzionalità molto più leggero. (

La GNU General Public License (GNU General Public License o GNU Open License Agreement) è forse la licenza per software libero più popolare, creata dal progetto GNU nel 1988. Viene chiamata anche GNU GPL in breve, o anche solo GPL, se la Il contesto è chiaro, che stiamo parlando specificamente di questa licenza (ci sono molte altre licenze che contengono le parole “licenza pubblica generale” nel titolo). La seconda versione di questa licenza è stata rilasciata nel 1991, la terza versione, dopo molti anni di lavoro e lunghe discussioni, nel 2007. La GNU Lesser General Public License (LGPL) è una versione indebolita della GPL per alcune librerie software. La GNU Affero General Public License è una versione rafforzata della GPL per i programmi destinati ad essere accessibili tramite la rete.

Lo scopo della GNU GPL è quello di fornire all'utente il diritto di copiare, modificare e distribuire (anche a livello commerciale) programmi (che per impostazione predefinita è proibito dalla legge sul copyright), e anche di garantire che gli utenti di tutti i programmi derivati ​​ricevano i diritti di cui sopra . Il principio di “ereditarietà” dei diritti si chiama “copyleft” (traslitterazione dell’inglese “copyleft”) ed è stato inventato da Richard Stallman. A differenza della GPL, le licenze di software proprietario molto raramente concedono all'utente tali diritti e tendono di solito a limitarli, ad esempio vietando il ripristino del codice sorgente.

La GPL garantisce ai destinatari di programmi per computer i seguenti diritti, o "libertà":

* libertà di eseguire il programma per qualsiasi scopo;
* libertà di studiare come funziona il programma e di modificarlo (precondizione per questo è l'accesso al codice sorgente);
* libertà di distribuire copie;
* libertà di migliorare il programma e di rilasciare miglioramenti al pubblico (una precondizione per questo è l'accesso al codice sorgente).
fonte

Sistema operativo GNU

GNU è un acronimo ricorsivo dall'inglese. GNU's Not UNIX - "GNU non è Unix!") è un sistema operativo gratuito simile a UNIX sviluppato dal progetto GNU.

Lo sviluppo del sistema GNU iniziò il 27 settembre 1983, quando Richard Stallman pubblicò un annuncio sul progetto nei newsgroup net.unix-wizards e net.usoft. Il 5 gennaio 1984 Stallman si dimise dal MIT per dedicare il suo tempo alla scrittura di un sistema operativo libero e anche per garantire che l'istituto non potesse rivendicare alcun diritto sul codice sorgente del sistema. Il primo programma GNU è stato l'editor di testo Emacs.

Attualmente il sistema GNU/Linux, più conosciuto semplicemente come Linux, è abbastanza diffuso (soprattutto nel mercato dei server) ed è abbastanza completo. Consiste in un gran numero di programmi del progetto GNU (principalmente utilità di sistema e toolchain GNU), il kernel Linux - la parte del sistema responsabile dell'esecuzione di altri programmi, inclusi i driver di dispositivo, ecc. - e molti altri programmi gratuiti.

Ultimi materiali nella sezione:

Rette parallele, segni e condizioni per le rette parallele
Rette parallele, segni e condizioni per le rette parallele

Segni di parallelismo di due rette Teorema 1. Se, quando due rette si intersecano con una trasversale: gli angoli trasversali sono uguali, oppure gli angoli corrispondenti...

Quali sono i contrari ed esempi di arricchimento della lingua russa con essi? Dizionario di parole con significati opposti.
Quali sono i contrari ed esempi di arricchimento della lingua russa con essi? Dizionario di parole con significati opposti.

Tatyana Astakhova Formazione di un dizionario dei contrari nei bambini in età prescolare senior con OHP FORMAZIONE DI UN DIZIONARIO DEI ANTONIMI NEI BAMBINI PIÙ GRANDI...

Preparazione all'Esame di Stato Unificato di Chimica
Preparazione all'Esame di Stato Unificato di Chimica

Riduzione dei cloruri acidi degli acidi carbossilici Gli acidi carbossilici vengono ridotti con difficoltà (più difficile delle aldeidi). Molto più facile...