Canonical Voices

Nicholas Skaggs

Google Code In 2015

As you may have heard, ubuntu has been selected as a mentoring organization for Google Code In (GCI). GCI is a opportunity for high school students to learn about and participate in open source communities. As a mentoring organization, we'll create tasks and review the students work. Google recruits the students and provides rewards for those who do the best work. The 2015 contest runs from December 7, 2015 to January 25, 2016.

Are you excited?
On December 7th, we'll be gaining a whole slew of potential contributors. Interested students will select from the tasks we as a community have put forth and start working them. That means we need your help to both create those tasks, and mentor incoming students.

I know, I know, it sounds like work. And it is a bit of work, but not as much as you think. Mentors need to provide a task description and be available for questions if needed. Once the task is complete, check the work and mark the task complete. You can be a mentor for as little as a single task. The full details and FAQ can be found on the wiki. Volunteering to be a mentor means you get to create tasks to be worked, and you agree to review them as well. You aren't expected to teach someone how to code, write documentation, translate, do QA, etc, in a few weeks. Breathe easy.

You can help!
I know there is plenty of potential tasks lying in wait for someone to come along and help out. This is a great opportunity for us as a community to both gain a potential contributor, and get work done. I trust you will consider being a part of the process.

I'm still not sure
Please, do have a look at the FAQ, as well as the mentor guide. If that's not enough to convince you of the merits of the program, I'd invite you to read one student's feedback about his experience participating last year. Being a mentor is a great way to give back to ubuntu, get invovled and potentially gain new members.

I'm in, what should I do?
Contact myself, popey, or José who can add you as a mentor for the organization. This will allow you to add tasks and participate in the process. Here's to a great GCI!

Read more
Nicholas Skaggs

Show and Tell: Xenial Edition

It's show and tell time again. Yes, yes, remember my story about growing up in school? It's time for us to gather together as a community again and talk, plan, and share with each other about what's happening in Ubuntu.

UOS is the Ubuntu Online Summit we hold each cycle to talk about what's happening in ubuntu. The next summit is called UOS 15.11 and will be on November 3rd - 5th, 2015. That's coming up very soon!

So what should I do?
First, plan to attend. Register to do so even. Second, consider proposing a session for the 'Show and Tell' track. Sessions are open to everyone as a platform for sharing interesting and unique things with the rest of the community. A typical session may last 5-15 minutes, with time for questions. It's a great way to spend a few minutes talking about something you made, work on, or find interesting.

What type of things can I show off?

Demos, quick talks, and 'show and tell' type things.  Your demo can be unscripted, and informal. This does not have to be a technical talk or demo, though those are certainly welcomed. Please feel free to show off design work, documentation, translation, interesting user tricks or anything else that tickles your fancy!

Got an example?
Yes, we do. Last cycle we had developers talking about new APIs, flavors teams doing Q and A sessions and demos, users sharing tricks, and even a live hacking session where we collectively worked on an application for the phone. Check them out. I'd love to see an even greater representation this time around.

Ok, I'm convinced
Great. Propose the session here. If you need help, check out the wiki page. If you are still stuck, feel free to simply contact me for help.

I'm afraid I don't have a demo, but I'd like to see them!
Awesome, sessions need an audience as well. Mark your calendar for November 3rd - 5th and watch the 'Show and Tell' track page for sessions as they appear.

Thanks for your help making UOS amazing. I'll see you there!

Read more
Nicholas Skaggs

Wily Final Image Testing!

Wily is almost here! The summer has past us by (or is arriving for our Southern hemisphere friends). Thus, with the change of the seasons, it's time for another release of ubuntu. Wily will release the final image this Thursday, 22 Oct 2015. It's time to find and squash and last minute bugs in the the installer.

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

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

How long is this going on?
The testing runs through Thursday, 22 Oct 2015, when the the images for Wily will be released. 

Thanks and happy testing everyone!

Read more
Nicholas Skaggs

It's finally here! We've been working on a way to allow those who have a ubuntu phone to participate more directly in testing the software that runs on their device. This includes things like helping test OTA updates before they are shipped and to verify and look for bugs in applications like the core apps and system services.

Introducing Pilot, a new application you can find today in the ubuntu store. The application utilizes checkbox as a way of distributing tests to you on the phone. This first round of testing includes tests from 4 of your favorite core applications including dekko, clock, music, and weather.

To help test, search for Pilot in the store and install it.

Start the app, and click the Start Testing button once it's loaded.

Select a test plan to run. Right now you can choose to test specific features of the different core apps.

Select the tests to run. You can choose to run all of tests for that feature, or just one if you wish.

Run through the test, following each step. If everything works as listed in the test, press the Pass button. Otherwise press Fail.

You can also add comments about the test or skip the test using the buttons at the top of this page.

Finally, submit your results back to the QA team by pressing the Submit Results to Community Practitest button. You'll need to supply your ubuntu SSO information to do so. You may also view your submitted results on this screen by pressing the corresponding button.

It's that easy. Over time, we'll push new tests via application updates, so you can help test new things as they are developed. As the number of devices grows, we want to ensure every device has the same level of quality. With your help, we can make sure ubuntu gets better with each update. Thanks for your help!

Read more
Nicholas Skaggs

Some of you may remember the birth of the ubuntu font family during the 10.10 cycle. The time has come to finish that work as well as fix a few issues with the current font set. To start with, the design team has been working on Arabic, and is ready for some feedback on how the font looks and interacts.

To help gather your feedback, we've made a simple survey. It contains the information you need to get the font, as well as the opportunity to leave feedback.

We would love to hear from you! If you encounter any issues trying to test or use the survey, feel free to get in touch, but otherwise leave your feedback on the font in the survey. Thanks again for your help!

For those of you who don't happen to speak Arabic or a related language, an opportunity to test the full ubuntu font family is coming up soon. Get ready!

Read more
Nicholas Skaggs

Final Beta Testing for Wily

Another cycle draws to a close, and it's time to test our images and make sure Wily is in good shape. We're entering crunch time.

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

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

How long is this going on?
The testing runs through tomorrow, Thursday September 24th, when the the images for final beta will be released. If you miss the deadline we still love getting result Test against the daily image milestone instead.

Thanks and happy testing everyone!

Read more
Nicholas Skaggs

I wanted to share a unique opportunity to get invovled with ubuntu and testing. Last cycle, as part of a datacenter shuffle, the automated installer testing that was occurring for ubuntu flavors stopped running. The images were being test automatically via a series of autopilot tests, written originally by the community (Thanks Dan et la!). These tests are vital in helping reduce the burden of manual testing required for images by running through the base manual test cases for each image automatically each day.

When it was noticed the tests didn't run this cycle, wxl from Lubuntu accordingly filed an RT to discover what happened. Unfortunately, it seems the CI team within Canonical can no longer run these tests. The good news however is that we as a community can run them ourselves instead.

To start exploring the idea of self-hosting and running the tests, I initially asked Daniel Chapman to take a look. Given the impending landing of dekko in the default ubuntu image, Daniel certainly has his hands full. As such Daniel Kessel has offered to help out and begun some initial investigations into the tests and server needs. A big thanks to Daniel and Daniel!

But they need your help! The autopilot tests for ubiquity have a few bugs that need solving. And a server and jenkins need to be setup, installed, and maintained. Finally, we need to think about reporting these results to places like the isotracker. For more information, you can read more about how to run the tests locally to give you a better idea of how they work.

The needed skillsets are diverse. Are you interested in helping make flavors better? Do you have some technical skills in writing tests, the web, python, or running a jenkins server? Or perhaps you are willing to learn? If so, please get in touch!

Read more
Nicholas Skaggs

Ubuntu SDK Autopilot Plugin

Those of you who have developed an application using the Ubuntu SDK understand how nice it is to have a tool to support your workflow for writing an application. You can code, build, run and iterate on your code easily right from inside the SDK. However, to test your application, it was necessary to open a terminal and execute some commands. Leaving the Ubuntu SDK is an interruption to your workflow! It's even enough to throw you off your coding zen! It certainly may have dissuaded you from running tests. Seeing as testing should be a positive experience, this certainly won't do!

Thankfully Akiva thought the same thing. Thus he created a new plugin for the SDK. I'd like to celebrate and thank him for making all of our lives easier. Thanks Akiva! A big thank you to Benjamin from the SDK team as well for reviewing and helping get the plugin in shape.

The plugin scans your project for autopilot tests, and then creates a run configuration for them. From there, it's as easy as hitting the run button to run the application. See for yourself!

To learn more about how to install the plugin, or how it works, checkout the documentation on running autopilot tests found on 

Go forth and test all the things! Try out using the plugin in your existing workflow. I'd love to hear feedback. If you are interested in making the plugin better, or expanding it to include other things, get in touch. As always, code is welcome!

Read more
Nicholas Skaggs

It's never been easier to write tests for your application! I wanted to share some details on the new documentation and other tidbits that will help you ensure your application has a nice testsuite. If you've used the SDK in the past, you understand how nice it can make your development workflow. Writing code and running it on your desktop, device, or emulator is a snap.

Fortunately, having a nice testsuite for your application can also be just as easy. First, you will notice that now all of the wizards inside the SDK now come with nice testsuites already in place. They are ready for you to simply add-on more tests. The setup and heavy lifting is done. See for yourself!

Secondly, has a great section on every level of testing; no matter which language you use with the SDK. You'll find API references for the tools and technology used, along with helpful guides to get you in the proper mindset.

For autopilot itself, there's also API documentation for the various 'helpers' that will make writing tests much easier for you. In addition, there's a guide to running autopilot tests. This has been made even easier by the addition of Akiva's Autopilot plugin inside the SDK. I'll be sharing details on this as soon as it's packaged, but you can see a sneak peek in this video.

Finally, you will find a guide on how to structure your functional tests. These are the most demanding to write, and it's important to ensure you write your tests in a maintainable way. Don't forget about the guide on writing good functional tests either.

No matter what language or level you write tests for, the guides are there to help you. Why not trying adding a test or two to your project? If you are new, check out one of the wizards and try adding a simple testcase. Then apply the same knowledge (and templated code!) to your own project. Happy test writing!

Read more
Nicholas Skaggs

Snappy Open House!

Introducing Snappy Open Houses! Snappy represents some new and exciting possibilities for ubuntu. A snappy open house is your chance to get familiar with the technology while helping test and break things ! We plan to do an open house before each release as a chance for everyone to interact and provide feedback and help with testing. As such, this is a great way to get started in the snappy world!

So what exactly do I mean by an open house? We want to encourage the community to test with us, explore new features, check for possible regressions and exercise the documentation.  An open house is a chance to come and meet the snappy team developers and help QA test the new image.

During the open house, we'll host a live broadcast on As part of the broadcast, we'll speak with some of the developers behind snappy and show off new features in the upcoming release. We'll also demonstrate how to flash and test the new release so you can follow along and help test. Finally we'll answer any questions you have and stick around on IRC for a bit to discuss any issues found during testing.

In other words, it's time intended for you to come and try out snappy! I know what you are thinking, "I don't have a cool IoT device to run snappy with". You are in luck! You can run snappy on your desktop and laptop. You don't need a device as you can install snappy on your local machine via kvm. If you do have a device, bring it and prepare to have some fun!

The first of these snappy open houses will be July 7th at 1400 UTC. Please stop by and help test with us, try out snappy, and meet the snappy team!

You can find out more information on the wiki. Mark your calendars and see you next Tuesday!

Read more
Nicholas Skaggs

On Community Governance

Recently the Community Council formally requested Jonathan Riddell to step away from his leadership role in the Kubuntu community. For many people this came as a shock. Who are the community council? Why would they have authority over Kubuntu and Jonathan? And what did he do to deserve this?

These are all valid questions! To be clear, despite being a part of the community team at Canonical, I was not a part of this decision. Nor were my fellow team members apart from Daniel and Michael who serve on the CC. It's important to remember this decision came from the Community Council.

For my part, I'd like to talk a little about the governance structure of ubuntu as I think it's important. Regardless of what you think about the decision, Johnathan, Kubuntu, or Canonical, I think it's a good idea we answer the questions of just who is the Community Council and what authority they have within the project. I've tried to present the facts about governance as clearly as possible here to the best of my ability, but I am happily corrected.

Who are the community council?
The are a group of volunteers who were elected by all of us who are community members. Mark sits as a permanent member and acts as SABDFL. He does vet out candidates, but anyone can be nominated. The elections are open and the most recent had several candidates to choose from. At the moment, two of the seven elected members (with Mark being the permanent 8th member) are Canonical employees.

What does the community council do?
One of the biggest responsibilities of the council are to act as a mediator and arbitrator for conflict between folks within the community. In addition, they help oversee the other councils, delegate responsibilities and ensure the community upholds the Code of Conduct.

Why do we need a community council?
The community council exists to help ensure the community has a way of dealing with conflicts, resolving disputes and making hard decisions when there is otherwise no clear majority or easy answer. They also are one of the primary ways the Code of Conduct is enforced.

Should the community council have authority in this matter?
In a nutshell, yes. As the ultimate upholders in Code of Conduct violations, the community council should have authority for any such violation.

Should I blindly trust the community council?
Of course not! They are a like any other elected official and abuse of power is something we have to deal with as humans. Respect the position and authority of leaders, but never grant them a free pass. And make sure you vote!

So what about this decision?
The decision made by the CC in this case is not an easy one. That said, while I don't agree with how this decision was communicated, I do respect the authority and position of the council to weigh in on these matters. This is important! These folks deserve our respect as volunteers who freely give their time to help ubuntu!

I empathize greatly with the Kubuntu Council and community as such a decision seemingly has a large perceived effect. Perhaps the actual ramifications aren't as great as they appear? Perhaps not. I hope and trust Johnathan will continue working on KDE and kubuntu. My hope for Kubuntu is they emerge as a stronger community and continue to produce an awesome distro.

And as for my opinion on if the CC should have made this decision? Remember being a sideline observer in matters like this that you intrinsically don't have all the facts. It's easy to point fingers and assume things. Hindsight also makes it easy to say you would have made a different decision or went about it a different way. I don't envy the position of anyone in the community council. As I've not personally had the pleasure of working with Johnathan anywhere near the extent these folks have I can honestly say I don't know. But the reality is my opinion doesn't matter here. Keep in mind ubuntu is a meritocracy, and while all opinions are welcomed, not all cast equal weight.

So please respect the authority of our community governance structure. Respect those who serve on both councils. Not satisfied? We vote again on Community Council members this year! Think we should tweak/enhance/change our governance structure? I welcome the discussion! I enjoyed learning more about ubuntu governance and I challenge you to do the same before you let your emotions run with your decisions.

Read more
Nicholas Skaggs

UOS 15.05 begins May 5th!

UOS is the Ubuntu Online Summit we hold each cycle to talk about what's happening in ubuntu. UOS 15.05 will be on May 5th - May 7th, 2015. It's time to make sure you are registered and get hyped.

To help with that, I thought would cover some sessions I'm most looking forward to.

SDK with Autopilot plugin
This session showcases a plugin written by a lovely member of the ubuntu community for the Ubuntu SDK. It will help make running and writing autopilot tests for your applications easier. Check out the demo!

Developing Unity 8
In the past I've talked about running Unity8, testing it, wanting to use it as my primary desktop, etc. This session goes even further to talk about how you can help actually develop unity8. Get a proper development setup going, learn where to pitch in and how to propose your work once complete!

Phone User Feedback
This peaks my interest as well. I'm keen to discuss ways to close the feedback loop from a user to developers. Improving that loop will make for a better phone and experience for everyone. Judging from the session description, it seems they will also tackle things like bug reporting, click package identification and other details important for getting feedback from a user.

Still not enough to peak your interest? Check out the full schedule here. There's a session or two for you in there.  I'll see you at UOS!

Read more
Nicholas Skaggs

It's Show and Tell Time!

Err, show and tell?
Who remembers their first years of schooling? At least for me growing up in the US, those first years invovled an activity called 'Show and Tell'. We were instructed to bring something in from home and talk about it. This could be a picture or souvenir from a trip or unique life event, something we made, another person who does interesting things, or just something we found really interesting. It was a way for us to learn more about each other in the classroom, as well as share cool things with each other.

Online Summit
Ok, snapping you back to reality, it's nearing time for UOS 15.05. UOS is the Ubuntu Online Summit we hold each cycle to talk about what's happening in ubuntu. UOS 15.05 will be on May 5th - May 7th.

So what does the childhood version of me reminiscing about show and tell have to do with UOS? Well, I'm glad you asked! There is a 'Show and Tell' track available to everyone as a platform for sharing interesting and unique things with the rest of the community. These sessions can be very short (5 or 10 minutes) and are a great way to share about your work within ubuntu.

With that in mind, it's a perfect opportunity for you to participate in 'Show and Tell' with the rest of the community. I encourage you to propose a session on the 'Show and Tell' track. This track exists for things like demos, quick talks, and 'show and tell' type things. It's perfect to spend 5 or 10 minutes talking about something you made or work on. Or perhaps something you find interesting. Or just a way to share a little about the team you work with or a project you've done. For those of you who may have been a part of the 'lightning talks' during the days of the physical UDS, anything that would have been considered a lightning talk is more than welcome in this track.

Cool, where do I signup?
Proposing a session is simple to do, and there's even a webpage to help! If you really get stuck, feel free to contact me, Svetlana Belkin, Marco Ceppi, or Allan Lesage who are your friendly track leads for this track. Once it's proposed the session will be assigned a date and time. Myself or another track lead will follow-up with you before UOS to ensure you are ready and the date and time is suitable for you.

Is there another way to participate?
Yes! Remember to checkout the show and tell sessions and participate by asking questions and enjoying the presentations. I guarantee you will learn something new. Maybe even useful!

Thanks for helping make UOS a success. I'll see you there!

Read more
Nicholas Skaggs

Testing Vivid Vervet final images

Ubuntu 15.04, otherwise known as the vivid vervet, is nearing release. We are now in the final week before the release on April 23rd. That means it's time to test some images!

Everyone can help!
For the final images, I'd like to extend the call for testing beyond those brave souls willing to run alpha and beta software. I encourage everyone to make a backup (as always!) and upgrade / install vivid. Then report your results on the tracker. Positive results are extremely helpful for this milestone, so please report those too. As a bonus, you can enjoy vivid a few days before the rest of the world (there's no need to re-install the final image), and avoid the upgrade rush after release.

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

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

Thanks and happy testing everyone!

Read more
Nicholas Skaggs

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

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

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

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

Thanks and happy testing everyone!

Read more
Nicholas Skaggs

Unity 8 Desktop Testing

While much of the excitement around unity8 and the next generation of ubuntu has revolved around mobile, again I'd like to point your attention to the desktop. The unity8 desktop is starting to evolve and gain more "desktopy" features. This includes things like window management and keyboard shortcuts for unity8, and MIR enhancements with things like native library support for rendering and support for X11 applications.

I hosted a session with Stephen Webb at UOS last year where we discussed the status of running unity8 on the desktop. During the session I mentioned my own personal goal of having some brave community members running unity8 as there default desktop this cycle. Now, it's still a bit early to realize that goal, but it is getting much closer! To help get there, I would encourage you to have a look at unity8 on your desktop and start running it. The development teams are ready for feedback and anxious to get it in shape on the desktop.

So how do you get it? Check out the unity8 desktop wiki page which explains how you can run unity8, even if you are on a stable version of ubuntu like the LTS. Install it locally in an lxc container and you can login to a unity8 desktop on your current pc. Check it out! After you finish playing, please don't forget to file bugs for anything you might find. The wiki page has you covered there as well. Enjoy unity8!

Read more
Nicholas Skaggs

It's time for a testing jam!

Ubuntu Global Jam, Vivid edition is a few short weeks away. It's time to make your event happen. I can help! Here's my officially unofficial guide to global jam success.


  1. Get your jam pack! Get the request in right away so it gets to you on time. 
  2. Pick a cool location to jam
  3. Tell everyone! (be sure to mention free swag, who can resist!?)
But wait, what are you going to do while jamming? I've got that covered too! Hold a testing jam! All you need to know can be found on the ubuntu global jam wiki. The wiki even has more information for you as a jam host in case you have questions or just like details.

Ohh and just in case you don't like testing (seems crazy, I know), there are other jam ideas available to you. The important thing is you get together with other ubuntu aficionados and celebrate ubuntu! 

P.S. Don't forget to share pictures afterwards. No one will know you had the coolest jam in the world unless you tell them :-)

P.P.S. If I'm invited, bring cupcakes! Yum!

Read more
Nicholas Skaggs

PSA: Community Requests

As you plan your ubuntu related activities this year, I wanted to highlight an opportunity for you to request materials and funds to help make your plans reality. The funds are donations made by other ubuntu enthusiasts to support ubuntu and specifically to enable community requests. In other words, if you need help traveling to a conference to support ubuntu, planning a local event, holding a hackathon, etc, the community donations fund can help.

Check out the funding page for more information on how to apply and the requirements. In short, if you are a ubuntu member and want to do something to further ubuntu, you can request materials and funding to help. Global Jam is less than a month away, is your loco ready? Flavors, trying to plan events or hold other activities? I'd encourage all of you to submit requests if money or materials can help enable or enhance your efforts to spread ubuntu. Here's to sharing the joy of ubuntu this year!

Read more
Nicholas Skaggs

I thought I would add a little festivity to the holiday season, quality style. In case your holidays just are not the same without a little quality in your life, allow me to share how you can get involved.

There are opportunities for every role listed on the QA wiki. Testers and test writers are both needed. Testing and writing manual tests can be learned by anyone, no coding required. That said if you have skills or interest in technical work, I would encourage you help out. You will learn by doing and get help from others while you do it.

Now onto the good stuff! What can you do to help ubuntu this cycle from a quality perspective?

There is an ever present need for brave folks willing to simply run the development version of ubuntu and use it as a daily machine throughout the cycle. It's one of the best ways for us as a community to uncover bugs and issues, in particular things that regress from the previous release. Upgrade to vivid today and see what you can break!

This tool is written in drupal7 and runs the and sites. These sites are used to record and view the results of all of our manual testing efforts. Currently dkessel is leading the effort on implementing some needed UI changes. The code and more information about the project can be found on launchpad. The tracker is one of our primary tools and needs your help to become friendly for everyone to use.

In addition a charm would be useful to simplify setting up a development environment. The charm can be based upon the existing drupal charm. At the moment this work is ready for someone to jump in.

Running unity8 as a full-time desktop is a personal goal I have for this cycle. I hope some others might also want to be early adopters and join me in this goal. For now you can help by testing the unity8 desktop. Have a look at running unity in lxc for an easy way to run unity8 today on your machine. Use it, test it, and offer feedback. I'll be talking more about unity8 as the cycle progresses and opportunities to test new features aimed at the desktop appear.

Core Apps
The core apps project is an excellent way to get involved. These applications have been lovingly developed by community members just like you. Many of the teams are looking for help in writing tests and for someone who can help bring a testing mindset and eye to the work. As of this writing specifically the docviewer, terminal and calculator teams would love your help. The core apps hackdays are happening this week, drop by and introduce yourself to get started!

Manual Tests
Like the sound of writing tests but the idea of writing code turns you off? Manual tests are needed as well! They are written in English and are easy to understand and write. Manual tests include everything you see on the qatracker and are managed as a launchpad project. This means you can pick a bug and "fix it" by submitting a merge request. The bugs involve both fixing existing tests as well as requests for new testcases.

As always there are images that need testing. Testing milestones occur later in the cycle which involve everyone helping to test a specific set of images. In the meantime, daily images are generated that have made it through the automated tests and are ready for manual testing. Booting an image in a live session is a great way to check for regressions on your machine. Doing this early in the cycle can help make sure your hardware and others like it experience a regression free upgrade when the time comes.

After subjecting software to testing, bugs are naturally found. These bugs then need to be verified and triaged. The bugsquadders, as they are called, would be happy to help you learn to categorize or triage bugs and do other tasks.

No matter how you choose to get involved, feel free to contact me for help if needed. Most of all, Happy Testing!

Read more
Nicholas Skaggs

Creating mutli-arch click packages

Click packages are one of the pieces of new technology that drives the next version of ubuntu on the phone and desktop. In a nutshell click packages allow for application developers to easily package and deliver application updates independent of the distribution release or archive. Without going into the interesting technical merits and de-merits of click packages, this means the consumer can get faster application updates. But much of the discussion and usage of click packages until now has revolved around mobile. I wanted to talk about using click packages on the desktop and packaging clicks for multiple architectures.

The manifest file
Click packages follow a specific format. Click packages contain a payload of an application's libraries, code, artwork and resources, along with its needed external dependencies. The description of the package is found in the manifest file, which is what I'd like to talk about. The file must contain a few keys, but one of the recognized optional keys is architecture. This key allows specifying architectures the package will run on.

If an application contains no compiled code, simply use 'all' as the value for architecture. This accomplishes the goal of running on all supported architectures and many of the applications currently in the ubuntu touch store fall into this category. However, an increasing number of applications do contain compiled code. Here's how to enable support across architectures for projects with compiled code.

Fat packages
The click format along with the ubuntu touch store fully support specifying one or more values for specific architecture support inside the application manifest file. Those values follow the same format as dpkg architecture names. Now in theory if a project containing compiled code lists the architectures to support, click build should be able to build one package for all. However, for now this process requires a little manual intervention. So lets talk about building a fat (or big boned!) package that contains support for multiple architectures inside a single click package.

Those who just want to skip ahead can check out the example package I put together using clock. This same package can be found in the store as multi-arch clock test. Feel free to install the click package on the desktop, the i386 emulator and an armhf device.

Building a click for a different architecture
To make a multi-arch package a click package needs to be built for each desired architecture. Follow this tutorial on for more information on how to create a click target for each architecture. Once all the targets are setup, use the ubuntu sdk to build a click for each target. The end result is a click file specific to each architecture.

For example in creating the clock package above, I built a click for amd64, i386 and armhf. Three files were generated:

Notice the handy naming scheme allows for easy differentiation as to which click belongs to which architecture. Next, extract the compiled code from each click package. This can be accomplished by utilizing dpkg. For example,

dpkg -x amd64

Do this for each package. The result should be a folder corresponding to each package architecture.

Next copy one version of the package for use as the base of multi-arch click package. In addition, remove all the compiled code under the lib folder. This folder will be populated with the extracted compiled code from the architecture specific click packages.

cp amd64 multi
rm -rf multi/lib/*

Now there is a folder for each click package, and a new folder named multi that contains the application, minus any compiled code.

Creating the multi-arch click
Inside the extracted click packages is a lib folder. The compiled modules should be arranged inside, potentially inside an architecture subfolder (depending on how the package is built).

Copy all of the compiled modules into a new folder inside the lib folder of the multi directory. The folder name should correspond to the architecture of the complied code. Here's a list of the architectures for ARM, i386, and amd64 respectively.


You can check the naming from an intended device by looking in the application-click.conf file.

grep ARCH /usr/share/upstart/sessions/application-click.conf

To use the clock package as an example again, here's a quick look at the folder structure:


The contents of lib/* from each click package I built earlier is under a corresponding folder inside the multi/lib directory. So for example, the lib folder from became lib/i386-linux-gnu/.

Presto, magic package time! 
Finally the manifest.json file needs to be updated to reflect support for the desired architectures. Inside the manifest.json file under the multi directory, edit the architecture key values to list all supported architectures for the new package. For example to list support for ARM and x86 architectures,

"architecture": ["armhf", "i386", "amd64"],

To build the new package, execute click build multi. The resulting click should build and be named with a prefix. This click can be installed on any of the specified architectures and is ready to be uploaded to the store.

Caveats, nibbly bits and bugs
So apart from click not automagically building these packages, there is one other bug as of this writing. The resulting multi-arch click will fail the automated store review and instead enter manual review. To workaround this request a manual review. Upon approval, the application will enter the store as usual.

In summary to create a multi-arch click package build a click for each supported architecture. Then pull the compiled library code from each click and place into a single click package. Next modify the click manifest file to state all of the architectures supported. Finally, rebuild the click package!

I trust this explanation and example provides encouragement to include support for x86 platforms when creating and uploading a click package to the store. Undoubtedly there are other ways to build a multi-arch click; simply ensure all the compiled code for each architecture is included inside the click package. Feel free to experiment!

If you have any questions as usual feel free to contact me. I look forward to seeing more applications in the store from my unity8 desktop!

Read more