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.

Some news about KF5

Things moved recently about kf5 in mageia. We had, since a long time, the framework part.

Now that the first stable release is out we packaged the desktop/workspace  release based on KF5.

Unfortunalty this can’t be co-installed in parallel of KDE4. For the moment ( not yet clean packages ) you have to follow those steps:

1- Remove  kdebase4-workspace ( this will remove a bunch of packages workspace dependant ( plasma applets, etc).
2- install plasma-desktop and plasma-workspace

3 restart your session and in your favorite DM go in KF5.

Keep in mind that those are experimental packages.

To report « packaging » bugs, please go to the Mageia Bugzilla

To report funcionnal bugs, please go to KDE Bugzilla

Setting up a BigBlueButton 0.81 docker container

Because of my current job, the last few years I have become more interested on virtualization and cloud computing technologies like OpenStack, but during the last month I have been playing with a new and disrupting technology called docker. So, as an exercise to learn about it I started working on a docker container for BigBlueButton online web conferencing platform. The focus of this article is about setting up the docker image for this software, but lets talk first about what's docker is and what it can do.

What's docker and what's so disruptive about it ? 


docker leverages LxC (linux containers) and kernel cgroups to create application containers that are much more efficient than running separate virtual machines in a cloud computing environment. The media is calling this type of technology "lightweight virtualization". Why this terminology ? unlike virtual machines that run a complete operating system and applications on top of it, docker containers are composed of just a base linux operating system, your application and its dependencies, and reuses the host's kernel. This make docker containers much more efficient, fast and with little overhead, a container can be started in a few seconds, or less.

The advantages of docker compared with current virtualization technologies are many, these are some of them:

  • Lightweight: as a docker container only includes your application and needed dependencies and reuses the host's kernel, they have a very small footprint and boot in seconds with little overhead.
  • Isolation: a docker container running on the same host than others will not be able to negatively affect other containers.
  •  Management of applications with conflicting dependencies: You can have different docker containers that may have conflicting dependencies for your application: two applications that rely on different versions of the same package, no problem, create two different docker images from the same base image and add the different dependencies versions with your app.
  • Portability: Use the same container for the complete development pipeline of your application: from the developers laptop, to the QA server and to production, goodbye to developers saying: "it works on my machine" when a problem arises on one of the other environments. 
  • Repeatability of deployments: create exact docker containers from the same docker image every time from an already exiting image, or build them from a Dockerfile.

It's important to mention that docker isn't a good fit for all cases. The use of linux only technologies like lxc and cgroups, means that docker can only run on Linux hosts, and can only run linux based containers. So, if you need to run another operating system like for example MS Windows, you will need to use traditional virtualization instead.

There are already tons of docker images at docker Hub, you can find more than 15,000 already "dockerized" applications and base operating systems, like CentOS, Ubuntu, Debian, OpenSuSE (and soon Mageia), and applications and services like wordpress, MySQL, PosgreSQL, nginx, MongoDB. etc, the catalog is huge.

We have included docker in mageia cauldron (the development version), and it will be available in mageia 5. You can install mageia 5 alpha1 and follow the wiki instructions to change the repositories to point to cauldron if you want to try it out. Soon we will also have mageia 3, 4 and cauldron base images available on docker hub, I will be posting when they're available.

Ok, enough introduction, lets get down to business.


What is BigBlueButton ?


BigBlueButton is an open source web conferencing system for online e-learning with many of the features of commercial propietary products like Citrix Gotomeeting. You can visit BigBlueButton website to learn more about it.

NOTE: this is an unofficial BigBlueButton 0.81 docker image. On my github account you can find the Dockerfile and all other files needed to build it.


About this image and the Dockerfile


This image is based on Ubuntu 10.04 x86_64, which is the officially supported O.S. for BigBlueButton 0.81. The Dockerfile follows the official installation instructions found on BigblueButton's documentation, plus some fixes needed to successfully boot the container (see the scripts folder at github). To run docker you need to do it as root or use sudo.

You can find a prebuilt docker image from Docker Hub. To be able to use it, first it has to be pulled off from the Hub:

# docker pull juanluisbaptiste/bigbluebutton:latest

And then you can run a container from it, see instructions below on how to do it.

This is still an alpha version use it at your own risk. There is still some stuff about how to handle the different services that compose the BigBlueButton app inside the docker container that I need to improve.


Build Instructions


After you clone this repository you need to build the image with the docker command like this:

# cd docker-bigbluebutton 
# docker build -t bbb_0.81 .

How to launch the container


This docker command will launch a new BigBlueButton container:

# docker run -d --name bbb bbb_0.81

You can attach to the container while it starts and wait for it to finish, then take the IP address from the end of the output. To attach to the container run the following docker command:

# docker attach --sig-proxy=false bbb

How to access the container


For now it's only possible to access the BigBlueButton container using the private IP address docker has assigned to it. after you attach to the container you will see an output like the following one telling you the IP address:

*******************************************
Use this IP address to locally access your
BigBlueButton container: 
 
172.17.0.2 
*******************************************
Access that address from your browser and you will get to the demo page like this one:



Then to test BigBlueButton enter your name on the bottom of the screen where it says "Join a Demo Meeting" to see the e-learning platform in action:




NOTE: If you try to use the exposed ports, the bundled nginx server will show the default page instead of BigBlueButton's demo page. I'm working on this.

In a second part I will describe how to link this container to a Wordpress container with the BigBlueButton plugin already installed and configured, and a MySQL container for the Wordpress installation, stay tuned.

GUADEC 2014

The 3 course lunch baffles me. Where’s my simple FOSDEM-french bread?!?

First step reached for Mageia 5: alpha 1 is available for tests

Time has come again for ISO testing!

Here is the first step towards Mageia 5. Most of your favorite software has been updated to their latest versions. There is still a long road ahead, but all in all, this first alpha is in rather good shape.

You can have a look at planned features for Mageia 5 for more details. Work is in progress. Stay tuned!

This first development release is dedicated to our friend Thomas (aka tmb), we wish him good health and to be back soon!

More information about alpha 1:

As a reminder, here are the planned release dates for Mageia 5:

  • Alpha 1: 2014/07/08
  • Alpha 2: 2014/08/04
  • Beta 1: 2014/09/30
  • Beta 2: 2014/10/31
  • Release Candidate: 2014/11/21
  • Internal release: 2014/12/12
  • Final Release: 2014/12/19

Enjoy this new release!

Mageia 5 artwork call: important update

Due to a recent change in Flickr’s login and upload policies, it is no longer possible to use Facebook or Google accounts to access the group. Users must now sign up for and log in with a Yahoo account.

While our ultimate goal is an internal solution for artwork collections, more pressing needs have made this a lower priority.

We had hoped to have a system in place by the time that this switch occurred, however, building ISOs for the upcoming Alpha 1 of Mageia 5 has kept the sysadmin team busy.

In the meantime, please continue to use Flickr, or, if you don’t have or don’t want to create a Yahoo account, feel free to email your work to artwork@group.mageia.org.

Mageia and you at the 15th LSM

vignette_RMLL_250x250 The 15th Libre Software Meeting is coming up!

LSM (in French RMLL for « Rencontres mondiales du logiciel libre ») is a non-commercial cycle of conferences, round tables and workshops based on Libre Software and its uses. Its aim is to provide a platform for Libre Software users, developers and stakeholders as well as any visitor.

We’ll be there, holding a booth to demonstrate Mageia, talk about it with the visitors, maybe do some live installs… and of course be friendly and meet with fellow users and contributors!

The event lasts the week from July 5th to the 11th, and it is held in Montpellier, in the South of France. Mageia will be present there the whole time, so come anytime!

It’s a great chance to show your face for Mageia or to meet some of the people behind it, so don’t miss the opportunity if you are in the region of Montpellier!

For more details or to get in touch with the people who will represent Mageia at the LSM:

Pulling Mageia 4.1 out of the hat

While most of the world is turned towards Brazil to enjoy the World Cup, Mageia has been preparing its own major worldwide event: Mageia 4.1 has been released!

If you were not expecting it, you might wonder what this unnanounced 4.1 version is. It is a maintenance release for Mageia 4 which contains all security and bugfix updates that were issued since the release in February 2014. In particular, the Mageia 4 ISO images were affected by an upstream syslinux bug which prevented installation using a burned DVD on some older hardware. Among the updated packages you will find the Linux kernel (version 3.12.21), various drivers for your hardware, and updated software such as Libreoffice and Firefox. Another notable update is the fix for the well-known “Heartbleed” bug of OpenSSL.

Please note that the Mageia 4.1 version tag concerns only the respin of the ISO images: the actual release that gets installed is still Mageia 4, with all ofthe updates that had been released by early June. This means that if you are already running Mageia 4 and performing updates regularly, you are not required to do anything since your system is already up-to-date. The Mageia 4.1 maintenance release is meant for new installations and upgrades from Mageia 3.

The download links on the website have been updated, so if you were waiting for the dust of the release to settle before upgrading to Mageia 4, now is the right time!

This maintenance release could only happen thanks to the dedicated work of the QA team. They had to test these new ISO images on various hardware while also testing and validating the regular updates for Mageia 3 and 4. This was a daunting task, even more so since the QA team is understaffed.

As you know, Mageia is 100% made by its community, and that means that you are also part of those who can make Mageia. So don’t hesitate to get in touch with the QA team if you would like to help and give us a hand. There are tasks for everyone in the QA team, from testing bugfixes and security updates to the upcoming Mageia 5 Alpha1 ISO images! If QA is not to your taste, then try one of the other teams instead.

Speaking of which, the other Mageia contributors have not been idle while the QA team was preparing this new set of ISO images: Mageia 5 is already in the making, with the first alpha arriving in July! We haven’t communicated much about it until now, but you will soon get all of the information you have been craving.

Mageia 5: Time to rock your artistic skills!

Mageia delivers a Linux experience that is beautiful as well as functional, and Mageia 5 will be no exception. At the Artwork team (now part of the Atelier Team) we take our visual aspect very seriously. With your help and input, we always seek to produce a look and feel that’s aesthetically pleasing and professional.

sky_color

Credit: http://xkcd.com

We’d like to see your stunning, original artwork that can form the basis for Mageia 5 wallpapers, installer and launcher elements, website design, the Mageia Welcome Screen, and so much more.

Your work could become a major part or Mageia 5′s visual appearance.

Please submit your artwork, in png format (no jpgs, gifs or bmps), to the Mageia 5 Flickr drop. Your source files (xcf or svg) should be available if requested.

The artwork that you submit must be original – we give credit to our contributors!

Wallpaper submissions should be no less than 3,200 by 2,400 px at a minimum 72 dpi resolution, in order to accommodate a wide variety of monitors. The wallpaper should also be able to be cropped to other ratios (e.g. 16:9) without compromising the design.

The Mageia “signature” wallpaper, in particular, has typically been an abstract digital artwork rather than a photograph — easier for use in other system elements — that incorporates the colours in the Mageia logo. Please keep this in mind if you want your wallpaper to be chosen for the default wallpaper.

We’re also open to your ideas for icon sets and other user experience elements; feel free to get in touch with your ideas.

Again, to be considered for inclusion, you need to let us have your high-resolution source file (xcf or svg), so that it can be cropped or resized later if needed. You can upload a png sample to the Flickr group, but we will need your source file before the final decision is made.

Please refer to Mageia’s artwork guidelines, available now on the Mageia Wiki . These guidelines, we hope, will make it easier for you to create original artwork, which we can use and redistribute as part of sharing and spreading the word about Mageia. The guidelines cover the Official Mageia Logo, colour scheme, website motif, fonts, wallpaper and other elements. The Mageia official logo is also covered by our Trademark Policy.

Take a moment to learn the rules, then, jump in and create with us!

Code completion in Cantor script editor

Some months ago I wrote about the new features available in Cantor from KDE 4.13 release. But I did not write about a new nice feature available in that release too – so let’s see the new code completion in Cantor script editor!

I coded a default syntax highlighting to each backend in script editor. Script editor is based on KatePart/KTextEditor, a great piece of code from KDE libs used in several KDE softwares like KWrite, Kate, Kile, KDevelop, and more.

The Kate guys released a new feature in KDE 4.13 release: an improved code completion for all languages supported by KTextEditor. It use the same XML file to syntax highlighting from each language to provide this new code completion.

As I coded the default syntax highlighting, the code completion for the script editor was enabled as default too. Amazing!

So, let’s see some pictures about this feature:

code-completion-scilab-cantor

Code completion in Scilab

This figure we use code completion to write a plot command in script editor from Scilab backend.

code-completion-maxima-cantor

Code completion in Maxima

In Maxima backend we can see the code completion working not only to the commands with initial string typed: for example, contour_plot is suggested in the figure.

This new code completion is available to all backends that have the script editor plugin implemented. To use it you just type Ctrl+Space in the editor.

There are some improvements to this feature to be implemented in the future. For example, it would be interesting load the functions to modules/packages imported in the editor – for example, in Python I can use import numpy and the numpy functions could be available in code completion too. The variables in the Cantor workspace could be available in the script editor too.

But it is work to the future. For now, you can have fun with this new code completion., and thanks for all Kate developers for this nice feature!