Planet Ubuntu
Subscribe to Planet Ubuntu feed
Planet Ubuntu - http://planet.ubuntu.com/
Updated: 13 min 54 sec ago

Serge Hallyn: LXC – improved clone support

Thu, 2013-05-02 20:58

Recently I took some time to work on implementing container clones through the lxc API. lxc-clone previously existed as a shell script which could create snapshot clones of lvm and btrfs containers. There were several shortcomings to this:

1. clone was not exportable through the API (to be used in python, lua, go and c programs). Now it is, so a Go program can create a container clone in one function call.
2. expanding the set of supported clone types became unsavory
3. overlayfs was only supported as ‘ephemeral containers’, which could be made persistent through the use of pre-mount hooks. They were not first class citizens. Now they are.

The result is now in upstream git as well as in the packages at the ubuntu-lxc/daily ppa. Supported backing store types currently include dir (directory), lvm, btrfs, overlayfs, and zfs. Hopefully loop and qemu-nbd will be added soon. They each are somewhat different due to the nature of the backing store itself, so I’ll go over each. However in my opinion the coolest thing you can do with this is:

# create a stock directory backed container
sudo lxc-create -t ubuntu -n dir1
# create an overlayfs snapshot of it
sudo lxc-clone -s -B overlayfs dir1 s1

The -s argument asks for a snapshot (rather than copy) clone, and -B specifies the backing store type for the new container. When container s1 starts, it will mount a private writeable overlay (/var/lib/lxc/dir1/delta0) over a readonly mount of the original /var/lib/lxc/dir1/rootfs.

Now make some changes to start customizing s1. Checkpoint that state by cloning it:

sudo lxc-clone -s s1 s2

This will reference the same rootfs (/var/lib/lxc/dir1/rootfs) and rsync the overlayfs delta from s1 to s2. Now you can keep working on s1, keeping s2 as a checkpoint. Make more changes, and create your next snapshot

sudo lxc-clone -s s1 s3

sudo lxc-clone -s s1 s4

If at some point you realize you need to go back to an older snapshot, say s3, then you can

sudo lxc-clone -s s1 s1_bad # just to make sure
sudo lxc-destroy -n s1
sudo lxc-clone -s s3 s1

and pick up where you left off. Finally, if you’re happy and want to tar up what you have to ship it or copy to another machine, clone it back to a directory backed container:

sudo lxc-clone -B dir s1 dir_ship
sudo tar zcf /var/lib/lxc/dir_ship.tgz /var/lib/lxc/dir_ship

So far I’ve shown dir (directory) backing store and overlayfs. Specific to directory backed containers is that they cannot be snapshotted, except by converting them to overlayfs backed containers. Specific to overlayfs containers is that the original directory backed container must not be deleted, since the snapshot depends on it. (I’ll address this soon, marking the snapshotted container so that lxc-destroy will leave it alone, but that is not yet done)

To use btrfs containers, the entire lxc configuration path must be btrfs. However since the configuration path is flexible, that’s not as bad as it used to be. For instance, I mounted a btrfs at $HOME/lxcbase, then did

sudo lxc-create -t ubuntu -P $HOME/lxcbase -n b1

(The ‘-P’ argument chooses a custom ‘lxcpath’, or lxc configuration path, than the default /var/lib/lxc. You can also specify a global default other than /var/lib/lxc in /etc/lxc/lxc.conf.) lxc-create detects the btrfs and automatically makes the container a new subvolume, which can then be snapshotted

sudo lxc-clone -s b1 b2

For zfs, a zfsroot can be specified in /etc/lxc/lxc.conf. I created a zfs pool called ‘lxc’ (which is actually the default for the lxc tools, so I did not list it in /etc/lxc/lxc.conf), then did

sudo lxc-create -B zfs -t ubuntu -n z1
or
sudo lxc-clone -B zfs dir1 z1

This created ‘lxc/z1′ as a new zfs fs and mounted it under /var/lib/lxc/z1/rootfs. Next I could

sudo lxc-clone -s z1 z2

Now lxc-destroy needs some smarts still built-in to make zfs backed containers easier to destroy. That is because when lxc-clone creates z2 from z1, it must first create a snapshot ‘lxc/z1@z2′, then clone that to ‘lxc/z2′. So before you can destroy z1, you currently must

sudo lxc-destroy -n z2
sudo zfs destroy lxc/z1@x2

Finally, you can also use LVM. LVM snapshot container clones have been supported longer than any others (with btrfs being second). I like the fact that you can use any filesystem inside the LV. However, the two major shortcomings are that you cannot snapshot a snapshot, and that you must (depending at least on the filesystem type) choose a filesystem size in advance.

To clone LVM conatiners, you either need a vg called ‘lxc’, or you can specify a default vg in /etc/lxc/lxc.conf. You can create the initial lvm container with

sudo lxc-create -t ubuntu -n lvm1 –fssize 2G –fstype xfs
or
sudo lxc-clone -B lvm dir1 lvm1

Then snapshot it using

sudo lxc-clone -s lvm1 lvm2

Note that unlike overlayfs, snapshots in zfs, btrfs, and lvm are safe from having the base container destroyed. In btrfs, that is because the btrfs snapshot is metadata based, so destroying the base container simply does not delete any of the data in use by the snapshot container. LVM and zfs both will note that there are active snapshots of the base rootfs and prevent the base container from being destroyed.


Ubuntu Podcast from the UK LoCo: S06E10 – Dances with Ubuntu

Thu, 2013-05-02 18:30

We’re back with the tenth episode of Season Six of the Ubuntu Podcast from the UK LoCo Team! Alan PopeMark JohnsonTony WhitmoreLaura Cowen and The Podcats are all set in Studio A with cake and an interview.

 Download OGG Play in Popup  Download MP3 Play in Popup

In this week’s show:-

Please send your comments and suggestions to: podcast@ubuntu-uk.org
Join us on IRC in #ubuntu-uk-podcast on Freenode
Leave a voicemail via phone: +44 (0) 203 298 1600, sip: podcast@sip.ubuntu-uk.org and skype: ubuntuukpodcast
Follow our twitter feed http://twitter.com/uupc
Find our Facebook Fan Page
Follow us on Google Plus
Leave us some segment ideas on the Etherpad

                          

Ben Howard: Windows Azure Cloud Image Dailies

Thu, 2013-05-02 16:35
Over the course of working with Microsoft on Windows Azure, we have had the goal of bringing the same experience on Azure as our users have on EC2. As part of our QA process, we publish daily images (http://cloud-images.ubuntu.com) for EC2 and OpenStack users.

Today, I am pleased to announce that Windows Azure Cloud Image dailies are now being published for Ubuntu Server 12.04 LTS, 12.10, 13.04 and the current development version 13.10. Due to the way that Windows Azure image publication works, these images will appear with in a three or four hours of the EC2 images and will be published to all Windows Azure regions.

However, the daily images will not be available in the Windows Azure Gallery; these images are published to API users. In the coming weeks, we'll throw up some pages to help our API users find the current images, but for now, you can use the API Query tools to find the images.

The initial daily images are:

  • Ubuntu_DAILY_BUILD-precise-12_04_2-LTS-amd64-server-20130502-en-us-30GB
  • Ubuntu_DAILY_BUILD-raring-13_04-amd64-server-20130501-en-us-30GB
  • Ubuntu_DAILY_BUILD-saucy-13_10-amd64-server-20130502-en-us-30GB  
As you can see, daily builds are clearly marked as "DAILY_BUILD" and include both the code name and the version number. Canonical provided images are all prefixed with our publisher GUUID of "b39f27a8b8c64d52b05eac6a62ebad85__"

While we make every effort at maintaining quality, daily images are not officially supported and may have issues as they are not rigorously QA'ed. As part of our release process, we take a daily, put it through QA and then promote the image.  If you see any problems with any of the daily builds, please head over to Launchpad.net and file us a bug.

For those who need a primer on using the Azure CLI Tool, our friends over at Microsoft have a really good explanation here. After you get it all setup, you should see all versions of the released Ubuntu Cloud Images and the dailies.

Finally, our daily image publishing will be restricted to the last five images for any one series. Like on EC2, all versions of Ubuntu Server released Cloud Images will remain indefinitely, with the exception of the pre-Windows Azure GA images (i.e. images with a serial of less than 20130414).

Andrea Grandi: How to fix pip under Debian 6.0 (squeeze): ImportError: cannot import name parser

Thu, 2013-05-02 15:09

The pip utility distributed with Debian 6.0 has a bug once you upgrade it with pip install -U pip. You will easily get this error when you try to install a new package with it:

root@worker2:~# pip install setproctitle Traceback (most recent call last): File "/usr/bin/pip", line 8, in <module> from pip.baseparser import parser ImportError: cannot import name parser

Luckly there is a very easy workaround:

easy_install pip rm /usr/bin/pip ln -sv /usr/local/bin/pip-2.6 /usr/bin/pip pip install pip --upgrade

Reference: http://blog.102web.ru/tag/virtualenvs/

Benjamin Kerensa: Firefox OS on Slashdot

Thu, 2013-05-02 06:36

Slashdot.org is featuring an interview I did with the Slashdot TV folks at LinuxFest Northwest 2013 where I had an opportunity to discuss Firefox OS and why it has a great chance at slapping down the mobile duopoly that’s currently got mobile users trapped. You can read the post and watch the video right here.

One common question I was asked at LFNW was what I thought of Ubuntu Touch and how will is stack up to Firefox OS. I simply think that Firefox OS will be good for a certain audience and that Ubuntu Touch also has the potential to cater to its own audience much like iOS and Android currently do. More open source platforms are always good especially when it means disrupting a tightly held market like mobile.

The post Firefox OS on Slashdot appeared first on Benjamin Kerensa dot Com.

Scott Kitterman: Kubuntu Council Elections 2013 – Nomination Period Has Ended

Thu, 2013-05-02 02:13

The nominees I have recorded are:

David Wonderly (Darkwing)
Valorie Zimmerman (valorie)
Philip Muskovac (yofel)
Rohan Garg (shadeslayer)

They are all eligible. If somehow you thought you were nominated and you aren’t on this list, contact me immediately. Since there are four nominees for three seats, there will be an election.

I will start working on ballot preparation tomorrow. In order to be eligible to vote, you must be a current Kubuntu member and receive a ballot via CIVS. In order to receive a ballot, we need an email address. If you have a public email address in your Launchpad profile, you need take no action. I will collect them from there. If you do not have one, you will not get a ballot unless you provide me with an email address. You can contact me directly either via email or IRC.

Assuming no foul-ups in preparation, ballots will go out on Saturday and voting will be open until the end (UTC) of May 20th.

Best of luck to all the candidates and if you have anything more to communicate about your candidacy, now’s the time …


Joel Leclerc: SythOS – An experimental collaborative OS

Thu, 2013-05-02 01:23

A rather long time ago (around a year and a half), I wrote a post about a system I was making which was supposed to be a cloud-based OS, named CosmOS. I didn’t really develop it that much, as I had a rather vague sense of what I wanted to do with it, and I immediately had problems with implementing the most basic concepts. Most of the idea was actually quite boring, and had already been developed by others. But since I had gone through all the trouble of making a tool for creating it (relinux), I decided to try it anyways, and just radically changed the whole design. And I did. I also found that I couldn’t have used the same name, as CosmOS was already the name of at least two different OS’s, and it was also the name of a directory of linux OSs (among other unrelated usages), so I kind of got that I had to change the name.

The name is actually based on two words, Synergy and Lithosphere (I was going to call it LithOS, but it sounded like some kind of boring scientific and/or business-oriented OS, if you know what I mean). I know, kind of an odd combination, and the reasoning for it is a quite far-fetched, but heck, it’s an unused name, and it sounds cool! Lithosphere was used as a creative way to say “ground”, because it’s not cloud-based (unlike CosmOS, in fact), and it’s also designed to be “down to the ground” with you. Instead of you adapting to the OS, the OS adapts to you (will explain how this works later). Also, the Synergy part is because since it’s completely with you, it allows nearly everything to be done much easier and simpler, reducing the amount of time both the users AND the developers need to do nearly everything (except for the engine… :-/).

The OS itself is principally designed under the following goals:

  • Help the user to become more productive within it
  • Extremely intuitive
  • Extremely easy to collaborate on anything
  • Extremely customizable
  • Fun

There is only one software that I’m aware of that does this well: Minecraft (creative mode). Okay, forget the productive element, but still, anyone can pick up the pace on how to use minecraft extremely quickly. Also, if you’ve ever played it, you’ll know how easy it is to collaborate on building something. You don’t need to use a VCS like git or mercurial to build something. Just get someone else on your server, and build together!

That’s kind of my idea with SythOS. You are inside a 3D environment, windows are mapped to 3D surfaces (I had this idea from Wolfenstein Qt, but it appears to already have been implemented: http://www.youtube.com/watch?v=_FjuPn7MXMs), and the environment is modifiable, using a minecraft-like in-game “level editor”. Other people can connect to your computer (if you allow them, of course), and then you can work together on projects (such as coding, audio, video, or even games) at the same time! Of course, for this to be effective, you have to have somewhat compatible software (you can’t both work on the same window for rather obvious reasons), but even if the software you use isn’t “compatible”, taking turns, and being able to see what the other is doing real-time is still way easier than using some kind of VCS or worse, emailing files back and forth, right? Also, with the chat and mic/audio features that are planned, you can also make meetings and/or “calls” (kind of like skype does, except without the video) within it.

Here’s a list of features that are either implemented or definite:

  • 3D virtual world
  • Windows mapped to the world
  • MMO-like online presence
  • World is Minecraft-like
  • Different tools and blocks (inspired by minecraft)
    • Hand tool: Allows you to do basic edits to windows (such as moving, resizing, and closing), and allows you to use windows, plus allows you to remove blocks
    • Kill tool: Allows you to kill processes, based on the windows you hit, and, of course, allows you to remove blocks
    • Various blocks, which allows you to place them, and remove other blocks, plus allows everything the hand tool allows you to do
    • Portal tool: Allows you to create portals to different rooms, so as to decrease the time needed to go between two different “workspaces”
  • Whitelist, Blacklist and “Asklist” for everything (great for multiple user computers, and/or online interaction)
  • Chat
  • Quake-like terminal with multiple tabs, but it can be used to place any kind of windows, not only terminals

Other features that are planned, but not implemented or definite would be:

  • Mic/Audio
  • Some kind of game engine, so you can create 3D objects that interact with the world (though it’s definitely not limited to games, it could even be used to create fancy movie creation software, or 3D modeling software)
  • Facial expression recognition, so your character’s face will match your expression. This is definitely not an important feature, and if it is ever implemented, it will probably be quite far-future.
  • Video… somehow… (no idea how to elegantly do this though)

Now for the point of this post (the reason why I’m writing it): Would you use something like this? If so, or if not, why? Any ideas and/or comments on this?

About the possibility of it being implemented, I know that it is possible, but I’m not sure how much time it’ll take me to do all of this (and I’m not sure if I’ll have the stamina needed to do this). I’m planning on releasing a prototype by the end of this summer (2013) though.


Paul Tagliamonte: Me, as an Ubuntu Community Member

Thu, 2013-05-02 01:04

Recently, some folks have brought it to my attention that I’m not so good at making my work with Ubuntu known.

I’d like to clarify my role. Yes, I’m still an Ubuntu member. Yes, I’m still active. Yes, I care about Ubuntu. A lot. To insinuate otherwise is wholly wrong. I’ve been with Ubuntu for just about 5 years now, and to misrepresent that would be a damn shame.

I mostly do work in Debian these days, where I make sure packages upstream support Ubuntu, and work to help create a solid Debian, which provides a strong base for Ubuntu to work from.

Every Debian developer is also an Ubuntu developer, because one way to contribute to Ubuntu is to contribute to Debian.

 - SABDFL

I also spend time to make sure Ubuntu / Debian relations remain strong, and that Debian folks know they can count on a friendly face to interface with the Ubuntu’ers, or the Ubuntu’ers knowing they can count on a friend to help.

To be clear; I’m not active in the Ubuntu community channels anymore. I’m still very much active with Ubuntu on the whole.

Hope that clears things up for folks.

Matthew Helmke: Mastering NGINX

Wed, 2013-05-01 22:10

Nginx is an http server intended for high traffic websites with a mind toward network scalability. I used NGINX as my primary web server for about 3 years. At the time, I hosted my sites on under-powered hardware that had little memory and had trouble keeping up with demand when I used Apache, but was able to keep this web site up and running the day one of my posts hit the front page of Digg (back when dinosaurs roamed the Earth and Digg was a really cool website). Back then, NGINX was still pretty new and most of the documentation was either in Russian, sporadic, or consisted of random posts on people’s blogs. It has been a couple of years since I upgraded my server to something beefier. At that time, I switched back to Apache, since I have used it for years and know it very well. That could change again, especially now that the official documentation for NGINX is much better, and because of today’s review book.

Mastering NGINX is by Dimitri Aivaliotis, a systems architect for a hosting provider and someone who uses NGINX daily. His experience shows in the quality and depth of the material. Unlike a different book on NGINX from the same publisher that I reviewed in 2010, Nginx HTTP Server, this book is well written and does not suffer from what I have come to call “The Packt Problem.” I hope this is a sign that Packt’s copy editing process has improved and that there is now a stronger commitment to offer titles that are worthy of being read because of the quality of the writing as well as the quality and uniqueness of the technical content.

Mastering NGINX is intended for experienced systems administrators and systems engineers, people who are familiar with using and administering *nix machines and configuring servers. This is not a beginner book. For me, that is a plus. It allows the author to get right down to business with NGINX.

We start with a short and typical installation chapter, complete with a discussion of modules that includes third-party modules and their benefits and risks. Installing using the package managers of several types of Linux distributions is covered along with compiling from source and the various flags and configure options available.

The next chapter jumps right in to the good stuff. Most of the NGINX materials I once used tell you what to change, but not why to change it. For a long time I was left wondering how to tell when to use specific configuration options, which files to find them in, and what the parameters are that I can use. The goal of this book is not to tell you what to do, but to describe these very things, so that in the end, you should be able to find and open an NGINX configuration file and edit it to fit your situation. Well done.

I was a little concerned when I realized that I was nearing the end of the chapter and still had some questions in my mind about some of the parameters and settings. Then I read this on page 40 in the chapter summary:

What we did not cover in this chapter are the configuration options provided by the various modules that may be compiled into your nginx binary. These additional directives will be touched upon through the book, as that particular module is used to solve a problem. Also absent was an explanation of the variables that NGINX makes available for its configuration. These too will be discussed later in this book. This chapter’s focus was on the basics of configuring NGINX.

Bravo! The author was thinking ahead, anticipated my concerns, and addressed them immediately at the point I had them.

The rest of the book gives deeper, more detailed information about specific uses for NGINX. Topics covered include using NGINX for serving mail, reverse proxying, setting up security, HTTP serving, including setting up your server for use with PHP (which is much easier now than when I wrote this outdated post), caching, tracking, and various sorts of troubleshooting. I was thrilled to see the appendices, especially the rewrite rule guide, as when I tried to do rewrites, I couldn’t find any good information (see my now-long-outdated post on the topic.

I was pleased to see how complete and clear the book is. Kudos to the author, the reviewers and editors, and the publisher. I recommend this book to anyone who uses NGINX or wants to do so.

Disclosure: I was given my copy of this book by the publisher as a review copy.

Nicholas Skaggs: People behind ubuntu quality: Carla

Wed, 2013-05-01 21:41
This post is part of a series on the people behind the ubuntu quality team. Below you'll hear from Carla Sella, who has been a wonderful spirit of can-do attitude on the team. Carla hails from Italy and enjoys being the guinea pig for new ideas and kickstarting new projects and efforts on the team. She's been a wonderful contributor to our ubuntu autopilot tests project, happily helping lead the charge towards automating our favorite desktop applications.

1) Could you provide a bit of background about yourself?

My name is Carla Sella (Letozaf_), I am Italian and I was born in South Africa. I work as a System Administrator in an Italian firm. I always loved having Linux installed on my PC's as I believe that "the only limiting factor of the Linux operating system is it's user". The thing I like most about Linux is the chance to hack and learn things.
I have tried various Linux distributions in the past, both at work and at home (maybe even Ubuntu), but it was only when a friend of mine told me about Ubuntu and the Ubuntu Community that I decided to give Ubuntu a better try and installed it on my PC, and now it's on my notebook, my husbands PC, my son's notebook and as soon as I will be able to, it will be installed on my Asus Eee Pad and my phone :D.
What I like about Ubuntu is the way Canonical and the Community are trying to make Ubuntu  an operating system for everyone, easy to use and not only for a restricted number of geeks. I think this is the best way to fix bug #1. Even if Ubuntu is "easy" to use this doesn't mean you cannot open a terminal and do some hacking too. With Ubuntu you can be a "normal user" or a hacker :).

2) How did you become invovled with the Ubuntu community?

I got involved in Ubuntu when a friend of mine, that is in the Italian Ubuntu Community, told me about the Ubuntu Community and how to contribute to Ubuntu.

3) What attracted you to the quality team?

The fact that I love Linux as you can learn a lot using it, joining the quality team is really cool and gives you the chance not only to learn a lot about Ubuntu and Linux, but also to try all the new features and "play" with them helping test Ubuntu before it's released.
You can do a lot of things from writing test cases to automatic testing, you just have to choose what you prefer doing best. Helping developers fix bugs you find is really cool as it makes you feel part of the Ubuntu world. And best of all you get to know a lot of interesting people from all over the world and you can exchange knowledge and improve your skills while helping test the latest Ubuntu release.

4) What would you say to folks new to ubuntu and/or testing?

Come and join the fun!
If you are a sort of a hacker and like to play around with Linux, you are in the right place. You can learn a lot and help Ubuntu while having fun.If you are not a hacker but a "normal" user, come an join too, you can also help by carrying out the easiest tests. There is place for everyone wanting to help Ubuntu work better and have less bugs. So stop complaining about the bugs and start helping to fix them :p.

Testing ubuntu on ARM with a pandaboard5) How would you describe the community and the experience of using ubuntu?

The community is friendly, collaborating, fun, looking forward to the future and gives you the chance to improve yourself.
When I went to UDS-R back in October/November 2012 I got to know a lot of fantastic persons I had just known on IRC or by mail, they were all very kind and couldn't believe the warm welcome I received from everyone. Using Ubuntu is both user-friendly and hacky. I have been using Ubuntu for quite a long time now and  the improvements that have been made since then are incredible. It has changed a lot and is, to my opinion, the easiest and the most user-friendly  Linux distribution around.

6) What would you like to see in the future for ubuntu?

I wish Ubuntu will have the majority market share :p.

7) Do you have a favorite experience to share from being a part of ubuntu?

I have a lot of nice experiences, but maybe the favorite ones are testing Ubuntu 12.10 kernel on 12.04 userspace, hacking Autopilot with Nicholas, and trying out Umockdev with my camera on Shotwell with Martin.

8) What is your favorite activity or interest outside of computing (including ubuntu!)?

I love traveling, I like visiting places and seeing different cultures, how they live and how the places look like.
Most of all I like staying with my 7 year Son.

Nicholas Skaggs: Meet the Ubuntu Quality Community!

Wed, 2013-05-01 21:36
I'm happy to announce a little blog mini-series, conspicuously entitled "People behind Ubuntu Quality". The next several posts will bring to you a set of interviews conducted with some ubuntu quality members. The interviews show the diversity in our team and work, along with the shared passion and interest we have.

Over the next several posts, you'll get a chance to virtually "meet" a few of the team members and witness the passion and diversity the team offers. Remember, we want you too! If you are curious to share in the excitement, have a passion to learn something, or have knowledge or skills that could help, please consider joining us. Now is an excellent time to learn the ropes, engage yourself and help ensure quality in the next Ubuntu release, Saucy Salamander!

Benjamin Kerensa: Interview with Linux Action Show: Firefox OS, Ubuntu Touch and Mir

Wed, 2013-05-01 19:05

At LinuxFest Northwest last weekend I had an opportunity to sit down with a number of folks and do interviews and talk about everything from Firefox OS to Ubuntu Touch. I have grown really fond of Linux Action Show and it was great to sit down with these guys and talk shop.

My interview starts at 25:44

If you are viewing this post from a Planet please click here to watch on YouTube and don’t forget to subscribe to their show here.

The post Interview with Linux Action Show: Firefox OS, Ubuntu Touch and Mir appeared first on Benjamin Kerensa dot Com.

Raphaël Hertzog: My Free Software Activities in April 2013

Wed, 2013-05-01 16:49

This is my monthly summary of my free software related activities. If you’re among the people who made a donation to support my work (102.70 €, thanks everybody!), then you can learn how I spent your money. Otherwise it’s just an interesting status update on my various projects.

Debian France

Work on Galette. I spent quite some time on Debian France’s galette installation (the web application handling its member database), first converting its Postgres database to UTF-8, then upgrading to 0.7.4 while working-around many known problems.

I also created Debian packages of three Galette plugins that we have been using (galette-plugin-paypal, galette-plugin-admintools, galette-plugin-fullcard).

But every time I use galette, I tend to find something to report. This month I filed 5 tickets:

  • #588: galette should offer a way to send a test mail while setting up the mail notifications
  • #589: CSV export page contains an invalid download link
  • #590: confirmation page of a successful PayPal payment contains empty fields
  • #591: problem with the selection of recipients of a mailing
  • #595: galette should put a proper recipient in the “To:” field of automatically generated mails.

I tested quite some fixes prepared by the upstream author (3 of the above bugs are already fixed) and this lead to the 0.7.4.1 bugfix release.

Preliminary work on new bylaws. I have setup a git repository to make it easier to collaborate on new versions of our bylaws and internal rules. The goal is to make Debian France a trusted organization of Debian and to update everything to be compliant with the “association 1901” law (we currently have a special statute reserved to associations from Alsace/Moselle).

Kali Linux

Improve accessibility support in Debian Wheezy. Offensive Security wanted Kali Linux to be fully accessible to disabled people. Since Wheezy was suffering from some serious regressions in that area, we hired Emilio Pozuelo Monfort to fix #680636 and #689559 in gdm3. On my side, I updated debian-installer’s finish-install to correctly pre-configure the system when you make an install with speech synthesis (patch submitted in #705599).
Thanks to accommodating release managers, this work has already been integrated in Wheezy and won’t have to wait the first point release.

Fix bugs in Debian’s live desktop installer. We also wanted to enable the desktop installer in the Kali live DVD. While our first tries a few months ago failed, this time it worked almost out of the box (thanks to Ben Armstrong who fixed it). I still identified a few issues that I fixed in debian-installer-launcher’s git repository.

Packaging and misc Debian work
  • I reviewed the work of Charles Plessy who drafted an important update of the Debian Policy to document dpkg triggers (see #582109)
  • I reviewed the libwebsockets package prepared by Peter Pentchev (ITP 697671)
  • I discovered Tanglu and joined their mailing list because I want to watch its evolution (and maybe use it as a test-bed for some future infrastructure developments).
  • I reviewed and committed a patch of Robert Spencer on debian-cd (see #703431).
  • I packaged version 3.3 of cpputest (in experimental). I tested a new upstream snapshot converted to autotools.

I also spent a significant number of hours to answer questions of students who want to participate in Google’s summer of code and who are interested by the rewrite of the Package Tracking System with Python and Django. Some of the discussions happened on debian-qa@lists.debian.org.

Thanks

See you next month for a new summary of my activities.

No comment | Liked this article? Click here. | My blog is Flattr-enabled.

Jorge Castro: Juju Charm Store updates for 1 May

Wed, 2013-05-01 16:46
Meeting Details
  • Hangout URL: https://plus.google.com/hangouts/_/c90e71c6c9f5031e7b771639e8c0ea793a645663?authuser=0&hl=en
  • Video recording: http://youtu.be/6nB3isrvAaw
  • Pad: http://pad.ubuntu.com/7mf2jvKXNa
  • Status Board: https://trello.com/board/charmers-board/4ec1696da3f94bd2ea5b2b01

## Updates this past weeK:

Charm Tools
  • Marco to post status/instructions of charm-tools to mailing list.
  • instructions on how to add categories and icons.
Docs
  • Aiming to have charm section to be done tomorrow (2013-05-02)!
  • Beta docs coming shortly, Getting Started is done.
  • Developer documentation to come after user docs.
  • hoping to get lots of feedback from Beta
Juju Images to reference on HP Cloud
  • Ben Howard/smoser working this so we don’t have to keep updating the config files for new images. (simple stream data generated in the future). vUDS 1305
  • Email any topic ideas to ubuntu-server list
Charm Testing (Marco)
  • Drastically improved, but not 100%. There’s still some false positives, hope to finish that this week.
    • About 85-95% accurate currently.
  • Jenkins Status
Charm Framework Updates
  • Mims @ Rails Conf this week in Portland
    • Mims texted Jorge that he’s had decent contact with people @ Railsconf wrt. the rails charm.
  • Always looking for Java stacks.
CFPs & Upcoming Events
  • LISA13 - DONE!
  • Strata Europe - Jamespage to submit
  • Strata NY - Jamespage to submit
  • Ben Howard @ OpenWest Conference in Utah (May 3rd) - jorge to events list.
  • Juan @ Cisco’s Open Conference
  • Join Mark Mims @ Gluecon to talk Juju!
Misc
  • Matt Griffin from Percona dropped in. James Page to link up with him at vUDS. (Jorge too).

Canonical Design Team: Weather & Clock app visual exploration

Wed, 2013-05-01 16:01

Thank you for all your positive feedback after our first blog post.
We are very excited and are continuing with the designs,
here’s a quick update on how we’re getting on.

During the last few weeks we have been looking at the development of the weather and clock apps. We are also looking at set of gradients that could specify a range of weather conditions.

Here’s the how

A linear colour gradient is specified by two points, and a colour at each point. The colours along the line through those points are calculated using linear interpolation, then extended perpendicular to that line.

* wikipedia.org

 
This is great way to describe temperature and how it changes over 24 hours.

The second part of developing these apps was to create a set of graphic assets that could support the weather icons as well as the clock face.

Using entirely white mono assets was obvious to contrast with the colourful changing backgrounds.

But we quickly realized that the graphic style of our icons used as indicators or toolbar actions did not fit well for those assets. The weather icons, for example, looked a bit too heavy while we wanted something more zen and simple to blend nicely with the minimalistic and elegant design of the apps.

We replaced the solid fills with thin outlines and add some roundness to the end of the strokes. The weather icons have become playful but graceful, while keeping their plain but not to simplistic in the look and feel.

The clock faces are designed following to the same principles. With great results?

You be the judge ;)

 
 
 

Jorge Castro: 13 Reasons to Deploy With Ubuntu Server (part 3)

Wed, 2013-05-01 13:47
LXC/Containers and Vagrant

It seems that a bunch of the things I’ve been talking about so far are ops focused. Juju straddles both dev and ops, it’s why we call it “DevOps Distilled”. I’d like to point out some of the nice things that are useful for developers as well.

The first is our LXC support. You can think of Linux containers as “super chroots”, that let you segment whatever you want on a machine without the overhead of virtualization. We can use it to segment your deployed services with Juju, or you can use them to play with things in a nice little sandbox. And yes, we’ve got our eyes on Docker too.

Speaking of sandboxes, we also now provide official Vagrant images so you can quickly fire up server instances on any OS to do your development on. And just like the rest of our cloud images, frequently updated and fully supported.

Landscape

Organizations need to manage large fleets of Ubuntu systems, and that’s where Landscape comes in. As the usage of Ubuntu server to deploy services scales out seamlessly through Juju, your infrastructure needs day-to-day tending to.

Landscape lets you manage thousands of Ubuntu servers with the same ease you would manage one - you can fix a security issue affecting hundreds of machines with a single click, and what’s more you can prove you did to your compliance or governance team without having to spend time creating the paper trail yourself - that is a really big deal if you work in an IT department and don’t enjoy spending your time creating reports.

Landscape is designed from the ground-up to manage Ubuntu systems, and that reflects on the tight integration between Ubuntu core components and Landscape. In Ubuntu, we use apt to update systems from the shell - Landscape talks to apt, not a different custom backend, so if you know how apt behaves, you already know how Landscape does it - this is a design style that makes the learning curve for Landscape much nicer than other tools’ - and makes it inherently shell-compatible, for we understand very well that an administrator’s debug tool of choice is SSH.

Landscape’s management goodness is exposed through its server’s API - providing you with a robust toolset of management actions that are maintained for you across all current Ubuntu releases, from cutting edge Raring to reliable and dependable Precise - any architectural differences are taken care of for you, so you don’t have to.

Landscape is built for enterprises customers, and it has both SAAS and Dedicated Server editions. A free 30-day trial is available for those who want to try first hand.

Ubuntu and its community

Sounds kind of cheesy, but Ubuntu itself is a feature.

  • There are no “enterprise” and “free” versions of Ubuntu. It’s all just Ubuntu, and it’s all free to the end user. That’s right. We don’t artificially split the OS. If Ubuntu works out of the box for you and you’re skilled enough to use it, you’re good to go. You get the exact same OS, with the exactly same support that paying customers get. This does motivate us to provide excellent support options (see below).

Run into a problem? Well you can call us and get support, all without having to reinstall from the “free version” to the “paid version”. No shuffling licenses either or caring about which of your systems are supported or covered, and no waiting for security fixes to trickle down to your free version. Just pay for what you use.

  • cloud-init - You can control instance initialization with cloud-init. It’s like preseeding/kickstarting a server, but in the cloud.

  • The community - the massive resources of the Ubuntu community is available to you. And it’s not just about support, it’s about things like a wide range of PPA archives of contributed packages and ecosystem of packages for things that run on Ubuntu, but might not be part of the distro itself.

  • Built on Debian. `Nuff said. So you get nice things like tasksel tasks, allowing you to simply install Mail, Web Server, or LAMP stacks with one checkbox and the breadth of software of the Debian archive.

  • A predictable and solid release cycle, with 5 years of support for our LTS releases.

Ubuntu Advantage

As I mentioned above, since Ubuntu is free-to-use we are extremely motivated to provide service that offers a good value. Our service offerings are split into two areas, server and cloud:

Here are our prices for traditional servers, starting as low as $320 per box. And here are our cloud prices. You can also add on Landscape and what we call Premium Service Engineers. PSEs are our best-of-the-best. If you need an expert to solve your toughest problems, you can add on a PSE.

Shop around and check out our competitor’s too, you’ll find that our prices very competitive.

You’re in fine company

Along with Netflix, Wikipedia, Inktank, AT&T, HP, Dreamhost, Rackspace, Instagram, Dropbox, SmugMug, HP, Samsung, NTT, Deutsche Telekom, 10gen, and Amazon. They, and many others, chose Ubuntu Server because of some or all of the things I mentioned above.

So that’s the jist folks. Ask you can tell we’re pretty excited about the things we’re bringing to the cloud and your server room. We’re one year away from our next Long Term Support (LTS) release and committed to bring all of these technologies to bear. Some of them have been in the cooker for a bit (MAAS and Juju) and are still under heavy feature development, so if you were an early adopter and been burned by a bug or lack of a feature, now is the time to start looking at it again and giving us feedback. As the Fall approaches we’ll be shifting to getting ready for 14.04 LTS and keep on pushing the envelope of the cloud.

Check out the previous sections if you missed them:

Jeremy Kerr: Linked-list debugging in gdb

Wed, 2013-05-01 07:38

Quite a few of the codebases I've worked on have some form of linked list implementation; generally a list node type:

struct list_node { struct list_node *prev; struct list_node *next; };

... and sometimes (for type-safety) a separate type for the lists themselves:

struct list { struct list_node head; };

Debugging these lists often means a lot of manual pointer-chasing, which can be error prone. If your list iterators are causing segfaults, it'd be nice to be able to track down invalid list entries.

python gdb extensions

It turns out we can write a little code to automate this, using the gdb module. Amongst other things, we can define our own commands to use in the standard gdb interpreter.

The skeleton code to implement a gdb command in python goes something like this:

import gdb class MyNewCommand(gdb.Command): def __init__(self): super(MyNewCommand, self).__init__("my-new-command", gdb.COMMAND_DATA, gdb.COMPLETE_SYMBOL) def invoke(self, argument, from_tty): args = gdb.string_to_argv(argument) expr = args[0] list = gdb.parse_and_eval(expr) # command implementation goes here ... MyNewCommand()

In a nutshell:

  • We define a new subclass of gdb.Command
  • Our new class' __init__() function will register the command name ("my-new-command" in this example) with the gdb interpreter, and pass a few hints about the command's usage.
  • The invoke() function is called when the user invokes the command at the gdb interpreter interface.
  • The invoke() implementation can access the debugger's state thorugh the gdb python module.
  • Finally, we create an instance of the new class to get it registered with the interpreter.

The class' docstring is used by gdb's inline help command, which makes documenting your new command a total piece of cake.

Back to our list example, I've written a little python gdb extension to iterate and print a list:

#!/usr/bin/env python import gdb class ListPrintCommand(gdb.Command): """Iterate and print a list. list-print <EXPR> [MAX] Given a list EXPR, iterate though the list nodes' ->next pointers, printing each node iterated. We will iterate thorugh MAX list nodes, to prevent infinite loops with corrupt lists. If MAX is zero, we will iterate the entire list. List nodes types are expected to have a member named "next". List types may be the same as node types, or a separate type with an explicit head node, called "head".""" MAX_ITER = 20 def __init__(self): super(ListPrintCommand, self).__init__("list-print", gdb.COMMAND_DATA, gdb.COMPLETE_SYMBOL) def invoke(self, argument, from_tty): args = gdb.string_to_argv(argument) if len(args) == 0: print "Argument required (list to iterate)" return expr = args[0] if len(args) == 2: max_iter = int(args[1]) else: max_iter = self.MAX_ITER list = gdb.parse_and_eval(expr) fnames = [ f.name for f in list.type.fields() ] # handle lists with a separate list type.... if 'head' in fnames: head = list['head'] # ...and those with the head as a regular node elif 'next' in fnames: head = list else: print "Unknown list head type" return # if the type has a 'prev' member, we check for validity as we walk # the list check_prev = 'prev' in [ f.name for f in head.type.fields() ] print "list@%s: %s" % (head.address, head) node = head['next'] prev = head.address i = 1 while node != head.address: print "node@%s: %s #%d" % (node, node.dereference(), i) if check_prev and prev != node['prev']: print " - invalid prev pointer!" if i == max_iter: print " ... (max iterations reached)" break prev = node node = node['next'] i += 1 if check_prev and i != max_iter and head['prev'] != prev: print "list has invalid prev pointer!" ListPrintCommand()

This defines a new function, list-print, which takes an expression as an argument, and iterates through the list nodes:

(gdb) list-print handler->devices[0]->device->boot_options list@0x6128f0: {prev = 0x6129f8, next = 0x613918} node@0x613918: {prev = 0x6128f0, next = 0x613568} #1 node@0x613568: {prev = 0x613918, next = 0x6131b8} #2 node@0x6131b8: {prev = 0x613568, next = 0x612e08} #3 node@0x612e08: {prev = 0x6131b8, next = 0x6129f8} #4 node@0x6129f8: {prev = 0x612e08, next = 0x6128f0} #5 (gdb)

To use the gdb-list macro: download gdb-list.py (2.2 kB), and source it into your gdb session:

(gdb) source ~/devel/gdb-list/gdb-list.py

Then you should be able to invoke list-print <symbol> to debug your list structures. Typing help list-print will show the command's docstring:

(gdb) help list-print Iterate and print a list. list-print <EXPR> [MAX] Given a list EXPR, iterate though the list nodes' ->next pointers, printing each node iterated. We will iterate thorugh MAX list nodes, to prevent infinite loops with corrupt lists. If MAX is zero, we will iterate the entire list. List nodes types are expected to have a member named "next". List types may be the same as node types, or a separate type with an explicit head node, called "head". (gdb)

John Baer: Chromebook Yoga

Tue, 2013-04-30 23:27

Thinking about a touch enabled Chrome OS started by brain to consider where Google may be going with the OS and supporting Chromebook hardware. The rumors of a tablet version of Chrome OS has lead some to believe Chrome OS is being fitted as the successor to Android but I believe it is heading in a completely different direction.

Observations From the Trenches

Where I work laptops are quickly becoming a relic and the new norm is keyboard enabled tablets. I believe Microsoft and other manufacturers observed the same thing which lead to the birth of the laptop convertible, tablet PC, or hybrid laptop.

But adding a keyboard to a tablet presents a few challenges.

Use Cases

Keyboard Attached

The easy part is when the keyboard is attached. Simply put it becomes a laptop and the keyboard is not in the way because it is being used. The engineering challenges become building a keyboard which offers a pleasant typing experience. My experience with the Microsoft Surface RT touch cover is it behaves just the way it looks and the tactual feedback is an adjustment. Some manufactures are offering a raised key cover which is a step in the right direction.

Keyboard Detached

The problem with many tablet keyboards is; what do you do with them when you don’t want or need them? Whether its “blue tooth” or “physically connected” an undocked keyboard quickly becomes excess baggage.

Introducing the Chromebook Yoga Concept

The Lenovo IdeaPad Yoga makes so much sense for a Chromebook it hurts. The design concept is fiendishly cleaver and incredibly functional. Lenovo must agree as they already have three Yoga models; 11, 13, and the just announced 11s.

For Google the implementation is easy as the design is fully cooked waiting for the installation of the OS. In this scenario the value of a touch based Chrome OS becomes blatantly clear.

Opportunities for Improvement

I strongly suggest swapping out the Tegra 3 SoC in the Yoga 11 to a Tegra 4 and use Haswell (Intel) silicon in the 11s and 13 to improve battery life. In all models I would upgrade to a HD quality display.

As Chrome OS code updates already reveal the testing of new ARM and Intel Haswell hardware, I would really like to see a Chromebook Yoga.

Read more about this product here.

The post Chromebook Yoga appeared first on j-Baer.

Ted Gould: Bustle Boot Log Under Upstart

Tue, 2013-04-30 18:59

For a while I've had a little project for debugging the desktop. Basically it starts tracking all of the DBus events on the user session startup so that you can figure out what's going on. This is especially an issue for indicators, where they're started at login, and sometimes it can be hard to track what is happening.

Previously it was pretty hard to inject into the startup of the session. Getting in the middle of building a very long command line was risky and pretty fragile. Not proud of what I had to do. Now that I have Upstart user session running, I took the opportunity port this debugging script over to Upstart.

Now I have this one simple configuration file that can be dropped in /usr/share/upstart/sessions and gets started immediately after dbus:

description "Bustle Boot Log" author "Ted Gould " start on started dbus stop on desktop-end script rm -f ~/.cache/bustle-boot-log/boot-log.bustle mkdir -p ~/.cache/bustle-boot-log/ timeout -s INT 30 bustle-pcap --session ~/.cache/bustle-boot-log/boot-log.bustle & end script

The beauty of this is that I can inject this small little script in, and have Upstart figure out all the startup mess. I also have minimal impact on the natural desktop boot which is critcial for testing. Simple things to make debugging easier.

Martin Pitt: PyGObject 3.9.1 released

Tue, 2013-04-30 18:55

Time for the first PyGObject release for GNOME 3.9.x! This release brings the performance optimizations (thanks to Daniel Drake), quite a lot of internal code cleanup, and various bug fixes.

Thanks to all contributors!

  • gtk-demo: Wrap description strings at 80 characters (Simon Feltman) (#698547)
  • gtk-demo: Use textwrap to reformat description for Gtk.TextView (Simon Feltman) (#698547)
  • gtk-demo: Use GtkSource.View for showing source code (Simon Feltman) (#698547)
  • Use correct class for GtkEditable’s get_selection_bounds() function (Mike Ruprecht) (#699096)
  • Test results of g_base_info_get_name for NULL (Simon Feltman) (#698829)
  • Remove g_type_init conditional call (Jose Rostagno) (#698763)
  • Update deps versions also in README (Jose Rostagno) (#698763)
  • Drop compat code for old python version (Jose Rostagno) (#698763)
  • Remove duplicate call to _gi.Repository.require() (Niklas Koep) (#698797)
  • Add ObjectInfo.get_class_struct() (Johan Dahlin) (#685218)
  • Change interpretation of NULL pointer field from None to 0 (Simon Feltman) (#698366)
  • Do not build tests until needed (Sobhan Mohammadpour) (#698444)
  • pygi-convert: Support toolbar styles (Kai Willadsen) (#698477)
  • pygi-convert: Support new-style constructors for Gio.File (Kai Willadsen) (#698477)
  • pygi-convert: Add some support for recent manager constructs (Kai Willadsen) (#698477)
  • pygi-convert: Check for double quote in require statement (Kai Willadsen) (#698477)
  • pygi-convert: Don’t transform arbitrary keysym imports (Kai Willadsen) (#698477)
  • Remove Python keyword escapement in Repository.find_by_name (Simon Feltman) (#697363)
  • Optimize signal lookup in gi repository (Daniel Drake) (#696143)
  • Optimize connection of Python-implemented signals (Daniel Drake) (#696143)
  • Consolidate signal connection code (Daniel Drake) (#696143)
  • Fix setting of struct property values (Daniel Drake)
  • Optimize property get/set when using GObject.props (Daniel Drake) (#696143)
  • configure.ac: Fix PYTHON_SO with Python3.3 (Christoph Reiter) (#696646)
  • Simplify registration of custom types (Daniel Drake) (#696143)
  • pygi-convert.sh: Add GStreamer rules (Christoph Reiter) (#697951)
  • pygi-convert: Add rule for TreeModelFlags (Jussi Kukkonen)
  • Unify interface struct to Python GI marshaling code (Simon Feltman) (#693405)
  • Unify Python interface struct to GI marshaling code (Simon Feltman) (#693405)
  • Unify Python float and double to GI marshaling code (Simon Feltman) (#693405)
  • Unify filename to Python GI marshaling code (Simon Feltman) (#693405)
  • Unify utf8 to Python GI marshaling code (Simon Feltman) (#693405)
  • Unify unichar to Python GI marshaling code (Simon Feltman) (#693405)
  • Unify Python unicode to filename GI marshaling code (Simon Feltman) (#693405)
  • Unify Python unicode to utf8 GI marshaling code (Simon Feltman) (#693405)
  • Unify Python unicode to unichar GI marshaling code (Simon Feltman) (#693405)
  • Fix enum and flags marshaling type assumptions (Simon Feltman)
  • Make AM_CHECK_PYTHON_LIBS not depend on AM_CHECK_PYTHON_HEADERS (Christoph Reiter) (#696648)
  • Use distutils.sysconfig to retrieve the python include path. (Christoph Reiter) (#696648)
  • Use g_strdup() consistently (Martin Pitt) (#696650)
  • Support PEP 3149 (ABI version tagged .so files) (Christoph Reiter) (#696646)
  • Fix stack corruption due to incorrect format for argument parser (Simon Feltman) (#696892)
  • Deprecate GLib and GObject threads_init (Simon Feltman) (#686914)
  • Drop support for Python 2.6 (Martin Pitt)
  • Remove static PollFD bindings (Martin Pitt) (#686795)
  • Drop test skipping due to too old g-i (Martin Pitt)
  • Bump glib and g-i dependencies (Martin Pitt)

Pages