Canonical Voices

Posts tagged with 'chromium'

Jussi Pakkanen

What currently happens when you drag two fingers on a touchpad is that the X server intercepts those touches and sends mouse wheel events to applications. The semantics of a mouse wheel event are roughly “move down/up three lines”. This is jerky and not very pleasant. There has been no way of doing pixel perfect scrolling.

With the recent work on X multitouch and the uTouch gesture stack, smoothness has now become possible. Witness pixel accurate scrolling in Chromium in this Youtube video.

The remaining jerkiness in the video is mainly caused by Chromium redrawing its window contents from scratch whenever the viewport is moved.

The code is available in Chromium’s code review site.

Read more
Jussi Pakkanen

I work on, among other things, Chromium. It uses SVN as its revision control system. There are several drawbacks to this, which are well known (no offline commits etc). They are made worse by Chromium’s enormous size. An ‘svn update’ can easily take over an hour.

Recently I looked into using btrfs’s features to make things easier. I found that with very little effort you can make things much more workable.

First you create a btrfs subvolume.

btrfs subvolume create chromium_upstream

Then you check out Chromium to this directory using the guidelines given in their wiki. Now you have a pristine upstream SVN checkout. Then build it once. No development is done in this directory. Instead we create a new directory for our work.

btrfs subvolume snapshot chromium_upstream chromium_feature_x

And roughly three seconds later you have a fresh copy of the entire source tree and the corresponding build tree. Any changes you make to individual files in the new directory won’t cause a total rebuild (which also takes hours). You can hack with complete peace of mind knowing that in the event of failure you can start over with two simple commands.

sudo btrfs subvolume delete chromium_feature_x
btrfs subvolume snapshot chromium_upstream chromium_feature_x

Chromium upstream changes quite rapidly, so keeping up with it with SVN can be tricky. But btrfs makes it easier.

cd chromium_upstream
gclient sync # Roughly analogous to svn update.
cd ..
btrfs subvolume snapshot chromium_upstream chromium_feature_x_v2
cd chromium_feature_x/src && svn diff > ../../thingy.patch && cd ../..
cd chromium_feature_x_v2/src && patch -p0 < ../../thingy.patch && cd ../..
sudo btrfs subvolume delete chromium_feature_

This approach can be taken with any tree of files: images, even multi-gigabyte video files. Thanks to btrfs’s design, multiple copies of these files take roughly the same amount of disk space as only one copy. It’s kind of like having backup/restore and revision control built into your file system.

Read more

Thanks to the hard work of Marco Trevisan Unity now has better support for Chromium web applications. 

If you look at the pic you’ll notice that each web app has it’s own icon and it’s own window (and of course when you click on icons they’ll open in a proper browser window):

Thanks to Fabien Tassin for his guidance, and of course thanks to the upstream guys at Chromium for making this possible. There’s some other fixes left to land (you need a newish Chromium and Unity from tomorrow’s release) but this should be sorted out as both projects release going forward.

Read more
David

Fabien has told me he’ll explain in more detail in a later post, but I couldn’t resist mentioning it in the meantime.

Look at this:

ast     1024
ca         5
cs        80
da        36
de       351
es       538
eu      3457
fi       293
fr        26
gl      3475
he       252
id       116
it        77
ka        98
ku       387
lt         3
nl       227
no        83
pt-BR    437
ro        18
ru       225
sl       537
sr       102
sv       382
ug      3378
zh-CN    537

TOTAL  16144

That’s more than 16000 strings in 26 languages coming from Launchpad landing on Chromium upstream.

Rock on.

Contribute to Chromium translations in Launchpad – if there is not yet a team for your language, you can create one.


Read more

From idea to …. now available.

Many thanks to Stuart Langridge for his initial prototype and to George Edison and Marco Ceppi for implementing it and submitting it through the web store process. 

Now to shake the bugs out and polish it up …

Read more
David

Chromium Translations in Launchpad

I’m very much thrilled to announce that Chromium, the Open Source project behind Google Chrome, the browser that is transforming the way we experience the web, is now open for community translation in Launchpad.

Chromium will be hosting its translations in Launchpad Translations, the collaborative online tool for translating Open Source projects and building community around them.

Translate Chromium in Launchpad

You can now translate Chromium online into almost any language. Using Launchpad’s simple web interface you’ll only need a Launchpad account, a web browser and good knowledge of English and the language you’ll be translating into.

Under the Hood

For the technically minded among us, here’s an overview of how everything fits together.

But first of all, I need to mention that all this would not have been possible without the fantastic work of Fabien Tassin, the legendary Ubuntu community member of Chromium and Firefox packaging fame. Big thanks also go to Evan Martin from the Chromium project, the Launchpad Translations developers and anyone else involved in making this possible.

In short, after seeing the willingness from the Chromium project to use translations infrastructure in Launchpad, Fabien single-handedly designed and implemented the machinery that performs the conversion between the Chrome translation format and Gettext, the widely-used standard format Launchpad understands.  He did not stop here, and he also devised a way to package these translations and submit them to upstream.

The following diagram illustrates the Chromium translations lifecycle:

Chromium Translations Lifecycle

Chromium Translations Lifecycle - Diagram by Fabien Tassin

The work is happening between Fabien’s server, where he maintains a local copy of the Chromium upstream branches, and Launchpad, where the PPA builds and translations happen. These are the two big blocks you see on the diagram.

The existing Chromium translations are imported into Launchpad after being converted to the gettext format. The result is then committed in a bzr branch, which is enabled with automatic translation imports to make the translations available through the web UI.

At this point translators can do their work: either complete missing translations, improve existing ones or add new languages.

This work is then committed daily to another bzr branch making use of another cool Launchpad integration feature: automatic translation exports.

The rest of the process is also fully automatic: every day, a bot in Fabien’s server fetches the translations export branch, converts back from gettext to the Chromium translation format, merges that with the upstream trunk and lands the changes in the corresponding PPA of the daily builds. For other branches the process is the same, except that it is only run when there is a new upstream release.

From there, patches with the translations are generated daily for anyone else interested in using them.

Q+A

What does community translation mean?
It means that any Open Source enthusiast will be able to translate Chromium to their language through volunteer contributions.

Why do we need community translations?
Many of the translations already available in Chromium come from private translations originated in Chrome. Until now, Chromium did not have any translation infrastructure to enable the community to localize the software, and therefore some languages were incomplete. In Launchpad you can now a) complete Chromium translations, b) improve them and c) add new languages.

How do I get started translating Chromium?
If you don’t have one already, you’ll need a Launchpad account. Once you’ve created it and selected your prefered languages, simply point your browser to https://translations.launchpad.net/chromium-browser, click on your language of choice, and that’s it, you can now start translating!

?I can submit neither translations suggestions nor translations. How can I translate Chromium?
If you aren’t already logged in to Launchpad, try to log in and see if it helps. If it doesn’t, that’s probably because there is no translation team for your language yet. Launchpad Translations is built around a model of community (in the form of translation teams) and permissions (chosen by the project developer).

The permission model for Chromium is Restricted, which provides a good balance between community participation and translation quality. This means that while everyone can submit translations suggestions, only the members of the translation team will be able to accept them after review.

Have a look at the list of teams in the Launchpad Translators group. If there isn’t one, you should be able to start a new team in a matter of minutes following these simple instructions, which will allow you to start translating Chromium once the team is approved.

When I try to translate my translations are saved as suggestions. Why can’t I directly submit translations?
That’s because you are not part of the translation team for your language. You can look for your language’s translation team here and get in touch with them. If you wish, you can ask them if you can join the team or if they can review your suggestions. See the previous question for more information on translation teams, suggestions and permissions.

How do I get support for Launchpad Translations?
There are many ways to get support if you need help. Here are some of them: you can ask a question in Launchpad, you can send an e-mail to the launchpad-users mailing list or you can ask on the #launchpad IRC channel on the Freenode network. You will find more information here.

Will Chromium translations make it to Google Chrome?
Most probably not. Google Chrome and its translations are subject to different QA processes than Chromium and we’re not contemplating this possibility at this time. We are only making those strings either common or specific to Chromium available for translation.

How often will translations be updated?
?It depends on the Chromium version and the operating system you are using:

  • Ubuntu, stable: if you are using the Chromium version provided in the Ubuntu package through Software Center, you will get a translations update whenever there is a new Chromium stable version released upstream.
  • Ubuntu, PPA: If you are using the Chromium daily PPA for Ubuntu, there are several options depending on which actual PPA (channel) you are using: for trunk, once a string is translated in Launchpad it takes about 2 days to be available; for the other channels (dev, beta, stable) translations are only made available whenever there is a Chromium upstream release.
  • Other: the frequency of updates in other distributions will depend on the use they make of the translations and their update policies. There are currently no Chromium builds for Windows or Mac.

This is a fully automatic process: translations exported from Launchpad are fetched daily, merged with the upstream trunk and changes are landed in the corresponding PPA of the daily builds.

How can other Operating Systems use the Chromium community translations?
The intention is that any Operating System/Linux distribution can benefit from the work from Launchpad translators, so these translations will be available to anyone interested in using them. They  can even be used for Windows and Mac.

If you are interested in using the translations for another distro, the best thing is to get in touch with Fabien (you’ll also find him as fta in the #chromium IRC channel on Freenode).

If you’ve got more questions, also feel free to ask by sending a comment to this blog post.

Happy translating!


Read more