Certo, essa semana demos inicio novamente à serie Os Vários Sabores de Linux. Essa é a segunda temporada desta serie que todo mundo vive me pedindo para que volte e eu escolhi a distribuição Alpine Linux para dar a abertura:
OK. E por que vou contar como conheci essa distribuição? SIMPLES! Porque ela é importante. Essa é a base para me ter dado inicio a MUITO ALÉM DO GNU. Daí agora a indagação deve ser: "Como assim?"
Bora debater então. Antes de contar como conheci o Alpine, é preciso dar um passo atras, coisa de dois anos. Mais ou menos em 2010 ou 2011 eu li uma noticia de que já era possível compilar o Linux com o Clang. Isso me chamou a atenção porque podíamos usar outro compilador além do GCC. Fora que a primeira biblioteca que eu conheci que não fosse a tão divulgada GlibC foi a uClibc. Daí em 2012 eu estava pesquisando no Google sobre um carro da Renalt chamado Alpine. Esse da foto abaixo:
Renalt Alpine
E como o Google vinculou a pesquisa a o que pesquiso bastante (Linux), logo o Google me devolveu como resposta Alpine Linux. Daí pensei:
"Uma distribuição com o nome de Alpine? Bora ver o que ela tem a oferecer"
Viram como nem sempre é sinal de que estão te espionando?
Descobri que era uma distribuição que utilizava a Musl como biblioteca C padrão ao invés da GlibC e o busybox ao invés do Bash. Primeiramente procurei saber o que a Musl tinha oferecer (e me apaixonei) e segundo é que se ligarmos os fatos, uma distribuição com kernel Linux, com uma biblioteca C que não é do GNU, um terminal que não é do GNU (apesar que o Busybox é um agrupamento de coisas que já existem, mas o toybox não) e ainda podermos compilar tudo com um compilador que não seja o GCC me levou a fazer as seguintes perguntas:
"Quer dizer que Linux não possui vinculo obrigatório com o GNU? Quer dizer que Linux se estende a muito além do que GNU tem a oferecer? Ou seja, Linux não está limitado a GNU?"
E a resposta é: EXATO PARA TODAS AS PERGUNTAS!
Eu já era analista há quatro anos e não sabia disso. Eu a deveria saber até antes disso uma vez que já havia feito curso de LPI três anos antes desta descoberta e há anos usava KDE. Mas OK.
Você deve estar se perguntando:
"Mas então por que quando digitamos uname com as opções -a ou -o aparece escrito GNU/Linux?"
uname, uname -a e uname -o
SIMPLES! Isso acontece porque o comando uname que você utiliza foi desenvolvido pela comunidade GNU fazendo parte do pacote coreutils. Essa foi uma forma de promover a fraca ideia da obrigatoriedade do nome GNU/Linux. Falando de core-utils, ainda vai ter um vídeo no canal debatendo e destrinchando um pouco melhor o assunto.
man uname
Mas retomando o raciocínio, se baixarmos o toybox (seja código fonte ou binário), e digitarmos ./toybox aparecerá uma lista de comandos. Apesar de comandos que você provavelmente já conheça, todos estes comandos foram escritos do zero, inclusive o comando uname ;)
Comandos do toybox
Digitando ./toybox uname -a ou ./toybox uname -o, repare que aparecerá somente o nome Linux e não GNU/Linux.
Ele detém os direitos autorais sobre o nome Linux. É aí que eu acho a comunidade GNU incrível, defendem tanto que tudo deve ser livre e que tudo o que é proprietário é abominável mas brigam muito pelo direito do nome do seu sistema operacional livre aparecer em destaque em um nome proprietário... Alias, a comunidade GNU pediu autorização a Linus para chamá-lo de GNU/Linux? já que eles defendem o que é moralmente correto a ser feito, pedir autorização para tal uso é o que DEVE moralmente correto ser feito. Sabiam inclusive até que Linus poderia meter um processo nessa galera que quer forçar a todos a chamar de GNU/Linux pelo uso do nome Linux sem sua expressa autorização?
Fica então a matéria para meditação, aprofundem-se em conhecer melhor o sistema operacional que utilizam e azar de quem vier fazer dar chilique defendendo a GNU.
Apesar da minha paixão pelo KDE, o Gnome (assim como o Debian) é a interface Gráfica mais utilizada no Linux; porém não de forma pura, mas unindo seus derivados como do PopOS, do EndlessOS, o antigo Unity do Ubuntu, a versão do Deepin Linux e muito mais. Eu gostava da antiga versão do Gnome que utilizávamos em versão como o Fedora 6, Fedora 9 e assim por diante. Quando o Debian migrou para o Gnome 3 eu acabei perdendo interesse devido o Gnome ter mudado radicalmente. Ainda assim há coisas que eu gosto no Gnome como abraçar tecnologias de forma mais rápida como o Wayland, flatpak, capabilities e o systemd.
Porém algo que me chamou atenção (e até me surpreendeu) foi que no dia 14 de abril o projeto Gnome postou eu seu Twitter a seguinte frase:
Vamos também esclarecer isso aqui. GNOME NÃO é um projeto GNU.
Vamos também esclarecer isso aqui. GNOME NÃO é um projeto GNU.
Eu confesso que fiquei surpreso pois sempre acreditei que fosse baseado no argumento de que o Gnome é construído sobre o GTK (como se o fato de utilizar uma ferramenta tornasse um projeto propriedade do outro...). Mas até aí tudo bem, a questão é que entre apoiadores e criticos, foi uma discussão gigantesca que rendeu assunto. Bom, treta é o que não faltou (já que os defensores ferrenhos da "liberdade" acham que qualquer um que não apoia as suas "ideologias" são radicais e subversivos e não adianta argumentar, eles sempre vão querer arrumar defeitos para argumentos. Velho argumento: Acuse os adversários do que você faz e chame-os do que você é).
Um comentário interessante foi do Gerente de Engenharia da Red Hat Alberto Ruiz e que também já trabalhou em empresas como Canonical, Codethink, Sun Microsystems que, quando mencionado que o Gnome está listado no projeto GNU e que deveriam pedir para removê-los da lista, Alberto afirmou que já haviam pedido por muitas vezes e que o projeto GNU se recura a remover. (essa eu devo ao Renato do canal FastOS até pela paciência dele de filtrar tanto as coisas).
Outro comentário que gostaria de mencionar foi esse aqui questionando se a história sobre o termo gnu/Linux precisa ser reescrita.
A questão é que a história ela nunca foi realmente escrita, ela foi unicamente contada por apenas um lado (pelo GNU para se promover).
Por conta de dizer a verdade e da minha série intitulada Muito além do GNU, até hoje há muitos afirmando que "eu odeio GNU"... Eu vou voltar a repetir o que eu já disse. O nome da série é MUITO ALÉM DO GNU e não eu odeio GNU; o que eu mostro é como o mundo open source é muito mais amplo do que o projeto GNU tem a oferecer (e muitas vezes melhor). O problema dos que afirmam isso é que eles só enxergam o que eles querem, se tornaram escravos disso (fato estranho para os que defendem a "liberdade"). Agora, se me acham radical por conta de Muito além do GNU, então fiquem com o comentário abaixo e divirtam-se (ou chorem, que é o que sabem fazer de melhor).
Estou percebendo que em breve vamos ver o mesmo cenário se repetir com GTK, o Gimp, o wget, o patch, o ncurses e muitos outros já que o projeto GNU gosta de brincar de senhor feudal no mundo do software ("liberdade"...).
Esta semana na série Muito além do GNU resolvi desmistificar um assunto muito mal explorado por toda galera que gosta de defender GNU a todo custo:
Que todos os comandos que utilizamos (menos os gerenciadores de pacotes) fazem parte do pacote coreutils do GNU.
Chega a ser ridículo mas sim, eu já recebi esse tipo de comentário pelo menos umas quatro vezes no canal. Uma prova disso foi que até comentário que chegou a ser apagar; mas não tem problema, o print do comentário está aqui:
ifconfig faz parte do pacote net-tools do... projeto GNU? Algo errado não está certo.
A unica coisa que eu percebo é a falta de estudo que essa galera tem, a arrogância de acharem que GNU é indestrutível e ainda de defenderem o que não conhecem.
Resolvi então neste vídeo tratar de quatro pacotes que não tem vinculo com o pacote coreutils do GNU e que sem esses pacotes o sistema operacional fica quase inútil. Na verdade não seríamos capaz nem mesmo de formatar a máquina:
Os comandos dos pacotes Util-Linux, nettools e Iproute2 são pertencentes ao Linux, não ao GNU. Até mesmo o nome do primeiro já sugere tal coisa, não seria nem mesmo necessário debater o assunto. Inclusive todos eles se encontram hospedados no site do kernel.
Façamos uma pequena analise um pouquinho mais a fundo. O comando date por exemplo, que é um comando utilizado para verificar hora e data (e alterar hora e data também inclusive), faz parte do pacote coreutils do GNU (digite o comando man date e verifique a licença no final do manualou digite o comando info coreutils date). OK, isso está certo.
Porém já o comando hwclock, que serve para verificar data e hora do hardware (vindo do BIOS, UEFI, Chip PROM ou qualquer coisa do tipo) e que serve também para alterar sua hora e data (tanto do hardware como do hardware para o sistema e vice versa) faz parte do pacote Util-Linux(digite man hwclock e verifique a linha sobre o autor. Ou digite info coreutils hwcloc e veja o resultado desastroso).
Já o comando cal foi escrito por Wolfgang Helbig da comunidade FreeBSD e o comando calendar veio da versão 7 do Unix da AT&T. O próprio SSH é originado dos BSDs para o Linux:
Na imagem abaixo temos uma lista de comandos que fazem parte do Util-Linux:
Lista de comandos do pacote Util-Linux
E na próxima abaixo temos uma lista de comandos que fazem parte do coreutils do GNU:
Lista de comandos do pacote coreutils
A conclusão que eu chego é que eu percebo em muitos usuários que se apaixonam pelo projeto uma inocência muito grande e defendem com unhas e dentes e a todo custo sem o minimo de conhecimento básico. Isso se torna culpa dos usuários mesmo não se interessarem em ler, pesquisar e se aprofundar.
O dia que Laurent Bercot calou Richard Stallman: Eu não uso GNU, eu uso Linux!
Em Fevereiro de 2022, Laurent Bercot, autor do projeto ferramentas skarnet, como a skalib, execline e s6 (s6 é fortemente utilizado em containers e há uma proposta para o Alpine Linux adotá-lo) postou em seu perfil no site X o dia que deixou Stallman calado ao dizer que utilizava que utiliza exatamente Linux e não utiliza projeto do projeto GNU.
Bom, eu já sou conhecido por ser escorraçado por essa galera devido a minha série Muito além do GNU e, gostem eles ou não, eu vou sempre postar sobre o assunto porque, tudo no Linux é uma questão de escolha. É simples lógica e de se encarar a realidade (o que não é o forte deles). A diferença entre eles e eu (e isso eu digo categoricamente) é que eu afirmo tudo isso baseado em argumento técnico enquanto eles só se baseiam em paixões. Essa é a prova exata de que eles se quer já leram uma manpage.
Bom, vamos a o que realmente nos interessa neste post que é o artigo que, além de abordar a quebra desse paradigma irreal (GNU/Linux) também nos apresenta a origem do projeto Skarnet e de suas ferramentas.
A Convenção anual de software livre na França
Havia uma convenção anual de software livre na França mas o debate entre Stallman e Bercot ocorreram inicialmente na convenção do ano 2.000 e estendendo para a convenção de 2.001. Stallman estaria presente ambos os anos para fazer sua apresentação. Laurent e seus amigos foram à convenção do ano 2000; foi sua primeira vez em um evento desses e ainda era muito novo nas comunidades open source.
"A apresentação do RMS foi... interessante. RMS é (era?) um excelente pregador. Ele é, de mais maneiras, uma figura religiosa, e eu entendi porque ele tinha tantos fanáticos. A causa que ele estava pregando era correta e nós tinhas vontade de abraça-la."
Depois da palestra de RMS, todos estavam conversando em um corredor, Larent não sabia mas RMS estava atrás dele. Quando Laurent soltou a palavra Linux no meio de sua conversa, pronto... RMS parou na mesma hora a conversa que estava com outras pessoas e, nas palavras de Laurent, "como um tubarão cheirando farejando sangue" começou o seu discurso de moral e ética explicando porque Laurent deveria dizer GNU/Linux em vez de Linux, por pelo menos três minutos; o que nas palavras de Laurent era muito muito tempo. Era mesmo se levarmos em conta que é de pura balela. Aquela mesma lenga de sempre que vivem copiando do site do GNU postando nos grupos e comentando no meu canal de "Eu só gostaria de interromper por um momento. O que você está se referindo como Linux, é na verdade, GNU/Linux, ou como eu comecei recentemente a chamá-lo, GNU e Linux. ..." e bla bla bla bla bla.
Bom, moral da história, Laurent só ficou ouvindo de forma insegura sem confrontá-lo no meio dos seus admiradores enquanto que Stallman simplesmente sorriu de autossatisfação, deu as costas e saiu andando sem parar para ouvir o que Laurent teria a dizer, porque escutar não é o forte do stallman.
Laurent diz que se sentiu humilhado e a partir dali, Laurent começaria a sua revanche (ia ter revanche; ah sim, ia).
O início da skarnet
Laurent agradece a Stallman por sua atitude pois a partir daí, Laurent se interessou por detalhes de como Linux bootava, quais componentes são necessários para faze-lo bootar, quais pacotes alternativos existiam que lhe permitiriam bootar o Linux sem executar qualquer coisa de origem do GNU; como init system é feito e o que é POSIX.
A glibc foi substituída pela dietlibc e o coreutils foi substituído pelo embutils, ambas ferramentas desenvolvidas por Felix Von Leitner e já apresentadas tanto aqui no blog quanto no canal.
As outras partes que faltavam foram desenvolvidas pelo próprio Laurent. Laurent afirma que foram noites de sangue suor e lágrimas mas depois de quase um ano inteiro Laurent conseguiu bootar seu servidor Linux sem uma única peça de software do projeto GNU. E assim nascia o projeto http://skarnet.org que inicialmente se chamava antah server e Laurent estava pronto para a revanche.
A revanche
A convenção de 2001 não foi diferente da do ano anterior (mesmos rostos e mesmas conversas) e a palestra do Stallman foi basicamente a mesma coisa do ano anterior com a mesma dinâmica (o que não é nenhuma novidade).
Quando foi aberto espaço para perguntas, Laurent teve a sua chance. Na verdade Laurent nem se lembra qual foi a sua pergunta e o bom da verdade é que ele disse que isso não importa pois sabia que iria conseguir completar a sua pergunta depois de sua abordagem inicial:
"Eu uso Linux."
Quando Stallman quis interromper o raciocinio da pergunta (como de costume ele faz ao ouvir a frase "Eu uso Linux", Laurent já o interrompeu:
"Não. Eu use Linux, the kernel. Eu não uso GNU. Não há software GNU na minha máqina, o userspace é feito de outros tijolos de software. Quando eu digo "Linux", eu quero dizer exatamente o que eu digo."
Laurent disse que Stallman ficou olhando para ele boquiaberto e não disse uma palavra e, nas palavras de Laurent, foi GLORIOSO. Seus amigos estavam rindo perto dele.
Abaixo estão prints de evidencias do site Skarnet nos dias atuais; até hoje não há presença de ferramentas do projeto GNU. trata-se de ferramentas bem interessantes levando em conta o downtime total e a quantidade de vulnerabilidades exploradas (apenas uma e sem sucesso) durante ~23 anos.
Claro, como sempre Stallman não daria o braço a torcer (o que já era de se esperar) e soltou a seguinte frase:
"Okay, bom, você provou um ponto. No entanto, esta é uma ocorrência bastante rara; em praticamente todas as máquinas, o sistema GNU..."
E blablabla... Laurent diz que, mesmo não tendo mais como argumentar por serem incapaz de se questionar, ficou satisfeito porque encontrou seu propósito na jornada, alcançar o destino foi apenas um bonus. Depois disso, Laurent voltou para casa e continuou trabalhando em software de baixo nível para Linux. Depois disso, Laurent até palestrou no FOSDEM de 2017 sobre o s6, mas não voltou mais a eventos de software livre (fez bem).
Depois disso tiveram comentários interessantes como:
"I submeti um patch para o core utils para remover "/GNU" por exatamente o motivo que você especificou. O patch foi rejeitado :)"
é obvio que seria rejeitado né
"RMS ficou muito chateado quando tornamos a Web libwww public domain ao invés de disponibilizar sob GPL. "E se a Microsoft pegar o seu código?" Esse era exatamente o nosso objetivo."
Toma
"Em 2006, eu estava bebado e debati com ele o fato de que as pessoas precisam de dinheiro para viver, o que deixou ele muito ofendido."
Pow, até um bêbado destrói os argumentos dele. Alias, Stallman acha ruim as pessoas ganhar dinheiro mas ele mesmo cobra para tirar foto com ele (e cobra caro ainda por cima) e até mesmo por autografo. Hipocrisia bem típica.
Ninguém é *forçado* a utilizar ferramentas do GNU com o Linux. Por exemplo, eu tenho um box com ferramentas do Plan9 (rodando Gentoo). Então chamar de "GNU/Linux" seria simplesmente errado.
Isso é verdade, eu mesmo já mostrei várias vezes o projeto 9Base que são comandos do sistema operacional plan9 portados para Linux (agradeço ao plan9 por várias ferramentas que existem no Linux hoje).
A frase final de Lauent é simplesmente a melhor forma de descrever do que se trata a minha série Muito além do GNU:
Eu acredito que eu sou a primeira pessoa que na verdade fez isso na vida real, e eu vou continuar usando este distintivo com orgulho. E me deixa perplexo, dado o montante existente de userspace de baixo nível que não são do GNU hoje em dia, a FSF ainda acredita que Linux == GNU. Fósseis!
Além de não existir somente ferramentas do GNU, ainda temos o segundo ponto que Laurent descreve bem no inicio que eu já mencionei por várias vezes: A maioria das ferramentas que utilizamos no Linux, não são do GNU. Elas vem de outros sistemas operacionais como IRIX, Solaris, BSDs e até do próprio Linux (vocês que dizem que Linux é somente o kernel, vocês estão simplesmente muito enganados).
"Eu não culpo RMS ou a FSF por quererem comercializar com precisão o projeto GNU. No entanto eu os culpo por se recusarem a reconhecer que o GNU não possui o monopólio no userspace para Linux mais. Eles não tinham 21 anos atrás eles com certeza não tem hoje."
Como eu sempre digo, não existe GNU/Linux nem tecnicamente, nem historicamente e nem juridicamente falando. Liberdade diz respeito a escolha e não a uma licença (que diga-se de passagem está em pleno declínio).
Linux não não é e nunca foi limitado ao uso de ferramentas do projeto GNU; se isso fosse verdade, então não haveria liberdade. A adoção de ferramentas do projeto GNU no passado (e até no presente) foi dado devido a conceitos técnicos e não ideológicos como gostam de lhe contar. Desenvolvedores de outros Unix melhoraram as ferramentas do projeto GNU para seu próprio uso (como é o caso dos desenvolvedores de Solaris. Sejam gratos a eles, se não o GCC nem teria ido para frente) como uma alternativa mais barata e assim o projeto GNU se beneficiado (algo que eles costumam ocultar).
O dia em que o pinguim adquire asas e cauda de um dragão de ferro.
Desde que eu utilizo Linux, os asciduos usuários de Linux sempre utilizaram o argumento de Linux é somente o kernel enquanto que as ferramentas são do projeto GNU. Este argumento, além de fraco e inutil, deixa as pessoas confusas quanto ao Linux, desvirtua as pessoas do verdadeiro conhecimento tecnico e afasta-as de conhecer novas ferramentas que poderia ser muito mais uteis. Existem Muitas ferramentas que podem substituir as do projeto GNU tanto em empresas quanto no uso comum em seu dia a dia. conheça aqui algumas delas.
Anos atrás (especificamente em 2010) li a noticia de ser possível compilar o Linux com o Clang. Eu, com a minha paixão pelos ideais de software era grande, discordei de tudo o que foi dito (paixão é fogo e nos cega). Alguns dias (ou semanas) depois, publicaram um benchmark entre algumas versões do GCC, do Clang, do ICC da Intel e do ovo de dragão (Dragon Egg).Passado algum tempo, tive a curiosidade de pesquisar sobre o Clang e acabei gostando do que descobri a respeito do compilador. Foi bom saber que haviam outras opções para compilar o Linux além do GCC; como em tudo o que há no Linux são outras opções (GUIs, editores de texto, navegadores, terminais de comando, comandos e tudo mais, a regra vale também para compiladores, bibliotecas e tudo mais).
Esse é o tipo de liberdade que gosto; a liberdade de escolher o que quero e o que vou utilizar; a liberdade se estende a muito mais do que as citadas pela GPL e não ficar preso ou limitado à uma única opção. Seria a mesma liberdade que tenho de ir ao mercado e poder escolher se quero presunto de uma marca ou de outra (a lei da concorrência existe para isso, assegurar o nosso direito como consumidor e desta forma, as empresas busquem conquistar seus clientes com a melhoria continua de seus produtos ou serviços).
Como mencionei, eu até era extremo defensor de software livre e de código aberto (ainda defendo a adoção de ferramentas open source, mas não da forma que eu abordava anteriormente acreditando que software proprietário representam ameaças à humanidade), recebia newsletters da FSF por e-mail, porém, tomei antipatia quando Richard Stallman ficou cantando vitória sobre a morte de Steve Jobs. Mas ainda assim, continuei com os ideais de software livre e de código aberto. Certa vez participei de um podcast onde um dos convidados que não vou mencionar o nome (e por favor, não me perguntem quem é, pois não irei responder; citação de nome é difamação) era defensor de software livre. Até aí tudo bem, eu também era; o problema é que o cara não queria participar simplesmente pelo fato do software que iria ser utilizado para gravar não era (totalmente) livre; isso rendeu alguns comentários. Depois começou a ficar difícil interagir com ele, pois tudo para ele era somente software livre sem ouvir o que o outro lado tinha a dizer. Percebi que eles pregam a liberdade mas se tornam escravos de tais ideais, se tornam flexíveis.
Gosto de software livre e de código aberto, não deixei de usar as ferramentas do projeto GNU (e talvez não deixa de usar tão cedo), mas da comunidade eu passo longe (a não ser que venham me encher a paciência kkkk).
Alguns dias atrás, um amigo conversou comigo sobre chamar o sistema de GNU/Linux ou simplesmente de GNU, e não somente de Linux (como assim?). Beleza; o assunto encerrado depois de longo debate entre nós. Coincidência ou não, um ou dois dias depois um seguidor do meu canal comentou a mesma coisa no meu vídeo "Linux (dando nome a criança):
O nome correto é Linux e não de GNU/Linux (e muito menos somente de GNU. GNU seria horrível). Primeiro porque Linux é um nome proprietário (uma propriedade intelectual de Lius Torvalds que pode lhe autorizar utilzar seu nome ou não); segundo, não há somente ferramentas GNU presentes no sistema operacional Linux (isso sim é uma verdadeira falácia e desinformação); terceiro, as ferramentas GNU são substituíveis e quarto, ambos são projetos distintos com propósito e propostas diferentes. Essa guerra por reconhecimento de nome do sistema operacional é na verdade relacionada a ego e não ao argumento meritocracia. Mesmo que discordem de mim, eu afirmo:
O GNU só é um projeto bem sucedido e amplamente utilizado graças a sua adoção pelo Linux (mesmo o GNU sendo mais velho). Duvido que o Gnu seria amplamente conhecido se não fosse o Linux.
Se considerarmos chama-lo de GNU/linux ou somente de GNU, então deveríamos considerar todos os outros projetos que utilizamos no Linux e que não fazem parte do GNU e que compoem o sistema operacional.
Quando se fala de GNU, as pessoas só lembram do stallman; não nos lembramos de pessoas como Brian fox que foi o autor do Bash, do GNU Makeinfo, do GNU Info, do GNU Finger, thereadline e history libraries além de ter sido o mantenedor do GNU Emacs por um tempo (e há quem acredite que o Stallman que é o cara). Alias, em torno de 80% das pessoas nem sabem destas coisas e acabam dando créditos ao Stallman.
Brian Fox, autor do GNU Bash
Muitos não se lembram de Mark Adler, que foi um os criadores do Gzip (e que inclusive é um dos responsáveis pela missão espacial para Marte).
Mark Adler, um dos autores do Gzip e um dos responsáveis pela missão de exploração ao planeta Marte.
Muitos não se lembram de pessoas valiosas como essa. Já quando falamos de linux, o caso é o contrario disso; quem já esteve em um evento como a Linuxcon sabe que isso é bem diferente.
Existem muitas ferramentas do GNU que são utilizadas no Linux, e disso todos nós já sabemos. Ferramentas como: GCC, make, Glibc, Bash, Coreutils, Emacs, Gzip e etc. A questão é que tais ferramentas são passíveis de substitução; é aí aonde a liberdade entra em cena.
Então, para esclarecer esse assunto, selecionei aqui algumas dentre as muitas ferramentas que são possíveis utilizar no lugar das mencionadas do GNU. Não estou fazendo isso com a intenção de discussão, apenas procurando ajudar vocês a ampliarem seus conhecimentos e abrir os seus olhos para a gama de software de qualidade que o mundo proporciona.
LLVM (Low Level Virtual Machine) é uma coleção de compiladores modulares e reutilizáveis que foi iniciado como um projeto de pesquisa na universidade de Illinois. Está sob licença open Source UIUC no estilo BSD. que mencionam que pretendem mantê-lo permanentemente aberto.O Clang, compilador que mencionei no inicio deste artigo, que é uma alternativa ao GCC, faz parte do LLVM. A palavra Clang (pronuncia-se cléng) é uma onomatopeia em inglês do som emitido pelo metal. O Clang possui as características de compilação mais rápida, menor uso de memória e melhores ferramentas de diagnósticos como no modelo apresentado abaixo:
Comparação das ferramentas de analise de log do GCC e do Clang.
Há muitos recursos e atributos interessantes no LLVM/Clang para os desenvolvedores e pessoas que integram sistema podem tirar vantagem quando desenvolver ou implantar seus próprios projetos. Um outro recurso interessante mencionado no site do Funtoo Linux, é a sua capacidade de compilação de programas Leiam o artigo em http://www.funtoo.org/Clang ou leia na imagem abaixo:
Existem muitas empresas trabalhando e investindo recursos nesse projeto. Até mesmo a Microsoft está investido recursos financeiros no LLVM, pois irá basear o seu futuro .Net no LLVM.
Acompanhe a lista de empresas e projetos que utilizam o LLVM
Na verdade, até aonde se sabe, existem quatro compiladores que são capazes de construir o kernel Linux sendo eles o GCC (que na verdade é o EGSC), o TinyCC do criador do ffmpeg, o ICC da Intel e o LLVM/Clang. Nos vídeos abaixo você pode conhecer melhor sobre os compiladores.
Musl (pronuncia-se mâssl) uma biblioteca C desenvolvida do zero. O site do Musl mostra um gráfico comparativo entre as bibliotecas C. A empresa OpenWall faz referência a biblioteca Musl por oferecer suporte nativo ao pacote TCB.
Existe a distribuição Alpine Linux que faz uso dessa biblioteca ao invés da Glibc e do Busybox ao invés do Bash. Para quem não sabe o que é o Busybox, ele é conhecido como o canivete Suíço do Linux embarcado. É um conjunto de comandos dentro de um único executável. É o Busybox que fica dentro o initrd para o kernel utilizar no momento do boot. Foi originalmente desenvolvido por Bruce Perens que já foi presidente do projeto Debian assumindo o lugar de Ian Murdock.
Aproveitando que falamos de terminais de comandos, existem também pacotes com comandos complementares como no caso o CoreUtils do GNU que, semelhantes a esse são o embutils criado por Felix von Leitner (criador da dietlibc que eu acho incrível); o 9base de origem do plan9 e portado para outros sistemas operacionais; o sbase que é uma coleção de comandos herdados dos Unix e portados para 5 Unix diferentes e o ubase que já é específico para Linux seguindo mesmo espirito do Util-Linux e está sob licença MIT e X; o ubase pode ser compilado com o GCC, LLVM ou TCC e é altamente recomendado compilar com a musl.
Até mesmo os comandos do toybox que podem ser compilados separadamente. Porém, estes pacotes não fornecem apenas um conjunto básico de comandos não sendo o suficiente para ter um sistema operacional em funcionamento. Como exemplo, o coreutils não fornece comandos para formatar partições, configurar rede, gerenciar processos, drivers, serviços e muito mais (o argumento apresentado para tentar chamar o Linux de GNU/Linux é simplesmente muito superficial e utilizado pela equipe do GNU e da FSF para se promover). Estes comandos são fornecidos por outros pacotes sendo muitos deles do próprio Linux e alguns deles criados pelo próprio Linus Torvalds e outros com sua participação:
Tukaani, era uma distribuição derivada do Slackware (que merecia ter sido mencionada no meu vídeo sobre o Slackware devido a sua ótima contribuição) e que deu origem a alguns projetos. A distribuição não existe mais, mas as ferramentas que eram parte integrante da distribuição estão em pleno desenvolvimento.
Em suas primeiras versões chamava-se de LZMA, é um compressor que nasceu na distribuição. O XZ hoje é utilizado fortemente pelo kernel desde de Dezembro de 2.013 e pelo Funtoo desde 2.008 (como mencionei no meu artigo parabenizando a equipe do Funtoo). O XZ apresenta melhor compressão do que o Gzip mesmo em compressões com o Gzip utilizando a opção "-9". Na verdade o XZ apresenta melhor compressão até mesmo que o Bzip2.
Dentre os casos de sucesso do CMake podemos ver o Netflix, o KDE, o game Second Life, sistemas de robóticas, o MySQL entre outros. Um coisa que considero a equipe do CMake é a sua humildade.
Falando de CMake, eu não poderia deixar de citar o Scons, que também é uma ferramenta de construção. Escrita em Python, o Scons visa ser um substituto para o tradicional make e que possui funcionalidade integrada semelhando ao autoconf/automake.
Muitos já elogiaram o Scons; pessoas como Eric S. Raymond, authr de "A Catedral e o Bazaar", Timothee Besset da id Softwareonde menciona que o Linux build system do Doom3 utiliza o Scons e que é show. Essa já é a segunda vez que ouço que o Scons é utilizado em compilação de alguma coisa relacionada a jogos. Gosto de considerar a parte da avaliação envolvendo jogos devido sua dificuldade de programação que envolve inteligencia artificial, simulação de física, renderização e etc.
O mk surgiu no sistema operacional Plan9 como um simples substituto para o make, mas que provê várias extensões, flexível e execução em paralelo. É possível compilar o mk também para Linux, BSDs (Free/Net/OpenBSD e Darwin), Solaris, HP UX e OSF1.
Smake é focado em alta portabilidade já que GNU Make não está disponível para todas as plataforma que o Smake (Linux, Windows (até MSDOS), MacOSX (e versões anteriores), Solaris, SSPM, PPC, HPUX, AIX), gnu make não permite realizar debugging no Makefile.
O comando smake e suas opções de des/compactação.
O Smake possui também seu Makefiles que permitem montar uma source tree via NFS e simultaneamente compilar (e reutilizar) para todas as plataformas. Além do Cmake, do Scon, do MK e do Smake temos também o Ninja Buil e o Samurai é compatível com o Ninja Build (e até mesmo um concorrente direto).
Exemplo de uso do smake
Man
Apesar de muito conhecido, incluí o Man nessa história por que o GNU possui o seu próprio, o comando info. Detesto o info; hora ele é útil, a maior parte do tempo não.
Percebi que projetos fora do GNU ou até forks são em certos aspectos mais eficientes em seus propósitos. Não estou aqui difamando o projeto GNU, mas a mesma mensagem que deixo aos usuários de Windows envio também às comunidades de software livre de código aberto: Não devemos ficar presos unicamente à ideias ou paixões. O mundo é muito mais amplo do que possamos imaginar e podemos usufruir de tudo isso dando chance a outros projetos também. Adaptar ou morrer é um fato.
Se uma ferramenta surge para bem e vindo a substituir a já existente, ela deve ser bem recebida. Isso é algo que acontece constantemente no Linux. Essas ferramentas vem para a melhoria das nossas próprias vidas. O que vejo é muita rivalidade inútil ao invés de foco na coisa mais importante, que é a melhoria contínua.
Lembrem-se não somente do GNU, e sim de todos os projetos de open source que compoem o Linux (está muito longe de ter somente ferramentas do GNU presentes no sistema operacional). Lembrem-se de todas as licenças que também proporcionam e possibilitam a liberdade (GPL não é única. Existem em torno de 800 licenças). Lembrem-se de todas as pessoas que contribuem para esses projetos; graças a elas é que os projetos tem crescido e evoluído. E o mais importante unindo aos três itens mencionados, lembrem-se de serem livres (liberdade vai além da GPL, FSF e GNU).