Pouco tempo muito trabalho…

Essas últimas semanas as coisas estão bem corridas no trabalho, pouco tempo para outras coisas, inclusive blogar. Como vocês já sabem meu trabalho tem muito a ver com o Plasma Active (site em inglês), a versão 2 dele foi lançada mês passado e estamos trabalhando em novas funcionalidades para a versão 3. Várias propostas de funcionalidades a implementar ou aperfeiçoar estão circulando na lista de discussões do Plasma Active. Na verdade há mais coisas para fazer do que desenvolvedores para implementá-las, então se você é desenvolvedor e está interessado em desenvolver algo para tablets e para o Plasma Active escolha um ítem para implementar.

O Plasma NM está bem parado essas semanas, eu tenho só resolvido alguns poucos bugs, aplicando alguns patches que chegaram até mim (eu fico muito feliz quando isso acontece então continuem enviando patches) e mudando o Plasma NM para usar a API assíncrona do DBus o máximo possível para evitar que as chamadas atrapalhem a fluidez do plasma desktop ou até paralisar o desktop inteiro por alguns segundos,algo relacionado como bug #287002. Esta última parte está pela metade e não sei quando vou poder terminá-la. De qualquer forma essa mudança irá só para o master, ela é bem grande e invasiva, algo que não deve ir para uma versão considerada estável como a do branch nm09.

As mudanças de usabilidade estão paradas também por falta de tempo. Realmente eu estou precisando de ajuda para tocar o Plasma NM pra frente, então se você tem interesse em melhorar o Plasma NM me contate que eu ajudo nos primeiros passos.

Aqueles que usam o branch master do Plasma NM já notaram que comecei enviar as mudanças de usabilidade na interface. Por enquanto as mudanças são bem parecidas com as que anunciei no meu primeiro post sobre elas:

O vídeo pode ser visto no Youtube.

Ainda há mais mudanças para fazer, por exexmplo: 1. Aumentar a altura de cada ítem na lista de conexões (talvez duas linhas por ítem) para deixá-los fáceis de serem pressionados em telas sensíveis ao toque; 2. Adicionar um ítem “Conectar a outra rede” para permitir criar novas conexões ao invés de usar o kcm; 3. Mover o ítem “<hidden network>” para o ítem “Conectar a outra rede”; Encontrar um novo lugar para o checkbox “Habilitar Rede”; 5. Encontrar uma forma de alinhar corretamente os elementos gráficos do plasmoid, QML parece tão mais fácil neste ponto :-/

Eu salvei todos os comentários que recebi sobre a interface do plasmoid. Eu só não tive tempo de avaliar todas elas, então sejam pacientes.

Feliz Natal

Esses dias eu tenho trabalhado mais com o Plasma Active (PA) do que com o Plasma NM. O trabalho no PA está indo bem, essa semana foi mais tranquila já que muita gente está de férias, inclusive boa parte da equipe do PA. Resolvi corrigir o máximo possível de bugs e a semana foi proveitosa, vários bugs corrigidos ou quase totalmente corrigidos.

No Plasma NM as coisas andam meio paradas, o que tem o seu lado bom, o número de bugs reportados está bem parado também. Ou eu estou fazendo um bom trabalho em corrigir os bugs ou o pessoal está desistindo de usá-lo, espero que seja a primeira alternativa hehe. As correções dos problemas reportados pelo Krazy2 terminaram, tem uma lista grande de problemas ainda mas que não tem solução simples e como não consigo fazer o Krazy2 ignorá-los eles vão ficar por lá mesmo.

Semana que vem todo mundo da basysKom está de férias (inclusive eu :-) ), então eu devo me dedicar mais ao Plasma NM antes de voltar ao trabalho no início de janeiro.

Amanhã é noite de Natal então Feliz Natal a todos.

Novo trabalho

Desde o dia 14 de novembro eu estou trabalhando para a basysKom, uma empresa da Alemanha muito ligada ao KDE. Finalmente um emprego onde posso trabalhar com o KDE :-)

O projeto em que estou trabalhando na basysKom é o Contour, que faz parte do Plasma Active. Um dos trabalhos que estou desenvolvendo é um substituto à caixa de diálogo de saída do KDE. A intenção é implementar uma caixa de diálogo mais fácil de ser usada em sistemas sensíveis ao toque, caso do Plasma Active. O resultado atual é esse:

O fato de ter somente três grandes botões é intencional, quanto menos botões menos problemas para usar :-) E botões grandes são mais fáceis de serem pressionados. A implementação está no branch ksmserver/qml-shutdowndlg do repositório git://anongit.kde.org/kde-workspace e foi feita parte em C++ e parte em QML. Este projeto está sendo um bom aprendizado de QML pra mim. Talvez no futuro (não próximo) eu possa usar o que aprendi no Plasma NM.

Para essa versão mais simples da caixa de diálogo não tive muitos problemas para implementar. Já para a versão  que irá substituir a caixa de diálogo atual eu tive bastante trabalho para implementar todas as suas funcionalidades e aparência, principalmente a parte de menu de contexto, que é fácil de fazer quando se tem um número estático de elementos, o que não é o meu caso. Outro problema ainda não resolvido e a parede de uso do teclado. Pelo que entendi QML é voltado para dispositivos sensíveis ao toque, onde não existe teclado. Por causa disso a implementação atual não usa tab order (usar a tecla TAB para selecionar o botão), pressionar ENTER não aciona o botão padrão e não é possível utilizar aceleradores (o subescrito que aparece em um label e que é usado para acionar o widget associado àquele label quando se pressionar a tela ALT + “letra do label).

Este final de semana terminei de implementar a maior parte das funcionalidades:

oxygen

Funciona inclusive com outros temas do Plasma:

Air

Androbit

Elegance

E aqui os dois menu de botões (veja o pequeno triângulo nos dois últimos botões):

 

QML shutdown dialog

Essas modificações talvez apareçam no KDE SC 4.8 (já é tarde para enviar novas funcionalidades, mas ainda há esperança). Para quem quiser testá-las pode fazê-lo inclusive no KDE SC 4.7, mas terá que compilar o plasmacomponents do kde-runtime master, o que não é difícil:

 

git clone git://anongit.kde.org/kde-runtime

mkdir kde-runtime/build

cd kde-runtime/build

cmake -DCMAKE_INSTALL_PREFIX=..

cd plasma/declarativeimports

make && make install

Depois disso é compilar o branch mencionado acima:

git clone git://anongit.kde.org/kde-workspace

cd kde-workspace

git checkout ksmserver/qml-shutdowndlg

mkdir build

cd build

cmake -DCMAKE_INSTALL_PREFIX=/usr ..

cd ksmserver

make && make install

O que anda acontecendo no Plasma NM

Olás, desde meu último post algumas coisas aconteceram no Plasma NM:

Para quem não sabe a QtNetworkManager e QtModemManager são bindings para o NetworkManager 0.9 e ModemManager 0.5. Eles são usados no Plasma NM da versão master (versão de desenvolvimento). A mudança de nomes foi sugerida pelos outros desenvolvedores do KDE que queriam nomes mais descritivos.
Além da mudança de nomes eu também corrigi vários probleminhas nas duas bibliotecas detectados pelo Krazy2 (analisador estático de código do KDE). Essas últimas semanas eu tenho (lentamente) corrigido problemas detectados pelo Krazy2 no Plasma NM também. Ainda tem bastante coisa para resolver, mas isso é um passo necessário para melhorar o código fonte do Plasma NM.
As mudanças de usabilidade estão paradas porque recebi algumas críticas em relação a elas. Mas do jeito que as coisas andam eu acho que vou mesmo é enviar as mudanças que já fiz e de lá ir melhorando aos poucos. Esses últimos dois meses tenho trabalho sozinho no Plasma NM e comecei um novo emprego (mais sobre isso no próximo post), por isso as coisas estão andando devagar.

Que tal ajudar o KDE em alguns clicks?

Algumas semanas atrás a Lydia Pintscher postou sobre uma promoção que um banco da Alemanha está fazendo. O Banco irá pagar 1000 euros para os mil primeiros associados que receberem o maior número de votos até o meio de novembro. O KDE e.V. está na posição 1003 hoje e perdendo posições, se nada mudar estaremos de fora :-( Se alguém aí ainda não votou por favor ajudem o KDE e.V., é só seguir as instruções no blog da Lydia ou para quem prefere as instruções em português faça o seguinte:

  1. Acesse [verein.ing-diba.de/…] e clique em “Stimme abgeben”.
  2. Preencha seu email e o código captcha, clicando em seguida em “absenden”.
  3. Você receberá um email para confirmar o voto – clique no primeiro link deste email.
  4. No website – clique em “Stimme abgeben”.

Você tem direito a 3 votos por conta de email.

15 anos de KDE

Eu me lembro da primeira vez que vi o site do KDE, eu era estudante de Ciência da Computação na UFMG (é Ciência, no singular, não Ciências). O ano era 1997 e o KDE não tinha nem um ano de idade, naquela época praticamente toda semana saía um snapshot do código fonte e eu ficava ansioso para compilá-lo e ver as novidades :-)

 

Muito tempo se passou, veio a versão 1.0, 2.0, 3.0, 4.0, a evolução entre essas versões é nítida, principalmente entre a 1.0 e a 2.0. Apesar de conhecer o KDE praticamente desde que foi criado foi só há pouco mais de dois anos que comecei a contribuir programando para o KDE e isso foi uma das melhores decisões que fiz. No FISL10 em 2009 eu conheci alguns membros da comunicade KDE-Brasil, da qual faço parte hoje, e desde então tenho conhecido muita gente que também tem essa mesma paixão que eu tenho pelo KDE. É ótimo conviver e até trabalhar com o pessoal da comunidade brasileira e estrangeira do KDE. Tenho vários amigos na comunidade, a gente se diverte ajudando o KDE e assim vamos vendo o nosso “garoto” crescendo, chegando a 15 anos de idade e com muitos mais por vir. Feliz aniversário KDE :-D

 

Solid Sprint

Semana passada eu fui para Madri para o Solid Sprint 2011. Pra quem não sabe o Solid é a camada de abstração de hardware do KDE e Sprint é tipo uma reunião de desenvolvedores onde discutimos os problemas e, principalmente, corrigimos bugs e implementamos novas funcionalidades.

Este foi o meu segundo sprint, o primeiro foi também Madri ano passado. Naquela época eu era só mais uma pessoa que contribuía na parte de redes móveis (3G). Nesses últimos doze meses muita coisa mudou, eu comecei a corrigir bugs no Plasma NM, fui implementando novas funcionalidades e informalmente assumindo o papel de mantenedor. Bem, agora não é mais informal. Durante o Solid Sprint eu aceitei assumir formalmente o papel de mantenedor oficial da parte de gerenciamento de redes do KDE. Eu até tenho um e-mail lamarque (at) kde.org agora :-D

Durante o Sprint várias coisas foram discutidas na parte de gerenciamento de redes, também realizamos um experimento de usabilidade para melhorar a interface do Plasma NM. Pensamos em várias idéias. Mudar a interface gráfica de um programa realmente chama a atenção (leia os comentários no meu blog). Alguns dos comentários são bem úteis e me fizeram pensar em mudar novamente o protótipo de interface que criei durante o sprint.

Outra novidade do sprint na parte de gerenciamento de redes é que a partir de agora eu vou liberar (release) versões do Plasma NM de forma regular. Hoje eu fiz o primeiro release  (versão 0.9.0_beta1) com boa parte dele traduzido para português. Agora é baixar e compilar :-)

Para quem quiser ler meus posts (em inglês) sobre o sprint pode acessar o meu blog. Use o sistema de tradução do blog para traduzí-lo para português.

 

Slackshow, iptraf e 3G

No último sábado eu ministrei um mini-curso de Introdução à Programação com Qt no Slackshow 2011. Slackshow é o encontro brasileiro de usuários de Slackware, que este ano aconteceu em Belo Horizonte na faculdade FUMEC. Meses atrás um dos organizadores, Renato Gravino, me convidou a apresentar uma palestra e então eu fiz :-) O pessoal do evento estavam bem entusiasmados e acho que o pessoal gostou do mini-curso. Não tirei nenhuma foto, foi mal. Eu estava entretido apresentando o mini-curso e conversando com o pessoal.

Depois de terminar o mini-curso eu subi para o terceiro andar para assistir à última palestra do dia sobre device drivers. Esse assunto também me interessa, quando não estou corrigindo bugs no Plasma NM eu de vez em quando corrijo bugs no kernel do Linux, um desses bugs inclusive exigiu que eu reescrevesse quase metade do driver da minha webam alguns anos atrás.. Durante a seção de perguntas no final da palestra um dos presentes perguntou porque o iptraf (ou melhor, o iptraf-ng) não funcionava com seu modem 3G. Bem, eu tenho a resposta para essa pergunta. Para quem não sabe o iptraf é um programa de monitoramento de interfaces de rede feito em ncurses:

O iptraf não é mais mantido e algum tempo atrás alguém criou o iptraf-ng (iptraf nova geração), um fork do iptraf, como uma alternativa para continuar usando o iptraf. Bem, o fato é que o iptraf e iptraf-ng não procuram por interfaces de rede USB, usadas por vários modems hoje em dia. Você precisa aplicar este patch, que eu criei, e recompilar o iptraf para corrigir esse problema. No último domingo eu enviei esse patch para o mantenedor do iptraf-ng. Agora é ver em quanto tempo ele será aplicado.
O iptraf também precisa da linha CONFIG_USB_MON=y no arquivo de configuração do kernel para que o kernel possa monitorar interfaces de rede USB. Provavelmente essa é a configuração padrão dos kernels atuais, na época em que encontrei esse problema pela primeira vez não era.
Se você ainda utiliza o iptraf / iptraf-ng e modems 3G divirta-se com o iptraf funcionando com seu modem :-) E muito obrigado aos organizadores do Slackshow por me convidarem para o evento.

Agora com um pouco mais de tempo estou aqui para contar o aconteceu comigo no Desktop Summit 2011. Para quem não sabe esta foi a segunda edição do encontro de desenvolvedores de KDE, Gnome e outros ambientes de desktops. Esta edição aconteceu de 6 a 12 de agosto de 2011 na cidade de Berlim (Alemanha). Minha viagem começou cedo, já que tive que ir de ônibus para a rodoviária de Belo Horizonte e dá para o aeroporto de Confins. Meu vôo foi partiu às 17:00 para Lisboa (primeira parada). Chegando em Lisboa tem a tradicional passagem pela alfândega com filas e mais filas, tanto que os funcionários do aeroporto pediram para eu e outras pessoas cujos vôos já estavam por partir passarem pelos guichês reservados para quem tem passaporte da União Européia. Blz, depois de uma corridinha para não perder o vôo eu sigo para Bruxelas (Bélgica), lá tive que esperar três horas e meia pelo meu vôo para Berlim, enquanto isso nada pra fazer além de tirar fotos de um carro literalmente pela metade exposto no saguão do aeroporto, bem legal :-)  Depois de quase dormir esperando pelo vôo finalmente descubro no painel que estou no portão errado (culpa de quem imprimiu o número do portão na passagem :-/). Blz, subo para o segundo andar e chego ao portão e mais espera… e finalmente o vôo parte para Berlim.

Berlim é muito legal, aeroporto não é tão grande quando o de Frankfurt mas é razoavelmente perto da cidade então pra mim está ótimo já que eu teria que chegar no albergue sozinho. Resolvi seguir o caminho escrito no site do albergue: pequei o ônibus e desci no centro da cidade, de lá peguei o metrô, desci em uma estação que não sei pronunciar o nome (hehe) para depois pegar outra linha até a estação que fica ao lado do albergue. Blz, finalmente uma cama para dormir depois de passar horas e horas acordado por não conseguir dormir em aviões. Não vou contar todos os detalhes do que aconteceu, seria um post enorme. Vale dizer que adorei esse Desktop Summit, me senti até uma celebridade com gente vindo me cumprimentar pelo trabalho no Plasma NM, mesmo que também tenham vindo reclamar de algumas coisas e pedir para eu consertar hehehe. Blz, com o tempo eu vou tentar resolver os problemas que me relataram. Foi bom também rever o pessoal do Solid: Alex Fiestas, Dario Freddi, Kevin Ottens, Will Stephenson, Sebas; os brasileiros que não via desde o ano passado: Aracele, Filipe, Daker, Hélio, Danilo. Bruno Friedman e Aurélien Gâteau, com quem troquei e-mails e agora pude encontrar pessoalmente.

Apesar de ter feito mais frio em Berlim do que no Akademy 2010 em Tampere ainda assim gostei do clima da cidade, muita coisa legal pra ver, muito espaço pra se movimentar e um sistema de transporte que funciona, realmente impressionante para uma cidade com mais de 3 milhões de pessoas. O evento também foi produtivo, assisti várias palestras interessantes, como a do Simon (um sistema para controlar o computador usando voz), a do Wayland (novo sistema de vídeo para o Linux e acho que Unix também) e até as do Gnome 3 e Gtk4 :-) (ei, eu sou curioso). Depois dos três primeiros dias de palestras eu fiquei por conta dos dois BoFs que pretendia participar: o de hardware e o de networkmanagement. Tivemos conversas interessantes em ambos, no de hardware discutivos algumas coisas sobre como melhorar o suporte a hardware no KDE, o pessoal da RedHat que estava presente deu a sugestão de eliminarmos algumas camadas de abstrações (Phonon?) para facilitar a manutenção. Bem essa não é a minha área, mas fazer isso seria eliminar alguma plataformas em que o KDE funciona (Windows e MacOS). Neste BoF tive uma conversa com o Dan Williams, principalmente desenvolvedor do NetworkManager, e depois de um tempo depurando finalmente o famigerado bug #276486 está resolvido. Outro tópico mencionado durante este BoF foi a sugestão de mover parte do Solid para mais próximo dos daemons de hardware, por exemplo, mover o backend de NM do Solid para o repositório do NM. Isso facilitaria na hora de corrigir um bug no NM ou no backend. Para isso temos que terminar a libnm-qt, este provavelmente será um ponto crítico no Sprint de Solid programando para o final do mês que vem.

No BoF específico de NetworkManager eu coloquei o que já havia escrito nos meus posts: nós do KDE precisamos de mais detalhes na especificação do NM sobre os testes que o NetworkManager usa para validar conexões e assim evitarmos que as conexões criadas pelo Plasma NM sejam invalidadas pelo NM. O Dan Williams foi bem receptivo a esse pedido e aos outros problemas que mencionei. Bem, depois dos BoFs, fiquei por conta caçar lembrancinhas com meus amigos em Berlim hehe. Pena que as três lojas de eletrônicos que fomos não aceitam cartão de crédito :-/ o pessoal teve que desistir de levar algumas coisas. Pra quem teve a sorte de participar do evento da Intel talvez nem tenha ficado chateado por conta disso já que a Intel presenteou todo mundo no evento deles com um tablet (64 GB de flash, 2 GB RAM, tela de uns 11″ se não me engano) rodando Meego. É… tenho que participar mais dos eventos da Intel hehe. E não teve só trabalho não, tivemos duas festas, uma com karaokê que fez sucesso pra caramba. Tanto sucesso que ficamos na fila mais de uma hora meia pra cantar e nada, acabamos desistindo e voltando para o albergue porque já estava muito tarde e ainda tinha mais evento na manhã do dia seguinte. Além das festas também teve uma partida de futebol em um clube da cidade, nem me perguntem quanto ficou o placar porque nem os jogadores sabiam hehe. Ok, por hora chega. Ano que vem tem Akademy, ainda não sei onde é mais eu vou :-)