Qt apps on Ubuntu

As part of our planning for Natty+1, we’ll need to find some space on the CD for Qt libraries, and we will evaluate applications developed with Qt for inclusion on the CD and default install of Ubuntu.

Ease of use, and effective integration, are key values in our user experience. We care that the applications we choose are harmonious with one another and the system as a whole. Historically, that has meant that we’ve given very strong preference to applications written using Gtk, because a certain amount of harmony comes by default from the use of the same developer toolkit. That said, with OpenOffice and Firefox having been there from the start, Gtk is clearly not an absolute requirement. What I’m arguing now is that it’s the values which are important, and the toolkit is only a means to that end. We should evaluate apps on the basis of how well they meet the requirement, not prejudice them on the basis of technical choices made by the developer.

In evaluating an app for the Ubuntu default install, we should ask:

  • is it free software?
  • is it best-in-class?
  • does it integrate with the system settings and preferences?
  • does it integrate with other applications?
  • is it accessible to people who cannot use a mouse, or keyboard?
  • does it look and feel consistent with the rest of the system?

Of course, the developer’s choice of Qt has no influence on the first two. Qt itself has been available under the GPL for a long time, and more recently became available under the LGPL. And there’s plenty of best-in-class software written with Qt, it’s a very capable toolkit.

System settings and prefs, however, have long been a cause of friction between Qt and Gtk. Integration with system settings and preferences is critical to the sense of an application “belonging” on the system. It affects the ability to manage that application using the same tools one uses to manage all the other applications, and the sorts of settings-and-preference experience that users can have with the app. This has traditionally been a problem with Qt / KDE applications on Ubuntu, because Gtk apps all use a centrally-manageable preferences store, and KDE apps do things differently.

To address this, Canonical is driving the development of dconf bindings for Qt, so that it is possible to write a Qt app that uses the same settings framework as everything else in Ubuntu. We’ve contracted with Ryan Lortie, who obviously knows dconf very well, and he’ll work with some folks at Canonical who have been using Qt for custom development work for customers. We’re confident the result will be natural for Qt developers, and a complete expression of dconf’s semantics and style.

The Qt team have long worked well in the broader Ubuntu community – we have great Qt representation at UDS every six months, the Kubuntu team have deep experience and interest in Qt packaging and maintenance, there is lots of good technical exchange between Qt upstream and various parts of the Ubuntu community, including Canonical. For example, Qt folks are working to integrate uTouch.

I’d draw a distinction between “Qt” and “KDE” in the obvious places. A KDE app doesn’t know anything about the dconf system configuration, and can’t easily integrate with the Ubuntu desktop as a result. So we’re not going to be proposing Amarok to replace Banshee any time soon! But I think it’s entirely plausible that dconf, once it has great Qt bindings, be considered by the KDE community. There are better people to lead that conversation if they want, so I’ll not push the idea further here :-) . Nevertheless, should a KDE app learn to talk dconf in addition to the standard KDE mechanisms, which should be straightforward, it would be a candidate for the Ubuntu default install.

The decision to be open to Qt is in no way a criticism of GNOME. It’s a celebration of free software’s diversity and complexity. Those values of ease of use and integration remain shared values with GNOME, and a great basis for collaboration with GNOME developers and project members. Perhaps GNOME itself will embrace Qt, perhaps not, but if it does then our willingness to blaze this trail would be a contribution in leadership. It’s much easier to make a vibrant ecosystem if you accept a certain amount of divergence from the canonical way, so to speak ;-) Our work on design is centered around GNOME, with settings and preferences the current focus as we move to GNOME 3.0 and gtk3.

Of course, this is a perfect opportunity for those who would poke fun at that relationship to do so, but in my view what matters most is the solid relationship we have with people who actually write applications under the GNOME banner. We want to be the very best way to make the hard work of those free software developers *matter*, by which we mean, the best way to ensure it makes a real difference in millions of lives every day, and the best way to connect them to their users.

To the good folks at Trolltech, now Nokia, who have made Qt a great toolkit – thank you. To developers who wish to use it and be part of the Ubuntu experience – welcome.

Originally posted by Mark Shuttleworth here on Tuesday, January 18th, 2011 at 9:01 am

I Hack’n Rio

Divulgando – origem: http://www.riojug.org/?p=195

O maior evento de software livre do Rio de Janeiro: I Hack’n Rio

Aproveitando toda força e união que as comunidades de Software Livre têm de promover eventos no estado do Rio, a SL-RJ (Comunidade de Software Livre do Rio de Janeiro), em conjunto com as comunidades ArduInRio, Android In Rio, DojoRio, PHP Rio, PythOnRio, Rio.pm, RioJUG, RubyOnRio e Ubuntu-RJ, vêm apresentar o I Hack’n Rio !

Apesar da palavra “hacker” atualmente estar associada a uma pessoa que explora falhas de segurança em computadores e tenta prejudicar outros, no sentido original da palavra, ela designa alguém que é profundo conhecedor de algum assunto e utiliza maneiras criativas de resolver problemas. Por isso, o Hack’n Rio não é um encontro de usuários malignos de computador, mas sim de profundos estudiosos de computação, mais especificamente software livre, e pessoas que estão buscando este conhecimento.

A idéia do I Hack’n Rio surgiu quando os entusiastas de diversas comunidades de Software Livre se encontravam nos eventos promovidos pelo nosso estado, e sempre chegavam a uma mesma conclusão: está na hora de convergir. Convergir todos os eventos específicos de cada comunidade em um só grande evento, falar e fazer sobre tudo que se vê de novidades em cada tecnologia livre adotada em nosso estado.

O grande diferencial deste evento é que ele está sendo feito por todas as comunidades. E isto quer dizer que não há a centralização de tudo numa comissão organizadora só, mas sim a distribuição da organização. Cada comunidade contribuinte terá seu espaço no evento, para utilizar do melhor jeito que a mesma souber fazer.

O nosso objetivo é realizar um evento de elevado grau técnico onde todos os participantes tenham oportunidade de aprender como as tecnologias livres funcionam a fundo e também como contribuir para sua evolução.

Por isso, planejamos a seguinte estrutura:

  • Quando? 8 e 9 de abril de 2011
  • Onde? Cidade Universitária da UFRJ, na Ilha do Fundão
  • Quantas palestras? 28
  • Quantos mini-cursos? 8
  • E o que mais? Muita mão na massa com 2 salas abertas para hackfests, como Arduino Hack Day!

Você faz parte de uma das comunidades de software livre do estado? Então você também é parte do I Hack’n Rio !

Ajude a tornar o evento um sucesso procurando por patrocinadores, buscando por conteúdo relevante e chamando pessoas que fazem as coisas acontecerem – seja construindo coisas novas, seja contribuindo com projetos já existentes.

Algumas sugestões:

  • Patrocinadores: empresas que usam software livre e querem contribuir para sua evolução; empresas prestadoras de serviço ou desenvolvedoras de softwares livres que querem encontrar talentos para contratarem (as empresas podem até mesmo fazer uma espécie de “O Aprendiz” e oferecer vagas de empregos, se desejarem) e divulgar seu nome e serviços.
  • Conteúdo: não pense só em palestras e mini-cursos, pois isso temos em qualquer evento. Pense em encontros técnicos para correções de bugs ou desenvolvimento de novas aplicações ou novas funcionalidades para aplicações já existentes.

How to get IP address in Java

To get IP address of the current computer that’s running the Java application, uses InetAddress.getLocalHost() to initialize the InetAddress object and InetAddress.getHostAddress() to get the current IP address.

Full example.

package br.com.ziben;
 
import java.net.InetAddress;
import java.net.UnknownHostException;
 
public class app{
 
	public static void main(String[] args){
 
		InetAddress ip;
		try {
 			ip = InetAddress.getLocalHost();
			System.out.println("Current IP address : " + ip.getHostAddress());
 
		} catch (UnknownHostException e) {
 			e.printStackTrace();
 		}
 	}
 }

Output

Current IP address : 192.168.0.185

IP 192.168.0.185 is my computer’s IP address to run this example, let compare with Ubuntu’s ifconfig

ifconfig output…

eth0      Link encap:Ethernet  Endereço de HW b8:ac:6f:74:b7:51  
          inet end.: 192.168.0.185  Bcast:192.168.0.255  Masc:255.255.255.0
          endereço inet6: fe80::baac:6fff:fe74:b751/64 Escopo:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:19403 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:14705 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000 
          RX bytes:10498710 (10.4 MB) TX bytes:2187781 (2.1 MB)
          IRQ:45 Endereço de E/S:0x2000  

Same, InetAddress.getHostAddress() is working as expected.

Ubuntu May Replace GDM with LightDM

Yet another possible change in Ubuntu’s core components: they’re mulling over replacing GDM with LightDM. Why? Well: “Faster – the greeter doesn’t require an entire GNOME session to run. More flexible – multiple greeters are supported through a well defined interface. This allows Ubuntu derivatives to use the same display manager (e.g. Kubuntu, Lubuntu etc.). Simpler codebase – similar feature set in ~5000 lines of code compared to 50000 in GDM. Supports more usecases – first class support for XDMCP and multihead.”

As novidades do kernel 2.6.36

No dia 20 de outubro de 2010, o finlandês agora cidadão americano Linus Torvalds apresentou ao mundo a versão mais recente de seu kernel livre, o Linux 2.6.36. Com o codinome Flesh-Eating Bats with Fangs em homenagem a um morcego que recentemente invadiu a residência dos Torvalds — alguém comentou no blog de Linus que “o Batman finalmente invadiu a casa do Pinguim” — esta nova versão do Linux foi completada em 80 dias, precisamente a duração média dos últimos lançamentos de versões estáveis do kernel. Porém, com uma versão -rc a mais — recentemente, essas versões só chegavam até -rc7, mas alcançaram -rc8 desta vez — a versão estável “pareceu demorar mais do que de costume”, alegaram alguns desenvolvedores.

O kernel encolheu??? Que bom!

Pela primeira vez nos últimos vários anos, uma nova versão do kernel Linux traz menos linhas de código do que a anterior: 13,49 milhões, contra 13,54 milhões na versão 2.6.35 e 13,32 milhões no Linux 2.6.34. Curiosamente, o número de arquivos aumentou de 33,3 mil na versão anterior para 34,3 mil no Flesh-Eating Bats. Além disso, pela terceira vez consecutiva o número de commits que compõem o kernel ficou abaixo dos 10 mil, mais precisamente em 9501.

A redução no tamanho do kernel se explica pelo admirável trabalho de faxina que vem sendo feito na base de código em constante evolução. Os avanços na remoção da BKL (Big Kernel Lock), por exemplo, foram significativos nesta versão.

Vamos às novidades!

AppArmor, finalmente

AppArmor é um sistema de “controle de acesso obrigatório” (Mandatory Access Control ou simplesmente MAC). Desenvolvido pela empresa Immunix nos idos de 1998, ele foi mantido pela Novell — que adquiriu a Immunix — de 2005 a 2007, quando a fabricante do SUSE Linux Enterprise dispensou seus desenvolvedores.

O AppArmor é ativado por padrão em diversas distribuições, sendo os principais exemplos Ubuntu e SUSE Linux Enterprise (Desktop e Server). Incluído no kernel, ele passa a fazer companhia aos demais residentes SELinuxTOMOYOSMACK.

Desktops mais rápidos, mesmo sob pressão

Na área dos desktops, uma série de patches tornam o escalonador mais competente com relação à redução da latência máxima dos processos — nenhuma relação com os patches de Con Kolivas. Juntamente com as novas workqueues implementadas no kernel, o uso de múltiplas tarefas concorrentes num único sistema poderá ser significativamente mais rápido. Por último, um conjunto de patches finalmente dá alento aos pobres coitados que possuem dispositivos de bloco muito lentos. A partir do kernel 2.6.36, os sistemas conectados a esses dispositivos não mais ficarão praticamente incapacitados de reagir quando seus dispositivos — mesmo os USB — demorarem a responder.

Vídeo

Se você possui uma GPU integrada a seu processador Core i3 ou i5, poderá utilizar todos os benefícios do suporte ao Intel Intelligent Power Sharing, recurso presente nesses hardwares que permite um melhor uso — compartilhado, como sempre deveria ser — entre esses dois componentes do “pacote” presente na pastilha de silício. Os benefícios são uma espécie de “overclock” automático da GPU quando a CPU não está a todo vapor, ou então CPU e GPU mais frias e economia de energia quando não estiverem ambas sendo usadas ao máximo.

Ao trabalhar com GPUs AMD Radeon, o Linux enfim se tornou capaz de ler os sensores de temperatura dessas GPUs, entre outras novidades.

Já no campo da concorrente Nvidia, o driver KMS Nouveau passa a incluir suporte — embora ainda básico — às GPUs Fermi presentes na recente série GeForce 400.

Controle remoto via infravermelho

O uso de dispositivos infravermelhos no Linux é, historicamente, trabalhoso. Porém, isto finalmente está mudando. Com os avanços iniciados no Linux 2.6.35, o kernel agora oferece interfaces utilizáveis pelo utilitário LIRC, que por sua vez faz a interface com transmissores e receptores infravermelhos. Com isso, os drivers, antes mantidos no espaço do usuário junto ao próprio LIRC, estão sendo migrados, pouco a pouco, para dentro do kernel.

Compressão de memória mudou de nome novamente

Compcache? Não, o nome mudou para Ramzswap. E quando finalmente foi incorporado ao kernel 2.6.36, o dispositivos de blocos compactado na memória RAM recebeu um novo nome: Zram.

Para usar o Zram, basta ativá-lo nos drivers staging e carregá-lo (chama-se zram). Com isso, cria-se ao menos um dispositivo de blocos compactado, em /dev/zram0. É possível encomendar mais dispositivos por meio de uma opção de carregamento do módulo zram. Para definir seu tamanho, não é mais necessário um utilitário, pois seus controles mudaram dos ioctls para o sysfs. O resultado: basta usar echo 100000 > /sys/block/zram0/size para definir um tamanho de 100 MB para o dispositivo zram0.

Nota: em testes na minha própria máquina, este método não funcionou, pois o sysfs não permitiu a gravação de novos dados no arquivo /sys/block/zram0/size.

Matador mais competente

Quando seu sistema utiliza toda a memória RAM disponível, ele passa a recorrer ao espaço de swap. Quando acaba o swap… alguém (algum processo, é claro!) precisa morrer. O matador de processos se chama OOM (out-of-memory) Killer, e não é sempre tão inteligente. Porém, seus desenvolvedores perceberam que é sempre bom ter um pouco mais de inteligência, mesmo que seu trabalho seja apenas apertar um gatilho. O OOM Killer agora é capaz de tomar melhores decisões a respeito de quais processos matar a fim de liberar a tão valiosa memória.

Novos processadores, nova arquitetura

Uma nova arquitetura de CPU, que ainda nem existe na prática, chamada Tilera, já conta com suporte oficial do Linux. É mais um caso que demonstra a rapidez de evolução e adoção de novas tecnologias típica do Software Livre e, em particular, do kernel Linux. Se a Tilera entregar o que promete, poderemos ter um salto interessante no poder computacional disponível em máquinas comuns.

Já nas arquiteturas tradicionalmente suportadas, o Linux agora funciona com CPUs Tegra da Nvidia, baseadas em ARM.

Novas opções de compilação

Os novos alvos de compilação oldnoconfiglistnewconfigalldefconfigsavedefconfig já foram usados pelos desenvolvedores para eliminar mais de 200 mil linhas de código referentes a arquivos de configuração padrão para as várias arquiteturas suportadas pelo Linux. De certa forma, é como se eles pudessem agora usar um diff dos arquivos de configuração padrão, em vez de uma cópia completa do arquivo de configuração padrão somada às configurações padrão daquela arquitetura específica. Viu como a redução do código foi boa? 🙂

Virtualização

KVM e Xen são grandes concorrentes, mas cada vez mais semelhantes. Os desenvolvedores do KVM acrescentaram alguns recursos que permitem uma espécie de suporte reduzido à execução do Linux como Dom0. Seria este o começo da união entre os dois principais tipos de hypervisors do kernel Linux? Resultados das atuais discussões na LKML poderão ser vistos em uma versão bem próxima do kernel.

Fanotify

A tão prometida e desejada varredura de arquivos sob demanda — imagine isso num sistema antivírus — está mais próxima: o novo sistema Fanotify entrou, embora “de leve”, no kernel. No entanto, vem desativado por padrão em virtude de discordâncias quanto à sua API. A tendência é que o Fanotify substitua as duas “gambiarras” usadas até o momento (sem grande sucesso) para esse mesmo propósito, fsnotifydnotify. O Fanotify é uma estrutura do subsistema de sistemas de arquivos capaz de enviar mensagens ao espaço de usuário (por exemplo, a um software antivírus) informando sobre a abertura, alteração ou fechamento de arquivos. Assim que ela ficar pronta, podemos esperar que seja muito usada em diversos tipos de programas.

Sistemas de arquivos

Quem acessa compartilhamentos remotos via NFS já testemunhou, a partir do kernel 2.6.30, os benefícios do cache local de sistemas de arquivos remotos. A boa notícia: se você usa CIFS para isso, finalmente sua hora chegou. Sistemas de arquivos CIFS agora já têm suporte a essa estrutura, chamada FS-Cache.

No campo do já antigo sistema de arquivos Ext3, a onda retrô levou os desenvolvedores a tornar padrão, novamente, a opção de montagem data=ordered. Ela oferece maior segurança e menor desempenho do que o “antigo novo padrão”, data=writeback.

De forma genérica, o XFS também recebeu vários patches destinados a “melhorar seu desempenho em vários trechos”.

A redundância de subsistemas para lidar com RAID também está finalmente diminuindo. Enquanto o Btrfs recebeu grandes trechos de código do subsistema MD para acrescentar ao futuro sistema de arquivos padrão recursos de RAID 6, o subsistema DM (device mapper) começa a ceder seu código de RAID 5 para outros trechos, de forma a permitir, no futuro, que o utilitário dmraid gerencie também implementações de RAID em drivers de controladoras etc.

Quem usa discos SSD agora também terá mais uma ajuda do subsistema DM, que ganha suporte ao comando discard, capaz de informar que determinada área de dados está disponível — economizando assim um novo ciclo de leitura em todos os blocos que a compõem e estendendo a vida útil dos dispositivos. Tudo isso depende, todavia, da existência de suporte ao comando discard por parte do disco e de sua respectiva controladora.

KGDB + KDB + KMS

Esta sopa de letrinhas tem um significado especial para os desenvolvedores do kernel. O depurador do kernel, KDB (kernel debugger), agora trabalha em parceria com o driver Intel KMS. Isso significa que, na presença de uma GPU Intel que use esse driver, o KDB pode ser acessado a qualquer momento pressionando as teclas SysRqG(confira o resultado neste vídeo).

Futuro

Está em andamento uma iniciativa para aumentar a escalabilidade do VFS (Virtual Filesystem Switch), que já mostrou frutos nesta atual versão do Linux. Espera-se que haja ainda mais novidades no kernel 2.6.37. Da mesma forma, os grandes e contínuos avanços na remoção da BKL (Big Kernel Lock) sinalizam que o kernel inteiro deve ganhar mais desempenho, tanto na versão 2.6.36 quanto nas próximas.

Pode-se esperar também que a integração do KDB, neste momento restrita ao driver KMS Intel, seja incorporada aos concorrentes Nouveau e Radeon.

Este foi o último lançamento de kernel estável em 2010. A versão 2.6.37 do kernel Linux deve ser lançada em janeiro de 2011.

Post original aqui.