GNOME.asia 2015

Sponsored by GNOME FoundationOn May 7-9 2015 I’ll attend GNOME asia. It will be held in Depok, West Java, Indonesia (30km below Jakarta). I’m going there because:

  1. I’d like to understand the difference between GUADEC attendees vs GNOME.asia attendees (their interests, why they go there)
  2. I want to represent GNOME Release Team (answer any questions)
  3. I’d like to host a bugsquad session together with Andre Klapper

It will be the first time ever to attend a non-European conference, so I’m quite curious how it’ll be like. I’ve requested partial sponsorship from the GNOME Foundation, which was approved even if I missed some kind of deadline. I guess it helps that I only ask for partial :P

I’ve already bought tickets and I’ll travel for the first time with Emirates. I can checkin 30kg of luggage and carry 7kg. The 30kg is twice what I’ve ever brought on a plane. I dislike having a heavy suitcase and I’m usually amazed that some people are at the airport with massive amount of suitcases. Especially considering that having just one big and good suitcase is not cheap. Bringing loads of stuff with you to me seems like a huge burden (buying suitcases and the impact it has when you travel). If you go to a warm country, you can do without a lot of clothing. I’m still wondering if there really is something heavy I should bring :-P

ConsoleKit in GNOME 3.16 and beyond

Copy pasting from https://wiki.gnome.org/Projects/ConsoleKit. We announced this as well on distributor-list, which we expect any distributor of GNOME to be subscribed to (please do so!). Discussion was held on desktop-devel-list.

ConsoleKit is a framework for registering and enumerating login and user sessions. It is currently deprecated and unmaintained, though the project was recently forked into a backward compatible ConsoleKit2 project. that is getting limited maintenance.

Alternative options

The functionality of ConsoleKit has been superseded by logind which is a systemd component. logind provides nicer APIs and better integration with the system. It supports multiple seats per-machine, and has a mechanism for provisioning devices to unprivileged programs. Although systemd is not available for all systems, there have been a number of initiatives to fill the gap left by ConsoleKit, including:

  • LoginKit (logind compatible api on top of ConsoleKit2);
  • systemd-shim (limited support for some of the systemd apis);
  • systembsd (a reimplementation of the systemd apis portable to BSD distributions).

GNOME 3.16

Some GNOME components still support ConsoleKit in a best-effort, last-ditch-fallback sense, though, the ConsoleKit codepaths aren’t as widely tested. Some components now require logind to function properly. Distributions that wish to ship without logind in GNOME 3.16 need to patch ConsoleKit support back in to those components:

GNOME 3.18 onwards

For GNOME 3.18 we expect anyone not being able to use logind to make use of LoginKit, systemd-shim or systembsd. Likely more modules will remove ConsoleKit codepaths.

Distributing games and applications

Two new games for GNOME 3.16

Within a short period, two people showed up with proposals for games for inclusion with GNOME 3.16. One is a 2048 clone, the other is a revival of Atomix (last maintenance was GNOME 2.14). Both proposals seem to be maintained by just one person.

The 2048 clone might use a not-yet finished library. The usage of that library will help development of the library (easier when you have use cases, etc). Atomix needs to be ported from old technologies to the latest ones. If I’m not mistaken, I think I encouraged the inclusion of Atomix during the 2.x days.

I’m quite looking forward to having both games available on my machine. Being a packager for Mageia means that I can basically decide when that’ll be. Though Mageia currently is gearing up to Mageia 5 and that put limits on what I can do.

Game development by one person

The number of people on average making a games development by has differed a lot over since 1980s. Initially it was often one person, eventually big teams, then smaller again (flash games), etc. Jeff Wofford wrote a very detailed log of his experiences pursuing game development. According to the blog, one-man game development is done out of interest, but often also to make a (good) living.

Making money from game development in recent times is very short lived. If you make a game, it’ll quickly get cloned. Quite interesting is the number of available applications in the iOS app store.

Number of available apps in the Apple App Store from July 2008 to September 2014

I have no idea how long it takes to create a nice game for a mobile iOS. I do think above graph impresses me: more than 1.2 million apps within 4.5 years. How long have distributions been around? I recall trying either Red Hat 5.0 or 5.2.

How would this work under the distribution model?

With the distribution model and e.g. the 2048 game, say the game was originally made for Linux. Then once the development is over, you’ll have to persuade various distribution packages to include your game. This is easiest if you’re known. So aligning yourself with GNOME makes this process easier for you. To ensure your game is available under as many distributions as possible, you’ll have to search for the various distributions, then per distribution ensure that your game gets packaged.

Packing does have various benefits from a technical standpoint. No duplication of libraries, entire QA process, etc. I package at Mageia and I don’t like anything that’s not packaged. I basically won’t install it unless there’s a package for it.

Say your spend 2 weeks of development on your game until you have the first version that you want to beta test. After that you need to convince distributions to package it. Then these distributions have to ship their stable versions. After which your users have to upgrade their distributions. If you release a new version every 2 weeks (easily possible if your game is under active development): how likely will your users run the latest version? Distributions usually freeze their distribution to increase quality. This can take anywhere from a month to 4 months. Various distributions also require freeze exceptions for new versions of software.

To notice new versions, distributions use various methods. Fedora tries to download a potential higher number than whatever is within the distribution. It uses that to notify the packager. Then for various well known download sites (e.g. download.gnome.org) it checks the directory. At Mageia we check various download sites as well as other distributions. Which gets messy as we sometimes use a slightly different name.

If your developing a game or small application for Linux, the experience is just terrible.

xdg-app: A different trade-off

Various people within GNOME are creating a freedesktop.org additional way to distribute games and applications. Meaning: the intention is that it works not just for GNOME, nor just for one distribution. The details are available on https://wiki.gnome.org/Projects/SandboxedApps, though I’ll just copy/paste the two main goals:

  • We want to make it possible for 3rd parties to create and distribute applications that works on multiple distributions.
  • We want to run the applications with as little access as possible to the host. (For example user files or network access)

On Feb 7 2015 at DevConf.cz, Alexander Larsson gave a talk about application sandboxing:

As the talk is about 45 minutes I’ll just recap a few things from it:

  • Applications/games rely on a runtime
  • Runtime: Something like GNOME 3.16 (or KDE, etc)
    The GNOME 3.16 is around 400MB. The idea is that there aren’t too many runtimes and multiple applications can rely on one runtime. In case you have multiple runtimes and there are duplicate files between the runtime, the space is only used once. Further, when you update a runtime, you only download the differences (thanks to OSTree, see the LWN writeup).
  • Demo: The presentation includes a demo about a recently funded application, Builder.
    This application is still being developed. It requires libraries from GNOME 3.16. That’s still under development so usually (unless you run development versions of distributions), you’re pretty out of luck trying this out.
  • Sandboxing/separation: The sandboxing is not perfect yet
    Requires more work (pulseaudio and more). Further, any X app will always be able to record your keystrokes if they want. Meaning: Wayland. Further, there are some interdependencies between host OS and the runtime (for details see the talk).
  • You can disable access to your network, your own files/homedirectory, etc
    It uses things like pid namespaces, etc (see talk for details)
  • You can install either system-wise or within your homedirectory

Now I didn’t fully watch the entire talk, nor read all of the discussion around it. I know that NVidia will only release their proprietary versions which will work with Wayland beginning of 2016 or so. The talk mentions wanting to use kdbus, which doesn’t have to be systemd-only, but, well…

It’s unfortunate that this talk wasn’t given at FOSDEM. There was one talk about Wayland+systemd application sandboxing, but I found it very lacking (I expected something like what Alexander Larsson spoke about).

Closing points

I skipped over many details in this post. If you want more details, see the various links, post a comment or ask the people who actually know. For that and also if you want to work on something technically interesting: join the gnome-os-list mailing list.

Retail chains in The Netherlands

In The Netherlands, various retail chains are either having difficulties, or they’re going bankrupt. Having it difficult: HEMA (huge stores though smaller than V&D), V&D (huge stores). Bankrupt/payment issues: Free Record Shop (CDs), Halfords (bikes/stuff for your car), Mexx (clothing) and Schoenenreus (shoes). These are stores you often see in any city centre. At least a few of these chains were taken over by investment companies.

It’s hard to care. Often they sell exactly the same Chinese products you find everywhere. There’s nothing really unique to any store, so I often compare chains by the prices they offer.

For HEMA and V&D, the chain Action offers a much smaller amount of products, but much much cheaper. Further, Action often completely changes whatever they offer. This makes it interesting to go back to the store a lot. V&D and HEMA: I know what they offer, I only go there when Action doesn’t have it in stock. V&D is trying to lower their costs by demanding 40% less rent and no rent payment for 4 months. The company they’re renting from is trying to evict them. Officially they can easily rent out the space to others, though somehow you can also benefit from leaving a building completely empty.

For clothing, Primark offers clothing for much reduced prices. A t-shirt can be had for a few Euros. A while back I bought loads of shirts and t-shirts, the most expensive item was 4 EUR. Quality wise Primark is questionable, but other clothing chains are not that much better. Price wise, it can be more economical to buy the lower quality Primark version.

For bikes, loads of bike shops rely on the tax benefit that existed when you buy a bike to travel to work. The maximum price of a lot of bikes exactly match the maximum you could get as tax benefit. Internet bike shops were often excluded from the tax benefit, while stores offering the tax benefit we often much more expensive. Resulting in most of the tax benefit mostly actually going to the shops. This tax benefit ended starting from 2015. I won’t be sad if loads of bike shops go out of business. Though according to the bike shops, their business has increased due to businesses now providing company bikes. I don’t believe them.

Schoenenreus offers bad quality shoes for a lowish price. It actually doesn’t work out at all. A shoe bought there might be worn out in 1 month, max 3. It shouldn’t be that costly to make shoes or offer better quality. I think people not having money for a better quality shoe probably found a chain which offers better quality for the same price, making the business model of Schoenenreus obsolete. It seems that in The Netherlands you can either buy a nice looking shoe and it’ll wear out, or buy a really ugly one that’ll last you for years. Most well known brands seem to have lowered their quality.

Various chains that do well are considered to be cheap while they aren’t (Mediamarkt), are cheap (Action), refocussed on offering unique products (Bijenkorf). I do wonder what’ll happen to the rarely needed stuff which is only offered by a few shops. As well as the space occupied by the huge stores. I do hope that stores adapt to the changes. Just because you were successful or your store existed for a long time doesn’t mean you’re entitled to continued success.

Systemd in GNOME 3.14 and beyond

Plan to get rid of ConsoleKit in GNOME 3.14

Before the start of the GNOME 3.14 cycle, Ryan Lortie announced his intention to make most GNOME modules depend on a logind-like API. The API would just implement the bits that are actually used. According to Ryan, most GNOME modules only use a selection of the logind functionality. He wanted to document exactly what we depend on and provide a minimal API. Then we could write a minimal stub implementation for e.g. FreeBSD as we’d know exactly what parts of the API we actually need. The stub would still be minimal; allow GNOME to run, but that’s it.

Not done for GNOME 3.14. Needs urgent help.

As didn’t see the changes being made, I asked Ryan about it during GUADEC. He mentioned he underestimated the complexity in doing this. Further, his interests changed. Result: still have support for ConsoleKit in 3.14, though functionality wise the experience without logind (and similar) is probably getting worse and worse.

Systemd user sessions

In future I see systemd user sessions more or less replacing gnome-session. The most recent discussions on desktop-devel-list indicated something like gnome-session would still stay around, but as those discussions are quite a while ago, this might have changed. We’re doing this as systemd in concept does what gnome-session does anyway, but then better. Further, we could theoretically have one implementation across desktop environments. I see this as the next generation of the various XDG specifications.

Coming across as forcing vs “legacy”

From what I understood, KDE will also make use of user sessions, logind, etc. However, they seem to do this by calling the existing software “legacy” and putting everything into something with a new name. Then eventually things will be broken of course. Within GNOME we often try to make things really clear for everyone. E.g. by using wording usch as “fallback”. It makes clear our focus is elsewhere and what likely will happen. I guess KDE is more positive. It might still work, provided someone spends the effort to make it work. In any case, the messaging done by KDE seems to be very good. I don’t see any backlash, though mostly similar things is occurring between GNOME and KDE. There are a few exceptions, e.g. KWin maintainer explicitly tries to make the logind dependency as avoidable as possible. I find the KDE situation pretty confusing though; it feels uncoordinated.

Edit: At least the user session bit in KDE is undecided. It was talked about and seemingly agreed between two well known KDE people, see here, but still undecided. Same person clarifying this requested that I clarify that I’m not from KDE. I am not from KDE.

Appearance that things work fine “as-is”

In a lot of distributions there is still a lot of hacks to make Display Managers, Window Managers and Desktop Environments work with the various specifications and software written loads of years ago. Various software still does not understand XDG sessions. They also do NOT handle ConsoleKit. Distributions add hacks to make this work, doing the ConsoleKit handling in a wrapper.

This is then often used in discussions around logind and similar software.

“My DM/WM/DE is simple and just works. There is no problem needing to be solved.”

There are various distributions which have as goal to make everything work, no regressions are allowed. If you use such a distribution and given enough manpower, enough hacks will be added which on short term ensures things work. However, those temporary hacks are hacks. E.g. if some software should support XDG sessions and it does not, eventually the problem is with that software.

Looking at various distributions, I see that those temporary hacks are still in place. Especially funny one is Mageia, where XDG session support is second class. The XDG session files are generated from different configuration files. This results in fun times when a XDG session file changes. Each time this happened, the blame is quickly with the upstream software. “Why are they changing their session files, it should just never change”. While the actual problem is that the upstream files are thrown away!

The support for unmaintained software has at various points resulted in preventable bugs in maintained software. While at the same time the maintained software is considered faulty. I find this tendency to blame utterly ridiculous.

Aggressive anti-advocacy

There are many people who have some sort of dislike for systemd. In the QA session Linus had at Debconf, he mentioned he appreciates systemd, but the does NOT like the bughandling. In various other forums I see people really liking systemd, but still having their doubts about the scope of systemd.

When either liking or disliking systemd, it is important to express the reason clearly and in a non-agressive way. Unfortunately there are a few people who limit their dislike in ways that’ll result in them being ignored completely. Examples are:

  • Failure to understand that a blank “you cannot rely on it” statement is not helpful

    If a project sees functionality within systemd that is useful, it is you’ll not get very far with stating that the project is bad for having used that. Or suggesting that there is some conspiracy going on, or that the project maintainer is an idiot. That’s unfortunately often the type of “anti-systemd advocacy” which I see.

  • Failure to provide any realistic alternatives

    Suggesting that systemd-shim is an alternative for logind. It’s a fork and it took 6 months or so to be aligned with latest systemd changes. Further, it’s a fork with as purpose to stay compatible. It’s headed by Ubuntu (Canonical) who are going to use systemd anyway.
    The suggestions are often so strange that I have real difficulty summarizing them.

  • Continuous repeat of non-issues

    E.g. focussing on journald. Disliking e.g. udev or dbus, confusing the personal dislike as a reason everyone should not use systemd.

  • Outright false statements

    E.g. stuff “systemd is made only for desktops”, “all server admins hate it”. If you believe this to be true, suggest to do your homework. That, or staying out of discussions.

  • Suggesting doom and gloom

    According to some of the anti-advocacy, there’s a lot of really bad things in systemd. A few examples: my machine should continuously corrupt the journal files, my machine often doesn’t boot up, etc. As it’s not the case, such a claim pretty much destroys any credibility they might have had with me.

    Anyone trying systemd for the first time will also notice that it’ll just work. Consorting to this type of anti advocacy will just backfire because although systemd is NOT perfect, it does work just fine.

  • Lack of understanding that systemd is providing things which are wanted

    Projects have depended on systemd because it does things which are useful. As a person you might not need it. The other one believes he does need the functionality. Saying “I don’t” is not communication. At least ask why the other believes the functionality is useful!

  • Lack of understanding that systemd is focussed to adding additional wanted functionality

    Systemd often adds new functionality. A large part of that functionality might have been available before in a different way. It’s something which most people seem to worry about. It’s usually added as a response to some demand/need. Having a project listen to everyones needs is awesome!

  • Personal insults

    This I find interesting. The insults are not just limited to e.g. Lennart, the insults are to anyone who switched to systemd. A strategy to of having people use something other than systemd by insulting them is a very bad strategy to have. Especially if you lack any credibility with the very people you need and whom you are insulting.

  • Failure to properly articulate the dislikes

    There are too many blank statements which apparently has to be taken as truths. Saying that something is just bad (udev, dbus, etc) will be ignored if the other person doesn’t see it as a problem. “That systemd uses this greatly used component is one of the reasons not to use it”. Such a statement is not logical.

  • The huge issues aren’t

    Binary logging by journald. Anti-advocacy turns this into one of the biggest problems. The immediate answer by anyone is going to be that you can still have syslog and log it as you do now. If you advocated this as a huge issue, then anyone trying to decide on systemd will quickly see that this huge issue is not an issue at all.
    The attempt is to make people not use systemd. In practice, if the huge issues aren’t an issue, then the anti advocacy is actually helpful to the adoption. The biggest so called problems are easy, so anyone quickly gains confidence in systemd. Not what was intended!

  • Outright trolling

    For this I usually just troll back :-P

What I suggest to anyone disliking systemd is to not make entire lists of easily dismissed arguments. Keep it simple (one is enough IMO), understandable but also in line with the people you’re talking to. Understand whom you’re talking to. Anything technical can often be sorted out or fixed, suggest not to focus on that.

Once the reason against is clearly explained, focus upon what can be done to change things. Here the focus should be on gaining trust and give an idea on what can be done (in a positive way).

Don’t ignore people who dislike systemd

Due to having seen the same arguments for at least 100 times, it’s easy to quickly start ignoring anyone who doesn’t like systemd. I’ve noticed someone saying on Google+ that the systemd should not be used because Lennart is a brat. Eventually enough is enough and it is time to tell these people to STFU. But that’s not according to one part of the GNOME Code of Conduct, “assume people mean well”. Not believing in people meaning well and ignoring it has bitten me various times.

Turns out, this person is concerned that his autofs mounted home directories won’t be supported some time in the future. So this person does follow what Lennart writes. While it appeared to me he’s just someone repeating the anti-advocacy bit, he has a valid concern. I still think it is unacceptable to call people names and said so, but it
is equally important to ensure things are still possible.

Can a “not supported” still be made to work?

Systemd developers are quick to point out that something is not supported. E.g. a kernel other than Linux. A libc other than glibc. Some use cases are not. But there’s a important thing to know: would the usecase be impossible, or would it take way more effort?

The type of effort is also important. For a different kernel/libc, you’d need a developer with good insight into these things. For others, it might be possible by customizing things. I assume the autofs homedirs will always be possible, just not always taken into account.

If it is not supported but can be used anyway if you’re an “ok” sysadmin, that’ll mean for most people it’ll be possible. A “not supported by systemd” does therefore not 1 on 1 relate to impossible. If you want a different libc but you’re are a sysadmin and not a developer that’s quickly seen as impossible. While another “not supported” is actually perfectly possible.

IMO it is good that not everything is supported. Ensure that whatever is supported works really well. But at the same time, I think more focus should be on ensuring people do understand that a “not supported” does not mean “cannot work”.

My opinion on systemd as a release team member

I like *BSD. I like avoiding unneeded differences, this easies portability.

There are some interesting tidbits I’ve learned. Apparently OpenBSD has a GSoC student working on providing alternative implementations for hostnamed, timedated, localed and logind. I don’t think it’s enough, because it needs to be maintained fully. I further think that a logind alternative cannot be written together with the other bits during just a summer. Whatever it is, I think this will make it even easier to use systemd. This is not what some of the anti-advocacy is intending to happen. Oh well.

There seems to be another round of (temporary) increase of people disliking systemd. I’m pretty sure it’ll quiet down to normal levels again once Debian has systemd in a stable release for a few months.

Eventually they’ll notice that although systemd is not perfect, it just works. Unfortunately, this all doesn’t help in with the concerns I still have.

What to do with ConsoleKit?

GUADEC 2014

Some quick thoughts about GUADEC 2014 in no particular order (apologies for any weird English: written while a bit tired):

  • Late opening of registration page made me feel uneasy with arranging things. Sort of felt like things might be cancelled. Probably should’ve spoken up about it beforehand.
  • Strassbourg looks really amazing.
  • I don’t get why EU moves between two cities. Waste of money.
  • I feel for the stress that the organizers must’ve had with GUADEC 2014. Don’t take anything I say about GUADEC 2014 personal.
  • GUADEC 2015 will be in Gothenburg, Sweden. I’m wondering how much alcohol people can legally take and if the selling of alcohol is a good method to ensure it isn’t too expensive for people.
  • I love taking a train, don’t like flights. On the way to Strassbourg I was investigated by a female customs officer. I think she didn’t appreciate me giving her a “wtf” look due to the full body armour + gun she was wearing. IMO that’s too much. Next connection a drunk dude was bothering everyone. It was funny to see what tactics people took. Usually putting their stuff on the empty seats. Initially I thought everyone was being a bit rude (putting your bags on seats on a pretty crowded train is IMO impolite). Initially it was funny when the drunk beggar started to talk to me. Unfortunately quickly discovered he had a really foul smell. He left quickly though, think just wants attention. On the way back the train was delayed quite heavily. First train was annoying, only had to take it for maybe ~30min, was at least delayed by ~20-30min. Reducing my connection time from 38min to IIRC ~8min and making me a bit anxious if I’d miss my connection. Then high speed train eventually was stuck as well, making the German passenger next to me pretty angry. He started talking in English, but really couldn’t be bothered by the delays. Nor by people sitting next to me (upon boarding I took the seat where someone placed a bag, I understand leaving your bags on a seat when train is empty, but afterwards you should be considerate IMO). Trains are entertaining. Regarding flights: read Schneier on Security, I don’t like the senseless rules that are only there to make someone feel good.
  • Though Strassbourg was great, not too many going out places. I wanted to dance, but wasn’t too much around.
  • Surprising amount of non-Europeans/non-USA people attending GUADEC.
  • Realized that I’m an old fart @ release team.
  • Someone was surprised everyone @ GNOME is so young. My first GUADEC is Stuttgart, 2005.
  • 200gr of cheap Supermarket chocolate for max 0.70 EUR. I bought loads of them :-D, though was limited by available space in backpack. Going to have a painful stomach for a couple of days.
  • Usual stuff about being really bad at linking names with faces, not recognizing people I met before. Not being able to connect people I emailed with with the names, etc. Forgetting the names of really cool people. All of this is very frustrating :-(
  • As expected, didn’t attend too many talks.
  • BoFs felt really useful. Didn’t always do whatever that the BoF was about
  • I prefer my company laptop over all the laptops that I saw :-P
  • Apologies that I used the opensuse usb stick to boot Mageia, but hey, it didn’t have an opensuse live image, so…
  • Not too many attendees IMO, wondering why. Late registration? Lack of Nokia? Less travel sponsorship? Thought maybe that we lack community members, but actually there is a impressive amount of “young blood” :-P.
  • Discovered I overlooked the Foundationship renewal email. It was unread in my inbox :-(
  • Didn’t like certain things @ AGM.
  • Couldn’t attend engagement BoF. Never time for the Engagement meetings/hackfests/etc. Still sort of feel like I’m part of it. It would be nice to share thoughts.
  • Met Andrea! Italian and tall.
  • Broke the glass in front of camera. Ordered a replacement, should be easy to fix. Wanted to share everything on Hangouts, now was unable :-(
  • Want to go to Prague :-D
  • Disappointingly easy to find a restaurant with a big group. I thought that it is a given that’ll always take ages to decide.

Pre commit hook for PO files on git.gnome.org

After a little pestering by André I’ve made the following changes regarding PO file checking on git.gnome.org:

  1. PO files are actually checked using msgfmt
  2. Added a simple check to ensure keyword header in .desktop is properly translated

That PO files weren’t checked for syntax issues was pretty surprising for me, it seems no translator ever uploaded a PO file with a wrong syntax, else I assume the sysadmin team would’ve received a bugreport/ticket.

The check for a properly translated keyword header is implemented using sed:

sed -rn '/^#: [^\n]+\.desktop/{:start /\nmsgstr/!{N;b start};/\nmsgid [^\n]+;"/{/\nmsgstr [^\n]+;"/!p}}'

Or in English: match from /^#: .*\.desktop/ until /\nmsgstr/. Then if there is a msgid ending with ";, check if there also is a msgstr ending with ;". If msgstr doesn’t end with ;" but all other conditions apply: print the buffer (so #: line up to msgstr). The git hook itself just looks if the output is empty or not.

Example of the error message.

$ git push
Counting objects: 23, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 313 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: ---
remote: The following translation (.po) file should ensure the translated content ends with a semicolon. (When updating branch 'master'.)
remote:
remote: po/sl.po
remote:
remote: The following part of the file fails to do this. Please correct the translation and try to push again.
remote:
remote: #: ../data/nautilus.desktop.in.in.h:3
remote: msgid "folder;manager;explore;disk;filesystem;"
remote: msgstr "mapa;upravljalnik;datoteke;raziskovalec;datotečni sistem;disk"
remote:
remote: After making fixes, modify your commit to include them, by doing:
remote:
remote: git add sl.po
remote: git commit --amend
remote:
remote: If you have any further problems or questions, please contact the GNOME Translation Project mailing list <gnome-i18n@gnome.org>. Thank you.
remote: ---
To ssh://git.gnome.org/git/nautilus
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'ssh://git.gnome.org/git/nautilus'

Note: explanation can probably be improved. The check is not just for Keywords, also for other things like e.g. mime types, etc.

On change management and display servers

There’s been a post, titled Why the display server doesn’t matter. It received a few responses:

Aaron and Martin are not saying anything that hasn’t been said before. What I find interesting is how the communication is happening. Martin is a well known developer and has spent a lot of effort on porting KDE to Wayland. Aaron communicates a lot :P Now I know various developers will hate “change management” courses and the theory, but one thing that is stressed during such courses is to acknowledge and understand what people affected by a change are saying.

Looking into the responses given by “Canonical” (in quotes because I’m not sure if every response was from a Canonical person) towards the various feedback given regarding the change (Mir as additional display server), one common theme is highlighted by the various responses: “it doesn’t matter”, “it is just a bug in the application”, “it is just a bug in the toolkit”, “the toolkit abstracted wrongly”, etc. Sometimes these answers are conflicting. Saying partly that the toolkit abstracts it, while also saying that currently the toolkit is lacking should indicate that there is a problem (at least in the communication).

Despite the pain caused by this change, there is no acknowledgement. Just a repeat of “it doesn’t matter”. As a result, the very people you need to make this change happen will feel ignored and being dismissed. You need these people, yet they’re being dismissed. What gives? It seems headed towards failure. Why not acknowledge and try to understand?