O dia em que o Glade parou, um passeio pelos RADs Opensource

A um ano atras fiz um projeto para o CCJ que envolvia a criação de um sistema de gerenciamento de telecentros, uma versão simplificada de um programa para gerenciar Lan-Houses chamdo Pylan.

O Pylan foi feito em python e gtk, e o primeiro protótipo funcional ficou pronto em 3 semanas, bem rápido, mas como não usei uma ferramenta de RAD para desenhar a interface posso assegurar que pelo menos metade do tempo de coding foi tentando ajustar a interface na mão, principalmente os formulários. Como o projeto tinha tudo para ser um oneshot, isso não era um problema tão grande, já que no futuro poucas mudanças na interface seriam necessárias.

Mas hoje eu vivo uma situação curiosa, apesar de ter minha empresa aberta legalizada e plenamente funcional, sou empregado em tempo integral em outra .A Hyddro foi concebida para ser uma empresa de verdade, e não uma passadora de notas, ela surgiu num vácuo de negociações que surgiu no processo da minha integração ao grupo da empresa em que sou empregado por circunstâncias obtusas, falhas de comunicação, desconfianças e conflito de interesses que são papo de bar, e não pra blog. Ou seja, toco minha empresa fora do horário comercial, e isso cansa, cansa muito e portanto surgiu a necessidade de usar RAD no produtos da empresa.

Surgiram clientes em potencial para uma versão atualizada do Pylan, que bancariam seu desenvolvimento por alguns meses, e um outro cliente que abriria a portas para um novo mercado, o das lan houses e cyber cafes com linux. Um mercado cheio de soluções pela metade, ruins ou emuladas via dosbox, mas que tem um potêncial muito grande se bem trabalhado.

Voltando, ferramentas de RAD permitem desenhar as interfaces dos programas de forma independente do código, tudo clicando e arrastando, depois é só escrever as classes e os métodos para se conecetar com a interface, reduzindo drásticamente o tempo de desenvolvimento, o que pra mim é fundamental já que não vou conseguit manter um emprego integral e tocar meu negócio sem isso…

No linux existem algumas ferramentas desse tipo:

  • Netbeans possui uma ferramenta de RAD integrada ao IDE, para java.
  • QTDesigner, cria arquivos .ui , que podem ser aproveitados por programas feitos em C++, python, ruby, java, C#  usando QT.
  • Glade, cria arquivos xml para biblioteca GTK, para liguagem C/C++, python, ruby, java etc…
  • wxGlade, cria código em python, c++, perl , lisp ou um xml que pode ser importado pela aplicação.
  • Mono, cria interfaces para qualquer liguagem integrada ao CLR/.NET, C#, IronPython, IronRuby etc…

Usei várias madrugadas para desenvolver protótipos em cada uma dessas soluções, considerando minhas necessidades:

  • Multiplataforma
  • Desempenho decente em Windows e Mac
  • Visualmente bem integrado com a plataforma que está rodando
  • Fácil de instalar, sem muitas dependências
  • Velocidade no desenvolvimento
  • Desenvolvimento Ágil

Mono


O primeiro protótipo que desenvolvi foi em Mono, e digo que foi a experiência mais fantástica em desenvolvimento desktop que já tive !

O monodevelop, não fica no seu caminho, ele é realmente útil, simples de usar e intuitivo, C# é bem parecido com Java, possui bibliotecas bem resolvidas e uma boa compatibilidade com bibliotecas livres desenvolvidas para .NET (sim isso existe).

É Super multiplataforma, rodou bem rápido no Linux, Windows e Mac, se integrou visualmente muito bem no Linux e no Windows… no Mac ficou bem estranho. O ubuntu já vem com mono instalado, no windows tive que instalar o GTK#, no mac tive que instalar o mono e o GTK#, mas em todos os casos foi bem tranquila as instações e o tempo de download das bibliotecas.

Existem bibliotecas como a NUnit para testes, e bons depuradores e profilers integrados no monodevelop.

Levei pouco mais que 4 horas para terminar o protótipo, simplesmente fantástico.

Mas o mono tem um problema sério, o projeto é constantemente trolado pela microsoft e pela comunidade opensource, só pra se ter uma idéia existem milhares de tutoriais e scripts para tornar sua distro mono-free. Tem até distro que seu único diferencial é não ter mono !

Netbeans

No netbeans tive uma experiência de produtividade parecida com a do Mono, com a vantagem de usar swing, não tive que instalar nada na hora do deploy, bastou apenas executar o Jar. O Swing integra nativamente o ‘look’ da aplicação, mas não o ‘feel’, o programa ficou estranho em todos os sistemas, e ficou lento … muito lento. Lendo a respeito, a galera diz que o swing não recebe atenção dos desenvolvedores do java a pelo menos 5 anos, deve ser verdade.

Por mais que eu tenha gostado o desempenho e a pobreza de widgets o tirou da jogada.

QTDesigner

A qualidade gráfica e a riqueza de widgets é fenomenal, outstanding, mas todo seu potencial só é atingido usando C++, eu queria muito usar python, não que não seja possível, mas tenho minhas dúvidas já que o pyQT é desenvolvido por uma empresa independente da nokia.

Outra coisa que pega é que o PyQT exige pagamento de licença no caso de softwares comerciais, o software é livre, mas vou receber pra melhora-lo, tenho muitas dúvidas.

WXGlade

Bem rápido de desenvolver, tem muitos widgets legais, é comparavel como  QT nesse ponto, a portabilidade é fantástica, basta instalar um pacotinho e o sistema funciona como se fosse nativo. É uma ótima opção, muito bem documentado, mas possui bugs e isso é um tanto preocupante.

Glade

Foi minha primeira opção, a ferramenta é muito boa, da pra integrar com o pygtk tranquilamente. O grande problema é que para rodar pygtk no windows é necessária a instalação de meia dúzia de pacotes, além do python claro, o que incha o sistema. No Mac roda sob o X11 o que não é legal. Apesar de tudo, ele é melhor integrado com o GNOME e tem uma qualidade superior aos outros, o Pylan é feito em PyGTK e funciona muito bem.

Meu drama é que após redesenhar toda interface do pylan no glade o programa travou, e não consegue mais abrir o xml gerado… Fiquei na mão, abri um bug report, mas perdi a confiança no sistema.

Agora estou aqui, dividido, com uma deadline, estou bastante inclinado a usar WX com python ou QT com C++, e agora ?

Vícios de usabilidade no Software Livre

Quem me conhece sabe que sou um defensor do software livre, mas não deixo meu Mac OSX de lado. Como assim Bial ? Eu gosto do Gnome , KDE mas eles tem sérios problemas de usabilidade que me irritam profundamente, principalmente o GNOME. Mas como disse o problema é das aplicações livres em geral e não apenas do GNOME ou outro software específico.3880505875_c06f99cec5

Um exemplo, no OSX TODAS as aplicações tem os mesmos atalhos de teclado para operações com a janela, gerenciamento de arquivos, preferências etc… Esses atalhos são definidos pelas bibliotecas COCOA, e centraliazados  e configuraveis globalmente. No caso do GNOME que é um desktop focado em usabilidade, e que opta abertamente em sacrificar funcionalidades para ser simples e funcional, os atalhos são confusos e não intuitivos.

Para fechar janelas, basta um intuitivo Alt + F4  , para obter ajuda F1 ! Você sabe o que o F5 faz ? Como não ? É intuitivo, faz refresh ! Manja o F10 ? Não ? Ele coloca o foco no menu ! Mas não funciona para todas aplicações do GNOME, e não da pra saber em quais funcionam de cara, só testando pra ver. Não sei no seu teclado , mas no meu as teclas F não tem nenhuma descrição, são ergnômicamente ruins de alcançar principalmente quando acionadas junto com control ou alt.

Não seria mais inteligente adotar de vez o uso da tecla Windows, presente em 100% dos teclados atuais, e  simplificar os atalhos ? Tipo Win+C pra fechar janelas, Win+S para preferências , Win + R para dar refresh em browsers ? Eu sei que isso é meio MAC demais , mas é ruim ? Atalhos que podem ser acionados com apenas uma mão e ainda por cima minemônicos não seriam um avanço em usabilidade ?

No gnome praticamente todas as aplicações tem paineis de preferência, sabe o atalho ? Na maioria dos casos é o banal Shift + Ctrl + S , mas em alguns apps isso não funciona , então o jeito é apelar para Alt+E seguido de  N , super minemônico e fácil de lembrar. Só que no terminal não rola … Tem que usar o mouse mesmo, alias praticamente nenhum atalho de teclado funciona no gnome terminal, irônico ?

Mas o pior mesmo é o artigo que motivou esse post, onde o autor aponta um vício pior, herdado do windows 95, vício do menu “Arquivo”, ou file , nele o autor faz um passeio pelos aplicativos gnome e mostra os abusos em cima do menu “file”. No gnome terminal, aplicação sem nenhuma operação de leitura e gravação de arquivos ele está lá , presente apenas para fechar o terminal, criar abas e janelas, intuitivo né ?

Nesse ponto aplicativos KDE são um pouco melhores, mas escorregam bastantes nos vícios de usabilidade do windows, mas é assunto pra outro post.

Usuário GNOME :)

<!--
TITLENL Usuário  GNOME :)
-->
<A NAME="200709201554"></A>
Minha passagem pelo mundo mac deu uma boa chacoalhada na minha concepção de desktop. Quando comecei a usar linux (e computadores) a única referência que eu tinha de desktop completo era o windows, já existia o KDE que imitava fielmente o look and feel do windão, mas apenas o look do mac.<br><br>

Apesar da QT imitar fielmente os controles do mac, a avalanche de menus e opções não deixava dúvidas sobre seu alvo primário, os usuários de windows. E como eu era novo no mundo dos computadores, e o GNOME era um lixo optei em ficar com o KDE 1.0, e sempre adotei distros com KDE.

Eu era um verdadeiro fanboy do KDE, escrevi até mesmo um howto de como operar o sistema, apontando suas similaridades com as outras interfaces e sua capacidade de superar todos os recursos dos concorrentes… Ai, Ai… Bons tempos.

Eu até gostava do GNOME, principalmente usando o enlightenment como windowmanager, naquela época era versão 1.4 ou 1.4 coisa assim, era muito completo mas nada comparado com o KDE 2.2.2 o melhor até a versão 3.5 🙂

A RedHat que financiava o GNOME por ver no KDE uma ameaça à liberdade já que o QT não era livre (para fins comercias), botou grana e surgiu o GNOME2 ,tudo novo. Essa nova versão surgiu no RedHat linux 8, meu segundo RedHat (antes eu era vítima do conectiva, fanboy do mandrake e ativista slackware)e pela primeira vez troquei o KDE pelo GNOME… Com o Redhat 9 e o gnome 2.2.x o bixo ficou ainda melhor, apesar dos bugs foi uma grande distro, mas com o pior KDE que já vi.

O tempo foi passando e o GNOME foi secando, várias opções simples como fixar janelas em cima das outras, destacar menus, foram retirados piorando muito sua usabilidade.Substituir o sawmill pelo metacity piorou demais a navegação entre as janelas e tornou os virtual desktops chatos e enfadonhos. Segundo os desenvolvedores tudo isso era para facilitar o uso… tipo, dificulta pra depois facilitar, sei…. A situação chegou a um ponto tal que o próprio Linus Torvalds disse algo parecido com : “O gnome trata os usuários como se eles fossem imbecis”, eu mesmo repeti isso diversas vezes.

O problema é que o KDE seguia um caminho diferente, entulhando os menus e as caixas de configuração com opções muitas vezes inúteis e redundantes, o que atrapalhava muito os novatos.

O mac os x segue a tendência do “menos é mais” e o faz com maestria sem acorrentar o usuário como o GNOME fazia. Isso mesmo, fazia, eles voltaram atrás em algumas coisas e hoje consigo usar o gnome sem xingar…Quando fui para o mundo mac achava que o KDE por causa de seu look era mais parecido como mac, mas hoje o gnome possui seus controles, aplicativos e forma de trabalhar muito mais parecidos com os do mac,e admito hoje que não consigo mais usar o KDE ehhheh

O GNOME tem muitos defeitos, assim com o Banshee, mas mesmo o KDE/Amarok sendo tecnicamente superiores tem suas interfaces muito poluidas e cheias de informações inúteis, o que parece mudar com o KDE4, espero ancioso, estou com meus dedos coçando pra pegar o novo opensuse… Alias recomendo o dolphin, um gerenciador de arquivos cópia escarrada do Finder, fantástico !

Ubuntu dapper em powerbook G4

Bom, faz um tempo que venho estudando o ubuntu dapper… e a versão liveCD para PPC simplesmente não funcionou no meu powerbook G4… o GNOME não sobe ! E ao forçar o gnome, o sistema de instalação simplesmente não funciona !!!!! Arrg ! Apesar disso, pbbutons , som, wireless e o vídeo funcionam maravilhosamente bem, assim como no fedora 4 … Mas essa versão para PPC realmente foi esquecida pelos developers, nem o tema do GNOME é o mesmo para as 3 arquiteturas da distro… Lamentável.

Então, estou escrevendo um guia de instalação manual do ubuntu Dapper em PPC via liveCD, no melhor estilo gentoo de se instalar uma distro :

O gnome não subiu no liveCD, não existe outra alternativa ao gnome nesse cd…. o que fazer ? Eu fui para o modo console, e lá o sistema já está logado como
usuário ubuntu. Crie o arquivo .xinitrc :


echo "exec xterm" > .xinitrc

Então suba uma nova instância do X:


xinit -- :1

Se tudo der certo você terá um terminal “xterm” no seu modo gráfico, agora reparticione seu HD com o mac-fdisk… se você não sabe como, vá para o Mac Os X , e faça usando o Disk Utility. Com o mac-fdisk crie uma partição de bootstrap e outra para o seu linux:


mac-fdisk /dev/hda

Crie a partição bootstrap com o comando “b”, quando ele pedir o “First Block” diga o número da partição de espaço livre seguido da letra “p”, exemplo “12p”. Agora crie uma partição linux , use o comando “c”, seguido da partição livre (exemplo: 13p) e finalmente o tamanho da partição, exemplo : 5G.

Formate sua partição linux, exemplo:


mkfs.ext3 /dev/hda2

Com sua partição linux criada e formatada, monte e compie os dados do root do liveCD, mas não copie o conteúdo dos diretórios: cdrom , proc e sys, ok ? E não esqueça de copiar os arquivos com o comando “cp -a”, sem isso o seu sistema do HD não vai funcionar apropriadamente.

Temos também que formatar a partição do openfirmware bootstrap device que criamos agora a pouco, para isso, use o comando :


mkofboot -o /dev/hda9 # No meu caso

Após isso, temos que configurar o bootloader, no caso dos portáteis apple , o yaboot, ele tem um script que gera a configuração automaticamente, o yabootconfig, mas no ubuntu ele não funcionou apresentando o erro: “yabootconfig: unionfs: no such file or directory”…. Ou seja , vamos criar a configuração na mão 🙂
Para nossa sorte a configuração do yaboot é muito parecida com a do lilo, um exemplo de configuração é:

/etc/yaboot.conf

##

Para menu dual-boot, adcione :

bsd=/dev/hdaX, macos=/dev/hdaY, macosx=/dev/hdaZ

Coloque aqui a partição bootstrap

boot=/dev/hda9

Se vc tem um G5 descomente essa linha !

#ofboot=hd:2

Apelido para seu hd do jeito que o OpenFirmware vê

device=/pci@f2000000/mac-io@17/ata-4@1f000/disk@0:

delay=5
defaultos=macosx
timeout=30
install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot

image=/boot/vmlinuz-2.6.15-23-powerpc
label=Linux
initrd=/initrd.img.old
root=/dev/hda12
partition=12
read-only

macos=/dev/hda13
macosx=/dev/hda12
enablecdboot
enableofboot

Para instalar o bootloader no hd, o comando é : ybin -b /dev/hda9 -C yaboot.conf . Você não precisa fazer chroot no sistema que você está instalando para rodar o ybin, basta dizer para ele qual é a partição de boot e onde está o arquivo de configuração.

Por último temos, arrumar o /etc/fstab, adicionando o a linha correspondente ao nosso root.
Depois disso, meu sistema bootou ai tive que resolver outros problemas heheh, espero que você também consiga !