Tenho a felicidade de trabalhar em um ambiente linux utilizando apenas softwares disponíveis publicamente, a maioria deles do Projeto GNU.

Editor: emacs
O emacs já foi chamado de Sistema Operacional Escrito em Lisp por ser profundamente customizável atraves de funções em lisp. O emacs propriamente dito exporta um conjunto de primitivas lisp que são então utilizadas para implementar a funcionalidade desejada.
O emacs se adapta ao tipo de arquivo que esta editando. Existem diversos "modos" especiais para, por exemplo, editar listas e fazer desenhos. Pode-se abrir mais de um arquivo e/ou janela ao mesmo tempo. Podem-se editar arquivos que estão em outro computador.
Entre os diversos recursos que o emacs possui está o de disparar programa externos passando argumentos, a entrada padrão e exibindo a saida padrão do programa em uma janela do emacs. Com isto é pode-se ter um IDE -- Integrated Development Environment (Ambiente Integrado de Desenvolvimento) baseado em emacs num terminal a caractere.
Você pode também compor e ler seus e-mails dentro dele, acessar news, verificar o calendário, imprimir, jogar e até consultar um analista.

Interface Gráfica: X Window System
Existe outra? Na realidade existe pelo menos uma outra opção: openGL da SGI mas não sei se roda no linux.

Gerenciador de Janelas: fvwm
Uso fvwm mais por inércia: ele atende as minhas necessidades e quando começei era a única.

Browser: Netscape/lynx
O Netscape é o browser padrão para ambientes gráficos no mundo Unix. As versões que utilizo não são as mais recentes mas quebram o galho. Para mim, o maior problema do netscape é que ele vaza, depois de alguns dias rodando ele consome dezenas de megabytes de memória. Talvez versões mais novas não apresentem este problema.
O lynx é importante tanto para verificar que as páginas são legiveis sem as imagens quanto por ser "leve". Creio que ele possui todos os recursos do netscape a menos das imagens e algumas a mais como lista de links da página. Muitas vezes acesso a internet atraves de um link de baixa velocidade ou atraves de uma máquina sem X instalado e ai a unica opção é o lynx.
Outro uso frequente do lynx é como interpretador de comandos restrito (restrict shell). A idéia é criar uma página web com os comandos mais utilizados e pela ativação dos links executar os comandos ou disparar scripts para executá-los.

Leitor de e-mail: elm/mutt
O elm é um velho conhecido, a muitos anos que o utilizo. É bastante rápido, prático e tem todos os recursos que preciso. As vezes ele se confunde nos e-mails com "MIME". Nestes casos utilizo o mutt. A tendência é utilizar exclusivamente o mutt. Espera-se que em breve a versão 1.0 esteja disponível.

Recepção de e-mails: fetchmail
Descendente do popclient, o fetchmail foi escrito por Eric S. Raymond para inicialmente recuperar e-mail de um servidor POP3. Com o passar do tempo, passou a suportar POP2, POP3, RPOP, APOP, KPOP (Kerberos authentication), IMAP (veja também: The IMAP Connection) e ESMTP ETRN. Bastante flexível, podendo acessar mais de um servidor de e-mail, recuperar apenas as mensagens menores que x KBytes, etc. Veja a relação de recursos aqui. Pode funcionar também como "daemon" recuperando periodicamente as mensagens.

Classificação de e-mails: procmail
Imbatível. Escrito por Stephen "BugLess" R. van den Berg é o melhor programa para classificar e-mails que conheço. Extremamente flexível: os e-mails são separados em arquivos utilizando critérios de seleção baseados no remetente, destinatario, comprimento da mensagem, assunto, etc. Pode também ser utilizado para compôr respostas automáticas.
Fazem parte do pacote, além do procmail:
Ainda relacionado com correio eletrônico está o servidor de e-mail POP3 cucipop do mesmo autor.

Leitor de news: tin
Provavelmente não é o melhor cliente de news mas é simples, pequeno e resolve o problema. Pode ser facilmente adaptado às necessidades do usuário.

Compilador C: gcc/egcs
É um dos muito poucos compiladores de qualidade disponíveis gratuitamente na internet. O único outro que eu conheço é o lcc que é bem mais recente.
Vários fabricantes de equipamentos e softwares tem preferido portar o gcc a escrever e manter um compilador. A qualidade do código gerada é bem razoável.
Funciona também como "cross-compiler" podendo gerar código para micro-processadores de 8 e 16 bits.

Depurador: gdb
Outro produto da Free Software Foundation. Faz par com o gcc utilizando inclusive uma biblioteca comum para escrita e leitura de código objeto.
Os comandos estão disponíveis através de linha de comando. Esta interface não é das mais agradáveis mas resolve o problema. Por isso, foram criadas "cascas" (wrappers) que oferecem ao usuário uma interface gr´fica. Uma delas é o DDD -- The Data Display Debugger.

Controle de Versão: RCS/CVS
É incrível como são poucas as pessoas que fazem uso de um programa de controle de versões! A minha experiência se resume ao RCS mas é muito útil tanto para manter versões de programa como de documentação como, até mesmo, páginas web. Quando se está depurando um programa é sempre bom ter uma versão original para controle das alterações. No caso de documentação e páginas web, pode-se "voltar no tempo" e verificar quem, quando e porquê modificou o arquivo.
O CVS é uma versão do RCS para desenvolvimento paralelo em grupo. Diversos desenvolvedores alteram os mesmos arquivos ao mesmo tempo e o CVS, na medida do possível, administra os conflitos. Atualmente diversos projetos comunitários na internet (open source) utilizam um repositório semi-público com os fontes que podem ser lidos e alterados.

Controle de Configuração: Aegis
Outra ferramenta pouco utilizada pelos desenvolvedores de software é o Aegis. Com ele é possível desenvolver um sistema mantendo uma versão "mestre" sempre consistênte e pronta para ser demonstrada e/ou distribuída. Ele não permite a entrada de código que não tenha sido validado e testado no repositório. Além disso ele mantém um registro dos diversos processos aos quais o software foi submetido. Vale a pena utilizá-lo se você tem alguma disciplina ao programar!

Conexão segura via internet: ssh
Hoje em dia a preocupação com a segurança está cada vez maior e com a internet cada vez mais vasta passa a ser essencial a proteção das senhas de acesso. Quem garante que quando você acessa um computador remoto que exige identificação que alguem, em alguma máquina no meio do caminho, não esta bisbilhotando? O ssh evita isto criptografando a comunicação.

Programação de scripts CGI: perl
Realmente o perl faz juz ao seu acrônimo: Practical Extraction and Report Language. É muito fácil extrair informações de arquivos texto, os vetores associativos e os recursos de acesso a base de dados SQL ou não tornam o perl uma linguagem muito produtiva para desenvolvimento rápido.
A partir da versão 5 ficou mais fácil o desenvolvimento de sistemas maiores já que foi introduzido o conceito de módulo. Isto permitiu que muitas pessoas contribuissem com código. Hoje existem módulos que implementam desde bibliotecas matemáticas até análise de páginas web passando por processamento de texto e gráfico. Existe um repositório global de módulos perl com o nome de CPAN: Comprehensive Perl Archive Network. Uma cópia local do CPAN está disponível aqui.

Última alteração: