feed2list lesezeichen · · · · · ·
 
website Planet GNOME
Planet GNOME - http://planet.gnome.org/
feed text GNOME Memes: Photo
Sat, 26 May 2012 01:38:00 +0000



text GNOME Memes: It’s a trap!
Sat, 26 May 2012 01:38:00 +0000


It’s a trap!


[english]

It’s common: you don’t want just filter the access by IP address, but also by the MAC address. The solution can be quite simple: use the MAC module of iptables:

iptables -A INPUT -s 1.2.3.4 -m mac ! –mac-source aa:bb:cc:dd:ee:ff -j DROP


The command above says: Drop every packet with source ip address 1.2.3.4 and its MAC address is NOT aa:bb:cc:dd:ee:ff. Thus you’re forcing the origin of the packet to be the desired one.


However there is a minor issue with that approach: iptables manages packets at the network (IP) layer, which is above the link (MAC) layer. What does that mean? Simple: Once the packet arrives at the network interface, it’s handled by the MAC layer and then it’s forwarded to the IP layer. That’s where iptables filter it. Again, what’s the problem? At this pointer, the ARP table of the kernel was touched, meaning that (using the example above), if a packet with source IP 1.2.3.4 and source MAC 00:00:00:00:00:01 arrives, it will change the ARP entry in the kernel table to point the IP 1.2.3.4 to that wrong MAC address. After that, the packet is forwarded to the above layer, which is then dropped by iptables from go on over the network. Even if the packet is dropped, which is what you want, your ARP table is messed up right now.


That’s where arptables command comes in. It works just like iptables, but it filters packets at MAC layer, preventing the kernel ARP table being touched by wrong packets. Its syntax is very similar to iptables (in fact, it’s a copy of iptables adapted to work in the lower level). The same command (iptables) above could be better implemented with arptables:

arptables -A IN -s 1.2.3.4 ! –source-hw aa:bb:cc:dd:ee:ff -j DROP


You just need this rule, it’s not necessary to have the iptables rules anymore. arptables needs a kernel with support built in, which I guess most distros do, just like they do with iptables.


Take a look at the arptables man page, it has some examples. Its similarity with iptables facilitates our lives.

[português]

É uma situação comum: você não quer apenas filtrar o acesso por endereço IP, mas também pelo endereço MAC. A solução pode ser bastante simples: usar o módulo MAC do iptables:

iptables -A INPUT -s 1.2.3.4 -m mac ! –mac-source aa:bb:cc:dd:ee:ff -j DROP


O comando acima diz: Descarte todos os pacotes com o endereço IP de origem 1.2.3.4 e cujo endereço MAC não é aa:bb:cc:dd:ee:ff. Assim, você está forçando a origem do pacote a ser a desejada.


No entanto, há um pequeno problema com essa abordagem: o iptables gerencia pacotes na camada de rede (IP), que é acima da camada de enlace (MAC). O que significa isso? Simples: Quando o pacote chega na interface da rede, ele é tratado pela camada MAC e depois é encaminhado para a camada IP. É onde iptables o filtra. Novamente, qual é o problema? Neste ponto, a tabela ARP do kernel foi alterada, o que significa que (usando o exemplo acima), se um pacote com o IP origem 1.2.3.4 e MAC 00:00:00:00:00:01 chega, ele vai mudar a entrada na tabela ARP do kernel para apontar o IP 1.2.3.4 para o endereço MAC errado. Depois disso, o pacote é encaminhado para a camada superior, que é então descartado pelo iptables de continuar na rede. Mesmo o pacote sendo descartado, que é o que você deseja, sua tabela ARP está uma bagunça agora.


É aí que o comando arptables entra. Ele funciona exatamente como o iptables, mas filtra os pacotes na camada MAC, evitando que a tabela ARP do kernel seja alterada por pacotes errados. Sua sintaxe é muito semelhante ao iptables (na verdade, é uma cópia do iptables adaptado para trabalhar num nível mais baixo). O mesmo comando (iptables) acima poderia ser melhor implementado com arptables:

arptables -A IN -s 1.2.3.4 ! –source-hw aa:bb:cc:dd:ee:ff -j DROP


Você só precisa dessa regra, não é necessário ter as regras de iptables mais. o arptables precisa que o kernel tenha suporte, o que eu acho que a maioria das distribuições já fazem, assim como eles fazem com o iptables.


Dê uma olhada no man do arptables, lá tem alguns exemplos. Sua semelhança com o iptables facilita nossas vidas.


On May 21 and 22, this year, there was a conference about the "Freedom and Privacy on the Internet". There were experts from Macedonia, Bulgaria, Albania, BIH, France who presented variety of topics on themes like: the privacy on the internet, freedom of speech on the internet, privacy in the media, the country and the freedom of speech etc.

Members from Free Software Macedonia took part of the conference. Igor Stamatovski and Damjan Georgievski were speakers, while Jovanka Gulicoska, Aleksandar Lazarov and I held couple of workshops about the issues connected with these themes.

Here are some of the photos from the conference.
I hope You will enjoy it ! :)

7251997346_44fc5d24da_o 7255010094_41bfc1dfbf_z 7254894404_ac1e816f10_z 7255002662_dc09199aa1_z 7254889876_fc3120475a_z 7255006790_63ec63a88b_z

image 1: Aleksandar Lazarov and I trying to crack some pass :) )))

image 2: I (Elena Petrevska) presenting
image 3: Aleksandar Lazarov, Jovakna Gulicoska and Igor Stamatovski during a workshop

image 4: Damjan Georgievski presenting

image 5: Igor Stamatovski presenting

image 6: Aleksandar Lazarov and I being focused on the presentation :D


text Matthew Garrett: Fedora 17 and Mac support
Fri, 25 May 2012 03:52:29 +0000
Fedora 17 will be shipping next week. It's got a bunch of new features, none of which I contributed to in the slightest. What I did work on was improving our support for installation on x86 Apple hardware. There's still a few shortcomings in this so it's not an announced or supported feature, but it's sufficient progress that it's worth writing about.

There's a few ways that Apple platforms differs from normal PC hardware. The first is that Apples are very much intended to be EFI first and BIOS second, while that's still not really true for commodity PC hardware. Apple launched Boot Camp shortly after they started shipping x86 Macs (and shortly after I'd got Ubuntu running on one for the first time[1]) but the focus of Boot Camp has always been to be good enough to boot Windows and not much else[2]. The other is the integration with the boot environment. You can boot Linux easily enough by setting the standard EFI boot variables, but if you ever boot back into OS X it's easy to trigger deletion of those. There's then no straightforward way of resetting them, and you're left having to recover your installation.

The other difficult bit has been actually starting the installer at all. If you're happy to use BIOS emulation than this can be done without too much misery, but you're then left with dealing with Apple's custom synchronised GPT/MBR. More modern Macs will boot via the standard EFI mechanisms, but there's a range of problems that can be caused that way. Fedora 17 is the first Linux distribution to ship install media that will EFI boot a Mac when either written to optical media or a USB stick[3]. Put the install media in your system and then either select it in the OS X Startup Disk preferences menu and reboot, or reboot and hold down the alt key. In the latter case there'll be a nice Fedora logo. Click on it and it'll boot.

The biggest difference between Apple hardware and anyone else is that we'd normally put the bootloader in a FAT partition that's shared with any other installed operating systems. That does actually work on Apples, but then you run into the earlier point I mentioned. The Apple startup picker that you get by holding down the alt key doesn't pay any attention to the standard EFI boot variables, so it won't show a FAT partition merely because it's got an EFI bootloader on it. The same is true of the OS X Startup Disk preferences. The best way to get a drive to appear in the menu is to make it look like an OS X drive.

This was problematic in a few ways, due to the requirement for an OS X drive to be HFS+. The first was that we didn't have any support for that in our installer, so work had to be done there. The second was that the state of HFS+ was woefully poor in Linux[4]. Linux will refuse to write to an HFS+ filesystem if it hasn't been cleanly unmounted or fscked, and since we can't rely on everyone always shutting their machine down cleanly that means a working fsck.hfsplus. In theory we were shipping one of those. In practice, it reliably segfaulted on 64-bit systems[5]. So I had to package the latest version of Apple's code, and doing that involved dealing with the fact that Apple now use blocks almost as much as Grub 2 uses nested functions, and that meant using Clang and that meant dealing with a bug where Clang segfaulted if it had been built with gcc 4.7[6], but finally once all of those yaks had been shaven we could trust our filesystem.

Of course, more problems existed. You can't just drop a bootloader onto an HFS+ partition and expect it to work. You need to write its inode value into the superblock. Trivial, except that if you do this from userspace then the kernel kindly overwrites your update when you unmount the disk and it updates the superblock. That required a mechanism for updating that data via the kernel, which meant adding an ioctl. This would have been fine, except the OS X Startup Disk preference looks for a bootloader in a location other than where Fedora installs it. Changing our bootloader install path wasn't a great option, so the easiest thing to do was just to link them together. Except HFS+ doesn't really support hardlinks. When you hardlink something the original file gets moved into a magic directory in the filesystem root and the links are special files that refer to it. And it turns out that it's not actually the inode that the firmware wants when finding the bootloader, it's the catalogue ID, and these aren't the same when hardlinks are involved. So, another kernel patch.

All that was left for the boot partition then was adding an icon and a drive label. We already had code for generating the icon, and the drive label wasn't that difficult. Hurrah!

Ok, so we can construct a filesystem that (a) appears in the bootpicker, and (b) appears in the OS X Startup Disk preferences. We can even put a bootloader on it. This led to the next problem. The bootloader started without any trouble. But the bootloader couldn't read any files off the boot partition, including its configuration. This should have been obvious with hindsight - the problem was simply that grub legacy[7] doesn't support HFS+. Writing an HFS+ driver seemed like an excessive amount of work, especially since the firmware already supported reading HFS+, so instead I wrote a simple grub filesystem driver that uses the UEFI interfaces to read files.

A working bootloader! One more problem there. grub looks in its startup directory to find its configuration file. We have two "copies" of grub hardlinked to each other, each looking in a different directory for configuration. Hardlinking the config files together worked fine, except that most tools that update config files have this irritating habit of writing to a temporary file and moving that over the original, thus breaking the hardlink. Easily solved by using a symlink instead, except that the UEFI filesystem semantics don't really support symlinks because UEFI only really envisaged using FAT. If you use Apple's UEFI HFS+ driver to open a symlink, you get a short file containing the target path of the symlink. Rather less than ideal, and a rather gross hack to cope with it.

All set now, other than a bug in some older Mac firmware where read would return BUFFER_TOO_SMALL without returning the real buffersize and the odd way that Apple treat CDs. Oh, and a bug in Apple's Broadcom wifi driver that could overwrite the kernel, and case-sensitivity, something that obviously isn't something you often hit on UEFI when all you usually see is FAT.

Kernel-side, we had a couple of things. Obviously there the bugs I'd mentioned in the past, but those had already been dealt with. New issues included the fact that we were frequently picking the wrong framebuffer address, especially on machines with multiple GPUs. Fixed now, along with another issue where we'd sometimes get confused by models with different GPU configurations. And at that point, most of the implementation work was done.

Of course, there was also the work of integrating this into the tools that we use to generate our install media, and I'd like to thank Will Woods, Brian Lane and Dennis Gilmore for the work they put into that, along with anyone I've forgotten. Tom Calloway handled getting the device label graphics generated right before deadline. A cast of thousands helped with testing.

So why did I mention shortcomings? First, this only works on machines with 64-bit firmware. Early 64-bit Apples still had 32-bit firmware. In theory we can support that case - in practice it's a moderate amount of writing, including some mildly awkward kernel code. But anything later than mid-2007 should have 64-bit firmware, so it's not a massive concern. Second, we seem to have fairly significant trouble with Radeon hardware on a lot of Macs. We fixed one bug there, but something's still going wrong in setup and you'll frequently end up with a black screen. And thirdly, I'm sure there's some other machines that still don't work for (as yet) undetermined reasons.

With luck we'll get these things dealt with by Fedora 18. But even with these flaws, Fedora 17 will work fine on a lot of Apple hardware, and testing it is as simple as downloading and booting a live image. Bugs go in the usual place.

[1] Note my charming belief that the Ubuntu installer would fully support this hardware via EFI in the near future. 6 years ago. It still doesn't.
[2] This can be fairly easily seen from little things like the name "Windows" being hardcoded into every UI that sees a Boot Camp drive.
[3] I cover this in more depth here
[4] To be fair, it mostly still is - there's plenty of work to be done there.
[5] Approximately nobody had noticed this, which is all kinds of unreassuring.
[6] Thanks to Kalev Lember for dealing with that
[7] Still the EFI bootloader in Fedora 17. We've already swapped Fedora 18 over to grub 2.

comment count unavailable comments

I'm happy to announce, we have added Java API support to write GUI tests using LDTP API.

Java LDTP client source:

http://cgit.freedesktop.org/ldtp/ldtp2/tree/ldtp/Ldtp.java

Dependency:

Apache codec base 64 library
LDTP binaries (Python on Linux, CobraWinLDTP.msi on Windows)

Tested on both Windows and Linux.

To compile set the CLASSPATH of the following jar files:

commons-codec-1.6.jar
ws-commons-utils-1.0.2.jar
xmlrpc-client-3.1.3.jar
xmlrpc-common-3.1.3.jar

Java documentation available here


text Lennart Poettering: Presentation in Warsaw
Thu, 24 May 2012 20:06:00 +0000

I recently had the chance to speak about systemd and other projects, as well as the politics behind them at a Bar Camp in Warsaw, organized by the fine people of OSEC. The presentation has been recorded, and has now been posted online. It's a very long recording (1:43h), but it's quite interesting (as I'd like to believe) and contains a bit of background where we are coming from and where are going to. Anyway, please have a look. Enjoy!

I'd like to thank the organizers for this great event and for publishing the recording online.


text Elena Perevska: GNOME Women Outreach Program
Thu, 24 May 2012 12:51:31 +0000

It is real !!! :) )))

         How much an internship in GNOME means to me can be concluded from the sole fact that couple of days afterwards I was jumping around whether I was home or outside. :) The excitement that existed in myself was too strong for me to stop. I did not care what the others thought, how they saw my peculiar body expressions, as long as I knew what was the reason for this behaviour of mine. I was accepted on this three months internship organised by GNOME and I was more than satisfied!

          Particularly essential is that it came to me during the most important period of my life – the time when I have to apply at universities and build the bases of my education. Throughout the high-school years I was introduced to HTML and C, and knew the way they work. I was interested in building web-pages and I was prosperous, but all of it was amateurish.

            In February, this year, I went on a presentation for Google Summer of Code, which seemed as a perfect opportunity for young people who want to contribute to the community. Participants in GsoC from the Free Software Macedonia introduced us to the way in which we can also take part in the internship. However, I found out that it is mostly for students enrolled in a university, and I planned to wait until the next year and apply.

          In the mean time (frankly speaking) I was enervated from the "Genuine Windows License", and started searching for alternative solutions. At the same time, I took part in ROBOMAK, which is a competition for robotics, and I met Aleksandar Lazarov. He, as a Linux enthusiast encouraged me to try Linux. It seemed as the perfect match which gave me the freedom that I seek for a long time. The desire I had from always was working in programs like "Terminal" and self-controlling the processes instead of waiting for everything from the machine. I enjoyed every moment I spent searching for other, new, alternative commands I could use in "Terminal".

       At that period, I started going at KIKA HackLab where young people from Free Software Macedonia are gathered. It is organisation responsible for spreading and informing the population about the advantages of the free software and the freedom it brings. I met many people who shared the same interest as myself, and finally felt secure in expressing what I thought about freedom. As a member of various NGOs since the age of 15, I knew what is the momentary political, economic and social situation in the world, but I lacked the technological element in it. Therefore, going in HackLab was helpful for me to get involved in the computational freedom that the Free Software Community offers.

          After talking to members from the Hacklab, I found out about GWOP. This opportunity came to me as a sun after stormy raining. I knew I will start contributing immediately. Some of the women told me it will be easier for me if I start with Documentation and move on periodically to more difficult concepts. One of them, Jovanka Gulicoska, told me about her experience. Instantly, I started thinking what I will write in the application and which bug I will fix. I chose a bug from the Documentation section, and started working on it.

          I was working on the section "Application Help" – GNOME-games; more particularly, on the documentation bag of "Quadrapassel". My mentor was Tiffany Antopolski, to whom I am largely thankful. The patch that I created is available here: https://bugzilla.gnome.org/show_bug.cgi?id=618345 . I started working on it on March 25, and at first, I made it with help from the documentations from the other games. However, the second version was something different. I was working on the redesigned outlook, and I started it from scratch on the 2nd of April because I wanted to built it up from the very beginning till the end. I was so much involved and concentrated in making the documentation, and I wanted to add some creative concept inside it because of the level of motivation and joyfulness I have while working for GNOME. The freedom for choosing how to design the concept of a given task is given, and that’s what amazes me. Hence, Tiffany commented and gave me suggestions on how I should improve some things, that encouraged me even more while working on the bug. After providing her with the latest design of Quadrapassel help, she told me:

"Wow. I don’t think I’ve ever seen someone do something that original using Mallard! ".

          After receiving this feedback, I was motivated and encouraged to work on many bugs. Tiffany’s comment enormously affected my level of motivation for contributing, and no matter if I was accepted or not, I planned to contribute largely for GNOME.

         The e-mail I received on April, 23, made me feel the happiest person in the world. I was accepted in GWOP, and instead of Documentation, I was transferred to Web Development. It seemed even better! I will have an opportunity to continue with the knowledge I had for Web design, and finally use it for essential reasons. In addition, I now have two amiable co-mentors Christy Eller and Andreas Nillson, who are always willing to help me when I have some question, for which I am very thankful.

          I was astonished about the acceptance, and knew that this internship will have enormous importance for my university years as I plan to enrol in "Computer Science and Electrical Engineering". I am certain that through GNOME I will contribute as much as possible for the Free Software Community because I do this not as a job, but as an enjoyment and pleasure. :)

Thank You GNOME for giving me the opportunity to be intern on this amazing program !

And for all the other interns, MAY THE FORCE (FUN) BE WITH YOU :) ))


Since yesterday, 700,000 French living abroad are voting to elect their representatives at the national parliament. This year, they have the choice to cast their vote through Internet instead of going to their embassy or consulate.

Gag woman

The system led to harsh criticism including:

  1. Witnesses don't have access to the source code of the application (it was requested by Pirate Party candidates)
  2. Voting requires to downgrade your Java installation to version 6.
  3. HTTPS is not mandatory, allowing phishing
  4. Servers hosting the website are located in Spain
  5. And many more…

All of those points are mere details. Let me be clear about those : we don't care! We don't give one single f*** about them!

Of course, those details are the proof of the complete amateurism and technological illiteracy of the current political elite but it doesn't matter. Even if everything was perfect, the only thing to remember is that a single provider company will decide alone the value of 700,000 votes.

Let me repeat that : one private company will decide the value of 700,000 votes.

It's not a possibility, it's a fact ! A true indisputable fact !

Of course, the company might decide that the value of the votes given to the French administration should be the one sent by the voters. It might be. Or it might be not. There's no way to know or to verify it. 700,000 votes will be decided by one person. That's as simple as that.

Lot of people will think that I'm talking about a post-apocalyptic scenario, a future we should try to avoid. It is not. It is a fact which is happening right now in one of the most influential democracies. The result of this vote will have absolutely no democratical value !

I repeat : the result will have no value at all. By chance, it might be related to the opinion of the population but there's no way to verify it.

Would it be better if the company was replaced by the French administration, if all the code was opensource[1], if the website was compatible with all systems ? No, it would not change the fundamental problem.

Is going to the embassy an option ? Not even that. Because the private provider will give to the French administration a list of people who didn't vote by Internet. They have the power to cast your vote and to remove you from this list, preventing you to access your embassy.

Let's summarize that in one sentence :  the result that will be published for 700,000 French voters will have not value at all. Not a single little value. Everything else is only a detail.

PS : it should also be noted that 700,000 private political opinions will be given to a private company. Cross your fingers…

This text is available in French on Facebook, Google+ and Diaspora. Please use the social networks to share this with all your French contacts. Copy/paste, adapt the text without giving me credits but, please, spread the word!

Picture by g.rohs

Note

[1] How can you prove that the code you received is the one running on the server?


Flattr our API Documentation
text Sumana Harihareswara: A Local Maximum
Thu, 24 May 2012 03:50:15 +0000
By the way, I got promoted. It's quite an honor.

Wikimedia Foundation's new Engineering Community Team, which I lead, is a renaming of the TL;DR group. We've written a draft summary of our goals for July 2012-June 2013. There's so much to be done! (Of course, we're hiring.)

In open source, we share our vulnerabilities and our milestones, so of course my boss announced my promotion to a public mailing list. I was surprised and delighted when colleagues and contributors in my community responded to that announcement with congratulations, privately and publicly. It is as though they believe I am doing a good job! Take that, impostor syndrome.

I'm thinking about the thirty years of influences that got me here. As a teen, I volunteered for the Peace and Justice Network of San Joaquin County, and met my mentor John Morearty, whom I saw this past weekend. Before I knew Sam Hatch, and before I knew Seth Schoen, even, I knew John, a teacher who took his values seriously and was always ready to teach. He led volunteer communities that aimed for inclusiveness and viral change. He modeled grit, open-mindedness, and compassion, and I saw in his example that another world was possible, another mode of being. He wrote a fascinating memoir that you should check out, if you like twisty life stories.

John had twin sons, Mike and Brian. I got to meet Mike on Sunday. On Monday he got write access to Wikimedia Labs, Git, and Gerrit. I find this confluence pleasant yet dizzying, like the bushels of jasmine in John's garden. There's so much to be done, and the abundance of my world may yet provide. As John reminded me this weekend, we cannot build the new systems we need; we must cultivate them.


text Gopal Krishnan: Prototype Finished
Wed, 23 May 2012 20:21:00 +0000
I have finished making the prototype for the history panel and have uploaded to Bugzilla the entire application. This contains a history box, entry box and an equals button. Upon clicking the equals button the equation in the entry box is written into the history box on one line and the next line contains a temporary answer of 10 to show how the actual answer would appear like. The bug can be found here: https://bugzilla.gnome.org/show_bug.cgi?id=676686
I have added instructions on how to install it as well as the missing features in it. Please try it out today and comment in the bug post for suggestions, bugs, improvements!

Next Step: After receiving feedback on this bug, I will begin implementing it into Gcalctool. This will be a major addition to the program.

I was working on an ELF linker in Scheme recently, and wanted to re-read some of Ian Lance Taylor's 20-part series on ELF linkers and linking. In a brief search of the tubes, a list of the articles didn't come up, so perhaps this short and sweet list will make some future web searcher happy.

The list: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

They articles are well-written and fascinating, so don't click unless you have a few hours to burn.


text Mario Sanchez Prada: Frogr 0.7 released
Wed, 23 May 2012 17:20:54 +0000

As you might already know Flickr has added support for OAuth a while ago, which is meant to be the obvious replacement to the old Flickr auth API that has been available since a long long time ago, which has been used by many applications our there, like frogr. But the important point here for apps using the old auth method is that it won’t be longer available after July 31st, which means they should get updated if they want to keep working as so far.

Frogr 0.7

So, this is the main point of this release: to update the internal implementation of the Flickr REST API in frogr (which, ideally, will be released independently as a library at some point) to use OAuth instead of the old authentication API.

Additionally, in order to make things easier for users of older versions, the application will take care of exchanging the authentication token from the old system to the new ones used by the OAuth API. If you want to know more details about this, check the related API. For the rest of you, you shouldn’t notice anything the first time you run this new release.

Still, some other things were included in this new release that are worth mentioning:

  • Ability to import tags already present in pictures  (e.g. as set by f-spot or shotwell).
  • Allow users deciding, right from frogr and on a picture-by-picture basis, whether to set the geolocation information for pictures when uploading them to Flickr.
  • New tags are added to the auto-completion without having to upload anything first.
  • Allow using a dark version of your theme if available (e.g. Adwaita).
  • Some redesign of the menu bar, thinking of a future migration to GMenu.
  • Added menu accelerators for the most common operations.
  • As usual, bugfixes, cleanups… that kind of stuff.

Also, you can check the announcement mail or the NEWS file if you want for more detail about this new release, as well as the website of the project for additional information, such as knowing about ways of collaborating or how to get frogr installed on your system.

I think that’s it. Enjoy!


text Tim Waugh: Some benefits of printerd
Wed, 23 May 2012 16:06:33 +0000

Recently I talked about a new print spooler under development, printerd. In that post I mentioned briefly how printerd is structured, but did not go very deeply into why or what the project is for.

Firstly, printerd is experimental and is very far from being a functional print spooler. It doesn’t yet run any filters, for instance, and has no backends of its own to transport jobs to devices. So far it is just a test of what a Linux print spooler would look like if it were written today.

There are several problems printerd aims to solve. Some of the solutions come automatically from implementing it as a polkit-enabled D-Bus system service.  I mentioned one of them in the original post about printer: the fact of having an asynchronous client API. All D-Bus services can be used asynchronously thanks to the D-Bus client library. This approach means the print dialog will be able to use printerd without blocking (and without having to start another thread to use it).

Another benefit is the fact that security/authentication can be made much cleaner and more well integrated into a desktop system if polkit is the basis for policy decisions. Although there is some support for adding polkit support to CUPS in the shape of cups-pk-helper, the way this works is to effectively bypass the standard CUPS policy mechanism. In order to completely limit some operation from users, two different policies must be changed: the built-in CUPS policy in cupsd.conf, and the polkit policy for cups-pk-helper.

In contrast, printerd’s only interface is D-Bus and it uses polkit to authenticate operations. If extra security policy is added in future that cannot be expressed using polkit (for instance, printer-specific policy rules like CUPS has), that extra policy layer will be in addition to polkit, not an alternative. Currently, for example, cancelling a job requires that the user is permitted to use the org.freedesktop.printerd.job-cancel action (a polkit check), as well as being the user that submitted the job in the first place (an additional check). Both requirements must be fulfilled.

One more benefit of printerd is the idea of splitting the IPP server out from the local spooler. Currently printerd only spools files and does not provide IPP services but the idea is that when it does, this will be implemented out-of-process by a program that acts as a client to printerd. It will use printerd’s D-Bus interface, just like any other client. That way, users that want to print to local printers but are not interested in sharing those printers on the network don’t even have to run the IPP server. In fact, as printerd is an activatable system service, the spooler itself won’t even be running unless there is something for it to do.

By accepting only one format for printing, some complexity can be removed from the spooler. Generally people print from applications that generate PDF for printing. By using PDF as the required format, the task of selecting pages and arranging several pages onto each side (i.e. number-up) is hopefully made a little easier, as the structure of PDF makes this task more straightforward than PostScript does. Increasingly printers are able to understand PDF natively themselves. This means converting between formats can be kept to a minimum.

Finally, printerd is experimental, so ideas can be tested and developed. For example, I hope to get printerd to improve the latency between cancelling a job and having the printer stop feeding paper, by splitting the backend out of the filter pipeline, killing its input, and telling it to discard its send buffer. Another idea related to separating the filter pipeline from the backend is to begin filtering the next job before the backend finishes clearing out the last of its send buffer. I’m sure there are other areas for improvement that can be played around with in a project like printerd.


Today I push my first release of the gnome-shell extension of GTG : Github repo

  • First implementation of the architecture :

I decided to rewrite the extension from the begining to provide a strong architecture.
For now the extension is composed by 3 files :

- extension.js this file will launch the "modules" of the extension.

- gtgsearchprovider.js represents the first module, it adds a search provider to gnome shell. This search provider will search in your gtg tasks and display results. In order to centralize features, this search is carried out by the overview.
- gtgdbus.js contains all the dbus-related things. Interfaces, proxy, usefull functions, etc…

For the future, I’ll add a file for each module and extension.js will just manage these modules (Launch, destruction, etc…)

  • Search provider for Gnome-Shell

As I explained before, this first release comes with a search provider. Just open the overview, type keywords to search in your tasks, and the extension will displays all results.
Of course, gtg must be launched.

You can see an example in this video :

  • How does it works ?

It’s quite simple. The extension contains the list of all the active tasks.
When a signal is emitted (TaskAdded, TaskModified, TaskDeleted) this list is updated :

this.addedSignal = GTGDBus.GTGProxy.connect(‘TaskAdded’,
function(sender, tid) { loadTasks(); });
this.modifiedSignal = GTGDBus.GTGProxy.connect(‘TaskModified’,
function(sender, tid) { loadTasks(); });
this.deletedTask = GTGDBus.GTGProxy.connect(‘TaskDeleted’,
function(sender, tid) { loadTasks(); });

Also, the extension watches the gtg state in DBus, if the interface vanishes, the list is emptied, if the interface appears, the list is updated :

GTGDBus.DBus.session.watch_name("org.gnome.GTG", false,
function() { running=true; loadTasks(); },
function() { running=false; loadTasks(); });

Now, the user can search with differents terms. The extension searches these terms in the list and displays results.

  • And after ?

After, I’ll begin the menu in the calendar widget and I’ll fix all bugs you found in the search provider :)


text Bastien Nocera: System Settings shell changes
Wed, 23 May 2012 12:27:00 +0000
While Jon McCann made changes to the System Settings UI, I was busy implementing an animated notebook, to make the switch between panels, overview and search less jarring.



Video on YouTube.

Here's a list of what we fixed:

  • Avoid scrollbars at all costs on startup (made possible by some GTK+ sizing bug fixes)
  • Make the default window bigger, while supporting small displays (800x600 displays should now be usable)
  • Bigger icons to match the Shell's overview
  • Better layout of search results
  • Animated transitions between panels, overview and search results

Before


After

There will most likely be more tweaks of the UI between now and the GNOME 3.6 release, which I'll make sure to let you know about.

PS: Before you ask, we cannot animate window size changes. Hopefully this will be possible in the future.

Update: Fixed a double-negative. Also note that there are some differences between my screenshots and reality, like the separators, as my system wasn't fully updated.

Dit crowdfunding-initiatief is zeker de moeite waard, en het mooie is dat de code die ze voor deze site gaan ontwikkelen onder een opensource-licentie weer ter beschikking komt!


My first task was to identify, how would a locked down computer be used and by whom. The list so far:

  • single purpose kiosk — users can see only pages of a particular site;
  • Internet access point — users can browse web, save and view downloaded files;
  • Classroom — users must be restricted from accessing unneeded material and protected form ruining their configuration;
  • Workstation — less restrictive, but something like classroom;
  • Home computer for children — similar to classroom.

The features and their default settings for now are organized in feature matrix [PDF]. The list is only a draft and all ideas are welcomed.

I am not sure what to do with non-gnome software, that is using dconf, like Unity. Should it be supported? Also, should other features, that come with lockdown, be implemented? For example:

  • quotas;
  • resetting home directories;
  • resetting configuration;
  • lockdown of non-dconf settings like FireFox, LibreOffice.

To me this seems like a feature creep, but maybe this is worth it.



text Wouter Bolsterlee: Introducing HappyBase
Tue, 22 May 2012 21:50:48 +0000

I’m happy to announce HappyBase, a developer-friendly Python library to interact with Apache HBase. HappyBase is designed for use in standard HBase setups, and offers application developers a Pythonic API to interact with HBase.

More information is available from the HappyBase documentation, including an installation guide, tutorial, and API docs. The HappyBase sources are on Github. The PyPI page on HappyBase makes it easy to find with tools like pip.


It's already been a busy week, but productive.  I have been hacking on the support portal to add more "actionable" events and cleaning up the UI.  There are still come spacing issues related to names that will be addressed.  But the support group can now see when users are clicking on icons to which they do not have a license.  After the user clicks on it three times in a row we are confident it wasn't accidental and now get a tile stating this fact.  The portal now also displays when users have changed some settings in Evolution that we do not want changed. (email checking less than 10 minute intervals).  We also can now see when a user monitor goes dark or blinks and they power off the thin client and log back in again.  People seem surprised/pleased that we can see these things and that they are contacted almost immediately.


I was doing some UI changes to the picture options UI that appears when you double-click on a photo and that now is live.  Centralized scripts are just a thing of beauty.  I always make the changes in another .py file, test with a few people hard coded and then comment us out and it immediately goes live.  Here is the script that launches the new UI and how the old one was turned off.  Right now I'm sending debugging information to /tmp and after a few days that will be turned off and the commented code removed.  Easy to roll back, easy to put into production, nothing destructive.


Here is the finished UI, similar to what I posted last week with a few small changes:

The reason for the Crop buttons becomes clear when you see the shot below.  Users on dual screens get this when they hit PrintScreen and the aspect ratio is terrible for printing on paper...and very often they want to print what is on 1/2 of the screen:


So they just hit the Crop button and the screen chops in half and is ready to save to their Desktop, print or place into the clipboard:


Another reason for the changes made to the UI is that I wanted to update the UI that appears when users insert USB sticks into their thin clients.  I'll post a more detailed blog about this issue when I am finished.  But in a nutshell all users have access to a simple photo manager that allows them to quickly remove a few photos from a digital camera or USB stick.  Those users with higher access levels can use a full file manager as you would expect from such devices.  I have started to modify this simple UI that trips when the thin clients detect USB insert.  I have built a basic Glade screen fashioned after the one on the main GNOME desktop server; it will mature and look much nicer when finished.  The design goal is to keep those huge megapixel images off the City network that are just bound for LibreOffice and Evolution.  Their higher quality is not needed. As I said, more detailed information will come in a few days.


Other projects: Still working on the new thin client build and making progress; updating LibreOffice to 3.5.3 tonight; very pleased with our drop in Evolution crashes on SLED 11 with the most recent patches--now it's time to figure out some of these deadlocks.
text Chris Kühl: LinuxTag 2012
Tue, 22 May 2012 19:05:21 +0000

LinuxTag starts tomorrow in my beautiful adopted home of Berlin. This will be my 4th LinuxTag, my first being in 2003 when it was still in Karlsruhe. Looking forward to seeing old and new faces.

I’ll be moderating a few sessions and, from tomorrow to Friday, manning the GNOME booth along with Muelli and a few others. Stop by and say, "Hi".

Linux Tag Logo


text Giovanni Campagna: And now on Planet GNOME!
Tue, 22 May 2012 16:34:00 +0000
Yes, I've been added to Planet GNOME!
Well, not much else to say, as I blogged recently on my work.

Just a small gift:


You want to try this? Grab the slave-connection branch from git://github.com/gcampax/gdm.git and the screen-shield branch from git://github.com/gcampax/gnome-shell.git .
Note: you need to have the latest gdm running, which means probably turning it into a rpm. And that will completely break your greeter, so make sure you have autologin enabled.
Also note: I follow the "Rebase early, rebase often" policy, which means that following my personal repository is a very bad idea. For "stable" stuff, you can usually find a wip/* branch at the corresponding gnome.org repo.

Enjoy!

During Q1 2012, GNOME translation teams worked on the GNOME 3.4 localization. The GNOME 3.4.0 stable release was delivered on March 28. According to the GNOME 3.4 Release Notes, GNOME 3.4.0 offers support for more than 50 languages with at least 80 percent of strings translated, including documentation for many languages.

When comparing the completeness of the GNOME 3.2 and 3.4 localization, the following translation teams, among others, achieved some impressive progress:

  • Khmer team increased the translation completeness by 23%.
  • Macedonian team increased the translation completeness by 21%.
  • Canadian English team increased the translation completeness by 13%.

In January 2012, there were 1139 translation commits to git.gnome.org as per the GNOME Commit-Digest. In February 2012, there were 1483 translation commits, and in March 2012, there were 3283 translation commits suggesting that many translators were finishing their work on GNOME 3.4 during the string freeze period, which started on March 5.

Some of the other interesting stats on the l10n.gnome.org localization platform include:

  • 128 registered teams.
  • 178 registered languages and language variants.
  • 349 registered software modules.
  • ca. 41000 UI strings for translation in the GNOME 3.4 release set.
  • ca. 21904 doc strings for translation in the GNOME 3.4 release set.
  • ca. 500800 UI strings for translation in all registered modules.
  • ca. 253900 doc strings for translation in all registered modules.

The gtranslator team released several versions of the gtranslator translation editor during Q1 2012. The new versions introduce a number of feature enhancements, including support for non-UTF-8 files, more integration with the GNOME 3 platform, and better translation memory support.


text Pascal Terjan: Pizza
Tue, 22 May 2012 12:36:23 +0000

I have spent few days in Berlin recently and found a nice small pizza restaurant which was very good.

So, after Il Campionissimo in Paris and Franco Manca in London, I recommend you 'A Magica in Berlin :)

It is small and you will probably need to share you table with strangers but it was delicious!

While I'm on the topic I'll shamelessly advertise my Berlin photos.

Auswärtiges Amt
Ernst TälmannP1000178Friedrichswerdersche KircheP1000259P1000258


text Jon Nordby: MyPaint and goats at LGM2012
Tue, 22 May 2012 11:35:09 +0000

Already covered in the news from LGM was the release of GIMP 2.8, and that GIMP 2.10 will be fully GEGLified. The goat-invasion branch which has most of that work, the result of 3 weeks of pippin and mitch on a couch hacking together, has already landed in master. This means that GIMP now has support for high bit-depth workflows for most operations. Finally.

Putting the goat in MyPaint

During LGM I started working on using GEGL in MyPaint. I have already mentioned this idea several times, so it was time to stop talking and get hacking.

As a first step in making use of GEGL I wanted to replace the current surface implementation with one based on GeglBuffer. Since GeglBuffer already provides tiling, and can store any buffer data supported by Babl this turned out to be easy. Øyvind (pippin) added the semi-quirky pixel format we currently use* in MyPaint to Babl, and I was able to get a rough working GEGL based Surface implementation the first evening.

The MyPaint brush engine working on top of GeglBuffer

* RGBA premultiplied alpha, in 16 bit unsigned integers with  2^15 being the maximum value.

The next couple of days went to moving to the GeglBufferIterator API instead of gegl_buffer_{get,set} to have zero-copy access to improve performance, and improving GEGL and GEGL-GTK so that some of the hacks in the initial implementation could be removed.

Most of the work is in the gegl branch of MyPaint. A simple test application, mypaint-gegl.py, is included, and you can read README.gegl for how to try it out. Warning: only intended for curious developers at this stage.

A lots of work remains to be done for MyPaint to be able to fully use GEGL. The progress is tracked in two bugs, one for MyPaint work and one for GEGL issues. Because one cannot combine PyGObject with PyGTK, it will likely not be possible to fully integrate GEGL in MyPaint before porting to PyGI and GTK+ 3.

Oh, in case the goat references are lost on you – check the GEGL page on wikipedia.


The standard way of deploying Maliit is to have a single maliit-server instance (per user session), hosting the actual input method (virtual keyboard, handwriting). Applications then communicate with the server (and by extension, the IM) through an IPC.

This allows for a single instance of Maliit to serve all applications, which is memory efficient and robust. A crash in a Maliit IM plugin cannot take down the application and risk loss of significant user data. The disadvantage is the increased system complexity (a separate server process needs to be running at all times*) and requiring compositing of the application and input method windows. The latter can be quite challenging to do in a well-performing way on low-powered mobile/embedded devices. See Jans blogpost for how we handled that on the Nokia N9.

* By default we make use of DBus autostarting, of course.

Application-hosted Maliit

To make Maliit more suitable for systems where only a single application runs (embedded) or compositing performance is not good enough, we now also allow Maliit to be "application-hosted": the Maliit server and input method plugins lives in the application process, not a separate server process. Enabling this feature has been a long running task of mine: All the code in input-context and server was made transport independent, a direct transport (no IPC) was introduced, and setting up the server for a given configuration (X11, QPA, app-hosted) was simplified. Other motivations for this work include being able to run the server and IM plugin easily for automated end-to-end system or acceptance testing, or just to easily start the server with a given IM plugin loaded for quick manual testing during development (see Michaels merge request).

An example application exists as part of the Maliit SDK that demonstrates the feature: maliit-exampleapp-embedded

Maliit running in application-hosted mode: The Maliit Server and input method plugin is embedded in the application instead of running in a standalone server process.

This works by having a special input-context "MaliitDirect" which instead of connecting to the server over DBus, creates the server and a direct connection. As when running standalone the server will instantiate and manage the necessary input method plug-ins.

Because the IM does not have its own window in this configuration, the application is responsible for retrieving the IM widget from the server, and re-parenting it into the appropriate place in the widget hierarchy. For all other purposes the application uses the same interface as if the IM was hosted remotely, making sure the abstraction is not broken and that one can easily use the application with Maliit deployed in different configuration.

This feature currently works with Qt4 applications, and is in Maliit since the latest release (0.90.0). One issue is that with the current input method API, the plugin assumes a fullscreen window; overlays extending the base area of the IM will be clipped and size needs to be overridden. This is something we are fixing in the new improved API.

Compositor-hosted Maliit

Another approach to make rendering perform better is to host the input method in the process responsible for the compositing. This also reduces the number or processes involved in rendering/compositing, and the associated overhead. This could be a X11 compositing window manager (like KWin or mcompositor), but a more realistic use-case is a Wayland compositor (for instance based on QtCompositor).

The API allows the consumer to inject an class instance for the configuration dependent logic, allowing to integrate the Maliit server with the logic in the rest of the compositor. Applications will use the normal "Maliit" inputcontext and communicate to the server through an IPC like DBus.

After the work with application-hosted Maliit, this feature was completed by making the server and connection libraries available as public API. The API is available in the latest  Maliit release (0.90.0), but is considered unstable until Maliit hits the 1.0 mark.

 

 

 

 


text Ross Burton: Guacamayo 0.2
Tue, 22 May 2012 10:53:12 +0000

Last week we (well, mostly Tomas if I’m honest) made our first release of Guacamayo, a reference Linux distribution for media playback devices in a networked world. The core technologies are the usual suspects: Yocto for the distribution, GStreamer and PulseAudio, Rygel and Media Explorer.

The first release caters for the "connected speakers" use-case.  On boot it connects automatically to the network over ethernet (wi-fi coming soon) and using Rygel exposes a UPnP/DLNA MediaRenderer, with hot-plugged USB speakers automatically switched to if plugged in. I’ve been happily using it on a laptop with my Raumfeld system, and Tomas has tested it on a BeagleBoard with a UPnP control point app on his Android phone.

So, what’s next?  I’m working on a web-based configuration tool for the headless systems, and Tomas is integrating Media Explorer so we’ll have something you can plug into a TV.  Tomas is testing this on a Zotac ZBox at the moment, and any week now I’ll have a RaspberryPi to experiment with.

If you’re interested and want to know more, we have a small wiki at GitHub and you can often find us in #guacamayo on FreeNode.


John Scalzi recently wrote a piece on straight white male privilege. If you haven't read it already, go and do so. No rush. I'll wait.

So. Some facts:
  • Women are underrepresented in free software development
  • Those women who are involved in free software development are overwhelmingly more likely to have been subject to sexual harassment, belittling commentary or just plain ignored because of their gender
  • When asked, women tend to believe that these two facts are fairly strongly related

(If you disagree with any of these then that's absolutely your right. You're wrong, but that's ok. But please do me a favour and stop reading here. Otherwise you'll just get angry and then you'll write something ill-tempered and still wrong in the comments and then I'll have to delete it and why not just save everybody the time and effort and go and eat ice cream or something instead)

I know I've said this before, but inappropriate and marginalising behaviour is rife in our community, and at all levels of our community. There's the time an open source evangelist just flat out told a woman that her experiences didn't match his so she must be an outlier. There's the time a leading kernel developer said that most rape statistics were basically made up. There's the time that I said the most useful thing Debian could do with its money would be to buy prostitutes for its developers, simultaneously sexualising the discussion, implying that Debian developers were all straight men and casting sex workers as property. These aren't the exceptions. It's endemic. Almost all of us have been part of the problem, and in doing so we've contributed to an environment that has at best driven away capable contributors. You probably don't want to know what it's done at worst.

But what people have done in the past isn't important. What's important is how we behave in the future. If you're not angry about social injustice like this then you're doing it wrong. If you're reading this then there's a pretty high probability that you're a white male. So, it's great that you're angry. You should be! As a straight white male born into a fairly well-off family, a native English speaker in an English speaking country, I have plenty of time to be angry before going back to my nice apartment and living my almost entirely discrimination-free life. So if it makes me angry, I have absolutely no way of comprehending how angry it must make the people who actually have to live with this shit on a daily basis.


(Were tampon mouse able to form and express coherent thoughts, tampon mouse would not put up with this shit)

The point isn't to be smugly self aware of our own shortcomings and the shortcomings of others. The point is to actually do something about it. If you're not already devoting some amount of your resources to improving fairness in the world, then why not? It doesn't have to be about women in technology - if you're already donating to charity or helping out at schools or engaging in local politics or any of the countless other ways an individual can help make the world a better place, large or small, then keep on doing that. But do consider that many of us have done things in the past that contributed to the alienation of an astounding number of potential community members, and if you can then please do do something to make up for it. It might be donating to groups like The Ada Initiative. It might be mentoring students for projects like the GNOME Outreach Program for Women, or working to create similar programs. Even just making our communities less toxic by pointing out unacceptable behaviour when you see it makes a huge difference.

But most importantly, be aware that it was people like me who were responsible for this problem in the first place and people like me who need to take responsibility for solving it. We can't demand the victims do that for us.

comment count unavailable comments
text Michael Meeks: 2012-05-21: Monday
Mon, 21 May 2012 20:59:09 +0000
  • Up early; bought some PTFE tubing for making bowden extruders from reprapworld. Poked mail. Mildly amused to read an interview with Rob W. accompanied by a substantial google advert for LibreOffice thanks to go-downloads.com, nice.
  • Tried to persuade the gtk+ team of the general loveliness of enabling getting threading right inside the toolkit rather than dozens of different applications. Wrote status report.
  • Dug at the Android build a bit. Dinner, out to the local council meeting to discuss the proposed plan - the council recommended against them; home - lit fire for counselling supervision meeting; back to Android poking.

text Christian Hergert: mongo-glib 0.1.12
Mon, 21 May 2012 19:50:56 +0000

I released another version of mongo-glib over the weekend. It works on a few more platforms. It also has better support for working with and generating BSON documents and ObjectIds.

Additionally, there is a fairly simple way to get a decent speedup when you are building protocols that need to complete asynchronous results in a main loop. Most people seem to be using GSimpleAsyncResult and g_simple_async_result_complete_in_idle(), which is great for situations like this. However, every time you want to complete your async result it creates a new GIdleSource which has to be allocated and added to your GMainContext. For my case, I got about a 20% speedup by going to a single custom GSource that is not repeatedly created and removed from the GMainContext. Of course, this only really matters when you are trying to complete large numbers of asynchronous requests.

monog-glib-0.1.12.


text Tim Waugh: Announcing printerd
Mon, 21 May 2012 18:52:52 +0000

For the last few weeks I’ve been working on an experimental new print spooler called printerd. It was designed in collaboration with Richard Hughes and it aims to be a modern print spooler for Linux.

It is a polkit-enabled D-Bus system service, written using the GLib object system. Although modelled on concepts from IPP (Internet Printing Protocol), printerd is not in itself an IPP server. Its only interface is D-Bus, although the aim is to be able to implement an IPP server on top of the D-Bus API as a separate process. Having a D-Bus interface means that applications wanting to print automatically get to use printerd asynchronously.

As a design decision, the range of input formats accepted by printerd will be very limited: essentially only PDF. The existing CUPS drivers and backends will be compatible with printerd.

There isn’t much written yet aside from the basic framework and a very simple command line tool.

Feel free to take a look around: http://gitorious.org/printerd

$ pd-client -v print-files myprinter ~/Documents/portrait-a4.pdf
TI:15:09:58    getting printerd manager
TI:15:09:58    Getting printer /org/freedesktop/printerd/printer/myprinter
TI:15:09:58    Job created: /org/freedesktop/printerd/job/1
TI:15:09:58    Document added
TI:15:09:58    Job started
Job path is /org/freedesktop/printerd/job/1

# printerd -v
TI:15:02:46    Entering main event loop
TI:15:02:46    add device usb://HP/DESKJET%20990C?serial=US05N1J00XLG [...]
TI:15:02:46    Connected to the system bus
TI:15:02:46    Acquired the name org.freedesktop.printerd on the system message bus
TI:15:08:52    Handling GetDevices
TI:15:08:57    Handling GetDevices
TI:15:09:12    Checking authorization of :1.642 for org.freedesktop.printerd.printer-add
TI:15:09:12    Authorized
TI:15:09:12    Creating printer from device HEWLETT_PACKARD_DESKJET_990C_US05N1J00XLG
TI:15:09:12    add printer myprinter
TI:15:09:58    Checking authorization of :1.647 for org.freedesktop.printerd.job-add
TI:15:09:58    Authorized
TI:15:09:58    Creating job for printer myprinter
TI:15:09:58    New job path is /org/freedesktop/printerd/job/1
TI:15:09:58    Created job path is /org/freedesktop/printerd/job/1
TI:15:09:58    [Job 1] Adding document
TI:15:09:58    [Job 1] Got file descriptor: 10
TI:15:09:58    [Job 1] Starting job
TI:15:09:58    [Job 1] Spooling
TI:15:09:58    [Job 1]   Created temporary file /tmp/printerd-spool-AHFWDW
TI:15:09:58    [Job 1]   Set job state to pending
TI:15:09:58    Job 1 changed state: pending
TI:15:09:58    Printer for job 1 idle so starting job
TI:15:09:58    [Job 1] Starting to process job
TI:15:09:58    [Job 1] Using device URI usb://HP/DESKJET%20990C?serial=US05N1J00XLG
TI:15:09:58    [Job 1] Executing /usr/lib/cups/backend/usb
TI:15:09:58    [Job 1]  Env: DEVICE_URI=usb://HP/DESKJET%20990C?serial=US05N1J00XLG
TI:15:09:58    [Job 1]  Arg: usb://HP/DESKJET%20990C?serial=US05N1J00XLG
TI:15:09:58    [Job 1]  Arg: 1
TI:15:09:58    [Job 1]  Arg: :1.647
TI:15:09:58    [Job 1]  Arg: job 1
TI:15:09:58    [Job 1]  Arg: 1
TI:15:09:58    [Job 1]  Arg:
TI:15:09:58    [Job 1] Read 1024 bytes from spool file
TI:15:09:58    Job 1 changed state: processing
TI:15:09:58    [Job 1] Wrote 1024 bytes to backend
TI:15:09:58    [Job 1] Read 1024 bytes from spool file
TI:15:09:58    [Job 1] Wrote 1024 bytes to backend
TI:15:09:58    [Job 1] Read 1024 bytes from spool file
TI:15:09:58    [Job 1] Wrote 1024 bytes to backend
TI:15:09:58    [Job 1] Read 1024 bytes from spool file
TI:15:09:58    [Job 1] Wrote 1024 bytes to backend
TI:15:09:58    [Job 1] Read 1024 bytes from spool file
TI:15:09:58    [Job 1] Wrote 1024 bytes to backend
TI:15:09:58    [Job 1] Read 1024 bytes from spool file
TI:15:09:58    [Job 1] Wrote 1024 bytes to backend
TI:15:09:58    [Job 1] Read 1024 bytes from spool file
TI:15:09:58    [Job 1] Wrote 1024 bytes to backend
TI:15:09:58    [Job 1] Read 1024 bytes from spool file
TI:15:09:58    [Job 1] Wrote 1024 bytes to backend
TI:15:09:58    [Job 1] Read 564 bytes from spool file
TI:15:09:58    [Job 1] Wrote 564 bytes to backend
TI:15:09:58    [Job 1] Spool finished
TI:15:09:58    [Job 1] backend: STATE: +connecting-to-device
TI:15:09:58    [Job 1] backend: DEBUG: Printer using device file "/dev/usb/lp0"...
TI:15:09:58    [Job 1] backend: STATE: -connecting-to-device
TI:15:09:58    [Job 1] backend: DEBUG: backendRunLoop(print_fd=0, device_fd=3, snmp_fd=-1, addr=(nil), use_bc=1, side_cb=0x7f053adc6c30)
TI:15:09:58    [Job 1] backend: DEBUG: Read 8192 bytes of print data...

text Richard Hughes: Linux Color Management Hackfest
Mon, 21 May 2012 17:22:05 +0000

From the 16th to 19th November we’re planning a hackfest in Brno, Czech Republic. The venue is kindly being sponsored by Red Hat.

What we’re trying to achieve is to get all color-minded people in the same place at the same time, to try to join up some of the color management stack in Linux. We’ll be discussing toolkit color management, the print color pipeline using CUPS and printerd and application level color management. It’s being arranged by S.Kemter and Kai-Uwe Behrmann so if you want to be there, email one of them or jump into the #openicc channel on freenode. There’s some sponsorship available, but not a lot. It’s also going to be a hackfest, i.e. writing code rather than giving talks like "a dummies guide color management". I’m pretty excited.


text Lucas Rocha: Native Firefox for Android Beta
Mon, 21 May 2012 16:51:57 +0000

At this point, you have probably heard the news. Yes, we’ve release the first public Beta of Firefox for Android with all the goodness that we’ve been working on in the last 7 months: the brand new native UI that is lighter, faster, and sleeker. Here are some big picture highlights about this Beta.

Design direction. The new native UI design is part of a wider effort in Mozilla to streamline the visual identity of Firefox across multiple platforms—desktop and mobile. Firefox should feel like one consistent product everywhere. Have a look at Madhava’s slide deck for more information on what the Firefox design team has been up to lately.

Keep in mind that this first native UI release is just the first of many iterations. For instance, there’s a lot of interesting changes coming up as part of our work on the native tablet UI that will eventually trickle down to the phone UI as well.

Panning and zooming. If you’re using the Beta already (or have been using the Nightly or Aurora builds) you’ll notice how smoother panning and zooming are. This is because the Beta features a major revamp on the graphics and rendering infrastructure using tiled rendering and an off-main-thread layer compositor. I recommend reading Benoit Girard‘s and Chris Lord‘s blog posts for further details. It’s worth mentioning that the Mobile Platform and Graphics teams did an amazing work to implement all this in a rather short period!

Places and Sync. The Places database has been re-implemented in Firefox for Android as a private Content Provider for two reasons. First of all, it gives instant access to history and bookmarks even before Gecko is up i.e. much faster startup experience. Secondly, it allows the new native Firefox Sync—which is now nicely integrated with the system’s sync UI—to access your browsing history and bookmarks even when Firefox is not running.

We’ve already started working on new features for the following releases including the native UI for Firefox on Android tablets and a reader mode. As you can see, the upcoming Firefox for Android is a whole new beast. We are working hard to make it the best mobile browser out there. You can help us now testing the Beta as part of our Mobile Test Drivers Program!

With the native UI, we’re creating a new baseline for innovation on Firefox Mobile. And it will only get better from now on. What are you waiting for? Download the Firefox for Android Beta now!


What I’ve done this week:

  • Finish splitting the language-support-cpp-java plugin in an indentation-c-style plugin and a language-support-cpp-java plugin without the indentation part
  • Did the same with language-support-python plugin
  • Export the utils classes of the two language-support plugins to libanjuta/anjuta-utils to prevent code duplication

Digital Freedom International (Aka Software Freedom International) is proud to announce it will start co-organizing Software Freedom Days under the name of SFD Summit with one local team each year starting this year, and therefore we are inviting local organizers to submit proposals to host our upcoming and first SFD Summit around September 15th 2012.

The purpose of co-organizing such an event is to raise the profile of our celebrations while bringing a public space for discussions about the future of our movement. Over the past two years DFI/SFI has been through important changes in its governance such as expending community involvement through various committees, tightening our budget to remain cash positive, surveying SFD organizers and enhancing the team pack to enable teams to reuse the materials they receive, just to name a few of our efforts. It is now time to raise collaboration efficiency by getting together!

While this will be the first occurrence of a SFD Summit we are still very open on the details and expect proposals to enhance our views on the matter. Our current vision is to initially organize a great local SFD bringing in international speakers and attracting both sponsors and media attention, thus boosting the reputation and influence of the selected local organizer. Furthermore an extra day or two should be planned to work on the year ahead, programs and actions which could be run under the DFI umbrella and status updates on ongoing activities such as software development, infrastructure, marketing and fund raising campaigns.

If you are interested in hosting the upcoming SFD Summit in September 2012 please submit a formal proposal to board (at) softwarefreedomday (dot) org before July 1, 2012 Sunday UTC 2359. The proposal should address all of the relevant topics listed below:

  • Introduction of the country / city / organizer – why is this a good choice?
  • Recommended venues and logistics
  • Internet access
  • Accommodation choices
  • Local 1 day tour
  • Local community / government / industry support
  • Detail budget estimation and potential local sponsors

The event is recommended to run for at least 2 days in mid September 2012, with a combination of parallel tracks (at least 2 tracks). The planning sessions for SFD contributors should not conflict with other SFD sessions. Other key points which will be taken into account when choosing a proposal, are listed on the Requirement List page . Please check it out when putting together your proposal and feel free to contact sfd-discuss mailing list (or the board) if you have any further question. Also note that all profits from the summit will go to the DFI to further help our actions. We are looking forward to receive your proposals!


text Ross Burton: New Blog!
Mon, 21 May 2012 10:52:27 +0000

I’ve been meaning to migrate away from pyblosxom to WordPress for a long time now, but have never found the time to work out how to migrate the many comments.  Then my blog host crashed and the comments were all lost, problem solved!  Some hacking and pain later, and here I am blogging with WordPress on hardware with support. Maybe I’ll blog more, maybe not.  Who knows what the future holds!


text Beth Hadley: Official acceptance to GSoC
Mon, 21 May 2012 10:36:34 +0000
It's official! I was accepted by GNOME for the Google Summer of Code Internship 2012. I'm absolutely thrilled, and very grateful to all of the mentors at GNOME who will be helping me this summer, especially the project lead for GCompris, Bruno Coudoin. 


A brief introduction about me and my plans for the summer:
I am passionate about open source projects, and I am eager to connect with the GNOME and GCompris communities. I am an undergraduate at the Massachusetts Institute of Technology in Cambridge, Massachusetts USA and I'm studying Computer Science. I have a special passion for music, and I have actually spent a year working on an open source project to analyze symbolic music, so my skills and interests are best suited to developing music education activities for GCompris. 

Music education, especially for kids ages 2-10, is a difficult task, especially via computer software rather than real musical instruments. Nevertheless, many fundamental music concepts can be introduced and developed through computer activities at a young age. The goal of my activities will be to provide a stimulating learning environment for kids to learn about and develop a passion for music. 

I have proposed the following activities, although I am eager to receive feedback from the community to learn about exactly what types of music activities might be most desired by children or as an educational tool in classrooms. I look forward to questions and feedback from the community.

Name that Note
Goal: children will learn the basics of music notation based on duration (preparation for rhythmic exercises)
Get Your Groove
Goal: children will develop an intuition for beat by practicing listening to and repeating rhythms
Reading Rhythm
Goal: children will learn to associate a sequence of beats with the correct musical notation
Ear Training
Goal: introduce students to the concept of listening to a pitch and seeing the pitch notated on the staff
Musical Awareness
Goal: help students develop a better ear for types of musical compositions and the instruments they hear
Music Around the World 
Goal: children will learn about different types of music from around the world
Piano Player
Goal: allow kids to play with a digital piano to develop an understanding of pitch and notation
Simple Music Notation Editor
Goal: allow kids to experiment with writing music. Display staff on screen and provide panel of notes & rests for students to drag and drop onto the staff, then play the music back. This activity promotes creativity and exploratory learning.

Unfortunately MIT classes continue for another four weeks, so I'll be dividing my time between working on GCompris and finishing up my coursework and studying for final exams. Last day of classes at MIT is April 25, after which I look forward to diving into the code!




A video screencast of me playing the activity I created for this small exercise.

I submitted my application officially last Friday, and while I await a final decision Bruno suggested I work on the "Exercise for Students" assignment (http://gcompris.net/wiki/An_exercise_for_Students). Indeed, this little exercise was a great way for me to become more familiar with pyGoocanvas.

The assignment is very simple
1. clone into gCompris code onto local computer
2. make new activity
3. Modify the activity to display an image, an ellipse, a rectangle, a line and a text.
4. Add an event to a graphical object so that clicking on it does something visual.
5. test
6. create patch file

Simple enough. Once I understood how to interface with PyGoocanvas, the implementation work was pretty straight-forward. I decided to have a little fun with this assignment, and make the activity have a music theme. What results is a pretty fun little activity. Ultimately, I have placed a piano keyboard on the page with little rectangles where the player might touch the keys. The student may then click on these rectangles, and the corresponding note is displaying on the staff to the left, with the note's name (in English) displayed above. Just for fun, I loaded in some audio clips for each note, so the pitch of the piano is played when the student presses a key. There are two options to display the notes - in treble clef or in bass clef. Each has a different note naming scheme, so both are equally important for the student to understand.

Ultimately, the most challenging (and annoying!) portion of this assignment was acquiring all the media necessary. I had to search for good, public domain clip art to use and edit the images accordingly. This process didn't take the most time. The most time consuming part was acquiring the note sounds. I searched for good piano tones (not synthesized) but they were difficult to find. I eventually found a public domain C-major scale on wikipedia, and used audio editing software to trim each tone down. But there was a bit of static in some of them, and the taper for some of the tones isn't quite right. Watch the video with sound on - you'll hear me attempting to play twinkle twinkle little star.

I learned a good deal from this exercise - I now have an even deeper understanding of which tools I can use to build my activities. I also now realize the importance of finding a source for good, high quality, and public domain media. I'll especially work on the sound media. I have some ideas that I'll be looking into over the next week.

Comments are always welcome!
text Barbara Muraus: A hello.
Mon, 21 May 2012 10:35:30 +0000

Hello everyone!

My name is Barbara (Stereotype on IRC) and I will be working as a new intern with the Gnome Outreach Program for Women (any similarity of this sentence with the AA meeting lines was not intentional). Special thank you to Marina for helping me with everything so far and being so kind. I am very excited about being chosen and getting the opportunity to contribute to GNOME community.

I am an anthropologist (with the degree in the field of design anthropology) and a freelance graphic designer. The summary of my interest would look something like this: music (I play drums), art, design, anthropology, human & animal rights, revolution & film.

I will be working on graphic design under the supervision of my mentor, Jakub Steiner (his webpage). I am thrilled to have him as a mentor, especially after seeing his work on icons. This blog is intended to be flooded with updates on my design work for GNOME.

Pleased to meet you.

(Me with my dog Phoebe)


"Practice safe design: Use a concept."
text Baptiste Saleil: GSoC 2012 !
Mon, 21 May 2012 10:06:47 +0000

Done ! I’m accepted to the Google Summer of Code (GSoC) 2012. I’ll work for Gnome this summer, especially for GTG (Getting Things Gnome), an organizer for Gnome.

I’ll work on integration of GTG in better way as possible to the friendly Gnome-Shell interface by the way of extensions, I’ll develop in particular a shell-integrated menu which will permit to manage tasks, or also a notifications system.

This blog is the place to follow my work. You can also follow me on twitter : bsaleil for frequent informations.

Thanks to Luca Invernizzi, my mentor for all this summer.

I hope this summer will be a good one.

Details about my project :



Howdy!

After two weeks out (yeah, university is trying to kill me), good news: progress are being done!
Better than planed, this weekend I did:

  • LibOSInfo (patch set was sent to virt-tools mailing list):
    • Installer's tags for win2k and win7 were added, allowing users to create install scripts for both windows
    • AutoLogon was set by default for all flavours of windows
    • Desktop Profile for Fedora's automated installation was added
  • Boxes (keeping this patch while wait a bug fix that will change some files that I changed, before send to mailing list)
    • Old automated files were dropped in favor of use install-script API's, provided by libosinfo and improved by my last patches.
While I wrote those patches I did a small test, installing Fedora 16 using my fresh changes, and it worked like a charm (or, at least, like worked in the old way).
If everything occurs as planned, in the next weekend, tests with Windows will be done and eventual issues will be fixed!

See ya and let's hack!
text Michael Meeks: 2012-05-20: Sunday
Sun, 20 May 2012 21:00:00 +0000
  • Up lateish; off to St Ives for a Plumbline service in a fine set of barns. Hog roast afterwards, bouncy castle in the adjacent grain barn, lots of fun. Back later for another spin of the Tintin with the babes.
  • Out for a drink with some other planning victims.

text Joaquim Rocha: Attending LinuxTag 2012
Sun, 20 May 2012 16:50:19 +0000

I will be travelling to wonderful Berlin next Wednesday to attend LinuxTag 2012.

I really liked the event last year and got good feedback from the people that attended my OCRFeeder‘s presentation.

This year I am presenting Skeltrack, a Free Software skeleton tracking library I created in Igalia. If you haven’t heard about it, take a look at these videos to see what it is about. My presentation will be on Saturday, at 10:30, in Europa II room.

I’m looking forward to meet people in there so let’s have a beer together and talk about Free Software.


Chicago at Night Team hard at work View from the Thoughtworks Office

I’m celebrating the end of my portion of my trial by … spending all weekend in meetings, specifically the OSI’s annual face-to-face board meeting, which we’re holding this year in Chicago1. It’s been a very productive meeting so far, with lots of good discussion about both our vision and our plan for attacking the future. The organization still has a long way to go but there is a lot of potential here.

  1. Yes, during the NATO Summit. Perhaps not our best move ever.

text Emmanuele Bassi: June Hymn
Sun, 20 May 2012 13:05:25 +0000

today is the deadline for submitting candidacies for the election of the GNOME Board of Directors.

I decided to run again this year: it took me a bit to get into the role, but I think I can work with the fellow Board members, as well with the rest of the people in GNOME, to ensure the proper functioning of the Foundation now.

remember: being on the Board of Directors doesn’t mean having a fancy title, or a shot at managing the GNOME project towards a technical goal; it mostly entails providing the means by which the +GNOME project can actually function. without the Board and the Foundation, we could not organize hackfests, or send people to GUADEC, or even have GUADEC.

being a Director is not a huge amount of work: a 1hr meeting every two weeks, and at most one hour every day for emails and IRC discussions; but it’s necessary work, and it makes all the difference between a functioning community that can provide infrastructure to a complex project and a project that can only use public and free services without any guarantee of continuity. imagine not relying on all the services on gnome.org; or imagine not having any funds to organize the successful hackfests we’ve had in the past few years.

if you are a GNOME foundation member, consider running – if not for a specific goal, just to help out making GNOME successful in bringing together people to provide a first class software platform.


Started with the congratulatory mail which had a nice long message from the GNOME community. After subscribing to the gnome-soc mailing list and introducing myself there I created my wiki page. Then as a GSoC participant I get to get my blog aggregated to Planet GNOME for which I had to create my hackergotchi ( which I couldn't stop laughing at ) and file a bug.

Bruno suggested that I give OLPC, constructionism and Montessori education a look. The Montessori approach promotes the concept of learning experimentally which is pretty much what GCompris does. No doubt the games are interesting for kids but the activities actually help the kids with their academic knowledge and also give them the freedom to experiment. Apart from being free and open source, GCompris encompasses various subjects and fields of learning and is translated to a number of languages.

During this period I've gone through the documentations on Python wrapper for GCompris, PyGoocanvas and PyGTK and got pretty familiar with them. Also went through the code of a few python activities to get more familiar with how I would go about creating my activities. And oh! OpenClipArt is just great. I think I can find almost all images that I will need and the rest of them I can create using Inkscape  and GIMP which btw are amazing editors (already created a few images) . Also, learned how to create simple activities ( http://gcompris.net/wiki/Adding_an_activity)  with the help of python test and python template.

This is it.  The "ges" branch of Pitivi has been merged to "master".

The changes that have been merged are quite significant: over four hundred commits, 175 files changed, 13943 insertions and 30341 deletions (net result: more than 16 thousand lines of code removed while at the same time adding features and solving longstanding bugs).

While "master" is certainly far from bug-free, it is now a decent base to build upon. Perfect is the enemy of the good. Let us now move ahead resolutely and without fear to achieve victory: 0.16 will be a superb release and I am thrilled by what’s going to happen this summer with the GSoC projects.

See this page for build instructions, including a script that automates the process.

By the way, if you happen to be around, I will be presenting in Hong Kong at GNOME.Asia next month.


text Pockey Lam: Culture Freedom Day is Today!
Sat, 19 May 2012 16:05:26 +0000

The day to celebrate has finally arrived and we (DFI) are proud to announce a total of 19 events worldwide with amazing programs for this first edition of CFD. Spreading on all continents and even in virtual worlds we hope that there is an event for you and if not, hopefully you can get ready for next year and have something running in your area. We are already working with several organizations to try to make it easy to find free culture artists around the world and look forward to build on this successful beginning. So for now let’s just enjoy the show and celebrate Free Culture together!


text Xan Lopez: Do Not Track support in Epiphany
Sat, 19 May 2012 12:52:55 +0000

Twitter’s last Privacy Policy Update helpfully informs all users that they do now support the Do Not Track (DNT) browser setting, which aims to stop the collection of information at the user’s request (a collection which Twitter is actively engaged into).

Spurred by all this I sat down and added DNT support in Epiphany, which thankfully is an extremely simple spec to implement. It’s now in master, so anyone willing to enable just needs to go to the Privacy tab in Preferences and click:

Now the pages that choose to respect this setting (unfortunately not everyone does; by a long shot), should be able to detect your request. We can see that things are working in the donottrack.us page itself.

Note that the page claims our browser does not support the feature, yet it is enabled; this is because DNT being an HTTP header extension the only way for the page to tell you whether your browser supports it in theory is by having a hardcoded list of supported browsers, which does not include Epiphany. Oh well. Either way, enjoy your newly untraceable goodness, which should make its way into the next unstable release.


text Karen Sandler: Throw your hat in the ring!
Sat, 19 May 2012 05:51:39 +0000

This Sunday is the deadline to decide to run for the GNOME board! While it can be a lot of work, serving on the GNOME board is a great way to contribute to the community and make sure that things are run in the way you think they should be. (Plus, you’d get to be one of my bosses!) I’ve only seen a couple of candidacies announced, but I’m hoping to see a lot more this weekend – we need seven directors in total. The details are all here.


In 2009, I wrote a driver to make the infra-red remote on my original MacBookAir work out-of-the-box on Linux. The driver was rejected upstream on the basis that the device would soon be supported through more generic means. In the meanwhile, it lived in Fedora's kernel tree, and I took some notes about implementing pairing, so that only your remote would work with your computer.

I'm posting this now because I wanted to poke at a MacOS X application today, and couldn't for the life of me remember the name of the program to monitor disk-activity. Hope this finds its way to a search engine near you.


  • Launched the System Preferences, Security, and unlock the panel.
  • In a terminal: sudo fs_usage -f filesys -w and check the output when enabling/disabling the remote.
  • We can see the modified file is /Library/Preferences/com.apple.driver.AppleIRController.plist
  • Installed PlistEditPro and opened the file up.
  • Now try to pair a remote (menu and next together)
  • You can see the UID value changing in the file. I named the remotes I had available to me:
    • New remote: UID = 145 
    • Old clean remote: UID = 24
    • Old dirty remote: UID = 227 
  • After adding some debug to the aforementioned appleir driver, in Linux, I got:
    • New remote: appleir: received (5 bytes) 25 87 e0 91 02
    • Old clean remote: appleir: received (5 bytes) 25 87 e0 18 03
    • Old dirty remote: appleir: received (5 bytes) 25 87 e0 e3 02
  • So the 4th byte is the remote's UID.
Now one could implement remote pairing using a sysfs attribute, a udev helper to apply the pairing across reboots, and PolicyKit helper to set and save the paired UID.

This will be left as an exercise to the reader :)

Here's the thirteenth installment of my ongoing series on systemd for Administrators:

Log and Service Status

This one is a short episode. One of the most commonly used commands on a systemd system is systemctl status which may be used to determine the status of a service (or other unit). It always has been a valuable tool to figure out the processes, runtime information and other meta data of a daemon running on the system.

With Fedora 17 we introduced the journal, our new logging scheme that provides structured, indexed and reliable logging on systemd systems, while providing a certain degree of compatibility with classic syslog implementations. The original reason we started to work on the journal was one specific feature idea, that to the outsider might appear simple but without the journal is difficult and inefficient to implement: along with the output of systemctl status we wanted to show the last 10 log messages of the daemon. Log data is some of the most essential bits of information we have on the status of a service. Hence it it is an obvious choice to show next to the general status of the service.

And now to make it short: at the same time as we integrated the journal into systemd and Fedora we also hooked up systemctl with it. Here's an example output:

$ systemctl status avahi-daemon.service
avahi-daemon.service - Avahi mDNS/DNS-SD Stack
	  Loaded: loaded (/usr/lib/systemd/system/avahi-daemon.service; enabled)
	  Active: active (running) since Fri, 18 May 2012 12:27:37 +0200; 14s ago
	Main PID: 8216 (avahi-daemon)
	  Status: "avahi-daemon 0.6.30 starting up."
	  CGroup: name=systemd:/system/avahi-daemon.service
		  ├ 8216 avahi-daemon: running [omega.local]
		  └ 8217 avahi-daemon: chroot helper

May 18 12:27:37 omega avahi-daemon[8216]: Joining mDNS multicast group on interface eth1.IPv4 with address 172.31.0.52.
May 18 12:27:37 omega avahi-daemon[8216]: New relevant interface eth1.IPv4 for mDNS.
May 18 12:27:37 omega avahi-daemon[8216]: Network interface enumeration completed.
May 18 12:27:37 omega avahi-daemon[8216]: Registering new address record for 192.168.122.1 on virbr0.IPv4.
May 18 12:27:37 omega avahi-daemon[8216]: Registering new address record for fd00::e269:95ff:fe87:e282 on eth1.*.
May 18 12:27:37 omega avahi-daemon[8216]: Registering new address record for 172.31.0.52 on eth1.IPv4.
May 18 12:27:37 omega avahi-daemon[8216]: Registering HINFO record with values 'X86_64'/'LINUX'.
May 18 12:27:38 omega avahi-daemon[8216]: Server startup complete. Host name is omega.local. Local service cookie is 3555095952.
May 18 12:27:38 omega avahi-daemon[8216]: Service "omega" (/services/ssh.service) successfully established.
May 18 12:27:38 omega avahi-daemon[8216]: Service "omega" (/services/sftp-ssh.service) successfully established.

This, of course, shows the status of everybody's favourite mDNS/DNS-SD daemon with a list of its processes, along with -- as promised -- the 10 most recent log lines. Mission accomplished!

There are a couple of switches available to alter the output slightly and adjust it to your needs. The two most interesting switches are -f to enable follow mode (as in tail -f) and -n to change the number of lines to show (you guessed it, as in tail -n).

The log data shown comes from three sources: everything any of the daemon's processes logged with libc's syslog() call, everything submitted using the native Journal API, plus everything any of the daemon's processes logged to STDOUT or STDERR. In short: everything the daemon generates as log data is collected, properly interleaved and shown in the same format.

And that's it already for today. It's a very simple feature, but an immensely useful one for every administrator. One of the kind "Why didn't we already do this 15 years ago?".

Stay tuned for the next installment!


As I wrote two weeks ago, I consider the QA related changes in Ubuntu 12.04 a great success. But while we will continue and even extend our efforts there, this is not where the ball stops: it’s great to have the feedback cycle between "break it" and "notice the bug" reduced from potentially a few months to one day in many cases, but wouldn’t it be cool to reduce that to a few minutes, and also put the machinery right at where stuff really happens — into the upstream trunks? If for every commit to PyGObject, GTK, NetworkManager, udisks, D-BUS, telepathy, gvfs, etc. we’d immediately build and test all reverse dependencies and the committer would be told about regressions?

I have had the desire to work on automated tests in Linux Plumbing and GNOME for quite a while now. Also, after 8 years of doing distribution work of packaging and processes (tech lead, release engineering/management, stable release updates, etc.) I wanted to shift my focus towards technology development. So I’ve been looking for a new role for some time now.

It seems that time is finally there: At the recent UDS, Mark announced that we will extend our QA efforts to upstream. I am very happy that in two weeks I can now move into a role to make this happen: Developing technology to make testing easier, work with our key upstreams to set up test suites and reporting, and I also can do some general development in areas that are near and dear to my heart, like udev/systemd, udisks, pygobject, etc. This work will be following the upstream conventions for infrastructure and development policies. In particular, it is not bound by Canonical copyright license agreements.

I have a bunch of random ideas what to work on, such as:

  • Making it possible/easier to write tests with fake hardware. E. g. in the upower integration tests that I wrote a while ago there is some code to create a fake sysfs tree which should really go into udev itself, available from C and introspection and be greatly extended. Also, it’s currently not possible to simulate a uevent that way, that’s something I’d like to add. Right now you can only set up /sys, start your daemon, and check the state after the coldplugging phase.
  • Interview some GNOME developers what kind of bugs/regressions/code they have most trouble with and what/how they would like to test. Then write a test suite with a few working and one non-working case (bugzilla should help with finding these), discuss the structure with the maintainer again, find some ways to make the tests radically simpler by adding/enhancing the API available from gudev/glib/gtk, etc. E. g. in the tests for apport-gtk I noticed that while it’s possible to do automatic testing of GUI applications it is still way harder than it should and needs to be. I guess that’s the main reason why there are hardly any GUI tests in GNOME?
  • I’ve heard from several people that it would be nice to be able to generate some mock wifi/ethernet/modem adapters to be able to automatically test NetworkManager and the like. As network devices are handled specially in Linux, not in the usual /dev and sysfs manner, they are not easy to fake. It probably needs a kernel module similar to scsi_debug, which fakes enough of the properties and behaviour of particular nmetwork card devices to be useful for testing. One could certainly provide a pipe or a regular bridge device at the other end to actually talk to the application through the fake device. (NB this is just an idea, I haven’t looked into details at all yet).
  • For some GUI tests it would be much easier if there was a very simple way of providing mocks/stubs for D-BUS services like udisks or NetworkManager than having to set up the actual daemons, coerce them into some corner-case behaviour, and needing root privileges for the test due to that. There seems to be some prior art in Ruby, but I’d really like to see this in D-BUS itself (perhaps a new library there?), and/or having this in GDBus where it would even be useful for Python or JavaScript tests through gobject-introspection.
  • There are nice tools like the Clang static code analyzer out there. I’d like to play with those and see how we can use it without generating a lot of false positives.
  • Robustify jhbuild to be able to keep up with building everything largely unattended. Right now you need to blow away and rebuild your tree way too often, due to brittle autotools or undeclared dependencies, and if we want to run this automatically in Jenkins it needs to be able to recover by itself. It should be able to keep up with the daily development, automatically starting build/test jobs for all reverse dependencies for a module that just has changed (and for basic libraries like GLib or GTK that’s going to be a lot), and perhaps send out mail notifications when a commit breaks something else. This also needs some discussion first, about how/where to do the notifications, etc.

Other ideas will emerge, and I hope lots of you have their own ideas what we can do. So please talk to me! We’ll also look for a second person to work in that area, so that we have some capacity and also the possibility to bounce ideas and code reviews between each other.


text Christian Hergert: push-glib
Thu, 17 May 2012 22:05:56 +0000

I needed to do some push notifications to Android and iOS, so I put together a library for doing so. It's early, but is functional thus far. No API guarantees, of course. C2DM still uses the (newly) deprecated Google ClientLogin authorization. I still need to do some research for moving that to the forward supported OAuth2 authorization. The APS client uses your TLS certificates registered with the app store. It speaks the "enhanced" protocol, which lets you know about errors. Occasionally. Sometimes. If you're lucky.

Push-GLib-0.1.9.


text Gopal Krishnan: Prototype of first major change
Thu, 17 May 2012 21:33:00 +0000
I have almost finished going through the various modules in Gcalctool and I realized its easier for me to first do a separate prototype for the history panel, which is the first major change for the application. This prototype would have an input box as well a separate text box above it. Whatever input is fed into the input box, that will appear on a line in the text box and immediately below it will be a value of 10.  This is repeated until exactly 6 different inputs have been fed. Upon feeding the 7th input the entire text box is cleared and only the seventh input is displayed. These inputs represent the values entered by a user into the calculator and the value of 10 represents exactly what the answer would be from the calculations. It is temporary and will be replaced by the actual answer value. Once this is done and I have gotten comments on it I will begin implementing this into the calculator itself.
text Dave Richards: Project Updates & Why Customize?
Thu, 17 May 2012 19:43:00 +0000
The topic of desktop customizations has always come up here at Largo.  I do spend time making changes to how the desktop works, but it's not a significant part of my day.  Most of my job entails debugging software and problems, and helping architect future technology.  Over the years my viewpoint has become that when people say they want "Microsoft Windows" what they really mean for the most part that they want to have a certain set of steps they have memorized on that operating system.  When people have their own computers they spend countless hours tinkering with it and then countless dollars buying software to move documents from one file format to another and hobble together something that works.  We in the computer business have done a horrible job with software design in that regard.  The things that are basic to us:  File system layouts, file formats and file sizes are exactly the thing that users struggle with the most.  I've mentioned before that when I was younger I always thought things would get better when the "computer generation" came into the workplace; but that hasn't happened at all.  I cannot overstate how much time users spend on "files".  In our case we also have the issue of users that log on for a few minutes a day and have never used computers in the past and have no desire to become proficient at them.  If the desktop was not modified there would be some issues that would come to the surface 1) Many many man hours spent looking for files, retyping 'lost' documents, etc  2) User customizations and settings that affect the desktop and cause it to fail.  3) An increasing desire to buy more and more software to 'fix' things that are happening because of skill 4) Failure because it's too hard.

The customizations therefore yield lower support calls and increased efficiencies by eliminating issues of file location, file type and file sizes from their work.  The design tries to create an environment where files in the right format and size are moved automatically between applications.

I posted a Glade screen a few days ago with the revamped Picture UI that comes up when you double-click on a photo or image.  It's moved past the vaporware stage and is now being tested by about 5 of us.  Still some issues to work out, but it's showing promise.  Python makes this all a breeze, but for end users these things are just so confusing.  It's not appropriate to try and get people into GIMP for these basic functions required to interact with software packages; they'll never get it -- and it's just silly to expect it.

The screen appears and it clearly shows the file size and number of pixels; which for most people mean nothing.  However the new feature is to estimate "suitability" for use in Evolution and LibreOffice which are the two primary areas that will receive images.  In the shot below the picture has been opened and it's way too big for document construction and for inserting in an email. 


The ResizeTo option is set to "Medium" and the image reduces and the file size drops substantially.  From here it can be emailed, placed into the clipboard or printed.  I disabled GIMP and EOG when it was reduced to avoid users opening the temporary buffer and making changes and then losing it because they don't save it to the right folder location.  The details of the enabling and disabling of buttons is still working through my head.


 There is a gotcha that I found with placing a picture into the clipboard; it seems like the parent application needs to stay open or the buffer is lost if the image is over a small size.  I tried to im.store() it but that doesn't seem to work either.  So for now when they click on [ To Clipboard ] they get a green checkmark indicating that it finished and then an intrusive dialog with instructions on how to continue.  Putting this message into the status line on the bottom would never be seen so I felt this was the best technique in this case.


I expect these changes to be fine tuned and then moved out to users next week.   I'm hopeful this will increase the usability and success of interacting with pictures.  With just a few lines of python, we should see benefit quickly.

Other Projects Updates From This Week:  

LibreOffice is running like a champ and very stable.  We have hardly gotten any support calls and it seems to have slipped right in like a champ and take over for OpenOffice.  I do wish that LibreOffice was hooked into bug-buddy so that I can see how often people are crashing.  We aren't getting calls about crashes, but I like to see them happen and have backtraces.

Novell came through for us and created a big GTK patch for some libraries that were not thread safe interacting with Evolution.  It was a merge of some upstream patches and we loaded them Wednesday.  Previously we would get about 3-5 crashes each day on just this one bug and so far I haven't received one.  As I have mentioned in the past, all backtraces and deadlocks come to me automatically. Very happy to see this improving.

SuseCon will be in Orlando this fall and some of us from Largo will attend. Federico has built a page with an early concept of a site visit to our City so that people can see technology in place.  The link is here.  If you have never seen centralized servers and how software works over remote display it's pretty cool stuff.  It's always nice to show the issues we deal with because I feel they represent issues seen in the enterprise.
text Luis de Bethencourt: emacs for losers
Thu, 17 May 2012 08:06:28 +0000
I was reading the first book of The Losers, where in issue/chapter 2 Jensen is stealing some information from a hard drive in an insurance firm office:



and suddenly I notice...



bash, emacs, and bsd!
I have to admit a had a little nerdgasm.

By the way, I totally recommend this book. Consistently fun over the top action within an interesting caper story.
text Erick Pérez Castellanos: I'm on Planet Gnome
Thu, 17 May 2012 03:05:42 +0000

Since last Friday I’m a proud member of Planet Gnome. I notice my last two post on Planet Gnome feed, and was a huge joy. After the initial excitement I realize what a great responsibility encloses the fact of being able of publish there, and certain fear went deep into my bones.

Anyway, and introduction is mandatory. My name is: Erick Pérez Castellanos, and I’m a software developer from Cuba. I studied Computer Science like 4 years ago or so, and I’ve been using Linux since for ever it seems. I became involved with Gnome last year, after wanting to for a very long time. I’ve been contributing to Contacts, as you can see here in the archive of the blog, and I’m planning to keep on. So, till next time, I’ll see you around.