Le differenze tra le (distro) Linux e Windows/OSX (per novizi)

Questo (lungo) articolo (prendetevi dieci minuti) nasce da una chiacchierata con un mio vecchio amico, che, dopo i miei vari proseliti per il passaggio a Linux ha deciso di provare Ubuntu su un computer perché non trovava il cd di Windows.

Che abbia fatto questo passaggio perché non trovava il cd non mi sembra sbagliata come situazione, ma la parte successiva (ovvero le questioni che lui si è posto) a questa installazione mi ha fatto nascere l’idea per un’articolo con un’elenco delle differenze tra il mondo GNU/Linux-BSD-Hurd e quello di Windows/OSX.

Che abbia scelto Ubuntu mi fà storcere il naso ma d’altronde è la distro Linux più diffusa.

In questo articolo vedremo le cose più importanti, spiegate nel modo più semplice, di questo mondo (alcuni dettagli tecnici ed etici saranno tralasciati per una maggiore comprensione sperando di non fare una Flame War).

Open Source vs Free Software

Con Free Software ci si riferisce al programma od al suo codice che sia libero (per l’etica, per studiarlo, aiuto al prossimo ed aiutare la comunità) riguardo la licenza usata (afferma cosa si può fare con quel prodotto ed a valenza legale) ,referenziale (l’autore deve essere citato) e gratuito. Per esempio se il programma ha la licenza GPL (la più diffusa) si può utilizzare liberamente per qualunque cosa e modificarlo ma dovrà essere menzionato l’autore originale e rilasciato il codice modificato.

Open Source invece è il free software che non specifica se il codice è gratuito o meno e non ha nessuna discriminazione etica (se il codice viene poi modificato e venduto sotto un’altro nome e la licenza di partenza lo permette).

Questa distinzione si applica per tutto il mondo open source e tutto il software annesso.

Si lo sò è una definizione minimalistica ma il concetto è questo (prima di partire con il flame, come ho detto sopra i risvolti etici e tecnici sono tralasciati per una maggiore comprensione).

open-source-vs-free-software

Richard Stallman sulla destra, creatore della GPL e di altre cose (fondamentali)

Cos’è una distro?

Con distro ci si riferisce ad un’ambiente GNU/Linux-BSD-Hurd, con un suo ecosistema completo di pacchetti software già presenti, pensata per un pubblico specifico ed installabile sul proprio apparecchio (non solo computer perché sono installabili anche sugli smartphone e tablet).

Esempi:

  • Scientific Linux – realizzata dal CERN, “Scientific Linux include software utile per gli scienziati ed in generale per chi lavora con dati scientifici”
  • Damn Small Linux – una distro con una suite software completa in 50 mb
  • Ubuntu Studio – una distro per editing multimediale amatoriale e professionale

Inoltre ci sono distro pensate per un pubblico desktop (ovvero con l’interfaccia grafica) che in ambito server (quello che permette di far funzionare i siti internet per esempio) che in ambito embedded (per i telefoni o dispositivi elettronici specifici).

Spesso i super computer usano le distro server ottimizzate, quindi personalizzate, dai possessori dei computer. Si perchè chiunque a seconda delle sue conoscenze e necessità chiunque può realizzare la propria distro.

46555994

Questo è solo un piccolo elenco di esempio ma ci sono moltissime distro per ogni necessità.

La filosofia delle distro

Come ho detto all’inizio esistono molti tipi di distro a seconda del mercato.
La più famosa Ubuntu è pensata per portare Linux alle masse in modo facile, Debian la cosiddetta distro universale è pensata per funzionare su qualunque architettura (32bit/64bit/PowerPC/Arm per citare qualche architettura supportata), per supportare qualunque kernel (i citati sopra per esempio) e di essere completamente free software (anche se è possibile installare materiale non free software).

CentOS è per portare la distro Red Hat (a pagamento) in modo gratuito ed open source, Fedora è per avere un ambiente Red Hat ufficiale con interfaccia grafica per gli utenti e così via.

Cos’è GNU/Linux-BSD-Hurd?

GNU/Linux, BSD e Hurd sono dei kernel. Con kernel ci si riferisce alla parte più bassa del sistema operativo, in ordine di esecuzione, che permette la comunicazione tra hardware e software. Dalla lettura dei file system (su Linux ce ne sono molti tipi a seconda delle necessità), ai joystick, dall’apertura del lettore cd al monitor collegato al computer.

Rispetto a Windows e OSX non sempre è necessaria l’installazione di driver perché il kernel stesso contiene i driver quindi il riconoscimento hardware nel 90% dei casi è immediato (c’è sempre la variabile kernel non aggiornato o driver proprietari obbligatori).

Il kernel più diffuso è GNU/Linux (chiamato Linux per brevità) usato nella maggior parte delle distro ed ambienti (Android lo usa ), BSD è un kernel più vecchio in ordine di creazione ed è utilizzato specialmente per la sicurezza. Hurd è un caso a parte e consiste in un kernel al 100% free software.

Non voglio spiegare la questione kernel monolitico perché è un’articolo per i neofiti.

Il kernel a sua volta esegue i servizi (la connessione internet per esempio), il server grafico ed il desktop environment.

Cos’è il server grafico?

L’unico server grafico al momento è X.org che “disegna” l’interfaccia grafica e permette una interazione visiva con il software con dei puntatori (per esempio mouse). Questo server comunica direttamente con il kernel (anche con le schede video).

Recentemente sono nati anche altri server grafici come Wayland che dovrebbe spodestare X.org (ha 20 anni ed ha diversi problemi ingegneristici di base) ma al momento è prematuro utilizzarlo per il mancato supporto (completo) dai desktop environment.

Cos’è un Desktop Environment?

Con DE (userò la versione abbreviata) ci si riferisce all’ambiente grafico utilizzato (file manager, effetti grafici, gestione hardware ed altro). Negli altri sistemi operativi è uno solo ovvero quello predefinito dal sistema. In ambito open source ce ne sono diversi a seconda delle necessità e caratteristiche.

Le distro spesso usano un DE specifico oppure esistono in più versioni a seconda del DE.

Per esempio Ubuntu oggi usa Unity realizzato con le Qt (libreria grafica) anni fà utilizzava Gnome realizzato con le GTK (altra libreria grafica), Xubuntu usa Xfce (non è esoso con le caratteristiche hardware) realizzato con le GTK, OpenSuse usa KDE realizzato con le Qt.

I DE sono quelli che rendono attraente ed utile le distro all’utente e sono differenti particolarmente nell’interfaccia, nella sua organizzazione e personalizzazione oltre che al pacchetto software annesso.

A seconda del DE, per esempio, il file manager sarà un programma differente come anche il browser. Spesso infatti un programma di un DE è meglio di un’altro quindi è necessario utilizzare un DE e poi avere nel proprio sistema le varie librerie grafiche. Questo sistema sarà trasparente all’utente che potrà installare i programmi indipendentemente dal DE. Solitamente i programmi che iniziano per G sono dell’ambiente Gnome e quelli con la K di KDE.

Ci sono software realizzati con più librerie grafiche come Transmission (client torrent) disponibile in GTK, QT e web. Naturalmente non tutti i programmi fanno parte di un pacchetto software di un DE come Firefox o LibreOffice.

Diagram1

Un piccolo diagramma d’esempio, fonte http://www.blores.com/2010/09/gnome-vs-kde-comparison.html

La linea di comando

Chiamata anche terminale, shell o console è un’interfaccia diretta per dare dei comandi testuali al sistema in modo di velocizzare delle pratiche. Non serve solamente a questo anche perché alcuni programmi non hanno un’interfaccia grafica.

Inizialmente i sistemi operativi, come il DOS, non avevano un’interfaccia grafica e Linux è un ibrido avanzato tra il vecchio (da cui è nato) ed il nuovo (mondo attuale). Molte interfacce grafiche eseguono i comandi direttamente (per esempio il programma per la formattazione) mentre altri software no (per esempio LibreOffice edita e salva i file grazie al suo stesso codice).

Inoltre come in Windows e OSX si possono fare degli script (file testuali con un linguaggio di programmazione per eseguire i programmi), solitamente in Bash (la console più usata perchè ne esistono differenti). Per esempio io ne ho realizzato uno che chiede all’utente quanti fogli scansionare, quale email del destinatario utilizzare ed in automatico avvia la scansione e apre Thunderbird con le scansioni allegate. Fico no?

Questa linea di comando può essere avviata in più processi (istanze, esecuzioni insomma più finestre differenti) per fare più cose in contemporanea e con accessi differenti rispetto all’account di avvio del sistema.

10_more_funny_commands-sl

Ci si fanno anche cose stupide

I permessi, gli utenti e root

In ambiente Unix si ha una gestione permessi completamente differente da Windows.

I file (intesi sia come file generici che come applicazioni) singoli possono avere dei permessi per la scrittura lettura ed esecuzione a seconda dei permessi del singolo utente e del gruppo di cui fa parte.

Infatti per effettuare gli aggiornamenti bisogna avere dei permessi di tipo root (il super amministratore del computer).
In inglese root vuol dire radice (quindi le fondamenta) e spesso il termine è usato per la navigazione delle cartelle riferendosi all’elemento assoluto di partenza, per esempio in /var/www/ o C:\Program files rispettivamente la root è / e C:\.

Con i permessi root è possibile fare qualunque cosa dalla formattazione dei dischi, installazione/aggiornamenti dei programmi e di conseguenza anche fare danni.

Root è un account ma è anche un gruppo, quindi per evitare dei problemi in alcuni ambienti, viene usato il comando sudo (su è per fare il login con un’account amministrativo superiore) per eseguire programmi come utente normale ma il programma verrà avviato con i permessi di root. Soluzione ideale per i novizi ma gli esperti (tipo il sottoscritto che accedono direttamente da root).

m1rI9Esempio di sudo

Root viene usato raramente nell’uso quotidiano (direi per le funzioni che ho citato poc’anzi) e specialmente alla prima installazione per configurare il proprio sistema. Nell’uso normale gli unici permessi necessari sono quelli alla cartella del desktop e dei documenti e per l’esecuzione dei programmi non di livello amministrativo (esempio Firefox).

Questo sistema di permessi permette di “blindare” il sistema (programmi, file e cartelle) da comandi sbagliati ed agenti esterni come virus o bug di software.

Come si aggiorna?

Negli altri ambienti siamo abituati che il sistema operativo ha gli aggiornamenti automatici indipendenti dagli altri software presenti, quindi se io volessi aggiornare LibreOffice dovrei farlo manualmente oppure cliccando un pulsante dentro il programma stesso che lo fa automaticamente.

In questo mondo, a seconda della distro e del suo ambiente, si utilizzano dei repository ovvero grandi raccolte di programmi già pronti ed installabili che possono essere aggiornati tutti insieme.

Per esempio voglio aggiornare il kernel, Firefox, LibreOffice e KDE. Tramite un programma (dal terminale od interfaccia grafica) verranno scaricati (insieme alle librerie) tutti ed aggiornati tutti insieme e non sarà obbligatorio il riavvio del pc.

A seconda della distro in uso la versione del programma sarà diversa dalle altre perchè vengono aggiornate in tempi diversi. Alcune distro rilasciano anche le versioni in sviluppo (le future).

In ambito Debian (Ubuntu è basata sull’ecosistema Debian) il programma per gli aggiornamenti è apt/aptitude da terminale mentre una interfaccia grafica è Synaptic ed il formato dei pacchetti è .deb.

In ambito Slackware (Fedora, CentOS, Archlinux) usano yum/pacman ed il formato dei pacchetti è .rpm.

Questo sistema di aggiornamenti permette di scaricare in automatico le librerie necessarie sia grafiche che non e di ottimizzare quindi lo spazio del sistema per non duplicarle per ogni software installato (tre le altre cose).

e1q40

Un chiaro esempio (ps bugzilla è un programma di segnalazione bug)

Cosa uso?

Io uso Siduction che è basata Debian Sid (un ramo instabile che usa le versioni più aggiornate) con KDE 4.13.

Per l’ambiente multi monitor e la sua configurazione molto avanzata mi permette di ottimizzare il mio lavoro insieme alla filosofia di Debian che come amante Open Source cerco di seguire appieno (anche se sono molto pragmatico).

Conclusione

Quindi quando dici “uso Linux!” in realtà vuol dire tutto quello spiegato in questo articolo. Credo che avrai capito che questa esclamazione è minimalistica ed erronea ma è molto più semplice utilizzarla che spiegare la realtà.

Sono stato imparziale e realista su tutto l’articolo, cosa difficile in questo contesto

Riflessione

3tvdd4

Si dai ho smesso di farlo, al limite dico io posso

Non avendo approfondito la questione etica (è gratuito e cose del genere), non avendo parlato è meglio un programma di un’altro, non avendo parlato del supporto, non avendo parlato della mancanza di programmi professionali ormai standard (per esempio la suite Adobe non esiste per Linux anche se si può emulare), non avendo parlato di alternative ai programmi più blasonati, non avendo parlato di videogiochi (esistono ma non sono al livello nella maggior parte dei casi alle alternative Windows) e non avendo parlato delle guerre etiche/fanboy/gratuito/etcetc questo articolone ha compiuto la sua missione.

Spiegare in modo semplice, senza fuffa, le differenze tecniche tra i due ambienti. Tutte le questioni sopracitate sono ampliamente discusse in modo anche palloso sul web che cacciano gli utenti a scoprire questo mondo.

linux_user_at_best_buyParlare di quelle cose significa atteggiarsi in questo modo, si lo faccio pure io ogni tanto

Sbandierare il comune di vattelapesca è passato a Linux non significa niente.
Uso Linux perchè è tutto gratuito ed il codice è open non vuol dire niente.

Il cambio di un sistema operativo è una scelta complicata che ha molti fattori e richiede un’analisi di costi e benefici a partire dalla conoscenza del sistema per gli utenti finali, dei programmi di cui si ha bisogno e del famigerato supporto.

Molto spesso si usa Windows/OSX perchè i produttori offrono pacchetti software specifici funzionanti e pronti con un click. In questo mondo ci sono software per gli usi più strani e professionali ma non esistono sottoforma di pacchetto standalone (l’unico è LibreOffice). Quindi per il tecnico ignorante del reparto IT che sà cliccare su due pulsanti (se va bene) mettergli davanti la documentazione o la linea di comando significa farlo urlare mentre corre in tondo per diverse ore e rompere le balle al supporto con domande fatte male.

Le soluzioni software in ambito open source, come feature, la maggior parte delle volte sono molto più potenti e completi ma se l’utente ha usato per anni un software e conosce solo quelli e non accende il cervello bèh continueranno a scegliere quei sistemi.

Quindi il problema principale come mia esperienza per la diffusione di questo mondo è:

  • Programmi intuitivi (il passaggio da un sistema all’altro deve essere indolore il più possibile o si lamenteranno)
  • Riconoscere la propria ignoranza (cosa difficile)
  • Aprire la mente verso nuovi mondi che semplificano la vita
  • Spiegare senza la fuffa che ho citato sopra (all’azienda se quel programma è più etico di quell’altro poco importa, và educata nel tempo)
  • Perdere tempo per spiegare come si usa il nuovo sistema (esempio risorse del computer non esiste)

Adesso scatenatevi con i commenti!

Questo articolo è proseguito con Quanto costa l’Open Source? È veramente gratuito?
Oppure il più simpatico Spiegare Gnu/Linux a tua nonna!

PS: ci sono inesattezze e dettagli mancanti perchè era fuori luogo riempire il lettore novizio di cose che non capirebbe.

PSS: cito sempre LibreOffice perchè è molto meglio di OpenOffice.

PSS: i commenti riguardo assistenza Linux, quale programma è migliore dell’altro verranno cancellati. Esistono le community e Google. I commenti inerenti l’articolo invece saranno apprezzati 🙂

Liked it? Take a second to support Mte90 on Patreon!
Become a patron at Patreon!

11 commenti su “Le differenze tra le (distro) Linux e Windows/OSX (per novizi)

  1. Ciao. Bell’articolo complimenti! L ho trovato per caso googlando un po’! Dato che sono ignorante in informatica sapresti darmi il nome di qualche libro o pubblicazione ( magari gratuita ) che mi Introduca dalle basi in questo mondo??? Mi affascina tantissimo e voglio capirci qualcosa… Grazie per l articolo che hai postato

      1. Dovrà pur esserci un punto di partenza e fonti da cui attingere. Beh nel caso in cui non ci fossero, non posso far altro che restare ignorante 🙁

        1. Il miglior modo è provarlo ed usare le community. Di libri ce ne sono tanti introduttivi ma non li ho mai usati.
          Io presi una distro e l’ho provata e poi un’altra finchè non ho formattato e la uso ancora oggi.

  2. Sì Va be, una buona base ma troppo semplificata nel senso tendenzioso Vs Linux, i motivi per cui Linux non ha raggiunto la diffusione auspicata, sono molteplici, primo fra tutti la mancanza di software, è vero c’è ne sono di buoni e spesso gratuiti, ma non coprono tutte le esigenze, anzi direi una minima e basica parte, osx ne ha molti di più e migliori, Windows ne ha a bizzeffe, altro motivo le molte distribuzioni, con pacchetti e utility di installazione e manutenzione, spesso anche diversissimi tra loro, altro motivo le varie de, generano confusione nei novizi e le guerre di religione tra i vari user le alimentano, altro motivo spesso l’utente è lasciato solo se dei driver non funzionano od una applicazione od un device non vanno, spiegazioni complesse nei forum sparate da smanettoni che se la tirano (lo dico essendo uno di loro, quindi posso 😉 ) e niente passo a passo , in molti casi tocca compilare i pacchetti, modificare codice o cercarsi i reposity, gli utenti medi non lo faranno mai, giustamente. Ovviamente questo è il mio punto di vista, detto questo ti ringrazio per il buon articolo è la possibilità di discuterne.

    1. Io non ho mai compilato i pacchetti se non per sfizio 🙂
      Le community sono di aiuto quando non sono quelle generiche altrimenti flame war

  3. Vorrei precisare che il kernel non si chiama GNU/Linux ma solo Linux. GNU invece sarebbe il resto degli altri programmi creati dall’omonimo progetto che, insieme a un qualsiasi kernel, formano un sistema operativo completo (concedetemi la spiegazione elementare). GNU quindi può essere combinato con altri kernel, come quello di FreeBSD o Hurd. Inizialmente Hurd era il kernel pensato dal progetto GNU per completare il suo sistema operativo libero ma, visto che tutt’ora è incompleto, si è deciso di unire i programmi GNU con Linux creando così un sistema già completo: ovvero le classiche distribuzioni GNU/Linux come, ad esempio, Ubuntu.
    Per maggiori informazioni consultate questa pagina: https://www.gnu.org/gnu/linux-and-gnu.it.html

    1. Il nome dovrebbe essere GNU/Linux perché come dice Stallman é realizzato sfruttando gli strumenti e librerie messe a disposizione da GNU.
      Ma il target dell’articolo serve a fare formazione e non entrare nei dettagli che all’utente potrebbero non interessare e poi le varie distro si chiamano GNU/Linux come Debian quindi é meglio specificare il concetto in grande che togliere dei termini.

  4. Sono un novizio.
    Ho scoperto il tuo sito attraverso i tuoi podacast e continuerò ad esplorare e leggere ciò che pubblichi.
    Grande Daniele, complimenti!
    🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *