March 31, 2015

Welcome to the Ubuntu Weekly Newsletter. This is issue #410 for the week March 23 – 29, 2015, and the full version is available here.

In this issue we cover:

The issue of The Ubuntu Weekly Newsletter is brought to you by:

  • Paul White
  • Elizabeth K. Joseph
  • Aaron Honeycutt
  • And many others

If you have a story idea for the Weekly Newsletter, join the Ubuntu News Team mailing list and submit it. Ideas can also be added to the wiki!

Except where otherwise noted, content in this issue is licensed under a Creative Commons Attribution 3.0 License BY SA Creative Commons License

on March 31, 2015 02:33 AM

March 30, 2015

$ sudo find /etc -type f | wc -l


When was the last time you looked at /etc and thought - "I honestly know what every single file in here is". Or for example had a thought "Each file in here is configuration changes that I made". Or for example do you have confidence that your system will continue to function correctly if any of those files and directories are removed?

Traditionally most *NIX utilities are simple enough utilities, that do not require any configuration files what's so ever. However most have command line arguments, and environment variables to manipulate their behavior. Some of the more complex utilities have configuration files under /etc, sometimes with "layer" configuration from user's home directory (~/). Most of them are generally widely accepted. However, these do not segregate upstream / distribution / site administrator / local administrator / user configuration changes. Most update mechanisms created various ways to deal with merging and maintaining the correct state of those. For example both dpkg & RPM (%config) have elaborate strategies and policies and ways to deal with them. However, even today, still, they cause problems: prompting user for whitespace changes in config files, not preserving user changes, or failing to migrate them.

I can't find exact date, but it has now been something like 12 years since XDG Base directory specification was drafted. It came from Desktop Environment requirements, but one thing it achieves is segregation between upstream / distro / admin / user induced changes. When applications started to implement Base directory specification, I started to feel empowered. Upstream ships sensible configs in /usr, distribution integrators ship their overlay tweaks packaged in /usr, my site admin applies further requirements in /etc, and as I user I am free to improve or brake everything with configs in ~/. One of the best things from this setup - no upgrade prompts, and ease of reverting each layer of those configs (or at least auditing where the settings are coming from).

However, the uptake of XDG Base directory spec is slow / non-existing among the core components of any OS today. And at the same time /etc has grown to be a dumping ground for pretty much everything under the sun:
  • Symlink farms - E.g. /etc/rc*.d/*, /etc/systemd/system/*.wants/*, /etc/ssl/certs/*
  • Cache files - E.g. /etc/
  • Empty (and mandatory) directories
  • Empty (and mandatory) "configuration" files. - E.g. whitespace & comments only
Let's be brutally honest and say that none of the above belongs in /etc. /etc must be for end-user configuration only, made by the end user alone and nobody else (or e.g. an automation tool driven by the end-user, like puppet).

Documentation of available configuration options and syntax to specify those in the config files should be shipped... in the documentation. E.g. man pages, /usr/share/doc, and so on. And not as the system-wide "example" config files. Absence of the files in /etc must not be treated as fatal, but a norm, since most users use default settings (especially for the most obscure options). Lastly compiled-in defaults should be used where possible, or e.g. layer configuration from multiple locations (e.g. /usr, /etc, ~/ where appropriate).

Above observations are not novel, and shared by most developers and users in the wider open source ecosystem. There are many projects and concepts to deal with this problem by using automation (e.g. puppet, chef), by migrating to new layouts (e.g. implementing / supporting XDG base dir spec), using "app bundles" (e.g. mobile apps, docker), or fully enumerating/abstracting everything in a generic manner (e.g. NixOS). Whilst fixing the issue at hand, these solutions do increase the dependency on files in /etc to be available. In other words we grew a de-facto user-space API we must not break, because modifications to the well known files in /etc are expected to take effect by both users and many administrator tools.

Since August last year, I have joined Open Source Technology Center at Intel, and have been working on Clear Linux* Project for Intel Architecture. One of the goals we have set out is to achieve stateless operation - that is to have empty /etc by default, reserved for user modification alone, yet continuing to support all legacy / well-known configuration paths. The premise is that all software can be patched with auto-detection, built-in defaults or support for layered configuration to achieve this. I hope that this work would interest everyone and will be widely adopted.

Whilst the effort to convert everything is still on going, I want to discuss a few examples of any core system.


The login(1) command, whilst having built-in default for every single option exits with status 1, if it cannot stat(2) login.defs(5) file.

The passwd(1) command will write out the salted/hashed password in the passwd(5) file, rather than in shadow(5), if it cannot stat the shadow(5) file. There is similar behavior with gshadow. I found it very ironic, that upstream project "shadow" does not use shadow(5) by default.

Similarly, stock files manipulated by passwd/useradd/groupadd utilities are not created, if missing.

Some settings in login.defs(5) are not applicable, when compiled with PAM support, yet present in the default shipped login.defs(5) file.

Patches to resolve above issues are undergoing review on the upstream mailing list.


In xml based configuration, `includedir' elements are mandatory to exist on disk, that is empty directory must be present, if referenced. If these directories are non-existant, the configuration fails to load and the system or session bus are not started.

Similarly, upstream have general agreement with the stateless concept and patches to move all of dbus default configurations from /etc to /usr are being reviewed for inclusion at the bug tracker. I hope this change will make into the 1.10 stable release.


Today, we live in a dual-stack IPv4 and IPv6 world, where even the localhost has multiple IP addresses. As a slightly ageist time reference, the first VCS I ever used was git. Thus when I read below, I get very confused:
$ cat /etc/host.conf
# The "order" line is only used by old versions of the C library.
order hosts,bind
multi on
Why not simply do this:
--- a/resolv/res_hconf.c
+++ b/resolv/res_hconf.c
@@ -309,6 +309,8 @@ do_init (void)
   if (hconf_name == NULL)
     hconf_name = _PATH_HOSTCONF;

+  arg_bool (ENV_MULTI, 1, "on", HCONF_FLAG_MULTI);
   fp = fopen (hconf_name, "rce");
   if (fp)

There are still many other packages that needed fixes similar to above. Stay tuned for further stateless observations about Glibc, OpenSSH, systemd and other well known packages.

In the mean time, you can try out images that implement above and more already. If you want to chat about it more, comment on G+, find myself on irc - xnox @ #clearlinux and join our mailing list to kick the conversation off, if you are interested in making the world more stateless.

I am a professional Linux Distribution developer, currently employed by Intel, however the postings on this site are my own and don't necessarily represent Intel's or any other past/present/future employer positions, strategies, or opinions.

* Other names and brands may be claimed as the property of others

on March 30, 2015 03:15 PM

Return of the Ubuntu UI Toolkit

Ubuntu App Developer Blog

Next month will be the release of Ubuntu 15.04 (Vivid Vervet) for desktop, and this version of Ubuntu will soon become the version that will be installed on Ubuntu phones as well. With the release of 15.04, we also release a new version of our UI toolkit: Ubuntu.Components 1.2. Below are some of the new features that it will have.

Hasta la vista, toolbar!

In Ubuntu.Components 1.1, the bottom-edge toolbar was replaced by a new header that can be used for navigating the app and trigger actions. Actions that used to be in the  toolbar were automatically moved to the header, and a useDeprecatedToolbar property was added to the MainView for developers that liked to keep the toolbar. In 1.2, the toolbar and useDeprecatedToolbar property are definitely gone which enabled us to clean up the MainView and header code, so that we can give you a fresh new visual design and more control over the looks and behavior of the header very soon.

One ListItem to rule them all

ListItem leading actions

There are many different list items in Ubuntu.Components.ListItems, but they are not always easy to customize and the performance when you use thousands of them in your app is not optimal. Therefore, we now introduce the all-new ListItem component. It replaces all of the old list items, is super-fast (even when you have ten thousands of them), you can swipe them left and right to reveal actions, they offer selection mode (to quickly select a subset of all the list items), and the user can re-order the items in a list. Awesome :)


Ubuntu Shape up (doo doo doo)

Image with transparent background in UbuntuShape

The UbuntuShape is now in the best shape ever! It has been refactored to optimize performance (for example, the rendering is now "batched" so even a lot of them can be rendered fast), semi-transparent images and colored backgrounds are supported, you can use all the fill modes and tiling that the Image component supports, there is 2D transformation support, and the implementation was made extensible so that new features can be added more easily.

Here is the code for the app that was used for the two screenshots above:

import QtQuick 2.4
import Ubuntu.Components 1.2

MainView {
    //useDeprecatedToolbar: false // terminated

    Page {
        title: "Return of the UITK"

        ListItemActions {
            id: exampleLeadingActions
            actions: [
                Action {
                    iconName: "tick"
                Action {
                    iconName: "delete"

        ListView {
            anchors.fill: parent
            model: 10
            delegate: ListItem {
                id: listItem
                Label {
                    anchors {
                        left: parent.left
                        verticalCenter: parent.verticalCenter
                    text: "List item "+index
                leadingActions: exampleLeadingActions

                UbuntuShape {
                    anchors {
                        right: parent.right
                        bottom: parent.bottom
                    backgroundMode: listItem.highlighted ?
                                        UbuntuShape.VerticalGradient :
                    backgroundColor: listItem.highlighted ?
                    source: Image {
                        source: "logo.png"
                    sourceFillMode: UbuntuShape.PreserveAspectFit

Besides these new features, we fixed a whole bunch of bugs and we are working hard on the next version of the UI toolkit that we will be blogging about in the near future, so stay tuned for more good stuff!


on March 30, 2015 01:45 PM


Hellotux donates to Kubuntu with every purchase.

on March 30, 2015 01:42 PM
Hellotux have added sweaters to their Kubuntu branded clothes range. Donations to Kubuntu with every purchase.
on March 30, 2015 12:44 PM

Preseeding installations

Mathieu Trudel

In early February, I completed a move from Canonical's Phonedations team to the Foundations team. Part of this new work means debugging a lot of different failure cases in the installer, grub, and other early boot or low-level sofware, some of which requiring careful reproduction steps and probably quite a few install runs in VMs on on hardware.

Given the number of installations I do I've started to keep around preseed files; the text files used to configure automatic installations. I've made them available at so that they can be reused as necessary. Most of these preseed files make heavy use of the network to get the installation data and packages from the web, so they will need to be tweaked for use in an isolated network. They are annotated enough that it should be possible for anyone to improve on them to suit their own needs. I will add to these files as I run across things to test and automate. I hope we can use some of them soon in new automated QA tests where appropriate, so that it can help catch regressions.

For those not familiar with preseeding, these files can be used and referred to in the installation command-line when starting from a network PXE boot or a CDROM or pretty much any other installation medium. They are useful to tell the installer how you want the installation to be done without having to answer all of the individual questions one by one in the forms in ubiquity or debian-installer. The installer will read the preseed file and use these answers without showing the prompts. This also means some of the files I make available should not be used lightly, as they will happily wipe disks without asking. You've been warned :)

To use this, you'll want to specify "preseed/file=/path/to/file" (or just file=) for a file directly accessible as a file system or through TFTP, or "preseed/url=http://URI/to/file" (or just url=) if it's available using HTTP. On d-i installs, this means you may also need to add "auto=true priority=critical" to avoid having to fill in language settings and the like (since the preseeds are typically only read after language, country, and network have been configured); and on ubiquity installs (for example, using a CD), you'll want to add 'only-ubiquity automatic-ubiquity' to the kernel command-line, again to keep the automated, minimal look and feel.

I plan on writing another entry soon on how to debug early boot issues in VMs or hardware using serial. Stay tuned.
on March 30, 2015 01:29 AM

March 29, 2015

So now Planet Ubuntu-it has is own Ubuntu Phone RSS feed scope.
I created it using scopecreator command as I wrote in my previous article: My first Ubuntu Touch Scope.

Planet Ubuntu-it RSS feed scope
Planet Ubuntu-it RSS feed scope

Planet Ubuntu-it RSS feed scope
Planet Ubuntu-it RSS feed scope

Planet Ubuntu-it RSS feed scope
on March 29, 2015 08:06 PM

… but it’s only in the Ubuntu Store.


Yes, indeed. We have an Ubuntu phone web app.

It’s not much. It’s really just a viewer for the website, but it’s quick way of checking the site and downloading PDF/EPUB issues to your device.

To view the issues you’ll need to install Document Viewer (if it’s not already on your device) also from the Ubuntu Store.

on March 29, 2015 11:50 AM

Ubuntu Membership

Forums Council

It has been sometime since we last talked about Ubuntu Membership through forum contributions.

Applying is quite simple and we have a dedicated forum area just for it. The process is detailed here and summarized at.

In addition to the normal Ubuntu Member benefits as a forum Ubuntu Member you’ll be first to know when things are changing and can take a part in forming the forum’s moderation team.

So, if you have been contributing to the forums for a while and are interested in becoming a Ubuntu member, please put together a wiki and Launchpad page, sign the Ubuntu Code of Conduct and dive in.

on March 29, 2015 10:51 AM

March 28, 2015

Key transition

Luke Faraone

I'm migrating PGP keys from 0xF9FDD506 to 0x0C14A470. If you signed my old key, I would appreciate you signing my new key as well. Feel free to ping me with questions.

Accordingly, I've published a transition statement signed by both keys.
on March 28, 2015 07:55 PM

Only parts of us will ever
touch o̶n̶l̶y̶ parts of others –
one’s own truth is just that really — one’s own truth.
We can only share the part that is u̶n̶d̶e̶r̶s̶t̶o̶o̶d̶ ̶b̶y̶ within another’s knowing acceptable t̶o̶ ̶t̶h̶e̶ ̶o̶t̶h̶e̶r̶—̶t̶h̶e̶r̶e̶f̶o̶r̶e̶ so one
is for most part alone.
As it is meant to be in
evidently in nature — at best t̶h̶o̶u̶g̶h̶ ̶ perhaps it could make
our understanding seek
another’s loneliness out.

– unpublished poem by Marilyn Monroe, via berlin-artparasites

This poem inspired me to put some ideas into words this morning, an attempt to summarize my current working theory of consciousness.

Ideas travel through space and time. An idea that exists in my mind is filtered through my ability to express it somehow (words, art, body language, …), and is then interpreted by your mind and its models for understanding the world. This shifts your perspective in some way, some or all of which may be unconscious. When our minds encounter new ideas, they are accepted or rejected, reframed, and integrated with our existing mental models. This process forms a sort of living ecosystem, which maintains equilibrium within the realm of thought. Ideas are born, divide, mutate, and die in the process. Language, culture, education and so on are stable structures which form and support this ecosystem.

Consciousness also has analogues of the immune system, for example strongly held beliefs and models which tend to reject certain ideas. Here again these can be unconscious or conscious. I’ve seen it happen that if someone hears an idea they simply cannot integrate, they will behave as if they did not hear it at all. Some ideas can be identified as such a serious threat that ignoring them is not enough to feel safe: we feel compelled to eliminate the idea in the external world. The story of Christianity describes a scenario where an idea was so threatening to some people that they felt compelled to kill someone who expressed it.

A microcosm of this ecosystem also exists within each individual mind. There are mental structures which we can directly introspect and understand, and others which we can only infer by observing our thoughts and behaviors. These structures communicate with each other, and this communication is limited by their ability to “speak each other’s language”. A dream, for example, is the conveyance of an idea from an unconscious place to a conscious one. Sometimes we get the message, and sometimes we don’t. We can learn to interpret, but we can’t directly examine and confirm if we’re right. As in biology, each part of this process introduces uncountable “errors”, but the overall system is surprisingly robust and stable.

This whole system, with all its many minds interacting, can be thought of as an intelligence unto itself, a gestalt consciousness. This interpretation leads to some interesting further conclusions:

  • The notion that an individual person possesses a single, coherent point of view seems nonsensical
  • The separation between “my mind” and “your mind” seems arbitrary
  • The attribution of consciousness only to humans, or only to living beings, seems absurd

Naturally, this is by no means an original idea (can such a thing exist?). It is my own take on the subject, informed both consciously and unconsciously by my own study, first-hand experience, conversations I’ve had with others, and so on. It’s informed by the countless thinkers who have influenced me. Its expression is limited by my ability to write about it in a way that makes sense to other people.
Maybe some of this makes sense to you, and maybe I seem insane, or maybe both. Hopefully you don’t find that you have an inexplicable unconscious desire to kill me!

on March 28, 2015 07:42 PM

Running Dekko in LXC

Adnane Belmadiaf

I was approached by Daniel Chapman to help with the new message view in Dekko(Ubuntu Touch email client) which uses Oxide Webview to render the message details. Dekko is using the new Ubuntu SDK 1.1 which is not present in the LTS version 14.04, we have tried to make it run but it was impossible.

LXC logo

Setup LXC

To have a clear idea on how LXC works and how to setup your environment make sure you check Nekhelesh's post,

Unpriviledged container

To run Dekko we need to create an unpriviledged container using Utopic 14.10, and let's name it utopicdev :

$ lxc-create --template download --name utopicdev -- --dist ubuntu --release utopic --arch i386
$ sudo chown -R 1000:1000 ~/.local/share/lxc/utopicdev/rootfs/home/ubuntu

Running the container

So at this point i had some issues with cgmanager :

$ lxc-start -n utopicdev
lxc_container: cgmanager.c: lxc_cgmanager_create: 299 call to cgmanager_create_sync failed: invalid request
lxc_container: cgmanager.c: lxc_cgmanager_create: 301 Failed to create hugetlb:utopicdev
lxc_container: cgmanager.c: cgm_create: 646 Error creating cgroup hugetlb:utopicdev
lxc_container: start.c: lxc_spawn: 861 failed creating cgroups
lxc_container: start.c: __lxc_start: 1080 failed to spawn 'utopicdev'
lxc_container: lxc_start.c: main: 342 The container failed to start.
lxc_container: lxc_start.c: main: 346 Additional information can be obtained by setting the --logfile and --logpriority options.

I fixed it by restarting my machine only, now let's run it in daemon mode :

$ lxc-start -n utopicdev -d

Using the container

$ lxc-attach --clear-env -n utopicdev -- sudo -u ubuntu -i env DISPLAY=$DISPLAY /home/ubuntu/dekko/__build/dekko

When trying to run it you get the following error :

$ lxc-attach --clear-env -n utopicdev -- sudo -u ubuntu -i env DISPLAY=$DISPLAY /home/ubuntu/dekko/__build/dekko
Cannot chdir into /proc/ directory: Permission denied
[0325/] Failed to read from chroot pipe: Not a directory
[0325/] Check failed: EnterSuidSandbox(setuid_sandbox, post_fork_parent_callback). Failed to enter setuid sandbox

You get this error is because dekko is using Oxide to render message view which uses setuid sandbox, using OXIDE_DISABLE_SETUID_SANDBOX=1 we can disable it since the LXC container already provides the isolation.

$ lxc-attach --clear-env -n utopicdev -- sudo -u ubuntu -i env DISPLAY=$DISPLAY OXIDE_DISABLE_SETUID_SANDBOX=1 /home/ubuntu/dekko/__build/dekko

Dekko running in Ubuntu 14.04

Note that i am running the compiled version, so you need to install the SDK and compile dekko first.

on March 28, 2015 04:35 PM

March 27, 2015

Calling Out OkCupid

Benjamin Kerensa

OkCupid Blocks FirefoxSo the other day, Indiana’s governor signed a bill into law that the Republican controlled legislature passed called the Religious Freedom Restoration Act. The reality of this bill is it has nothing to do with freedom of religion and everything to do with legalizing discrimination.

Anyways, to the point, I hate to open a can of worms but when I heard this news I thought back to this same time last year and remembered how gung ho OkCupid was over Mozilla’s appointment of Brendan Eich because of his personal beliefs and that they ultimately decided to block all Firefox users.

I don’t really think OkCupid should block Indiana but their lack of even a public tweet or statement in opposition of this legislation leads me back to my original conclusion that they were just riding the media train for their own benefit and not because they support the LGBT community.

If you are going to be about supporting the LGBT community, try to at least be consistent in that support and not just do it when it will make you look good in the media!

on March 27, 2015 10:15 PM

Θα δούμε πως μπορούμε να φτιάξουμε εύκολα ένα webapp (εφαρμογή/app που εμπεριέχει mobile website) στο Ubuntu Touch. Για τα βήματα αυτά δεν χρειάζεται να έχουμε καν το κινητό.

Ξεκινούμε με το να βρούμε ένα δικτυακό τόπο που διαθέτει μια έκδοση για κινητά (mobile website). Για το παράδειγμά μας, χρησιμοποιούμε το

Καθώς βλέπουμε το, παρατηρούμε (στο τέλος της σελίδας) να κάνει αναφορά για το RealMobile και τον ιστότοπο Όταν επισκεφούμε το σύνδεσμο αυτό, βλέπουμε ότι είναι ειδική έκδοση mobile. Αυτό είναι το στοιχείο που αρκεί για να φτιάξουμε το webapp μας!

Για τη δημιουργία ενός απλού webapp για το Ubuntu Touch, θα χρησιμοποιήσουμε τη σελίδα που παράγει το πακέτο click με την εφαρμογή, και μετά πάμε στο για να προσθέσουμε την εφαρμογή. Ας δούμε τα βήματα με λεπτομέρεια.

1.  Πάμε στο και συνδεόμαστε με το λογαριασμό μας στο Ubuntu One. Αν δεν έχετε ήδη λογαριασμό, πατήστε να δημιουργήσετε. Όταν το κάνετε, θα δείτε μια σελίδα με τίτλο «Create your Webapp package».

2. Συμπληρώνουμε τη σελίδα όπως παρακάτω.

Webapp creator for Ubuntu Phone

Webapp creator for Ubuntu Phone


  1. App name, το όνομα της εφαρμογής. Είναι ένα αλφαριθμητικό που το βλέπει ο χρήστης στη λίστα εφρμογών. Επιλέγουμε κάτι που βοηθάει την ορατότητα της εφαρμογής. Οι εφαρμογές ταξινομούντε αλφαβητικά και έχει νόημα στο παράδειγμά μας να επιλέξουμε κάτι που να ξεκινάει με Real.
  2. Webapp URL, είναι το σύνδεσμος (URL) για το φορητό δικτυακό τόπο. Στο παράδειγμά μας, όταν επισκεπτόμαστε το με τον περιηγητή του Ubuntu μας, μας μεταφέρει αυτόματα στο όταν ολοκληρωθεί η φόρτωση της σελίδας. Οπότε, επέλεξα να βάλω το δεύτερο URL. Δεν έχει ουσιαστική σημασία ποιο θα βάλουμε, αρκεί να φορτώνει στο φορητό δικτυακό τόπο.
  3. App Icon, το εικονίδιο της εφαρμογής, σε αρχείο PNG και σε διαστάσεις 256x256. Εδώ πήρα το λογότυπο από το και το επεξεργάστηκα στο GIMP ώστε να παραχθεί η εικόνα

    Λογότυπο (256x256)

    Λογότυπο (256x256)

  4. App options, οι επιλογές που ταιριάζουν στο δικτυακό τόπο για χρήση ως webapp. Κρατήστε πατημένο το Ctrl για να επιλέξτε με το ποντίκι περισσότερα από ένα. Για τις επιλογές έχουμε:
    1. Store cookies, αν θα αποθηκεύει cookies ώστε να φαίνονται οι σύνδεσμοι που έχουμε επισκεφθεί. Ακόμα, αν ο δικτυακός τόπος χρησιμοποιεί cookies για να αναγνωρίζει τους επισκέπτες, τότε η επιλογή χρειάζεται. Γενικά, όταν στο webapp δεν υπάρχουν πληροφορίες που θέλουμε να διατηρούνται και να γνωρίζει ο δικτυακός τόπος, τότε δεν επιλέγουμε το Store cookies.
    2. Show header, αν θα εμφανίζεται στο πάνω μέρος σε μια μπάρα το όνομα του δικτυακού τόπου.
    3. Show back and forward buttons, αν θα εμφανίζονται στο πάνω μέρος σε μια μπάρα κουμπιά για εμπρός και πίσω. Αν δεν το επιλέγουμε, τότε δεν θα έχουμε δυνατότητα να πάμε πίσω/εμπρός καθώς επισκεπτόμαστε σελίδες στο webapp. Εδώ θα το απενεργοποιούσαμε αν το webapp είναι τέτοιο που δεν χρειάζεται τέτοια κουμπιά, ή αν παρέχει το ίδιο τέτοια κουμπιά.
    4. Run fullscreen, αν το webapp θα τρέχει σε πλήρη οθόνη. Αν δεν το επιλέξουμε, τότε θα φαίνεται η (πάνω) μπάρα κατάστασης του Ubuntu Touch που δείχνει την ώρα, μπαταρία, δίκτυα, κτλ. Αν το επιλέξουμε, τότε το webapp θα λειτουργεί σε πλήρη οθόνη. Καμία επιλογή Μόνο με Run fullscreen Μόνο με Show header, Run fullscreen Show header, Show back/forward buttons, Run fullscreen
  5. Developer namespace, είναι το όνομα χρήστη που έχουμε στο Launchpad/Ubuntu One καθώς φτιάξαμε το λογαριασμό μας. Μπορεί να μπει και ο δικτυακός μας τόπος, αν έχουμε.
  6. Maintainer full name, το όνομά μας.
  7. Maintainer e-mail, το ε-μαίηλ μας.

Όταν συμπληρώσουμε τη σελίδα, πατάμε στο Submit για να δημιουργηθεί το webapp μας. Θα δημιουργηθεί ένα αρχείο με κατάληξη .click το οποίο και αποθηκεύουμε στο δίσκο μας.

Έπειτα, μπαίνουμε στη διαδικασία αποστολής της εφαρμογής στο Ubuntu Store.

Επισκεπτόμαστε στη σελίδα και συνδεόμαστε με το λογαριασμό μας στο Launchpad/Ubuntu One. Θα εμφανιστεί η αρχική σελίδα με τις εφαρμογές μας. Αρχικά θα είναι κενή και θα φαίνεται μόνο το κουμπί New application. Το πατάμε και βλέπουμε τη λίστα με τις βασικές πληροφορίες εφαρμογής.

Συμπλήρωση βασικών στοιχείων εφαρμογής

Συμπλήρωση βασικών στοιχείων εφαρμογής

Συμπληρώνουμε όπως

  1. Your application, εδώ πατάμε το πλήκτρο Select file και επιλέγουμε το αρχείο της εφαρμογής που δημιουργήσαμε προηγουμένως.
  2. Changelog, εδώ γράφουμε τις αλλαγές με την προηγούμενη έκδοση. Μιας και αυτή είναι η πρώτη έκδοση, γράφουμε κάτι τυπικό όπως Initial upload.
  3. Department, εδώ είναι το είδος της εφαρμογής που φτιάξαμε. Μιας και το είναι ειδησεογραφικό, βάζουμε από τη λίστα News & Magazines.
  4. Support URL, εδώ βάζουμε κάποιο δικτυακό τόπο για υποστήριξη. Μιας και δεν έχουμε επικοινωνήσει με τον ίδιο το δικτυακό τόπο για τη δημιουργία αυτής της εφαρμογής, βάζουμε κάτι δικό μας. Μια καλή επιλογή είναι το ημαιλ μας.
  5. License, η άδεια διάθεσης της εφαρμογής μας. Μια καλή επιλογή είναι GNU GPL v3.

Εκτός από τις βασικές επιλογές, υπάρχουν και προαιρετικές. Συγκεκριμένα,

Συμπλήρωση προαιρετικών στοιχείων εφαρμογής

Συμπλήρωση προαιρετικών στοιχείων εφαρμογής

Συμπληρώνουμε όπως



  1. Application name, το όνομα της εφαρμογής, όπως το είχαμε βάλει πιο πριν.
  2. Tagline, περιγραφή της εφαρμογής σε μια γραμμή.
  3. Description, περιγραφή της εφαρμογής. Αυτό θα φανεί όταν ο χρήστης εντοπίσει την εφαρμογή μας στο Κατάστημα Ubuntu. Είναι καλό να περιγράψουμε την εφαρμογή μας αρκετά καλά.
  4. Keywords, διάφορες λέξεις-κλειδιά για την εφαρμογή μας. Είναι καλό να βάλουμε αρκετές λέξεις ώστε η εφαρμογή μας να μπορεί να εντοπιστεί εύκολα στις αναζητήσεις.

Στο τέλος της σελίδας υπάρχουν οι τελικές επιλογές,

Συμπλήρωση τελικών προαιρετικών στοιχείων εφαρμογής

Συμπλήρωση τελικών προαιρετικών στοιχείων εφαρμογής


  1. Icon 256, το εικονίδιο που φτιάξαμε πιο πριν. Εδώ μπορεί να χρειάζεται να το επαναλάβουμε αν και το περιέχει το αρχείο της εφαρμογής click.
  2. Screenshots, διάφορα στιγμιότυπα οθόνης από την εφαρμογή μας. Για τώρα είναι κενό. Όταν η εφαρμογή μπει στο Κατάστημα Ubuntu, την ξεκινούμε και τότε λαμβάνουμε στιγμιότυπο (πατάμε ταυτόχρονα Ήχος+/Ήχος- για τη λήψη στιγμιοτύπου).
  3. Application website, δικτυακός τόπος με τον κώδικα της εφαρμογής μας. Εδώ το αφήνουμε κενό.
  4. Price, η τιμή της εφαρμογής μας. Το αφήνουμε στο Make it free.

Πατάμε το κουμπί Submit και αυτό ήταν!

Η εφαρμογή έχει σταλθεί, και αναμένουμε να ελεγχθεί.

Η εφαρμογή έχει σταλθεί, και αναμένουμε να ελεγχθεί.

Εδώ ολοκληρώθηκε η αποστολή των στοιχείων και αναμένουμε να ολοκληρωθεί το review (έλεγχος) της εφαρμογής ώστε να γίνει δεκτή.

Για αρκετές εφαρμογές, ο έλεγχος ολοκληρώνεται άμεσα και το ίδιο συμβαίνει και με την εφαρμογή μας. Οπότε πατάμε στο σύνδεσμο check again για να φορτώσει η σελίδα ξανά.

Η εφαρμογή μας είναι διαθέσιμη στο Κατάστημα Ubuntu!

Η εφαρμογή μας είναι διαθέσιμη στο Κατάστημα Ubuntu!

Και αυτό ήταν! Η εφαρμογή μας είναι διαθέσιμη πια στο Κατάστημα Ubuntu. Αναφέρει Published με το χρώμα της μπίλιας να είναι πράσινο.

Αν έχουμε κινητό με Ubuntu Touch, μπορούμε να εγκαταστήσουμε άμεσα την εφαρμογή.

Μπορούμε να δούμε την εφαρμογή μας στον κατάλογο εφαρμογών στο δικτυακό τόπο Εδώ, η ενημέρωση γίνεται κάθε λίγες ώρες, οπότε η εφαρμογή μας θα φανεί μετά από λίγο. Για την παραπάνω εφαρμογή, ο σύνδεσμος με τα στοιχεία είναι

Οπότε, μπορεί ο καθένας να βρει ένα δικτυακό τόπο που να παρέχει mobile website, και να φτιάξει ένα απλό webapp. Για τους δικτυακούς τόπους στην Ελλάδα, ελάχιστοι έχουν webapp οπότε είναι ευκαιρία να την φτιάξετε εσείς!


No comment

on March 27, 2015 08:50 PM

FCM#95 has also arrived!

Ronnie Tucker

This month:
* Command & Conquer
* How-To : Program in Python, LibreOffice, and Using LaTeX
* Graphics : Inkscape.
* Linux Labs: Syncthing
* Review: BQ Aquaris E4.5 Ubuntu Phone & Able2Extract Pro 9
* Competition: WIN a copy of Able2Extract Pro 9
* Ubuntu Games: Penumbra Necrologue & Perfect Golf
* My Story special on handling molecules in Linux
plus: News, Arduino, Q&A, and soooo much more.


Get it while it’s hot!
on March 27, 2015 08:10 PM

Kubuntu Beta 2 is Out

Jonathan Riddell

Kubuntu Vivid Beta 2 is out.  This is the first major distro to ship with Plasma 5 so it’ll be the first time many people get to see our lovely new desktop.  Scary.

We have 24 bugs I’ve milestoned and 1 month to go until release, let’s see how low we can go.  Many of the bugs are easy enough to fix and just need twiddling the bits in the packaging.  Some are more complex.  If you want to help out come and join us in #kubuntu-devel we’d appreciate just testing the ISOs for sanity.

Alas upgrade from 14.10 is currently broken due to a bug which is probably in apt , fix soon I hope.

facebooktwittergoogle_pluslinkedinby feather
on March 27, 2015 01:41 PM

The Ubuntu team is pleased to announce the final beta release of Ubuntu 15.04 Desktop, Server, Cloud, and Core products.

Codenamed "Vivid Vervet", 15.04 continues Ubuntu’s proud tradition of integrating the latest and greatest open source technologies into a high-quality, easy-to-use Linux distribution. The team has been hard at work through this cycle, introducing new features and fixing bugs.

This beta release includes images from not only the Ubuntu Desktop, Server, Cloud, and Core products, but also the Kubuntu, Lubuntu, Ubuntu GNOME, Ubuntu Kylin, Ubuntu Studio and Xubuntu flavours. In addition to the usual suspects, we’re also welcoming a new flavour to the family this cycle with Ubuntu MATE.

The beta images are known to be reasonably free of showstopper CD build or installer bugs, while representing a very recent snapshot of 15.04 that should be representative of the features intended to ship with the final release expected on April 23rd, 2015.

There are, however, two bugs in this beta serious enough that it’s worth calling them out in the release announcement. Both bugs affect all flavours, are considered high priority, and will be addressed in upcoming daily builds:

  1. After installation is complete, clicking the "reboot now" button will eject your installation medium but then fail to reboot. The simple workaround for this is to manually turn off or reset your computer and then boot into the freshly installed system.
  2. When doing an OEM installation, the OEM user will not be removed at the end of the prepare-to-ship phase. Because of this, it is not recommended that oem-config be used with this beta, except for testing purposes.

Ubuntu, Ubuntu Server, Ubuntu Core, Cloud Images

Utopic Final Beta includes updated versions of most of our core set of packages, including a current 3.19.2 kernel, the much-anticipated switch to systemd, and much more.

To upgrade to Ubuntu 15.04 Final Beta from Ubuntu 14.10, follow these instructions:

The Ubuntu 15.04 Final Beta images can be downloaded at: (Ubuntu and Ubuntu Server)

Additional images can be found at the following links:

The full release notes for Ubuntu 15.04 Final Beta can be found at:


Kubuntu is the KDE based flavour of Ubuntu. It uses the Plasma desktop and includes a wide selection of tools from the KDE project.

The Final Beta images can be downloaded at:

More information on Kubuntu Final Beta can be found here:


Lubuntu is a flavor of Ubuntu that targets to be lighter, less resource hungry and more energy-efficient by using lightweight applications and LXDE, The Lightweight X11 Desktop Environment, as its default GUI.

The Final Beta images can be downloaded at:

More information on Lubuntu Final Beta can be found here:

Ubuntu GNOME

Ubuntu GNOME is a flavor of Ubuntu featuring the GNOME desktop environment.

The Final Beta images can be downloaded at:

More information on Ubuntu GNOME Final Beta can be found here:


UbuntuKylin is a flavor of Ubuntu that is more suitable for Chinese users.

The Final Beta images can be downloaded at:

More information on UbuntuKylin Final Beta can be found here:

Ubuntu MATE

Ubuntu MATE is a flavor of Ubuntu featuring the MATE desktop environment.

The Final Beta images can be downloaded at:

More information on UbuntuMATE Final Beta can be found here:

Ubuntu Studio

Ubuntu Studio is a flavor of Ubuntu that provides a full range of multimedia content creation applications for each key workflows: audio, graphics, video, photography and publishing.

The Final Beta images can be downloaded at:


Xubuntu is a flavor of Ubuntu that comes with Xfce, which is a stable, light and configurable desktop environment.

The Final Beta images can be downloaded at:

Regular daily images for Ubuntu can be found at:

Ubuntu is a full-featured Linux distribution for clients, servers and clouds, with a fast and easy installation and regular releases. A tightly-integrated selection of excellent applications is included, and an incredible variety of add-on software is just a few clicks away.

Professional technical support is available from Canonical Limited and hundreds of other companies around the world. For more information about support, visit

If you would like to help shape Ubuntu, take a look at the list of ways you can participate at:

Your comments, bug reports, patches and suggestions really help us to improve this and future releases of Ubuntu. Instructions can be found at:

You can find out more about Ubuntu and about this beta release on our website, IRC channel and wiki.

To sign up for future Ubuntu announcements, please subscribe to Ubuntu’s very low volume announcement list at:

Originally posted to the ubuntu-announce mailing list on Fri Mar 27 01:01:04 UTC 2015 by Adam Conrad, on behalf of the Ubuntu Release Team,

on March 27, 2015 06:11 AM


Now just 23 bugs to fix before release. We can get there with your help.


on March 27, 2015 01:09 AM

March 26, 2015

The second Beta of Vivid (to become 15.04) has now been released!

The Beta-2 images can be downloaded from:

More information on Kubuntu Beta-2 can be found here:

Apologies but upgrade from Kubuntu 14.10 is currently broken due to bug 1426132; a fix will be available shortly.
on March 26, 2015 11:05 PM

S08E03 – Disaster Movie - Ubuntu Podcast

Ubuntu Podcast from the UK LoCo

It’s Episode Three of Season Eight of the Ubuntu Podcast! Alan Pope, Mark Johnson and Martin Wimpress, and no Laura Cowen are connected and speaking to your brain.

In this week’s show:

That’s all for this week, please send your comments and suggestions to:
Join us on IRC in #ubuntu-podcast on Freenode
Follow us on Twitter
Find our Facebook Fan Page
Follow us on Google+

on March 26, 2015 10:06 PM

I've offered to help mentor a Google Summer of Code student to work on DruCall. Here is a link to the project details.

The original DruCall was based on SIPml5 and released in 2013 as a proof-of-concept.

It was later adapted to use JSCommunicator as the webphone implementation. JSCommunicator itself was updated by another GSoC student, Juliana Louback, in 2014.

It would be great to take DruCall further in 2015, here are some of the possibilities that are achievable in GSoC:

  • Updating it for Drupal 8
  • Support for logged-in users (currently it just makes anonymous calls, like a phone box)
  • Support for relaying shopping cart or other session cookie details to the call center operative who accepts the call

Help needed: could you be a co-mentor?

My background is in real-time and server-side infrastructure and I'm providing all the WebRTC SIP infrastructure that the student may need. However, for the project to have the most impact, it would also be helpful to have some input from a second mentor who knows about UI design, the Drupal way of doing things and maybe some Drupal 8 experience. Please contact me ASAP if you would be keen to participate either as a mentor or as a student. The deadline for student applications is just hours away but there is still more time for potential co-mentors to join in.

WebRTC at mini-DebConf Lyon in April

The next mini-DebConf takes place in Lyon, France on April 11 and 12. On the Saturday morning, there will be a brief WebRTC demo and there will be other opportunities to demo or test it and ask questions throughout the day. If you are interested in trying to get WebRTC into your web site, with or without Drupal, please see the RTC Quick Start guide.

on March 26, 2015 09:58 PM

The Xubuntu team is pleased to announce the immediate release of Xubuntu 15.04 Beta 2. This is the final beta towards the release of 15.04 in April.

Please note the important install known issue at Bug 1436715: “Vivid DVD fails to reboot or shutdown w/o hard reset”

If you are at all unsure about a hard reset, the options are

  • Install Beta 1 and dist-upgrade
  • Wait for the bug to fix and install from a daily
  • Wait for Release Candidate

The Beta 2 release is available for download by torrents and direct downloads from

Highlights and known issues

New features and enhancements

Between Beta 1 and now, the final release of Xfce 4.12 has been packaged and uploaded to 15.04.

Known Issues

The detailed release note including other less critical known issues can be found here.

New application versions in the Xubuntu packageset

  • Thunar (1.6.6)
  • tumbler (0.1.31)
  • Xfwm4 (4.12.1)
  • xfce4-panel (4.12.0)
  • xfconf (4.12.0)
  • xfdesktop4 (4.12.0)
  • xfce4-panel (4.12.0)
  • xfce4-settings (4.12.0)
  • xfce4-session (4.12.0)
  • xfce4-power-manager (1.4.3)
  • libxfce4ui (4.12.1)
  • libxfce4util (4.12.1)
  • garcon (0.4.0)
  • Parole (0.8)
  • Mousepad (0.4)
on March 26, 2015 09:15 PM

On being an Ubuntu member

Daniel Holbach

What does being an Ubuntu member mean to you? Why did you do it back then?

I became an Ubuntu member about 10 years ago. It was part of the process of becoming member of the MOTU team. Before you could apply for upload rights, you had to be an Ubuntu member though.

That wasn’t all of it though. For me it wasn’t the mail address or “fulfilling the requirements for upload rights”. As I had helped out and contributed for months already, I felt part of the tribe and luckily many encouraged me to take the next step and apply for membership. I had grown to like the people I worked with and learned from a lot. It was a bit daunting, but being recognised for my contributions was a great experience. Afterwards I would say I did my fair share of encouraging others to apply as well. :-)

Which brings me to the two calls of action I wanted to get out there.

1) Encourage members of your team who haven’t applied for Ubuntu membership!

There are so many people doing fantastic work on AskUbuntu, the Forums, in Flavour teams, the Docs team, the QA world and all over the place when it comes to phones, desktops, IoT bits, servers, the cloud and more. Many many of them should really be Ubuntu members, but they haven’t heard of it, or don’t know how or are concerned of not “having done enough”.

If you have people like that in a project you are working in, please do encourage them. In an open source project we should aim to do a good job at recognising the great work of others.

2) Join the Ubuntu Membership Boards!

If you are an Ubuntu member, seriously consider joining the Ubuntu Membership Boards. The call for nominations is still open and it’s a great thing to be involved with.

When I joined the Community Council, the CC was still in charge of approving Ubuntu members and I enjoyed the meeting (even if they were quite looooooooooooooooooooong), when we got to talk to many contributors from all parts of the globe and from all parts of the Ubuntu landscape. Welcoming many of them to Ubuntu members team was just beautiful.

Nominate yourself and be quick about it! :-)

on March 26, 2015 03:06 PM

March 25, 2015

Phoronix ran an article today highlighting our work on making a Juju charm for the Phoronix Test Suite.

This enables people to easily deploy pts to any cloud that we support, so AWS, Azure, Joyent, HP Cloud, GCE,, digitalocean, and of course bare metal and OpenStack. So now you can try any cloud provider and run your own benchmarks to see which one works best for you. With Windows, Debian, and CentOS arriving in Juju soon we’ll have your cross-OS needs covered as well.

Marco Ceppi and Adam Israel will be adding some more fixes and features over the next few days, you can follow along (and help if you’d like) in the Phoronix upstream git. Many thanks to Michael Larabel for giving us an area in the pts git repo to do this work!

on March 25, 2015 10:18 PM

Many of you may have already heard of Ubuntu Core. For those who haven’t, it’s a minimal Ubuntu version, running only a few essential services and ships with a new package manager (snappy) that provides transactional updates. Ubuntu Core provides a lightweight base operating system which is fast to deploy and easy to maintain up to date. It also uses a nice security model.

All these characteristics make it particularly appealing for the cloud. And, in fact, people are starting considering it for building their (micro)services architectures. Some weeks ago, a user on Ask Ubuntu asked: Can I run Snappy Ubuntu Core as a guest inside Docker? The problem is that Ubuntu Core does not ship with an official Docker image that we can pull, so we are forced to set it up manually. Here’s how.

Creating the Docker image

Step 1: get the latest Ubuntu Core

As of writing, the latest Ubuntu Core image is alpha 3 and can be downloaded with:

$ wget

(If you browse to, you can also find the signed hashsums.)

The downloaded image is XZ-compressed and we need to extract it:

$ unxz ubuntu-core-WEBDM-alpha-03_amd64-generic.img.xz

Step 2: connect the image using qemu-nbd

The file we have just downloaded and extracted is a filesystem dump. The previous version of the image (Alpha 2) was a QCOW2 image (the format used by QEMU). In order to access its contents, we have a few options. Here I’ll show one that works with both filesystem dumps and QCOW2 images. The trick consists in using qemu-nbd (a tool from the qemu-utils package):

# qemu-nbd -rc /dev/nbd0 ubuntu-core-WEBDM-alpha-03_amd64-generic.img

This command will create a virtual device named /dev/nbd0, with virtual partitions named /dev/nbd0p1, /dev/nbd0p2, … Use fdisk -l /dev/nbd0 to get an idea of what partitions are inside the QCOW2 image.

Step 3: mount the filesystem

The partition we are interested in is /dev/nbd0p3, so we need to mount it:

# mkdir nbd0p3
# mount -r /dev/nbd0p3 nbd0p3

Step 4: create a base Docker image

As suggested on the Docker documentation, creating a base Docker image from a directory is pretty straightforward:

tar -C nbd0p3 -c . | docker import - ubuntu-core alpha-3

Our newly created image will now appear when running docker images:

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu-core         alpha-3             f6df3c0e2d74        5 seconds ago       543.5 MB

Let’s verify if we did a good job:

# docker run ubuntu-core:alpha-3 snappy
Usage:snappy [-h] [-v]

Yes! We have successfully added Ubuntu Core to the available Docker images and we have run our first snappy container!

Installing and running software

Without wasting too many words, here’s how to install and run the xkcd-webserver snappy package inside docker:

# docker run -p 8000:80 ubuntu-core:alpha-3 /bin/sh -c 'snappy install xkcd-webserver && cd /apps/xkcd-webserver/0.3.1 && ./bin/xkcd-webserver'
WARN: AppArmor not available when processing AppArmor hook
Failed to get D-Bus connection: Operation not permitted
Failed to get D-Bus connection: Operation not permitted

** (process:13): WARNING **: user.vala:637: Can not connect to logind
xkcd-webserver     21 kB     [======================================]    OK    
WARNING: failed to connect to dbus: org.freedesktop.DBus.Error.FileNotFound: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
Part            Tag   Installed  Available  Fingerprint     Active  
xkcd-webserver  edge  0.3.1      -          3a9152b8bff494  *       

Now, if you visit http://localhost:8000/ you should see a random XKCD comic.

If you have payed attention, you may have noticed a few warnings about AppArmor, DBus and logind. The reason why you are seeing these warnings is pretty simple: we did not start neither AppArmor nor DBus nor logind. Now, generally speaking, we could run init inside Docker and fix these and other warnings. However that’s not what Docker is meant for. So if you want to run AppArmor or similar stuff from inside Docker or LXC, then probably you should consider virtualization.


Once you have created the base Docker image, you can start creating some Dockerfiles, if you need to. Here’s an example:

FROM ubuntu-core:alpha-3
RUN snappy install xkcd-webserver
EXPOSE 8000:80
CMD cd /apps/xkcd-webserver/0.3.1 && ./bin/xkcd-webserver

This Dockerfile does the same job as the previous command: it installs and runs xkcd-webserver on port 8000. In order to use it, first build it:

# docker build -t xkcd-webserver .

Check that it has been correctly installed:

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
xkcd-webserver      latest              260e0116e9e3        3 minutes ago       543.5 MB
ubuntu-core         alpha-3             f6df3c0e2d74        About an hour ago   543.5 MB

Then run it:

# docker run xkcd-webserver

Again, you should see a random XKCD comic on [http://localhost:8000/].


That’s all folks! I hope you enjoyed this tiny guide, and if you need help, please ask a question on Ask Ubuntu with the ubuntu-core tag, which I’m subscribed to.

on March 25, 2015 08:46 PM

The NGINX Mainline PPA has been updated with NGINX Mainline version 1.7.11. It includes builds for Ubuntu Precise, Ubuntu Trusty, Ubuntu Utopic, and Ubuntu Vivid, and the i386, amd64, and armhf architectures.

The following is the list of changes from NGINX upstream:

Changes with nginx 1.7.11                                        24 Mar 2015

    *) Change: the "sendfile" parameter of the "aio" directive is
       deprecated; now nginx automatically uses AIO to pre-load data for
       sendfile if both "aio" and "sendfile" directives are used.

    *) Feature: experimental thread pools support.

    *) Feature: the "proxy_request_buffering", "fastcgi_request_buffering",
       "scgi_request_buffering", and "uwsgi_request_buffering" directives.

    *) Feature: request body filters experimental API.

    *) Feature: client SSL certificates support in mail proxy.
       Thanks to Sven Peter, Franck Levionnois, and Filipe Da Silva.

    *) Feature: startup speedup when using the "hash ... consistent"
       directive in the upstream block.
       Thanks to Wai Keen Woon.

    *) Feature: debug logging into a cyclic memory buffer.

    *) Bugfix: in hash table handling.
       Thanks to Chris West.

    *) Bugfix: in the "proxy_cache_revalidate" directive.

    *) Bugfix: SSL connections might hang if deferred accept or the
       "proxy_protocol" parameter of the "listen" directive were used.
       Thanks to James Hamlin.

    *) Bugfix: the $upstream_response_time variable might contain a wrong
       value if the "image_filter" directive was used.

    *) Bugfix: in integer overflow handling.
       Thanks to Régis Leroy.

    *) Bugfix: it was not possible to enable SSLv3 with LibreSSL.

    *) Bugfix: the "ignoring stale global SSL error ... called a function
       you should not call" alerts appeared in logs when using LibreSSL.

    *) Bugfix: certificates specified by the "ssl_client_certificate" and
       "ssl_trusted_certificate" directives were inadvertently used to
       automatically construct certificate chains.
on March 25, 2015 07:40 PM

Whoosh, Spring is in the air, Winter is over (at least for us Northern Hemisphere folks). With that, it's time for polishing the final beta image for vivid.

How can I help? 
To help test, visit the iso tracker milestone page for final beta.  The goal is to verify the images in preparation for the release. Find those bugs! The information at the top of the page will help you if you need help reporting a bug or understanding how to test. 

There's a first time for everything! Check out the handy links on top of the isotracker page detailing how to perform an image test, as well as a little about how the qatracker itself works. If you still aren't sure or get stuck, feel free to contact the qa community or myself for help.

What if I'm late?
The testing runs through this Thursday March 26th, when the the images for final beta will be released. If you miss the deadline we still love getting results! Test against the daily image milestone instead.

Thanks and happy testing everyone!
on March 25, 2015 05:49 PM

I recently wanted to make a slightly modified persistent bootable USB stick running a recent version Ubuntu. I made some notes and have put them here in case they’re useful to anyone else. It’s a bit of a manual process which could probably be streamlined / automated. This was just what I did as a one-off, take from it what you will.

USB3 sticks in a USB3 port work best as USB2 can be a bit on the slow side, especially for IO intensive operations like package installation or compiling.

Note: A few people have pointed out the fragility and short lifespan of USB sticks. This same procedure can be used to install on a hard disk or SSD in a USB enclosure. Once the image is copied to the external storage, simply use gparted to resize it up to take all available space.

The goal I had was to make an image which can be copied to USB stick to provide a persistent bootable Ubuntu SDK development environment. This could be useful for people who don’t run Ubuntu as their primary OS (Yes, these people exist, I know right!?) but want to dabble in Ubuntu application development. It’s also handy if you’re running an App Dev School where the computers aren’t yours, or run some other OS. The students could potentially take the sticks away with the full OS and all their work on. Just make the image and then copy it to multiple sticks before the class starts.

I also wanted to make it ask for locale and user details on first boot, so it could be easily configured and used in any language. This is pretty easy given the Ubuntu installer has all of that built in.

I used Ubuntu 14.10 i386 (but also tried with Ubuntu 14.04.1 LTS) and an 8GB USB stick which leaves a couple of GB over for work. Obviously a larger stick gives more space to the user. It turned out though that using an 8GB USB stick was a bit tight for SDK work. I ended up with 76MB left after creating one 15.04 armhf kit. Maybe 8GB is good for desktop and qml/html5 only development (although still a bit tight), but not for cross architecture or other binary builds. 16GB would have enough room for multiple kits and could build binaries for devices.

Some of these steps can be done in the background while you do other things. It’s not a massively time consuming task if you have a decent connection and fast USB stick / hard disk, but as I mentioned, is a bit manual.

The result is a USB stick which you can boot from and work off with data saved to the stick. You can optionally enable home directory encryption during the final end-user setup if that’s important to you.

Step 1 – Prep

Have an 8GB (or larger) USB 3 stick handy. I am using Kingston 8 GB USB 3.0 DataTraveler G4 Flash Drive and later Kingston Technology 16GB Data Traveler G4 USB 3.0 Flash Drive. Faster sticks are available of course, but I wanted something cheap to prototype on.
Have a laptop with a USB 3 port (or ports) and supports kvm. I did all this on my Ubuntu Vivid Vervet (15.04) Thinkpad X220 laptop which has a single USB3 port.
Make a directory on a local disk to store scratch image – will need 16GB or more space
Install qemu-kvm and gddrescue on host
Download ubuntu-14.04.1-desktop-i386.iso from (torrent link).

Step 2 – Installation of base system

Make a blank image on local disk
dd if=/dev/zero of=./disk_image bs=1M count=7500
This should result in a file a bit under 8GB.

alan@deep-thought:/data/usb⟫ dd if=/dev/zero of=./disk_image bs=1048576 count=7500
7500+0 records in
7500+0 records out
7864320000 bytes (7.9 GB) copied, 34.468 s, 228 MB/s

Install Ubuntu into the image using kvm
sudo kvm -m 2048 -cdrom ~/Downloads/ubuntu-14.10-desktop-i386.iso -hda ./disk_image -boot d
This should boot off the ISO


At the A11Y (person = keyboard) icon, hit space


At the boot menu, choose language (this is just language for the installer, user will later choose which language to use)


Press F3 and choose keyboard layout


Press F4 and choose OEM install


Pick “Install” from the menu.



Follow the installer prompts as normal. I configured with no swap, but use the entire disk for an ext4 volume for the root filesystem.
Set a password for the oem user, which will be thrown away later, and the user will get to set their own password.
Shut-down at the end

Step 3 – Install the SDK

This is the part where you make the modifications to the image (if any). I wanted to install the Ubuntu SDK.

Optionally at this point, make a backup of your cleanly installed Ubuntu 14.10.1 system
cp ./disk_image ./ubuntu_14.10_install_backup

Boot the previously created install (note the additional options – these are handy)
sudo kvm -m 2048 -hda ./disk_image -chardev stdio,id=mon -mon mon
Once booted to the desktop, in the terminal on the host at the (qemu) prompt type this to switch the VM to the console (which is faster to do stuff than the GUI :) ):-
(qemu) sendkey ctrl-alt-f1
Login to the tty with the oem user/password set in Step 2.
Follow the usual guide to install the SDK and update the system:-
sudo add-apt-repository ppa:ubuntu-sdk-team/ppa
sudo apt-get update
sudo apt-get install ubuntu-sdk
sudo apt-get dist-upgrade
sudo apt-get clean
sudo apt-get autoremove

Shut down the vm
sudo shutdown -h now

Optionally at this point, make a backup of your “SDK-installed” (or modified in whatever way you choose) OEM mode Ubuntu 14.10 system
cp ./disk_image ./ubuntu_14.10_install_sdk_oem_backup

Note: At this point you can boot the disk image and do further customisation – maybe adding other packages which may be of use, but I stopped here.

Step 4 – Prepare the OEM image for ‘shipping’

This is the point where we flip the switch in the installed image before handing it off to another user. On first boot they will get prompted to set locale and configure a new user.

Boot the previously created install which has the SDK installed
sudo kvm -m 2048 -hda ./disk_image
Click the “Prepare for shipping to end user” icon on the desktop – this sets the system to be ready for the first-boot experience for a new user
Shut down the system

Step 5 – Test this all worked

Make a copy of the master image for testing
cp ./disk_image ./testing_oem_install
Boot the test image to try it out
sudo kvm -m 2048 -hda ./testing_oem_install
At this point you should be prompted for the usual post-install setup tasks including language / locale / username & password. Setup as you would a normal machine
Open the SDK (or whatever you installed), test it all works
I tried creating a kit and do other SDK related things
Shutdown when done
Delete the test image
rm ./testing_oem_install

Step 6 – Copy the OEM image to a USB stick for shipping / use

Now we have a ‘final’ image (and optionally some backups) we can copy this to a stick for use by us / someone else. We can of course make more than one by doing this step multiple times with different sticks. On my system as you can see it took ~30 mins to copy the image to the stick. Faster, more expensive sticks may be better, these were pretty cheap.

Copy the disk image to an appropriately sized USB stick
sudo ddrescue -d -D --force ./disk_image /dev/sdX


alan@deep-thought:/data/usb⟫ time sudo ddrescue -D -d --force disk_image /dev/sdc
GNU ddrescue 1.19
Press Ctrl-C to interrupt
rescued: 7864 MB, errsize: 0 B, current rate: 1966 kB/s
ipos: 7864 MB, errors: 0, average rate: 4884 kB/s
opos: 7864 MB, run time: 26.83 m, successful read: 0 s ago

real 26m51.682s
user 0m1.212s
sys 0m30.084s

Step 7 – Test & use the stick

Put the USB stick in a computer set to boot from external media.
Test that you get a desktop and the usual OEM prompts you got in Step 5.
If that works then you can do step 5 again for the same stick or as many sticks as you have.


Comments and suggestions welcome!

on March 25, 2015 10:55 AM

Way back at the dawn of the open source era, Richard Stallman wrote the Four Freedoms which defined what it meant for software to be free. These are:

  • Freedom 0: The freedom to run the program for any purpose.
  • Freedom 1: The freedom to study how the program works, and change it to make it do what you wish.
  • Freedom 2: The freedom to redistribute copies so you can help your neighbor.
  • Freedom 3: The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits.

For nearly three decades now they have been the foundation for our movement, the motivation for many of us, and the guiding principle for the decisions we make about what software to use.

But outside of our little corner of humanity, these freedoms are not seen as particularly important. In fact, the fast majority of people are not only happy to use software that violates them, but will often prefer to do so. I don’t even feel the need to provide supporting evidence for this claim, as I’m sure all of you have been on one side or the other of a losing arguement about why using open source software is important.

The problem, it seems, is that people who don’t plan on exercising any of these freedoms, from lack of interest or lack of ability, don’t place the same value on them as those of us who do. That’s why software developers are more likely to prefer open source than non-developers, because they might actually use those freedoms at some point.

But the people who don’t see a personal value in free software are missing a larger, more important freedom. One implied by the first four, though not specifically stated. A fifth freedom if you will, which I define as:

  • Freedom 4: The freedom to have the program improved by a person or persons of your choosing, and make that improvement available back to you and to the public.

Because even though the vast majority of proprietary software users will never be interested in studying or changing the source of the software they use, they will likely all, at some point in time, ask someone else if they can fix it. Who among us hasn’t had a friend or relative ask us to fix their Windows computer? And the true answer is that, without having the four freedoms (and implied fifth), only Microsoft can truly “fix” their OS, the rest of us can only try and undo the damage that’s been done.

So the next time you’re trying to convince someone of the important of free and open software, and they chime in with the fact that don’t want to change it, try pointing out that by using proprietary code they’re limiting their options for getting it fixed when it inevitably breaks.

on March 25, 2015 09:00 AM

March 24, 2015

Docutils Snippets

Aurélien Gâteau

Last week I had to work with docutils, a Python library to turn reStructuredText (.rst) into documentation. I was using it to extend a Sphinx-based documentation I am setting up. It was quite a frustrating experience: despite loads of search, I could not find any simple, working examples demonstrating Docutils API usage. To save me (and possibly you) some more frustration next time I need to use this library, I am writing down a few examples.

My goal was to create a custom Docutils Directive. A Directive is a class which can be referred to from a .rst file to generate custom content. Its main method is run(), which must return a list of Docutils nodes, representing the custom content. Each node can itself contain other nodes, so run() actually returns a list of node trees.

Available nodes are listed in the Docutils Document Tree. reStructuredText is powerful and expressive, which means creating simple text structures can require quite a lot of nodes, as we shall see.

Let's start with an "Hello World", a simple paragraph:

from docutils import nodes
# ...

class HelloWorld(Directive):
    def run(self):
        para = nodes.paragraph(text='Hello World')
        return [para]

An error I made a lot when starting was to pass the text of the paragraph as a positional argument. I kept writing that:

nodes.paragraph('Hello World')

Instead of this:

nodes.paragraph(text='Hello World')

It does not work because the first argument of paragraph() is the raw source: the string which would produce the paragraph if it came from a .rst document.

Next example, let's create some sections, the equivalent of this .rst source:


Some text.

A Level 2 Title

More text.

The code:

class Sections(Directive):
    def run(self):
        section = nodes.section()
        section += nodes.title(text='Hello')
        section += nodes.paragraph(text='Some text.')

        subsection = nodes.section()
        section += subsection

        subsection += nodes.title(text='A Level 2 Title')
        subsection += nodes.paragraph(text='More text.')

        return [section]

Let's now create a bullet list, like the one which would be created by this .rst:

- Apples
- Oranges
- Bananas

This is done with a bullet_list node, which contains list_item nodes, which themselves contain paragraph nodes.

class BulletList(Directive):
    def run(self):
        fruits = ['Apples', 'Oranges', 'Bananas']

        lst = nodes.bullet_list()
        for fruit in fruits:
            item = nodes.list_item()
            lst += item
            item += nodes.paragraph(text=fruit)

        return [lst]

And now for something a bit crazier, what about a table? The rough equivalent of:

============ ========== ======== =====
Product      Unit Price Quantity Price
------------ ---------- -------- -----
Coffee       2          2        4
Orange Juice 3          1        3
Croissant    1.5        2        3
============ ========== ======== =====

This one is a bit more involved:

class TableExample(Directive):
    def run(self):
        header = ('Product', 'Unit Price', 'Quantity', 'Price')
        colwidths = (2, 1, 1, 1)
        data = [
            ('Coffee', '2', '2', '4'),
            ('Orange Juice', '3', '1', '3'),
            ('Croissant', '1.5', '2', '3'),

        table = nodes.table()

        tgroup = nodes.tgroup(cols=len(header))
        table += tgroup
        for colwidth in colwidths:
            tgroup += nodes.colspec(colwidth=colwidth)

        thead = nodes.thead()
        tgroup += thead
        thead += self.create_table_row(header)

        tbody = nodes.tbody()
        tgroup += tbody
        for data_row in data:
            tbody += self.create_table_row(data_row)

        return [table]

    def create_table_row(self, row_cells):
        row = nodes.row()
        for cell in row_cells:
            entry = nodes.entry()
            row += entry
            entry += nodes.paragraph(text=cell)
        return row

That's it for today, hope this was helpful for some of you. If you want to experiment with this, here is the source code for all these examples:

PS: I am no Docutils expert, this article may suggest wrong ways to do things, please leave a comment if you notice any error.

Flattr this

on March 24, 2015 10:00 PM

2015-03-13 IRC Meeting Minutes

Ubuntu Server blog


  • Review ACTION points from previous meeting
  • smoser follow up on #link not working
  • arosales update QA Team rep to matsubara
  • V Development
  • Server & Cloud Bugs (caribou)
  • Weekly Updates & Questions for the QA Team (?)
  • Weekly Updates & Questions for the Kernel Team (smb, sforshee, arges)
  • Ubuntu Server Team Events
  • Open Discussion
  • Announce next meeting date, time and chair



This weeks meeting focused on identifying critical bugs as Vivid nears Final Beta Freeze (March 26). There was also some good discussion on rounding out Blueprints given the Vivid end-of-cycle is nearing. matsubara[QA] brought up an interesting smoke test Jenkins failure [] that smb[kernel] help identify as a dup of

Open Compute Summit and Open Power Summit were also brought up as upcoming Ubuntu Server related events.


  • User Interface Freeze this week
  • Final Beta Freeze on March 26


* No specific actions identified this week.


Next meeting will be on Tuesday, March 17th at 16:00 UTC in #ubuntu-meeting.

Logs @

on March 24, 2015 06:17 PM

Review ACTION points from previous meeting

The discussion about “Review ACTION points from previous meeting” started at 16:00.

  • dannf will look at bug 1427406 “data corruption on arm64″ soon
  • Bug 1432715 “tomcat7 ftbfs in vivd (test failures)” is waiting on a fix in Debian
  • hallyn has updated the QA Team section assignee to matsubara
  • matsubara did file a bug for libpam-systemd’s dependency problem, but this is no longer relevant, has been marked Invalid, and he will follow up on further test failures in the QA topic later in the meeting.

Vivid Development

The discussion about “Vivid Development” started at 16:06.

  • No discussion was required.

Weekly Updates & Questions for the QA Team (matsubara)

The discussion about “Weekly Updates & Questions for the QA Team (matsubara)” started at 16:09.

Weekly Updates & Questions for the Kernel Team (smb, sforshee, arges)

The discussion about “Weekly Updates & Questions for the Kernel Team (smb, sforshee, arges)” started at 16:12.

  • smb reported that:
    • The Utopic+ nested issues on Precise host fix should be on its way into Precise. Beside that any other reports are still ongoing.
    • There were recent updates to nested kvm softlockups (bug 1413540) and some container netdevice cleanup (bug 1403152) bug which we still need to evaluate.
    • The KSM issue (bug 1435363) which was recently reported needs feedback on latest kernel.

Ubuntu Server Team Events

The discussion about “Ubuntu Server Team Events” started at 16:14.

  • No events to report.

Open Discussion

The discussion about “Open Discussion” started at 16:14.

  • Nothing was raised.

Announce next meeting date and time

The discussion about “Announce next meeting date and time” started at 16:15.

The next meeting will be at Tue Mar 31 16:00:00 UTC 2015. matsubara will chair.

Meeting Actions


on March 24, 2015 06:05 PM

Meeting Minutes

IRC Log of the meeting.

Meeting minutes.


20150324 Meeting Agenda

Release Metrics and Incoming Bugs

Release metrics and incoming bug data can be reviewed at the


Status: Vivid Development Kernel

Our Vivid kernel has been rebased to v3.19.2 and uploaded, ie
3.19.0-10.10. We are approaching kernel freeze for Vivid.
~2 weeks away on Thurs Apr 9. If you have any patches which
land for 15.04′s release, please make sure to submit those
Important upcoming dates:
Thurs Mar 26 – Final Beta (~2 days away)
Thurs Apr 09 – Kernel Freeze (~2 weeks away)
Thurs Apr 23 – 15.04 Release (~4 weeks away)

Status: CVE’s

The current CVE status can be reviewed at the following

Status: Stable, Security, and Bugfix Kernel Updates

Status for the main kernels, until today:

  • Lucid – None (no update)
  • Precise – Prep
  • Trusty – Prep
  • Utopic – Prep

    Current opened tracking bugs details:


    For SRUs, SRU report is a good source of information:



    Current cycle: 20-Mar through 11-Apr

    20-Mar Last day for kernel commits for this cycle
    22-Mar – 28-Mar Kernel prep week.
    29-Mar – 11-Apr Bug verification; Regression testing; Release

Review of sforshee upload rights

apw: sforshee, hi
sforshee: apw: hello
apw: could you introduce yourself, perhaps tell us a little about
sforshee: I’ve been a member of the kernel team for 4 years now
sforshee: working on various and sundry things, including some packaging
sforshee: I’m looking to get PPU rights to the linux-* packages to ease
apw: i believe we have most of your sponsors here today, so if anyone
apw: otherwise i think the majority of the approvers have works with you
kamal: I stand by my sponsorship statment: Seth is diligent and
ogasawara: I have not specifically sponsored a package of seth’s but
kamal: +1 from me
henrix: +1 from me too!
arges: From an SRU perspective, sforshee has generally shown attention
bjf: +1
cking: +1
apw: sforshee, welcome to the team
sforshee: thanks all!
cking: \o/
henrix: \o/
apw: thank you …
kamal: \o/
ogasawara: congrats sforshee!
arges: good job
apw: jsalisbury, all yours …
jsalisbury: apw, Thanks, and congrats to sforshee

Open Discussion or Questions? Raise your hand to be

No open discussion.

on March 24, 2015 05:22 PM

A few years ago, I was looking for a quick and easy way to run OpenID on a small web server.

A range of solutions were available but some appeared to be slightly more demanding than what I would like. For example, one solution required a servlet container such as Tomcat and another one required some manual configuration of Python with Apache.

I came across the SimpleID project. As the name implies, it is simple. It is written in PHP and works with the Apache/PHP environment on just about any Linux web server. It allows you to write your own plugin for a user/password database or just use flat files to get up and running quickly with no database at all.

This seemed like the level of simplicity I was hoping for so I created the Debian package of SimpleID. SimpleID is also available in Ubuntu.

Help needed

Thanks to a contribution from Jean-Michel Nirgal Vourgère, I've just whipped up a 0.8.1-14 package that should fix Apache 2.4 support in jessie. I also cleaned up a documentation bug and the control file URLs.

Nonetheless, it may be helpful to get feedback from other members of the community about the future of this package:

  • Is it considered secure enough?
  • Have other people found it relatively simple to install or was I just lucky when I tried it?
  • Are there other packages that now offer such a simple way to get OpenID for a vanilla Apache/PHP environment?
  • Would anybody else be interested in helping to maintain this package?
  • Would anybody like to see this packaged in other distributions such as Fedora?
  • Is anybody using it for any online community?

Works with HOTP one-time-passwords and LDAP servers

One reason I chose SimpleID is because of dynalogin, the two-factor authentication framework. I wanted a quick and easy way to use OTP with OpenID so I created the SimpleID plugin for dynalogin, also available as a package.

I also created the LDAP backend for SimpleID, that is available as a package too.

Works with Drupal

I tested SimpleID for login to a Drupal account when the OpenID support is enabled in Drupal, it worked seamlessly. I've also tested it with a few public web sites that support OpenID.

on March 24, 2015 04:57 PM

I found it quite frustrating to read Carsten Munk's concerns about GPL and licensing related to the kernel shipping with the bq Ubuntu phone. Clarity is essential in these matters. That Carsten can't tell what is going on for certain is a problem. It shouldn't have happened and I'm pleased to see that my colleagues are working hard to clear it all up.

As a Canonical employee and an Ubuntu developer I work hard to make sure that the work I'm involved with is fully compliant. Sometimes this takes me considerable time and effort. So for me the frustrating part of reading Carsten's investigation is that only our mistakes are evident. When things are done right people often don't notice, and so it's all too easy for outsiders to draw the conclusion that we are "evil". I'd like to present an example of how I work hard to do things right, in an effort to balance this view.

Juju is a particularly challenging project to package using the traditional distribution model. It's a cross-platform, cross-distribution and cross-release tool, and a single deployment needs to be able to deal with all of this simultaneously. But from a licensing perspective, the challenge comes from it being a major Go project. It follows standard Go practices in handling its dependencies, so by the time an an upstream release gets to me the release tarball contains all of Juju's dependencies embedded within it. As the person who uploads new Juju packages to the Ubuntu archive, it's my responsibility to make sure that everything is compliant from a licensing perspective. The embedding means that instead of having to verify just the Juju code itself, I also have to verify all dependencies, recursively. Many of the dependencies are small third party projects that appear to not have been packaged for a distribution before, with little attention paid to licensing compliance before I looked at them. Dependencies are added and versions bumped frequently. Every time, I have to check again. Right now, the sum of Juju and its dependencies involves over 3000 files over 37 separate projects.

Back in July I did a full review over all of this code and developed a process to follow further changes incrementally, since the situation here is quite radically different from a traditional distribution package. In my initial review, I found a whole slew of clearly unintentional errors, but sought to have them fixed anyway. I filed an extensive bug report describing the contradictions and ambiguities I found. I have also filed bugs in upstream projects as appropriate: for example in gojsonschema. I was pleased to find that it wasn't just me focusing on diligence in this area: as you can see from the first bug, my colleagues on the Juju team all took the issues I raised seriously, addressed them and committed fixes in just a week. Bugs I have filed more recently about licensing errors introduced in newer releases have continued to result in a quick response.

So, please do not misconstrue our intentions. Mistakes may happen but we do care, and do seek to resolve them as quickly as we can.

on March 24, 2015 12:54 PM

March 23, 2015

Como la funda oficial no estuvo disponible hasta que se distribuyera el móvil, compré mientras tanto una barata en Amazon. Se adapta muy bien, pero tiene un problema para un móvil con Ubuntu: los laterales agarran desde arriba, provocando que el dedo esté demasiado elevado para deslizar Unity desde el lateral.

Funda temporal

Pero hizo su trabajo mientras llegaba la oficial :) Que está muy bien pensada, pues se agarra al escalón lateral que tiene el móvil, no sobresaliendo y dejan sin agarre el lateral izquierdo al completo:


Tiene el anagrama de Ubuntu en la parte posterior (aunque parece que durará poco y en mi opinión es poco visible) y que se pueda plegar 180º.


Aquí tienes el enlace para comprar el móvil y aquí para comprar la funda.
on March 23, 2015 09:00 PM

I know, it’s more than a month I published a blog post about calculator reboot status. But don’t worry, also if I didn’t write any post, Bartosz and I worked hard on it, and now it should be ready to become the default calculator app on the phone, we just need a green light by the QA team!

As usual, please report any bug you find on Launchpad, so we can fix them!

Since is since end of January I don’t write a post on calculator, I describe all the things we did, also if some of these features are available on the store since a while.

New features

Universal brackets

This is a feature by Bartosz: we don’t have anymore two buttons for brackets (one for ( and one for )), but now there is only one button. When you press it, it magically understand if you need a open or a close bracket. Seems incredible, but it works very well. Give it a try and if you find a case where it doesn’t work, please report it to us.

Clear formula

Now with long click on clear button you delete all the formula. Don’t waste your time anymore!

Editing calculation from history

You want to reuse a old calc you did? Just try to swipe left the calc ;-)

New design for keyboard

We have some new design specs: we will implement them after the release of actual reboot. Meanwhile, we changed the keyboard accordingly.

New design

Empty state in favourite

We added an Empty state in favourite mode so now users know how to use that feature. I know it’s a bit confusing, we will improve it with new new design in next weeks.



Thanks to Ubuntu community the calculator now it’s available in a lot of languages. They’re amazing, work hard and we often forget them. So, this is my personal thanks for you all translators! We love you!

If you don’t have the app in your language, take a look to our translation page and help us :-)

Full changelog

Here the changelog with features we added. Missing revisions are translations. I don’t report them because the commit message is always the same (Launchpad automatic translations update.), so it isn’t useful to understand which languages have new translations. Please see this page to have a full vision on translations status:

  • #86 Add universal bracket support. (Bartosz Kosiorek)
  • #90 Fix bug #1416667. Add error animation. Set anchorToKeyboard to true. (Giulio Collura)
  • #91 Change Euler number display character. (Bartosz Kosiorek)
  • #92 Deletion fix. (Bartosz Kosiorek)
  • #98 Add clear formula feature, by long pressing delete button. (Bartosz Kosiorek)
  • #102 Added tests for square and cube functions. (Andrea Cerisara)
  • #104 Add possibility of editing calculation from history, by swiping left and select “Edit” option. (Bartosz Kosiorek)
  • #105 Added the select none action in multiselection mode when all calcs are selected. (Riccardo Padovani)
  • #106 Added tests for power and log. (Andrea Cerisara)
  • #116 Fixed broken tests. (Riccardo Padovani)
  • #117 Updated math.js to 1.4.0. (Riccardo Padovani)
  • #118 Fix adding decimal separator, at the beginning of the formula. (Bartosz Kosiorek)
  • #119 Added tests for sin, cos and factorial. (Andrea Cerisara)
  • #121 Allow to change favourites from calculation history. (Bartosz Kosiorek)
  • #122 Optimize autopilot tests for scientific switching. (Bartosz Kosiorek)
  • #129 Change keypad layout according to latest design. (Bartosz Kosiorek)
  • #134 Add complex numbers validation. (Bartosz Kosiorek)
  • #137 Use EmptyState from UCS to have a text in favourite page when is empty. (Riccardo Padovani)


As usual, I do all this in my spare time, at night because during the day I have to study. Do you mind to buy me a coffee to help me to stay awake? :-)

on March 23, 2015 10:38 AM

March 22, 2015

The first Ubuntu Phones arrived earlier this week to the buyers... But in the Store are over 1000 apps now!

And the application numer 1000 is Marvel Scope!

Do you have 5'? Then, you can create a scope or webapp!
Do you have 1'? Then, you can create a webapp!

on March 22, 2015 06:19 PM


Rhonda D'Vine

Friday the 13th was my day. In so many different ways. I received a package which was addressed to Rhonda D'Vine with a special hoodie in it. The person at the post office desk asked me whether it was for my partner, my response was a (cowardly) "no, it's my pseudonym" but that settled any further questions and I got my package.

Later I received an email which made me hyper happy (but which I can't share right now, potentially later).

In the evening there was the WortMacht FemSlam (WordMight FemSlam) poetry slam to which the host asked me to attend just the day before. I was hyper nervous about it. The room was fully packed, there were even quite some people who didn't have a place to sit and were standing at the side. I presented Mermaids because I wasn't able to write anything new on the topic. One would think I am attached enough to the poem by now to not be nervous about it, but it was the environment that made my legs shake like hell while presenting. Gladly I hope it wasn't possible to see it enough under my skirt, but given that it was the first time that I presented it in my home town instead of the "anonymous" internet made me extra anxious. In the end I ended up in place 5 of 7 attendees, which I consider a success given that it was the only text presented in English and not in typical poetry slam style.
(Small addition to the last part: I've been yesterday to the Free Hugs Vienna event at the Schloss Schönbrunn, and one of the people I hugged told me I know you, I've seen you at the FemSlam!. That was extra sweet. :))

I'm happy that I was notified about the FemSlam on such short notice, it was a great experience. So today's entry goes out to the host of that event. This is about Yasmo. One can just be envious about what she already accomplished in her still young life. And she is definitely someone to watch out for in the years to come. I have to excuse to my readers who don't understand German yet again, but I'll get back to something English next time, I promise. :)

  • Kein Platz für Zweifel: The title track from her last album.
  • Wer hat Angst vorm weißen Mann: Most straight-to-the-point line of the lyrics is Wie kann es sein, dass es immer noch diesen Jolly-Buntstift gibt, der "Hautfarbe" heißt?" (How is it possible that there is still this jolly crayon called "colour of the skin"?)
  • Wo kommst du her?: Not a song but one of her great slam poetry texts that I love since I first heard it.

Like always, enjoy!

/music | permanent link | Comments: 0 | Flattr this

on March 22, 2015 06:19 PM

It bothers me since a while that Web Apps on the Ubuntu Phone have their back button at the top left of the screen. It bothers me even more that the toolbar constantly collapses and expands during browsing … most of the time it does that for me when I just want to tap on a link. The page content suddenly moves 50px up or down…

Since Dekko exists on the Ubuntu Phone I became a heavy user of it for reading my mails and I really fell in love with the new bottom menu that Dan Chapman integrated so nicely (based on the circle menu work from Nekhelesh Ramananthan)

So this weekend it struck me to simply combine a WebView with this menu work to ge a shiny bottom navigation menu. I grabbed the recent google plus app from Szymon Waliczek, the latest source of Dekko and some bits from the webbrowser-app tree to combine them into a new webapp-container like framework.

You can find an experimental G+ click package (one that surely wins the contest for the ugliest icon) here.

I pushed the code to launchpad together with a README that describes how you can use it in your own WebApp, you can branch it with:

bzr branch lp:~ogra/junk/alternate-webapp-container

on March 22, 2015 04:56 PM