This is default featured slide 1 title

This is default featured slide 1 title

You can completely customize the featured slides from the theme theme options page. You can also easily hide the slider from certain part of your site like: categories, tags, archives etc. More »

This is default featured slide 2 title

This is default featured slide 2 title

You can completely customize the featured slides from the theme theme options page. You can also easily hide the slider from certain part of your site like: categories, tags, archives etc. More »

This is default featured slide 3 title

This is default featured slide 3 title

You can completely customize the featured slides from the theme theme options page. You can also easily hide the slider from certain part of your site like: categories, tags, archives etc. More »

This is default featured slide 4 title

This is default featured slide 4 title

You can completely customize the featured slides from the theme theme options page. You can also easily hide the slider from certain part of your site like: categories, tags, archives etc. More »

This is default featured slide 5 title

This is default featured slide 5 title

You can completely customize the featured slides from the theme theme options page. You can also easily hide the slider from certain part of your site like: categories, tags, archives etc. More »


Welcome to our website. Neque porro quisquam est qui dolorem ipsum dolor.

Lorem ipsum eu usu assum liberavisse, ut munere praesent complectitur mea. Sit an option maiorum principes. Ne per probo magna idque, est veniam exerci appareat no. Sit at amet propriae intellegebat, natum iusto forensibus duo ut. Pro hinc aperiri fabulas ut, probo tractatos euripidis an vis, ignota oblique.

Ad ius munere soluta deterruisset, quot veri id vim, te vel bonorum ornatus persequeris. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus.

Flock 2017

Flock to Fedora, the annual Fedora users and contributors conference, was held this year from August 29 to September 1 in Hyannis, MA, a tourist resort located at the Atlantic Ocean coast. As I was privileged to participate in this event here is my report about it.

Day #0

August 28, 2017

Usually this is a day of arrivals and hotel check-ins. Sometimes there are unofficial pre-party events organized, like hanging out in a bar together. This time additionally at 7 PM a training for people who volunteered to run the A/V equipment was organized. Unfortunately, I was unable to participate although I did volunteer. All I could to was to express my regret for being late at the discussion channel as I was still traveling from the airport to Hyannis. Several people traveling on the same bus with me responded “same here.” As a result, the organizers had no other choice but to repeat the training the next day at 8:00 AM.

Day #1

August 29, 2017

The day started with the short outstanding A/V training and the main conference began. Each day started with a short intro by Brian Exelbierd who announced the events planned for the day and which tickets to use to attend them. Then there was a keynote by Matthew Miller. As usually, this was a summary of Fedora popularity statistics. Matthew emphasized that the statistics may be incomplete because Fedora respects the users’ privacy, does not register their IDs, does not track their activity. The only source of information is download servers traffic. We don’t know how many persons share the same IP address. There is no world map of users, we don’t know what is their geographical distribution. The countries where the Internet access is expensive or simply unavailable may be underrepresented in the statistics. Besides that, only GNOME and KDE automatically check for updates, other desktop environments do not have these features. There are no statistics about Fedora spins and editions.

Matthew Miller and Fedora statistics

Next all speakers had an opportunity to advertise their sessions: give a pitch of their talks and workshops. The aim was to attract potential attendees. Great idea in my opinion, not everyone might be attracted by the title and summary alone or even worse might have skipped it.

A long queue of the speakers willing to give a pitch of their talks

Lunch was deliberately scheduled for 2 hours, the ogranizers aim was to make an opportunity for unofficial and spontaneous talks between attendees. Really great idea, how many times I had spent a conference time on long lobby discussions rather than on official talks in the past!

I attended Owen Taylor‘s talk “How to make your application into a Flatpak.” I must admit that although Flatpak is a very promising application distribution technology it is still mostly unknown to me. As it reminds me (I’m not sure if correctly, though) the distribution methods of OS X and Android I asked Owen what is the difference between them. Owen emphasized that Flatpak offers much better security. By default an application has no special permissions. They are granted only when needed. Besides that I also attended Adam Williamson‘s talk about automated test systems in Bodhi and another short talk about IoT by Peter Robinson.

Finally there was a session which I liked most. Dan Horák and Sinny Kumari talked about their experiences in debugging programs being ported to alternative architectures. According to Dan, the biggest problem is endianness: porting from popular little endian architectures to big endian. Other obstacles are different sizes of popular types, especially char, and different definitions of size_t: signed or unsigned. Sinny talked about difficulties while debugging hybrid programs written in Python but using shared libraries written in C. Debuggers so far cannot step into the native functions. Sometimes a solutoin of a bug can be as short as a single line but it is hidden very deep in the code which makes finding it really time consuming. Unfortunately, this session was attended by few people only. A day later I talked about it to Paul Frields who commented “That’s why we call them alternative architectures.” But it had its advantage: the session converted into a free conversation in which we all shared our own experiences. I was very curious about the big endian architectures. I never worked with them so I asked whether Fedora actually supports any of them. Dan gave the examples: IBM System z mainframes and legacy PowerPC. The session time was over, the camera went off, and we were continuing our small talks.

As a result I skipped the “Build Your Own Fedorator” workshop led by Sanqui which was held parallelly with the Game Night. When I finally arrived I saw assembled and working Fedorators. But I didn’t lose much: Sanqui and Nick Bebout, who was also my roommate, shortly explained me what is that Fedorator and helped me to test it. It is a device powered by Raspberry PI computer with a dedicated touch screen and a single USB port, all in a trapeze shaped 3D-printed box. The software runs on Raspbian and has only one application: it writes any selected Fedora boot image (yes, any spin, any architecture, etc.) to a pendrive. Very handy for fairs, shows and conferences when one can generate and give the attendees the working images.

Working Fedorator

Another event held in parallel with the Game Night was the International Candy Swap, this time officially organized by Justin Flory. I brought Mieszanka Krakowska (Krakow’s Assorted Jellies which could be read as the last year’s Flock memory) but the most tasty in my – and not just my – opinion was bakllava brought by Jona Azizaj. Very interesting was freeze-dried official astronaut ice cream produced by NASA brought by Suzanne Hillman.

Balkan sweets: bakllava (middle), llokume (above), accompanied by Polish Mieszanka Krakowska (right)

Day #2

August 30, 2017

As always, it started with an intro by Brian and some more talk pitches.

Immediately after this a workshop about Fedora Websites led by Andrea Masala and Robert Mayr started. It’s rather strange that I attended this workshop because I’m mostly not interested in web development but I had lots of fun with this new kind of activity. I learned that the Fedora websites use Genshi framework to handle localizations and the translations are provided by Zanata service. The authors had put much effort to ensure that translators are unable to break HTML elements such as links. I was really surprised to learn that the web pages use Python. During the workshop attendees had an opportunity to fix one or more issues reported in the pagure repository. I was asked to remove a link to Moldovan Fedora community because its website no longer existed. While at this, I checked if the links to all European local communities work – don’t worry, there were only few of them – and discovered that the Romanian page neither does work so I removed both of them.

After the lunch, from 2 PM to 4:30 PM Stephen Smoogen hosted two joint sessions about EPEL (Extra Packages for Enterprise Linux). EPEL has its 10th anniversary this year. It provides additional packages for Red Hat’s commercial distributions since RHEL 4.0. Stephen explained why EPEL exists: people use it to build large, massive things which he compared to building bridges. Those people don’t care about the newest versions of their software. They accept using orphaned, unsupported packages because they need them for the existing scripts in their projects. EPEL provides them the packages which they need: security tools, statistics tools (e.g., the R language), alernative web servers (e.g., nginx), monitoring tools, configuration management.

Stephen Smoogen presents his unrealistic expectations of EPEL growth

The second part or more precisely the second session about EPEL turned into a discussion about what EPEL users need for their future. Stephen announced that EPEL repositories will have the same structure as Fedora repositories have now: release + updates (tested) + updates-testing (for the testers). He also announced that RHEL 5.11 will be released althoug the original plans were to make 5.10 the last release of 5.x series.

The day ended with Wackenhammer’s Clockwork Arcade and Carousel evening event. There were arcade games, amusement park style carousel, food truck and drinks.

Games at Wackenhammer’s Clockwork Arcade

Day #3

August 31, 2017

The organizers had a reasonable idea to start each day a little later than the previous one. This day started at 9 AM. The first speaker was Michael McGrath who talked about what does Red Hat want from Fedora. Shortly, the users have miscellaneous demands. Some of them want software updates to be delivered faster, some want them slower, and some have mixed expectations: some software faster, some slower. Fedora, as meant by Red Hat, is not supposed to be a place to keep the things as they are. Users may expect fast changes.

At 2 PM a track about globalization, internationalization and localization began. First speakers were Parag Nemade, Jens Petersen and Pravin Satpute. They summarized the known aims: delivering translations and settings like date formatting, currency, alphabetic sorting, paper size etc., contained in the glibc locale data. They also talked about the changes in input methods.

Progress of input methods

The recent improvements introduced in Fedora include: langpacks installed with weak dependencies, locale data in glibc split into subpackages (there is no need to install and place in ISO images the locale data for all languages because they take too much disk space). Currently there are about 80 langpacks in Fedora and the list is not yet complete. Fedora 25 inroduced IBus Emoji typing and full Unicode 9.0 support. We had a short discussion about how users should configure their preferred language packages. My suggestion is not to place the functionality into GNOME Initial Setup nor GNOME Software because they are part of GNOME which is not the only one desktop environment in Fedora. It seems better to me to move it to initial-setup or maybe to PackageKit which attempts to be a universal solution for all desktop environments and even all distributions. Pravin Satpute summarized his work on fonts, he asked for more input from local communities.

Pravin Satpute talks about fonts

The next speaker was Sundeep Anand who introduced his project Transtats. It is very promising, its aim is to organize communication between developers, translators, and packagers, and facilitate distribution of the packages. I will write more about it shortly below.

The last session of this series was held by Pravin Satpute, Alex Eng and Jean-Baptiste Holcroft. Pravin summarized the current progress of localizations. Translation sprints gather more than 50 contributors each. I18N test days gather more local communities than any other such events. Alex Eng talked about obstacles of Zanata and future plans. As the last speaker Jean-Baptiste Holcroft really rocked the place with his short but interesting presentation suggestively illustrating what we had achieved so far and where are we going next.

Jean-Baptiste Holcroft…

Further plans of the localization team, especially the Transtats project, provoked a long discussion which attracted Brian Exelbierd. The discussion was so long that we had to move to another room because the next session was just about to begin. Transtats seems to be the tool of the future: it connects multiple services (Zanata, git, etc.) It will prevent translators from translating old strings which have been already removed by the developers, will automate the workflow from develoers to translators and to packagers, will help enforcing string freezes.

Day #4

September 1, 2017

This day was meant as a summary. Speakers had a chance to talk about what they had achieved during the conference. It was a really short day because at 11 AM we were supposed to check out from the rooms. However, the hotel staff was really nice and allowed us tho hang up a little longer to finish the talks and say goodbye to our friends. This did not change much, though. The bus to the airport and the airplane back home would not wait longer, 3 PM was the last minute to leave Hyannis.

Some (but not all!) of my friends

I am thankful to the organizers for inviting me, I send my greetings to old and new friends who I saw during the conference. See you all next year or maybe even sooner!

How Polish Plurals in MATE Went Broken

On March 13, 2017 the new version 1.18 of MATE Desktop was released. One of the last minute changes in the project was pulling the most recent translations from Transifex. Usually this is a good thing but apparently for the Polish language this turned out to be a little disaster because the plural rules have been (incorrectly) changed.

Plural rules

Foreign readers deserve an explanation here. Polish plural rules (as well as of several other Slavic languages) are a little more complex than English. There are three forms required:

  • 1 – singular – that’s obvious and similar to English and other Indo-European languages.
  • 2, 3, 4, and anything ending with 2, 3, 4 except 12, 13, 14 (for example: 22, 23, 24, 32, 33, 34 and so on). This group is sometimes referred to as few in some internationalization toolkits.
  • everything else (5 and greater except the numbers mentioned above). This group is sometimes referred to as many.

Plurals support in gettext package is good and complete. All we need is to write the correct rules in the header of a *.po file. This task should be done once and the rules can be reused for every translation into the same language because the grammar rules don’t change often, we can safely assume that they never change. Usually for Polish translations we use this formula:

"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);n"

This expression is neither simple nor complex. Just sufficient to describe what the language needs.

Here comes the disaster

On March 13 the commit synchronizing translations from Transifex changed the plural rules for Polish language. The new formula is:

“Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);n" [/code] Now this is complex, isn't it? What's wrong with this expression:

  • it states that Polish language needs 4 forms to support plurals which is not true;
  • it is unnecessarily complex: if the expression states that n==1 belongs to the group 0 there is no need to make sure that n!=1 in the further part;
  • the complexity leads to one actual bug: the second group includes all numbers which end with 2, 3, 4 (correct), except 12 and 13 (incorrect, 14 must be excluded as well);
  • the result 3 is unreachable which is correct but confusing for translators.

As MATE Desktop is a large project consisting of multiple applications (like Caja file manager, Pluma text editor etc.) the same happened to every single application of the project.

Difficult to fix

The bug has been reported to the upstream immediately. The MATE project maintainres responded that the bug came from Transifex: it is pointless to fix it in the MATE source code repository because the next pull will overwrite the fix.

Unfortunately, it is not so easy to file a ticket in Transifex. It does not have Bugzilla nor any other ticket system. However, some people managed to contact Transifex team. They responded that they have pulled the plural rules from CLDR which lists 4 plural forms for the Polish language although they admitted that assigning the number 14 to the few plural group is their fault and fixed this. As MATE project continues pulling translations from Transifex more and more of their applications will start handling the number 14 correctly. Some of the applications have been updated recently, the update is a part of the 1.19 development release.

What CLDR says

Let’s look what CLDR database says about the Polish plural rules. Indeed, it lists 4 groups and there is a mysterious v parameter which has something in common with fractions because the sample expressions display the fractional forms. But as gettext supports integer values only we should drop the fractional cases totally.

The documentation of that v parameter is difficult to find but as soon as you find it you can read it means number of visible fraction digits in n, with trailing zeros. In this sentence, n is the number controlling the plural form itself.

Other languages

CLDR provides additional forms for fractions for other languages as well: Czech, Manx, Russian, Slovak, Ukrainian. For some other languages (Bosnian, Croatian, Filipino, Macedonian, Serbian, Lower and Upper Sorbian) the rules seem to be even more complex: fractional values belong to multiple integer groups.

This should be a warning for other languages that their rules might have been broken in Transifex as well. However, the further investigation of MATE Desktop source code does not reveal any recent changes in plural rules of other languages.


It seems that pulling plural rules from CLDR automatically is not a good idea.

Translators and language coordinators: please make sure that your plural rules are correct.

Transifex and other translation platforms: please don’t pull the translation rules from CLDR without a thorough analysis. Better ask the language communities and reuse the existing rules.

CLDR: please simplify your plural expressions and make the documentation of fractions support easier to access.

glibc 2.26: New and Updated Locales

On August 2, 2017 glibc (The GNU C library) version 2.26 has been released. Among others, many issues related with supported locales have been addressed, most of them shortly before the release. Let’s see what has been changed.

New locales

Compared to the previous version, this release introduces the support of 6 new languages: Aguaruna, Bislama, Fiji Hindi, Samoan, Tok Pisin, and Tongan as well as 2 new variants: South Azerbaijani for Iran, and Maithili for Nepal.

Aguaruna is a language spoken by about 38,000–45,000 indigenous people in Peru. Bislama is an official language of Vanuatu although spoken by about 10,000 people only. Fiji Hindi is a language descending from although different than Hindi. It is spoken by about 300,000 citizens of Fiji which makes about ⅓ of its total population and is one of the official languages of the country. It is written using both the Latin and the Devanagari script. This release introduces the Latin script only but Devanagari is also considered to be introduced in future. Tok Pisin is one of the official languages of Papua New Guinea. Although spoken by only 120,000 native speakers which makes 1.7% of total population it is the most widely used language of the country. No wonder since Papua New Guinea features about 850 native languages.

South Azerbaijani is a variant of Azerbaijani language spoken by about 13 million people (16% of total population) in Iran and Maithili is spoken by about 3 million people (11.5% of total population) in Nepal. Both have been previously represented by their variants for Azerbaijan and India, respectively. Now their users may enjoy more granularity.


Bugs in alphabetic sorting in Hungarian and Malayalam (see also: here) have been fixed. But lots of other fixes have been introduced in date and time elements, mostly in month names. Typos in either full or abbreviated or both names have been fixed, among others, in Arabic (many variants), Belarusian, Breton, Friulian, Hindi, Kannada, Konkani, Malayalam, Marathi, Mongolian, Northern Sami, Serbian (Latin only), Spanish (Peru and Uruguay), Uzbek, Yoruba, Zulu — total of 55 languages have been updated to the content of CLDR version 31. Weekday names have been updated in Arabic, Chechen, and Kashmiri — Saudi Arabian users had them displayed in English so far. Yes and no translated strings have been added or fixed in many languages.

Incorrectly appended trailing spaces have been removed in several locales, usually from weekday names. They mainly include languages of India but also Albanian (where the issue has been first spotted), Haitian, Maltese, and more. This change will polish date formatting in these locales.

Unicode 10.0

This version also introduces the full support of Unicode 10.0. The changes are mainly focused on new emoji characters.

It’s worth mentioning that the full Unicode 10.0 support has been added to glibc only 2 days after its official release by the Unicode Consortium.