Canonical Voices

Posts tagged with 'planet ubuntu'

Stéphane Graber

A few months ago, I received two test SIM cards for Orange Poland’s new IPv6 network.

The interesting thing about this network is that it’s running IPv6 in a fairly unusual configuration and it was interesting to see how to get that work on Ubuntu.

This network uses two separate APNs, one for IPv4 (internet) and one for IPv6 (internetipv6).
Using two separate APNs is certainly easier on the carrier’s infrastructure side as they can get IPv6 online without actually changing anything on the IPv4 equipement, however that means that any client wanting to use both protocols at once needs to use multiple PDP contexts.

I’m now going to detail how to manually configure ppp to connect to such a network:
/etc/ppp/peers/orange

noauth
connect "/usr/sbin/chat -e -f /etc/ppp/peers/orange-connect"
/dev/ttyACM0
460800
+ipv6

/etc/ppp/peers/orange-connect

TIMEOUT 5
ABORT BUSY
ABORT 'NO CARRIER'
ABORT VOICE
ABORT 'NO DIALTONE'
ABORT 'NO ANSWER'
ABORT DELAYED
ABORT ERROR
'' \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\nAT
TIMEOUT 12
OK ATH
OK ATE1
OK 'AT+CGDCONT=1,"IP","internet"'
OK 'AT+CGDCONT=2,"IPV6","internetipv6"'
OK ATD*99#
CONNECT ""

Then all that’s needed is a good old:

pon orange

And a few seconds later, I’m getting the following on ppp0:

ppp0      Link encap:Point-to-Point Protocol  
          inet addr:87.96.119.169  P-t-P:10.6.6.6  Mask:255.255.255.255
          inet6 addr: 2a00:f40:2100:ac9:8c1e:da60:93e2:c234/64 Scope:Global
          inet6 addr: 2a00:f40:2100:ac9::1/64 Scope:Global
          inet6 addr: fe80::1/10 Scope:Link
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:13 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:354 (354.0 B)  TX bytes:767 (767.0 B

This config should work for any mobile network using a similar setup (likely to become more and more popular as the various RIRs are running out of IPv4).

Sadly ModemManager/NetworkManager don’t support mutliple PDP contexts yet, though it’s being discussed upstream, so we can hope to see something land soon.

Apparently multiple PDP contexts support is also dependant on hardware. In my case, I’ve been using an “old” Nokia E51 over USB as I didn’t have any luck getting that to work with an Android phone. My Nokia N900 also worked but required a custom kernel to be installed first to properly handle IPv6.

Read more
jono

Last week Benjamin Otte shared some thoughts about GNOME that were pretty stark. It gathered some steam and hit Slashdot and this all happened the week GUADEC was taking place in A Coruña. I wasn’t at GUADEC :-( but I can imagine there was some fervent discussion about the blog entry.

The gist of Benjamin’s blog was that people are leaving GNOME, that the project is understaffed, and arguably the reason for this is that GNOME has lost its direction and Red Hat have overtaken the project as the primary contributor-base. Of course I am summarizing, but check out the original post if you feel I am not representing Benjamin’s views fairly.

I wanted to share a few thoughts. To be clear: these thoughts are my own, and I am not speaking on behalf of Canonical, but I am speaking from my experiences as someone who has primarily been affiliated with Ubuntu and as a Canonical employee. My feedback is going to be frank but I really do care about GNOME as a project, and this feedback is intended from a position of love for the project and to be open and transparent about my own experiences as just one set of eyeballs in this story.

Actual eyeballs.

Fortunately, I think all of these problems are solvable, but for them to be solved GNOME is going to need to do a little soul searching to discover and focus on the right problems and explore and deliver the right solutions.

A Little History

To provide a little context, my interest in GNOME pre-dates my involvement in Ubuntu. I have worked on a few applications that use the GNOME platform (Jokosher, Acire, Lernid, and most recently Ubuntu Accomplishments) and I have had a long interest in where the project is moving forward and as a core part of Ubuntu. I used to go to GUADEC every year, and I consider many folks in the GNOME project to be good friends.

While I care about where the project moves forward I too have also become concerned about the direction it is going in, not in terms of the design and user experience of GNOME (there are other, better versed people to assess this work), but instead in terms of how the project works with others such as companies, developers, and other partners.

In my mind GNOME has become bittersweet. I remember back at GUADEC in Stuttgart in 2005, discussions started happening about what form GNOME 3 would be in. As the years progressed the project struggled to decide on a final vision for what GNOME 3 would look like. This is not surprising: GNOME 2 was such a smashing success that GNOME 3 was going to be difficult second album time. Ideas were shared and bike-shedding occurred, but ultimately it seemed that the project was lacking leadership to take take all of these ideas and flip the switch to a vision and design and move it forward.

Around this time Ubuntu had become arguably the most popular way in which people were consuming GNOME and we (Canonical) were hiring more and more people to perform this integration work (which is no light task, as any distro developer will tell you).

If all else fails, bribing people with bubble-wrap grows popularity.

Back then Canonical was taking quite a bit of heat for “never writing code and just shipping other people’s work” (which I always found a misguided viewpoint as integrating and delivering a solid Free Software Operating System is significant work and a great contribution to the wider Free Software commons).

We were starting to find though that there were areas of GNOME 2 that we felt could be improved and expanded (largely based on feedback from our users). We started growing a design competence and hiring developers to build new code to add improvements to the experience. Many technologies were created such as the messaging menu, notify-osd, dbusmenu and the global menu, control center improvements, and ultimately Unity as an additional shell for GNOME.

I remember this time vividly. I was in weekly discussions with Mark Shuttleworth, Rick Spencer (Ubuntu desktop team leader), Ivanka Majic (head of design), and David Barth (head of engineering these components). Our goal was simple: be able to showcase these technologies in Ubuntu and bring value to Ubuntu users, but to also ensure they were contributed to the wider GNOME project as technology that could help the general project in moving forward.

I personally saw this all boil down into pretty simple parts: Canonical and GNOME were partners and it was a mutually beneficial relationship – the GNOME desktop with barely any users defeats it’s purpose and Canonical was helping to deliver it to millions of users in Ubuntu, but Canonical could not build an awesome Ubuntu without the wonderful components in the GNOME desktop to fill in the many different pieces in an OS.

My simple philosophy was also marinaded in the gift culture of Open Source and Free Software: Canonical was paying designers and developers to produce new code that could be of value (and thus offered as a gift to the GNOME commons) and as with all gifts, while it may not be exactly what you want (and may need some adjustments and improvements), I presumed there would be a polite, respectful, and open discourse to take these contributions and bring them into the shared commons that was GNOME, particularly as they were created with GNOME in mind.

This was not my experience of what happened.

Partners

I was really disappointed with what resulted. After years of Canonical and Ubuntu being criticized for not contributing code, when we then engaged in writing code we were met with a frosty, suspicious, and at times, frankly entitled attitude from some parts of the GNOME camp.

Now, don’t get me wrong, Canonical was not perfect here either. I fully admit that some of this relationship could have been handled better (and I am partially to blame here). We made some mistakes early on in which code was released too late and there was sometimes not enough open discussion. Retrospectively, we could definitely have done better in being more pro-active in some parts of the relationship too. At the time we were still learning how to do this, and as such we made some mistakes too.

Canonical wanted to strike the right balance of bringing innovation to Ubuntu releases with new features, but to also openly engage and contribute that innovation to upstreams such as GNOME. My goal here is not to open up a blame game of who did what and when (I will leave that to the commentators ;-) ), but what disappointed me most about the whole situation was that from my personal perspective it seemed that some influential members of the GNOME project were treating Canonical’s contributions more critically and suspiciously than others.

Now I haver never subscribed to conspiracy theories, and I don’t believe that there was a shadowy GNOME Illuminati that was meeting together in a hollowed out volcano to plan how to keep Canonical and their contributions out of GNOME, but I was surprised and disappointed at the attitude that came out of parts of the GNOME project to us, when we were ultimately delivering GNOME to millions of users as well as writing new code that could enhance GNOME. It just seemed incredibly entitled.

The shadowy GNOME Illuminati

There were three things that really blew my mind about all of this:

  1. From my experience of working on volunteer Open Source projects, new volunteers and their code contributions are tremendously valuable. As an example, if someone comes to my current project (Ubuntu Accomplishments) and is willing to propose new, disruptive ideas, and willing to contribute chunks of code, I will treat those people with open arms. Being challenged is a good thing: it keeps us fresh, and a challenging, innovative idea followed up with running code is awesome. Now, of course, this is not to say that writing code automatically gets the contribution into the core project, but I would treat the entire social engagement with someone offering such a gift with positive open discussion to see how we could find a great solution that makes everyone happy. This seems an area where things could be improved with GNOME.
  2. If I was also running a project that was understaffed and struggling to define its direction (which I would argue was the case with GNOME at the time) I would treat such new contributions as wonderful ways of solving problems and building a new direction for the project, particularly if our major distributor was going to be delivering that technology anyway. Code is the currency of Open Source, and rejecting chunks of this currency because they don’t fit an as-yet incomplete jigsaw puzzle of a vision just doesn’t make sense.
  3. Without sounding egotistical from the perspective of an Ubuntu guy, I would argue that the vast majority of GNOME consumers were getting GNOME in Ubuntu. Of course, there was and continues to be the wonderful work going into Debian, Fedora, OpenSuSE and others, but it seemed that Ubuntu was the most commonly-used GNOME distribution (I suspect it still is). Again, I saw this as a partnership but from my perspective it seemed like parts of the GNOME project saw Ubuntu as fundamentally subservient to GNOME; as if we had an obligation to deliver whatever the GNOME project saw fit, irrespective of our own ideas and feedback from our users. In my position as an Ubuntu guy, I have always tried to treat our upstreams with maximum respect as they are a big part of who we are; Ubuntu is nothing without awesome apps, and a wonderful integrated experience. I guess I just expected a more positive and collaborative experience with GNOME than I experienced…the kind of collaborative experience that I had known and loved in the earlier days of GNOME.

Of course, it takes two to tango and we at Canonical could have no doubt done better to improve our relationship with GNOME, but I remember back then feeling like no matter what we tried to do, we came up against resistance from the GNOME project, and this was de-motivating and no-doubt added stress to our relationship.

GNOME 3

To shift gears a little, one of the points in Benjamin’s post was that GNOME 3 is a Red Hat project. To me this is a bit of a double-edged sword.

On one hand, the crux of his point is entirely valid: most people contributing to GNOME seem to be a clique of Red Hat folks. What concerns me a little are the concerns in parts of the community that Red Hat is “running the show” and that much of the decision-making has been private to Red Hat staff.

Here’s the thing: I don’t doubt that this is probably happening, but this is not necessarily a bad thing. These concerns again highlight what I think continues to be an unrealistic expectation in parts of the GNOME project with those who are willing to invest in the platform (in this case, Red Hat). If Red Hat have decided to invest in a team of developers to work on and bring value to GNOME, building Free Software that can be shared with everyone, these contributions should be received with open arms. Leadership is leadership, irrespective of the employer.

Of course, there needs to be a culture of openness and transparency, and I suspect a certain amount of internal water-cooler chat is happening in Red Hat, but you will find that with any commercial team that is actively engaged in a Free Software project; we just need to always try to keep things as open as possible. GNOME is definitely going to need to ensure that the openness and values of open collaboration are not compromised, and an open and frank discussion with the Red Hat team about resolving these concerns is no doubt the best step forward.

Pictured: a proven conflict resolution technique.

I personally think it is wonderful that Red Hat are investing so much in GNOME and they have arguably led in much of the direction and leadership in delivering GNOME Shell and the various other parts of the platform. What seems ironic to me is that the same criticisms that were thrown at Canonical with Unity (as a perceived competitor to GNOME Shell, which it was never intended to be) are now being leveled at GNOME Shell (“you don’t care about our needs”, “you are pushing your own agenda” etc).

Maybe a solution to this problem is to be open and frank about the relationship with Red Hat. As an example, we always try to be open about our relationship between Ubuntu and Canonical; there is no doubt that Canonical drives a lot of the development and innovation in Ubuntu, although this leadership and innovation is firmly rooted in expectations around openness and collaboration. We don’t try to hide the influence Canonical has on Ubuntu, and I wonder whether the wider GNOME community feels comfortable in accepting the influence Red Hat has on the project. This is always a delicate balance.

I would agree with Benjamin that GNOME is essentially a Red Hat project these days, but as I say this is double-edged: the wonderful benefits of the investment from Red Hat will be tinged with the challenges of how vendor-neutral the project wants to remain.

The Future

So what is the future of GNOME and how can these problems be solved? Can they even be solved in the first place?

I think so.

I love GNOME as a project, and I love the folks involved in it. While we don’t always agree, the core ethos and goal of GNOME is admirable: to bring an awesome Free Software desktop to everyone. While I personally prefer Unity as a shell, I think the work that has gone into GNOME Shell has been a wonderful rebirth of the motivation and focus of GNOME. The architects of this vision should be credited in getting GNOME out of the slump I mentioned earlier that seemed to stem from 2005. Of course, I will always be disappointed that GNOME seemed quite so resistant to much of the contributions we wished to make, and I think we could have helped to have moved things along a little faster, but I am delighted that GNOME 3 has got to the point it has got to.

As I mentioned earlier, my feedback here really has nothing to do with the design and technical direction of GNOME, and others can provide more insightful commentary than me. I do though think this people-problem issue of GNOME being a rather difficult project to work and interface with at times is a problem that has not yet been confronted and resolved. While this problem continues to exist, I worry that it will eat away at GNOME more and more.

GNOME is blessed with some wonderful leaders, and I hope that the content in this post can act as some food for thought: I am not expecting everyone to agree with me, but if this opens up a discussion about these topics I will be happy.

What is not a solution is for us to give up on GNOME. I know some folks are moving on from the project and moving onto other things, and we have more competition than ever for desktops, but I still see GNOME as an important foundational component of the Free Software and Open Source desktop today.

Now, I am sure this blog entry is going to result in some folks screaming from the rafters that I am misrepresenting GNOME and it is all Canonical’s fault, and you are entitled to your view. Traditionally I have not wanted to raise these concerns publicly as I didn’t want to cause any further harm in the relationship between Ubuntu and GNOME, but Benjamin’s blog post seemed to offer a good opportunity to throw out some feedback that might be helpful in constructing a solution.

While I don’t have much time to contribute to GNOME formally these days, I am more than happy to talk more, provide any further feedback, and help where else I can. I would love to see the GNOME project that we know and love be back in a healthier state. Thanks for reading.

Read more
Stéphane Graber

With the DNS changes in Ubuntu 12.04, most development machines running with libvirt and lxc end up running quite a few DNS servers.

These DNS servers work fine when queried from a system on their network, but aren’t integrated with the main dnsmasq instance and so won’t let you resolve your VM and containers from outside of their respective networks.

One way to solve that is to install yet another DNS resolver and use it to redirect between the various dnsmasq instances. That can quickly become tricky to setup and doesn’t integrate too well with resolvconf and NetworkManager.

Seeing a lot of people wondering how to solve that problem, I took a few minutes yesterday to come up with an ssh configuration that’d allow one to access their containers and VM using their name.

The result is the following, to add to your ~/.ssh/config file:

Host *.lxc
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
  ProxyCommand nc $(host $(echo %h | sed "s/\.lxc//g") 10.0.3.1 | tail -1 | awk '{print $NF}') %p

Host *.libvirt
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
  ProxyCommand nc $(host $(echo %h | sed "s/\.libvirt//g") 192.168.122.1 | tail -1 | awk '{print $NF}') %p

After that, things like:

  • ssh user@myvm.libvirtu
  • ssh ubuntu@mycontainer.lxc

Will just work.

For LXC, you may also want to add a “User ubuntu” line to that config as it’s the default user for LXC containers on Ubuntu.
If you configured your bridges with a non-default subnet, you’ll also need to update the IPs or add more sections to the config.

These also turn off StrictHostKeyChecking and UserKnownHostsFile as my VMs and containers are local to my machine (reducing risk of MITM attacks) and tend to exist only for a few hours, to then be replaced by a completely different one with a different SSH host key. Depending on your setup, you may want to remove these lines.

Read more
jono

Last week the Ubuntu App Showdown Contest kicked off; a competition in which you lovely people have three weeks to create an awesome app that wows the judges on functionality, presentation/integration, innovation, usefulness, and quality. Up for grabs are System76 laptops and Nokia N9 phones as well as Ubuntu t-shirts and off course…the kudos and high regard of your fellow Ubuntu friends!

With just over a week of the contest completed, we are seeing some wonderful progress reports on the contest reddit page. It is great to see the friendly and competitive spirit and people enjoying building apps on the Ubuntu platform. If you want to join you still have two solid weeks of development time to cook up something awesome. Be sure to see the contest page, the tutorial video for creating your first Ubuntu app, our upcoming video tutorials and workshops, and feel free to ask any questions you need help on.

I thought it could be fun to show some of the screenshots of progress over the last week. I look forward to seeing these apps continue to grow and mature, and others join them… :-)

Let It Flow: a fun game (if you can’t see the video, see it here!

BooruView: image viewer for Booro systems.

Quickly GTK: a graphical interface for Quickly with full HUD support.

HumanTask: a simple task manager.

Web Form-er: a visual HTML form editor.

Ubutar: sync your Ubuntu user picture with your social networking sites (if you can’t see the video, see it here!.

Modem Manager: an app to read and send SMS, send USSD requests, display modem informaion, and enable/disable modem special features

Clamour: a Clam AV powered virus scanner

ShowMyFaves: favorites manages.

Stock Quotes: stock quotes app for your desktop.

jpiiIRC: IRC client.

Houston: a desktop cloud dashboard

Read more
jono

Applications, delivering awesome apps to our users, and making it easy for developers to create and deliver their apps, is going to be critical to success of Ubuntu. Fortunately there is a lot of work going on in this area, more of which I will elaborate on later this week.

Part of this work is going to be making it easy for Ubuntu users to be able to download software. The Ubuntu Software Center is our primary mechanism for this, but we also know that users browse application and upstream websites and will often look at their Download pages to find an Ubuntu download.

Ideally we want any user who looks at a Download page on an application website to see this:

The user can then click this button and view more details, and ratings and reviews of the app in Ubuntu, and install it with just a click.

We Need Your Help!

Right now, many application websites don’t have these buttons on their Download pages. As such, I asked Michael Hall to generate a list of the most popular 100 applications in the Ubuntu Software Center, and generate the HTML.

To help with this, just do the following:

  • Go to the campaign wiki page (you will need to scroll the right to see everything as the page is quite wide)
  • Pick an application.
  • Find the application’s website (you might need to Google this) and see if the button is on their download page.
  • Now find the contact details for the app. This could be a mailing list, a specific person, a general email address etc. Again, you might need to do a little Googling to find the details.
  • Email the contact the HTML snippet for your app from the wiki page and ask them if they could include it on the Download page.
  • Add your name to the wiki page. to indicate that you reached out to them.
  • If you notice that they add it, add a link to the wiki page to the app’s Download page with the button!

If the developer asks why they should do it, emphasize that this will make it easier for Ubuntu users of their app to install it with just a click.

If we can divide and conquer we can spread the buttons further afield and continue to make it easy for people to install their favorate apps in in Ubuntu! Thanks for your help!

Read more
jono

Just a quick note: today I did a Reddit Ask Me Anything, and there were a lot of questions that I answered that cover a range of different topics. You can read it all here.

Read more
jono

I have something rather cool to show you:

This is a screenshot of Ubuntu Accomplishments with support for Ask Ubuntu badges. This means that when you get an Ask Ubuntu badge, you will see a notification bubble appear on your desktop, and you can see all of your Ask Ubuntu badges with the rest of your trophies.

Currently all the Ask Ubuntu badges are working with Ubuntu Accomplishments, and all have working integration tests.

One of the nice features of Ubuntu Accomplishments is that you can browse documentation for the different Opportunities that you have not yet accomplished. This provides a neat way of learning how to accomplish new things.

As an example, I don’t have the Strunk and White Ask Ubuntu trophy yet. When I click on it I see:

While we have all the Ask Ubuntu accomplishments working and all the tests written, we still need help to get the documentation written for all the badges. This is where we need your help.

How To Help

Helping is simple!

Head over to this page for instructions of how to get started. You will basically grab the accomplishments, pick one from the list that has not had documentation written yet, submit the docs, and then tick it off the list.

We really want to get the Ask Ubuntu accomplishments into the 0.2 Ubuntu Accomplishments release next week, so if you folks can help, that would be awesome!

Read more
jono

We are delighted to announce that the Humble Indie Bundle, that was just announced will have all the games available in the Ubuntu Software Center running natively on Ubuntu.

For the next few weeks you can go and donate whatever you like to buy Amnesia: The Dark Descent, Psychonauts, LIMBO, Superbrothers: Sword and Sworcery EP and if you pay more than the average you also get Bastion.

Remember, you only have a few weeks to go and donate whatever you like to buy the games, and when you have bought them from the Humble Indie Bundle Website you can install them with a single click in the Ubuntu Software Center!

Proceeds go to the Electronic Frontier Foundation and Childs Play, so snap up these awesome games, running natively on Ubuntu, and help charities and indie game devs!

We have a few other fun things planned over the next few weeks, so stay tuned!

Go and grab the games!

Read more
jono

Before we get started, I want to offer all of my American friends a thoughtful Memorial Day (I was going to say ‘happy’ memorial day, but there is nothing particularly ‘happy’ about the meaning behind the day). I hope you all have a nice day with family and/or friends.

On an unrelated note, I just wanted to have a quick call for Django web developers to participate in a fun new project as part of the Ubuntu Accomplishments system.

The idea is simple: part of the fun of achieving trophies for things you have accomplished on your computer and in the community is showing your trophies to your friends, colleagues, and other community members.

Fortunately, this is not a particularly complex project to build: it just requires a consistent vision, and plenty of hands on deck to make the magic happen.

To help smooth things along, I wrote a spec complete with mockups and implementation details that explains how the system works, and how some of the functionality could be implemented.

To give you a brief example of how it could work, the idea is that a user can voluntarily show their accomplishments online. When this is enabled you can browse all of their accomplishments on one page:

You can also click on a collection to view the trophies by category:

There are all kinds of other interesting things that we could do too such as showing other people who have accomplished similar trophies, showing statistics, connecting to social media platforms and more.

Getting Involved

Sound interesting? Do you know how to program with Django and want to get involved?

Well, you are a legend. Let me explain how you get started.

  1. First, go and read the spec to get an idea of how the project will work.
  2. Next, join our mailing list and send an email expressing an interesting in participating in the Web Gallery project. You should also read these two threads to get up to sync: 1 2
  3. Now see the Trello board and pick one of the topics that needs completing and assign it to yourself. The Trello provides a nice means to see who is working on what and the status of that work.
  4. Now check out the code with bzr branch lp:ubuntu-accomplishments-web and start hacking.
  5. You can get help on the mailing list as well as in #ubuntu-accomplishments on Freenode IRC.

Thanks and I look forward to you joining our community!

Read more
~apw

The Internet has been alive with doom saying since the IPv4 global address pool was parcelled out.  Now I do not subscribe to the view that the Internet is going to end imminently, but I do feel that if the technical people out there do not start playing with IPv6 soon then what hope is there for the masses?

In the UK getting native IPv6 is not a trivial task, only one ISP I can find seems to offer it and of course it is not the one I am with.  So what options do I have?  Well there are a number of different types of IPv4 tunnelling techniques such as 6to4 but these seem to require the ability to handle the transition on your NAT router, not an option here.  The other is a proper 6in4 tunnel to a tunnel broker but this needs an end-point.

As I have a local server that makes a sensible anchor for such a tunnel.  Talking round with those in the know I settled on getting a tunnel from Hurricane Electric (HE), a company which gives out tunnels to individuals for free and seems to have local presence for their tunnel hosts.  HE even supply you with tools to cope with your endpoint having a dynamic address, handy.  So with an HE tunnel configuration in hand I set about making my backup server into my IPv6 gateway.

First I had to ensure that protocol 41 (the tunnelling protocol) was being forwarded to the appropriate host.  This is a little tricky as this required me to talk to the configurator for my wireless router.  With that passed on to my server I was able to start configuring the tunnel.

Following the instructions on my HE tunnel broker page, a simple cut-n-paste into /etc/network/interfaces added the new tunnel network device, a quick ifup and my server started using IPv6.  Interestingly my apt-cacher-ng immediately switched backhaul of its incoming IPv4 requests to IPv6 no configuration needed.

Enabling IPv6 for the rest of the network was surprisingly easy.  I had to install and configure radv with my assigned prefix.  It also passed out information on the HE DNS servers, prioritising IPv6 in DNS lookup results.  No changes were required for any of the client systems; well other than enabling firewalls.  Win.

Overall IPv6 is still not simple as it is hard to obtain native IPv6 support, but if you can get it onto your network the client side is working very well indeed.

Read more
jono

IMPORTANT: Before I get started, if you are running the daily PPA of Ubuntu Accomplishments, please use the releases PPA instead right now as the validation server is using the 0.1 accomplishments collection as opposed to the faily 0.2 accomplishments. If you are using the daily PPA you accomplishments will not get verified.

Now…normal service resuming…

As we build up to the 0.2 release of Ubuntu Accomplishments we have hit feature freeze and are now focusing on bug-fixing. We have also locked down the strings in the viewer and daemon, and this means that we want to reach out to our awesome community of translators to help get this baby translated into every possible language.

How to help

First, head over and translate the daemon and the viewer:

Helping with this effort is simple. First, please go and help translate the daemon and viewer:

Thanks for your contributions; a few minutes contributing translators can make the Ubuntu Accomplishments experience nicer for thousands of users!

Providing Localized Documentation

When you have translated the daemon and viewer, we really need help translating the Ubuntu Community Accomplishments collection too.

Importantly, this is not just about word-for-word translation from English to another language, but instead providing awesome documentation designed for people who speak your native language.

As an example, every accomplishment has a Summary section which provides an introduction to the accomplishment, what is involved, and what the jargon means. Feel free to write the most detailed explanation you like in your language, even if the original English version is quite short. The English translation is provided as an example: feel free to improve on the summary in your own language.

Another good example are the Links and Help resources: the original English ones will be English resources – feel free to provide resources and links that are native to your language.

I want to encourage you all to help make the documentation for your language the best possible documentation for new users (e.g. “e.g. our French documentation is the most complete of any of the languages!“). :-)

How to help

Here is how you do this as it is a little different:

Contributing is really simple. Just follow these steps:

First, go to https://translations.launchpad.net/ubuntu-community-accomplishments/trunk.

When you go there you might see some languages listed below like this:

If you don’t or would like to select another language, click the Change your preferred languages link and select the languages you want to translate in to. Those languages will now appear like the ones above. The colored bar shows what proportion of the accomplishments are translated (green) and what are not (red).

Now click one of the languages (e.g. if I click on English (United Kingdom)) and you will see the list of things you can translate. Here is an example of one:

The translation of Ubuntu Accomplishments works a little differently. You should IGNORE the English line at the top (e.g. where it says member-loco-team_description) and instead look at the documentation just below. There it tells you which accomplishment you are editing and what the original English translation is. In the above image you can see we are writing German documentation, the accomplishment is ‘LoCo Team Member’ and this specific field in the accomplishment documentation is ‘steps’. More the different fields below.

You can now type your own language’s documentation into the New translation box. For the larger chunks of text you can use the grey button at the end of the New translation box to make the text entry bigger.

If there is already a translation there and you want to edit and improve it, click the Current <language> translation button and the text will be copied to the edit box where you can edit it.

Now click the Save button at the bottom of the page to save your contributions. Sometimes you have to scroll to the right to see the Save button due to some of the long chunks of the text on the page.

Thanks for making Ubuntu easier and more fun to participate in for our community!

Read more
jono

I have rather nice little story to share with you all.

My mother in law, Sue, has what can be best described as a dog-earred mess of a laptop. A reasonably modern Lenovo Thinkpad with Windows Vista, it was painfully slow to use, crammed with all manner of bloatware and pre-installed rubbish that came with the machine and the applications she installed, and likely hiding some spyware, viruses and other uglyness.

Now, I am not a fan of Windows at the best of times, but this was beyond software preferences: the machine was barely usable. Sue though, being the trooper she is, gritted her teeth and just got on with it, going about her business as usual.

Recently here in the USA it was Mothers Day and I had an interesting idea. We had an old Dell Inspiron that has been kicking around for the last four years or so, and I decided to install Ubuntu 12.04 on there for her as a surprise.

So, I downloaded the ISO, put it on a USB stick and the installation went flawlessly. Ubuntu 12.04 detected all of the hardware perfectly, and I rebooted. I was a little curious to see how Unity was going to fare on a machine that to my knowledge is at least four years old, possibly five or six years old, and it was slick and fast. Now, I am not being generous here…the performance is genuinely snappy; I was really quite impressed. Nice work, Unity team. :-)

On mothers day I met up with Sue and her husband and my brother in law (Erica was out of the country) and I gave her the laptop. Naturally, she was overjoyed, but whereas I planned on sitting down with her after dinner to show her how Ubuntu works, we ultimately didn’t get a chance to and she took the machine home with her. As such, all I did was tell her the password for logging in and then she was pretty much on her own with the option of calling me if she got stuck.

Now, Sue is very much a computer novice. She has no outside interest in computers…for her it is a tool, pure and simple. I was a little nervous how she would get on.

A few days later I heard back from her and she was absolutely overjoyed. She was browsing around the machine, installing software, accessing websites in Firefox, creating and saving documents in Libreoffice, and the last I heard from a few hours ago…signing up to Ubuntu One so she can ensure her files are backed up to the cloud.

As just one cog in this Ubuntu and wider Open Source and Free Software machine, I am really proud that we as a community could deliver this experience to her. I am confident that a few years back the experience would not have been so smooth and consistant, and it is fantastic to see Free Software thrilling regular people who just want get things done with their computers, safely and enjoyably. Thanks to everyone who contribute to make this little success story happen. :-)

Read more
jono

Eagle eyed readers may have noticed I have been talking a lot about Ubuntu Accomplishments in the last few weeks…more so than usual… Well, to put it bluntly, my wife has been out of town for a few weeks and as such my evenings have had my husband time replaced with sitting in a darkened room, surrounded by empty Lean Cuisine trays, sipping on coffee, hacking to the sound-track of Gov’t Mule. If I had more hair, I really would feel like was 18 again. :-)

Anyway, enough of the goings on at Castle Bacon, so what is the latest in the Ubuntu Accomplishments camp? Well, I have some fun things to share…

0.2. Like 0.1 But Twice As Awesome

We are now officially on the road to 0.2. We have decided to codename our releases after notable accomplishments in history, so the next release will be codenamed lightbulb and has a release date set for Tues 12th June 2012. You can see our targeted bugs lists (daemon : viewer) to get a feel for what we have yet to do.

While on the covers 0.2 might seem a small and incremental release, there has been a lot going on as we work to bring quality and precision to the code and the user experience.

A New API

The 0.1 release was an important milestone for us. With over 230 people testing it and over 900 trophies issued, we were shocked pleased to see a surprisingly low number of bug reports coming in.

0.1 also helped us to identify the deficiencies in our current API, so we planned on maturing it significantly for 0.2. Rafal Cieslak did a stunning job implementing this work and the API is not only more mature and more consistant, but faster and better testable.

Categories and Sub-Categories

As our accomplishments collection has started grow, it has been clear that we needed two features that were not in 0.1:

  • Accomplishments should be able to appear in multiple categories (e.g Set Up Your SSH key should appear in both Development and Launchpad categories).
  • Some (but not all) categories are too big and general and could benefit from sub-categories (e.g. Games could be divided into different genres or specific games).

To focus on this work I put together a mock-up and explored some different ideas of exposing this cleanly. This was the final design:

Over the weekend Rafal and I tag-teamed this one; Rafal built the support into the API and I built the front-end support for this in the client. It now looks like this:

In this screenshot none of the sub-categories are selected, so all Launchpad accomplishments are displayed. If you click one of the sub-categories it only shows those opportunities. This still needs some visual tweaks and polish, but it works quite nicely.

Multiple Dependencies

Another lesson from 0.1 was that while most accomplishments only need one other opportunity completing first before it can be unlocked, some need more than one. As an example, On Planet Ubuntu requires you to have a SSH key and be an Ubuntu Member. As such, we built in support for multiple dependencies.

Now the client show which dependencies you have yet to accomplish before the opportunity is unlocked:

Credit Where Credit Is Due

Ubuntu Accomplishments is a fairly big vision with lots of moving parts that will involve lots of contibutors. While a few of us hack on the core system, the real value in the system are the hundreds of accomplishments that could be exposed via it. These different accomplishments are available in grouped Collections and we expect many different people to contribute to different collections (e.g. the Ubuntu Community Accomplishments collection).

As such, we wanted to be able to expose these contributions to our clients. To do this we built support into the API for an author field in each accomplisment, and clients can now display this in their help dialog box. Here is the official client showing off the credits:

The default behavior is that it will show the contributors for each collection you have installed as well as the core system.

New Accomplishments

One of the most pleasant outcomes of 0.1 was getting many different accomplishment contributions from the community. In total we have added the following to the Ubuntu Community Accomplishments collection:

  • Accomplishments Contributor
  • Attend LoCo Team Event
  • Bug Squad Member
  • Ubuntu Forums Council Member
  • Ubuntu Forums Staff Member
  • Imported an SSH Key
  • Ubuntu Beginners Team Council Member
  • Ubuntu Beginners Team Member
  • Bug Control Member
  • Ubuntu Forums Ubuntu Member
  • Blog on Planet Ubuntu
  • Ubuntu Cloak
  • Signed Canonical Contributor Agreement
  • Uploaded First Branch To Launchpad

Thanks to Silver Fox, Michael Hall, Matt Fischer, Rafal Cieslek, Angelo Compagnucci, and José Antonio Rey for these contributions!

Would you like to contribute an accomplishment? See the list of ideas and get started!

Ubuntu Desktop Accomplishments

Do you know what is exciting about the following screenshot?

We fixed local accomplishments support in 0.2 (these are accomplishments on your computer such as sending your first email or installing your first application). We will be building out our own desktop collection and the above screenshot shows the very first accomplishment that is in the new Ubuntu Desktop Accomplishments collection. This is still very much early days, but I am particularly looking forward to building this collection out: I want it to become one of the best ways of learning the many different things you can do on your computer in Ubuntu.

UPDATE: After I posted this I added support for local accomplishments to the Accomplishment Information app itself. See a short video demo below:

Can’t see the video? Click here!

Spring Cleaning

In addition to this more visible work, there has been lots of other things going on as we clean up our code base and bring maturity and predictability to the project. This has included:

  • Many improvement to the validation server: more resiliance, better logging of failures, and some performance improvements.
  • As I wrote about the other day, we are now doing automated daily testing of accomplishments as well as graphing growth.
  • Improving our documentation and support for how people can contribute to the project as well as contributing accomplishments.

Moving Forward

I just want to say a huge thank-you to everyone who has been participating in the project! I am looking forward to 0.2 as another important milesone. I will be following up in the next week about areas in which we are looking for help in the project that you might be able to contribute to.

If you are interested in joining us, be sure to install it, join #ubuntu-accomplishments on Freenode IRC, and join the mailing list.

Read more
jono

Recently I have been talking a little about building quality and precision into Ubuntu Accomplishments. Tonight I put one of the final missing pieces in place and I thought I would share in a little more detail about some of this work. Some of you might find this useful in your own projects.

Before I get started though, I just wanted to encourage you to start playing our software and for those of you that had a crash when using certain languages with the Accomplishments Information viewer, I released a 0.1.2 update earlier that fixes this.

Automated Testing

As we continue to grow the Ubuntu Community Accomplishments collection it is going to be more and more complex to ensure all of the accomplishments are working effectively every day; we are already at 28 accomplishments and growing! What’s more, the community accomplishments scripts work by checking third-party services for data (e.g. Launchpad) to assess if you have accomplished something. These external services may change their APIs, adjust how they work, add/reduce services etc, so we need to know right away when one of our accomplishments no longer works and needs updating.

To do this I wrote a tool called battery. It works by reading in a test that is available for each accomplishment that feeds the accomplishment validation data that should succeed and also data that should not validate. As an example, for the Ubuntu Member accomplishment the data that succeeds is an existing member’s email address (such as my own) and the test for failure is an email address on Launchpad that is not a member. The original script requires the user’s email address to assess this accomplishment, so battery tests simply require the same types of information, with data that can trigger success and failure.

This approach allows us to test for three outcomes:

  • That the valid email address returns exit code 0 (the script ran successfully and the user is verified as being an Ubuntu Member).
  • That the invalid email address returns exit code 1 (the script ran successfully but the user is not an Ubuntu Member).
  • If the script has an internal issues and returns exit code 2.

The way this works is that battery includes a customized version of the general accomplishments.daemon module that we use for the backend service. In the code I override the back-end module and load a custom module. This way the original accomplishment script does not need to be modified; instead of get_extra_information() calling the back-end daemon and gathering the user’s details, the custom module that comes with battery instead has it’s own get_extra_information() that gets returns the test data so battery can run the tests.

Originally battery only output textual results, but this would require us manually running it. As such, last night I added HTML output support. I then enabled battery to run once a day and automatically update the HTML results. You can see the output here.

There are a few important features in this report other than a list of all the accomplishment test results:

  • It shows the failures: this provides a simple way for us to dive into the accomplishments and fix issues where they occur.
  • It shows which tests, if any, are missing. This gives us a TODO lists for tests that we need to write.

While this was useful, it still required that we would remember to visit the web page to see the results. This could result in days passing without us noticing a failure.

Tonight I fixed this by adding email output support to battery. With it I can pass an email address as a command-line switch and battery will generate an email report of the test run. I also added battery‘s default behavior to only generate an email when there are failures or tests are missing. This prevents it generating results that don’t need action.

With this feature I have set battery to send a daily “Weather Report” to the Ubuntu Accomplishments mailing list; this means that whenever we see a weather report, something needs fixing. :-)

One final, rather nice feature, that I also added was the ability to run battery on one specific accomplishment. This is useful for when we are reviewing contributions of new accomplishments; we ask every contributor to add one of these simple tests, and using battery we can test that the script works for validation success, validation failure, and script failure with a single command. This makes reviewing contributions much easier and faster and improves our test coverage.

Graphing

Something Mark Shuttleworth discussed at UDS was the idea of us building instrumentation into projects to help us identify ways in which we can make better decisions around how we build software. This is something I have also been thinking of for a while, and to kick the tyres on this I wanted to first track popularity and usage of Ubuntu Accomplishments before exploring other ways of learning how people contribute to communities to help us build a better community.

Just before we released version 0.1 of Ubuntu Accomplishments, I created a little script that does a scan of the validation server to generate some statistics about the number of daily new users, the daily number of new trophies issued, and the totals. Importantly, I only count users and trophies, and I am only interest in publishing anonymized data, not exposing someone’s own activity.

To do this my script scans the data and generates a CSV file with the information I am interested in. I then used the rather awesome Google Charts API to take my CSV and generate the Javascript need to display the graph. Here are some examples:

While this is not exactly instrumentation, it got me thinking about the kind of data that could be interesting to explore. As an example, we could arguably explore which types of contributions in our community are of most interest in our users, how effective our documentation and resources are, which processes are working better than others, and also some client side instrumentation that explores how people use Ubuntu Accomplishments and how they find it rewarding and empowering.

Importantly, none of this instrumentation will happen without anyone’s consent; privacy always has to be key, but I think the idea of exploring patterns and interesting views of data could be a fantastic means of building better software and communities.

Read more
jono

At the Ubuntu Developer Summit last week I delivered a plenary on the Tuesday called Accomplishing An Awesome App Developer Platform that tells the story of how the Ubuntu app developer platform enabled me to build the Ubuntu Accomplishments system that I designed with Aq. The presentation walks through the story of how we designed the system, and how everything was available in Ubuntu to create the client, back-end daemon, validation server, and desktop integration. I think it is a good example of how Ubuntu can help app devs to create interesting ideas and apps.

I thought this might be handy to have on YouTube, so I re-recorded it today, and you can see the video below:

Can’t see it? Watch it here!

If you want to create your own application for Ubuntu, be sure to visit developer.ubuntu.com.

Read more
jono

I just released a new update for the Ubuntu Community Accomplishments collection. This new release (0.1.1) includes the following new community accomplishments:

  • Accomplishments Contributor
  • Attend LoCo Team Event
  • Bug Squad Member
  • Ubuntu Forums Council Member
  • Ubuntu Forums Staff Member
  • Imported an SSH Key
  • Ubuntu Beginners Team Council Member
  • Ubuntu Beginners Team Member
  • Bug Control Member
  • Ubuntu Forums Ubuntu Member
  • Launchpad Profile Mugshot is now fixed too.

Thanks to Silver Fox, Michael Hall, Matt Fischer, Rafal Cieslek, Angelo Compagnucci for contributing these additions! It is wonderful to see our community growing!

If you want to contribute accomplishments, be sure to see our guidelines, some suggestions, and how to get started!

If you are already running Ubuntu Accomplishments 0.1, you just need to do the following to get the new set:

sudo apt-get update
sudo apt-get upgrade

If you are running the daemon, kill it first with killall -9 twistd and then load Accomplishments Information from the dash.

If you are new to Ubuntu Accomplishments, be sure you have your Ubuntu One set up and running on your computer, and then follow these installation instructions.

Read more
jono

In the Ubuntu world we have some common values that are not just focused on freedom, but also in how we build Ubuntu. Values such as cadence, design, quality and precision help guide us in building the best Ubuntu that we can.

These values continued to be common themes at the recent Ubuntu Developer Summit in California. Today our culture continues to involve important integration work that is a rich and interesting challenge, but this work has also been augmented by us building assurances around Ubuntu too; assurances such as regular releases (cadence), the reliability and quality of the experience (quality), and attention to detail in both design and engineering (precision) are all examples of the strong balance of predictability and innovation that we want to bring.

These values are not limited to Ubuntu though: we want Ubuntu to be a platform where you can get the very best software experience, whether you are using Open Source or commercial applications. In a nutshell, we want to take the lessons we have been learning regarding cadence, design, quality and precision and share them with our upstreams. This is going to be a big chunk of what Michael Hall will be focusing on in the coming months.

One upstream project though that I am actively involved in in my spare time is Ubuntu Accomplishments and I wanted to share some of our plans surrounding our next 0.2 release and how these values are forming an important core of this work. Before I continue though, I just want to say a huge thank-you to everyone who has been participating in Ubuntu Accomplishments. Ever since our 0.1 release a few weeks ago we have had over 180 people start using this very early PPA and a number of people have started contributing accomplishments. Thanks to all of you!

Quality

With the expanded number of accomplishments being contributed, I started thinking last week about how we could perform better testing around these contributions as well as daily testing reports; I wanted to ensure that our project, even though we are very young and small, demonstrates a level of quality that we can be proud of. To kick this off, this weekend I wrote a small tool called battery that helps us assure quality. I created a validation test for every accomplishment and battery runs all the accomplishments and feeds them this data that will cause an accomplishment to succeed as well as fail. This serves a few valuable purposes:

  • We now have better testing for new contributions and we can test both success and failure more effectively.
  • We can build testing into the accomplishment submission process so that when someone contributes an accomplishment we will ask them to also submit a test file (the test file is extremely simple and just specifies data used for success and data used for failure). This should take a contributor ten seconds to put together.
  • Finally, we can now run battery in an automated environment every day and have it alert us when one of the tests fails. This gives us better visibility on our accomplishments collections to ensure that we can assure quality and resolve issues quickly.

As an important part of building good design into the system, battery was designed to not require any changes to the existing accomplishments sets and require a bare minimum from our contributors who should be spending more time having fun writing accomplishments than caring about tests. I am delighted with the results.

The Road To 0.2

In addition to helping to ensure the accomplishment contribution process is simple (see our list of ideas for accomplishments and how to create them), we have been planning the 0.2 release. This will continue to focus on refinements and building a strong, reliable platform for both community and local accomplishments.

We will be focusing on the following in the 0.2 cycle:

  • Local Accomplishment Support – in 0.1 we focused our efforts primarily on community accomplishments (that is, accomplishments that need to be verified). Although we have always supported local accomplishments (these are accomplishments on your computer such as installing a package for the first time or sending your first email), this local support was a little broken in 0.1. I have already landed a branch from Rafal that fixes these bugs, using GNOME Mines as the test application. We will continue to refine this support.
  • Daemon and API Refinements – this won’t be visible to the user but we are planning a raft of API improvements to ensure that the back-end daemon is precise and high quality. This requires some functional changes, API naming conventions, standardizing on accomplishment IDs and other improvements.
  • Growing Ubuntu Community Accomplishments – we plan on continuing to grow and expand the Ubuntu Community Accomplishments collection. We need help though, and that help could come from you! If you know a little Python and want to help our community, be sure to let me know! You can also join our IRC channel at #ubuntu-accomplishments.
  • Introducing Ubuntu Desktop Accomplishments – we plan on introducing our first set of desktop accomplishments that can be used with the local accomplishments feature in the system. This will help us to start mapping out an awesome journey for how ours users use the desktop, discover things to do, and more!

It was wonderful to see the excitement and interest around Ubuntu Accomplishments at UDS, and I am excited to see where the project can take us. If you want to join us, be sure to join the mailing list and/or join us on IRC on freenode in #ubuntu-accomplishments.

Read more
jono

Just a quick reminded that my band Severed Fifth will be playing tonight at:

Roosters Roadhouse, 1700 Clement Avenue, Alameda, CA 94501

This is about a 5 – 10min cab ride from the Oakland Marriot hotel.

Get down there for about 7.30pm to ensure you get your tickets as the show has sold out of pre-sold tickets. We go on stage at 8pm. Hope to see you there!

Read more
Stéphane Graber

Quite a few people have been asking for a status update of LXC in Ubuntu as of Ubuntu 12.04 LTS. This post is meant as an overview of the work we did over the past 6 months and pointers to more detailed blog posts for some of the new features.

What’s LXC?

LXC is a userspace tool controlling the kernel namespaces and cgroup features to create system or application containers.

To give you an idea:

  • Feels like somewhere between a chroot and a VM
  • Can run a full distro using the “host” kernel
  • Processes running in a container are visible from the outside
  • Doesn’t require any specific hardware, works on all supported architectures

A libvirt driver for LXC exists (libvirt-lxc), however it doesn’t use the “lxc” userspace tool even though it uses the same kernel features.

Making LXC easier

One of the main focus for 12.04 LTS was to make LXC dead easy to use, to achieve this, we’ve been working on a few different fronts fixing known bugs and improving LXC’s default configuration.

Creating a basic container and starting it on Ubuntu 12.04 LTS is now down to:

sudo apt-get install lxc
sudo lxc-create -t ubuntu -n my-container
sudo lxc-start -n my-container

This will default to using the same version and architecture as your machine, additional option are obviously available (–help will list them). Login/Password are ubuntu/ubuntu.

Another thing we worked on to make LXC easier to work with is reducing the number of hacks required to turn a regular system into a container down to zero.
Starting with 12.04, we don’t do any modification to a standard Ubuntu system to get it running in a container.
It’s now even possible to take a raw VM image and have it boot in a container!

The ubuntu-cloud template also lets you get one of our EC2/cloud images and have it start as a container instead of a cloud instance:

sudo apt-get install lxc cloud-utils
sudo lxc-create -t ubuntu-cloud -n my-cloud-container
sudo lxc-start -n my-cloud-container

And finally, if you want to test the new cool stuff, you can also use juju with LXC:

[ ! -f ~/.ssh/id_rsa.pub ] && ssh-keygen -t rsa
sudo apt-get install juju apt-cacher-ng zookeeper lxc libvirt-bin --no-install-recommends
sudo adduser $USER libvirtd
juju bootstrap
sed -i "s/ec2/local/" ~/.juju/environments.yaml
echo " data-dir: /tmp/juju" >> ~/.juju/environments.yaml
juju bootstrap
juju deploy mysql
juju deploy wordpress
juju add-relation wordpress mysql
juju expose wordpress

# To tail the logs
juju debug-log

# To get the IPs and status
juju status

Making LXC safer

Another main focus for LXC in Ubuntu 12.04 was to make it safe. John Johansen did an amazing work of extending apparmor to let us implement per-container apparmor profiles and prevent most known dangerous behaviours from happening in a container.

NOTE: Until we have user namespaces implemented in the kernel and used by the LXC we will NOT say that LXC is root safe, however the default apparmor profile as shipped in Ubuntu 12.04 LTS is blocking any armful action that we are aware of.

This mostly means that write access to /proc and /sys are heavily restricted, mounting filesystems is also restricted, only allowing known-safe filesystems to be mounted by default. Capabilities are also restricted in the default LXC profile to prevent a container from loading kernel modules or control apparmor.

More details on this are available here:

Other cool new stuff

Emulated architecture containers

It’s now possible to use qemu-user-static with LXC to run containers of non-native architectures, for example:

sudo apt-get install lxc qemu-user-static
sudo lxc-create -n my-armhf-container -t ubuntu -- -a armhf
sudo lxc-start -n my-armhf-container

Ephemeral containers

Quite a bit of work also went into lxc-start-ephemeral, the tool letting you start a copy of an existing container using an overlay filesystem, discarding any change you make on shutdown:

sudo apt-get install lxc
sudo lxc-create -n my-container -t ubuntu
sudo lxc-start-ephemeral -o my-container

Container nesting

You can now start a container inside a container!
For that to work, you first need to create a new apparmor profile as the default one doesn’t allow this for security reason.
I already did that for you, so the few commands below will download it and install it in /etc/apparmor.d/lxc/lxc-with-nesting. This profile (or something close to it) will ship in Ubuntu 12.10 as an example of alternate apparmor profile for container.

sudo apt-get install lxc
sudo lxc-create -t ubuntu -n my-host-container -t ubuntu
sudo wget https://www.stgraber.org/download/lxc-with-nesting -O /etc/apparmor.d/lxc/lxc-with-nesting
sudo /etc/init.d/apparmor reload
sudo sed -i "s/#lxc.aa_profile = unconfined/lxc.aa_profile = lxc-container-with-nesting/" /var/lib/lxc/my-host-container/config
sudo lxc-start -n my-host-container
(in my-host-container) sudo apt-get install lxc
(in my-host-container) sudo stop lxc
(in my-host-container) sudo sed -i "s/10.0.3/10.0.4/g" /etc/default/lxc
(in my-host-container) sudo start lxc
(in my-host-container) sudo lxc-create -n my-sub-container -t ubuntu
(in my-host-container) sudo lxc-start -n my-sub-container

Documentation

Outside of the existing manpages and blog posts I mentioned throughout this post, Serge Hallyn did a very good job at creating a whole section dedicated to LXC in the Ubuntu Server Guide.
You can read it here: https://help.ubuntu.com/12.04/serverguide/lxc.html

Next steps

Next week we have the Ubuntu Developer Summit in Oakland, CA. There we’ll be working on the plans for LXC in Ubuntu 12.10. We currently have two sessions scheduled:

If you want to make sure the changes you want will be in Ubuntu 12.10, please make sure to join these two sessions. It’s possible to participate remotely to the Ubuntu Developer Summit, through IRC and audio streaming.

My personal hope for LXC in Ubuntu 12.10 is to have a clean liblxc library that can be used to create bindings and be used in languages like python. Working towards that goal should make it easier to do automated testing of LXC and cleanup our current tools.

I hope this post made you want to try LXC or for existing users, made you discover some of the new features that appeared in Ubuntu 12.04. We’re actively working on improving LXC both upstream and in Ubuntu, so do not hesitate to report bugs (preferably with “ubuntu-bug lxc”).

Read more
jono

Some of you may have seen the news of our very first Ubuntu Accomplishments release. Thank-you to everyone for testing the system; the feedback has been wonderful so far. :-)

The power of the Ubuntu Accomplishments system is dependant on the range of accomplishments available to our users; a comprehensive range of accomplishments that span the full Ubuntu community will make the system an exciting and empowering resource. As such, I would like to put out a call to encourage you lovely people to contribute some accomplishments

Fortunately all you need to know is a little Python to contribute here.

How to Participate

This is how you can help:

  1. First, ensure you are running the new release. Find out how to install it by clicking here.
  2. Now familiarise yourself with our guidelines for what makes a great accomplishment (we are looking to avoid the ‘X number of SOMETHING achieved‘ accomplishments as they can be gamed and abused easily. We are instead looking for accomplishments for new experiences and skills such as ‘First Translation Made‘ or ‘First Contribution to the Ubuntu Sponsorship Queue‘. We have lots of ideas available on this page for inspiration!
  3. Now read the tutorial and create your accomplishment (thanks to Rafal Cieslak for his excellent work on the tutorial).
  4. With your accomplishment ready, submit it to the project and we will review it: details of how to do this are in the tutorial.

Thanks!

Importantly, while this blog post is seeking contributions for the Ubuntu Community collection of accomplishments, if you want to create a collection of accomplishments for your community or project (e.g. your software project, distro, local user group etc), you can use the same tutorial and resources to get started! Let us know if you have any questions!

Getting Help

If you have questions, you can get help in a few places:

  • Join the mailing list – we have an active email discussion list and you are welcome to join and post questions.
  • IRC Channel – we have the #ubuntu-accomplishments channel on the freenode IRC network.

Thanks so much for your contributions!

Read more