Planet Bazaar

May 13, 2013

Jonathan Riddell

Re-Blog: Martin Gräßlin - Mir in Kubuntu

KDE Project:

A repost of Martin Gräßlin's blog Mir in Kubuntu for the benefit of Planet Ubuntu

As you might have seen in Jonathan’s blog post we discussed Mir in Kubuntu at the “Mataro Sessions II”. It’s a topic I would have preferred to not have to discuss at all. But the dynamics in the free software world force us to discuss it and obviously our downstream needs to know why we as an upstream do not consider Mir adoption as a valid option.
This highlights a huge problem Canonical created with Mir. I cannot just say “Canonical sucks”[1] to discard Mir as an option, I have to provide proper technical arguments why we won’t integrate Mir. I have to invest time to investigate the differences, advantages and disadvantages. As I have those arguments, I thought it might be a good idea to share them in a blog post.
The discussion started during a presentation about X11 and Wayland to my fellow team mates at Blue Systems. I decided to first explain X11 as I think one cannot understand the needs for Wayland without understanding X11. I did not intend to discuss Mir at all, but somehow the discussion drifted into the direction and the valid questions were raised about what are the differences and advantages of Mir or Wayland. What followed was kind of a rant about Ubuntu and Canonical [2]. So later the week we discussed “Mir in Kubuntu” in more detail to try to find answers to the many questions this raises for our downstream.
Introduction
Frustration and lost Motivation
Before I go into more detail I want to make one thing clear: Canonical is totally allowed to develop whatever they want. I’m totally fine with this and don’t care whether they develop another display server, an own os kernel or yet another desktop shell. I couldn’t care less. It’s Canonical/Mark’s money and he can invest it in any way he considers as useful. I wouldn’t even care if it would be proprietary software, that’s all fine.
What is not fine is causing a major disruption in the free software ecosystem by giving false technical arguments and doing bold statements about software Canonical does not contribute to. This is not acceptable. This was very frustrating and destroyed lots of trust I had in Canonical. It will be difficult to rebuild this trust. Canonical can be glad that it is the free software world and not the normal corporate world. There were quite some statements which could have raised the legal department in the normal corporate world[3]. It also cost lots of motivation at least on my side and I even questioned whether it’s still worth to be a member of the free software ecosystem. Instead of working together we now have a situation where members of the ecosystem become a competitor and which badmouth part of the software stack. A very frustrating situation.
There certainly are valid reasons for developing Mir which also make sense. Unfortunately they have not been presented so far. I’m quite sure that I know the reasons and if they would have been said straight away it would have been for me and other projects probably much easier. It would have taken away the frustration which the announcement caused and we would not need to discuss it at all, because those question marks would not exist. But apparently Canonical decided to give false technical arguments over the real ones.
Not ready yet
At the moment Mir is not there yet, this is important to remember. With the announcement we basically had four options on how to handle the situation.

  1. Continue with the Wayland plan and ignore Mir
  2. Switch to Mir and ignore Wayland
  3. Support Mir and Wayland
  4. Delay decision till Mir is ready

If I map our time line for Plasma Workspaces 2 against the time line of Mir I see no overlap. We want to support Wayland before Mir is ready. So delaying the decision would be a rather bad idea. It would just throw us back. This also means that option 2 is not valid especially as we would need to delay till Mir is ready for this to happen. So the only valid options are supporting both Mir and Wayland or only Wayland. At the moment the code is not ready yet to properly decide whether supporting Mir in addition to Wayland is a valid approach or not. Last time I checked the source base I hit a few stubs and then obviously stopped looking at the code as it’s not worth the effort yet. So we have to evaluate on the knowledge we already have and that doesn’t look good on the Mir side.
Wayland vs Mir
Possible Advantages of Mir over Wayland
The differences between Mir and Wayland are rather minimal. One of the differences is that Mir uses server allocated buffers while Wayland uses client side buffer allocation. I cannot judge whether this is an advantage or disadvantage. But I trust Kristian and the Wayland team more on that topic.
Another difference is that Mir uses test-driven development. To me development methodology is not a technical argument. I rather use a working system without unit tests than a system with unit tests that doesn’t work [4]. Also KWin does not use TDD. If I would consider TDD superior I would have to question my own development methodology.
But that’s it. That are the differences I found so far which could count as an advantage for Mir. But of course there is the advantage that Mir is going to be awesome. For the disadvantages I will spend a complete section on each point.
Distro specific
So far Mir is a one-distribution solution. So far no other distribution has shown any interest in packaging Mir even if it would become a working solution. Unfortunately I don’t have the ability to see into the future, but I can use the past and the present to get ideas for the future. The past tells me that there are other Canonical specific solutions which are not available in other distributions. I do not know of any distribution which packages Unity and from all I have heard it’s even impossible to package Unity on non-Ubuntu distributions. Given that it is quite likely that Mir will go the same road. It’s designed as a solution for Unity and if distros don’t package Unity there is no need to package Mir.
This has quite some influence on a possible adoption. I do not know of any kde-workspace developer using (K)Ubuntu. I do not see how anyone would work on it or how we should be able to review code or even maintain code. It would mean all the adoption would have to go into ifdef sections nobody compiles and nobody runs. This is the best way to ensure that it starts to bit-rot. Even more our CI system runs on openSUSE so not even the CI would be able to detect breakage. Of course a downstream like Kubuntu could develop the adoption and carry it as a patch on top of upstream, but I would highly recommend them to not do this as KWin’s source code churn is too high. Also we all agree that downstream patches are evil and we would no longer be able to help in any way downstream’s user from a support perspective.
Architecture
Mir’s architecture is centered around Unity. It is difficult to really understand the architecture of Mir as the specification is so full of buzz-words that I don’t understand it [5]. From all I can see and understand Unity Next is a combination of window manager and desktop shell implemented on top of Mir. How exactly this is going to look like I do not know. Anyway it does not fit our design of having desktop shell and window manager separated and we do not know whether Mir would support that. We also do not know whether Mir would allow any other desktop shell except Unity Next, given that this is the main target. Wayland on the other hand is designed to have more than one compositor implementations. Using KWin as a session compositor is an example in the spec.
License
Wayland is licensed like X under the MIT license, which served us well for a display server. I think this is a very good choice and I am glad that the Wayland developers decided for this license. Mir is licensed under GPLv3-only with CLA. I think this is very unsuited for such a part of the stack and would render quite a risk for usage in KDE Plasma. KWin (and most KDE software) is GPLv2-or-later, this would no longer be possible, it would turn our code into GPLv3-only as KWin (or any other software which would depend on mir-server) would be a derived work of Mir. I do not consider GPLv3-only software as a possible dependency of any core part of our application stack. It renders a serious threat for the future in case of a GPLv4 which is not compatible with GPLv3. I also dislike the CLA [6]. So from a licensing perspective Mir is hardly acceptable.
Unity Specific/No Protocol
One of the most important aspects from Wayland for us is the ability to extend the protocol. This has already been a quite important feature in X and we are using our own extensions over ICCCM and EWMH to implement additional functionality. Of course our workspace has own ideas and it is important for us to be able to “standardize” those and also make them available to others if they are interested. This is possible thanks to protocol extensions.
Mir doesn’t have a real protocol. The “inner core” is described as “protocol-agnostic”. This renders a problem to us if we would want to use it. Our architecture is different (as described above) and we need a protocol between the desktop shell and the compositor. If Mir doesn’t provide that we would need to use our own protocol. And that already exists, it is called “Wayland”. So even if we would support Mir, we would need the Wayland protocol?!? That doesn’t make any sense to me. If we need to run Wayland on top of Mir just to get the features we need, why should we run Mir at all?
But it gets worse, the protocol between Mir server and Mir clients is defined as not being stable. In fact it’s promised that it will break. That’s a huge problem, I would even call it a showstopper. For Canonical that’s fine – they control the complete stack and can just adjust all bits using the protocol like QMir.
For us this looks quite different. Given that the protocol may change any time and given that the whole thing is developed for the needs of Unity we have to expect that the server libraries are not binary compatible or that old version of the server libraries cannot talk with the latest client libraries. We would constantly have to develop against an unstable and breaking base. I know that this sounds overly pessimistic but I know of one case where a change got introduced in a Canonical protocol late in the release cycle completely breaking an application in Kubuntu which wanted to use the protocol. Given this experience I would not trust that the protocol doesn’t change one day before the release meaning that Kubuntu cannot ship.
This is not awesome, it’s awful. It means KWin will not work just fine on Mir.
I hope this shows that using Mir inside the KDE Plasma workspaces is not an option. There are no advantages which would turn Mir into a better solution than Wayland and at the same time there are several showstoppers which mean that we cannot integrate Mir – not even optionally in addition to Wayland. The unstable protocol and the licensing choice are clearly not acceptable.
What this means to Kubuntu
Question marks
For Kubuntu the Mir switch by Canonical created quite some questions. One of those questions is answered: Upstream has no interest in supporting it and would most likely not accept patches for support. With upstream not using Mir the question is how the graphics stack for Kubuntu will look like once Ubuntu switched to Mir? The questions cannot be answered right now but it doesn’t look good.
Patches to the stack
Ubuntu has always had one of the worst graphics stack in the free software world. I can see this in the bug tracker. The quality of the Mesa stack in Ubuntu is really bad. For Mir Ubuntu will have to patch the Mesa stack even further. This is nothing which I would like to see. Also Mesa needs to be packaged with Wayland support. But will Canonical continue to do this? If not, would Kubuntu (and other Ubuntu flavors) need to ship their own Mesa stack? What if the changes by Canonical are so large that a standard Mesa stack doesn’t run on top of the Ubuntu stack?
Switching Sessions
One of the advantages of free software is that one can select the desktop environment in the login manager. This looks like no longer be possible in a Mir world. Unity will run with a Mir system compositor with LightDM nested underneath. We will need either the X Server or a Wayland system compositor. So from the login manager it will not be possible to start directly into a session using a different system compositor. How will it continue to be possible to use both Unity and KDE Plasma on the same system? Running a Unity and a KDE Plasma (or GNOME or XFCE or anything) session at the same time seems to no longer be possible.
System Compositor
How deep into the system is the system compositor going to be? Will it be possible to disable the Mir system compositor and replace it with X or Wayland? What if the packages start to conflict? Will it still be possible to install Kubuntu and Ubuntu on the same system? Will Canonical care about it? Will the system compositor mean that one has to decide in Grub whether to boot Ubuntu or Kubuntu?
Packages from Where
So far X, Wayland and Mesa have been packaged by Canonical. But what about the future? Will there still be packages for X, will there be packages for Wayland? If not, where to take them from? Debian unstable, most likely. But Debian might be frozen. Will it be possible at all to use the Debian packages for X and Wayland in the Ubuntu stack? Will they meet the requirements for KDE Plasma[7]? If Canonical doesn’t provide Wayland packages, they would drop to universe, so Mesa in main cannot depend on them. How to get then Mesa with Wayland support?
Only Future can tell
Those questions cannot be answered right now. It will have to wait till Mir is integrated into the Ubuntu stack. Then Kubuntu developers will see how far the stack broke. I’m not really optimistic that it will still be possible to provide the Ubuntu flavors once the transition to Mir is done. I don’t think that Canonical has any interest in the community provided distributions on top of Ubuntu any more. There are many small changes in the direction which indicate that. But we will see, maybe I’m too pessimistic.
[1] Given how Canonical introduced Mir with incorrect information about Wayland I consider this as a valid approach to dismiss the technology.
[2] I was very fed up with Ubuntu at the time anyway because our bug tracker once again exploded after the Ubuntu release.
[3] I do admit that I thought about asking KDE e.V. to send an Abmahnung after the statement that KWin would just work fine on Mir.
[4] In fact I consider TDD as utter non-sense and as a useless methodology though some aspects are useful.
[5] “with our protocol- and platform-agnostic approach, we can make sure that we reach our goal of a consistent and beautiful user experience across platforms and device form factors”
[6] Yes I know that Qt also has a CLA, which I have signed. But for Qt there is also the KDE Free Qt Foundation agreement.
[7]Last week a feature hit KWin which I cannot test/use because the X-Server is too old in Debian testing.

by jriddell at May 13, 2013 10:55 AM

May 10, 2013

Jonathan Riddell

Distrowatch Reviews Kubuntu

KDE Project:

Distrowatch is a handy site to check out the history of Kubuntu. Today they put up a review of Kubuntu 13.04. "Kubuntu gave me a very responsive graphical environment, an application menu which was free from advertisements and the distribution did not insist I install third-party drivers just to use my desktop." Ubuntu Unity comes in for some critisism though, probably when they post (back) to Qt their graphics requirements will become sane again.

DSCF7601
P for Vendetta

DSCF7610
Konqi suffers fourth nerve palsy. He gets very upset at pirate comments.

DSCF7614
Barcelona Office, KDE has a home in the sun!

by jriddell at May 10, 2013 11:26 AM

Tim Penhey

juju switch

The switch command has recently landed in trunk, and will be included in the next juju-core release.

juju switch is another way to specify the current working environment. Current precedence for environment lookup still holds, but this now sits between the JUJU_ENV environment variable and the default value in environments.yaml.

If you have multiple environments defined, there are several different ways to tell juju which environment you mean when executing commands.

Prior to switch, there were three ways to specify the environment.

The first and default way to specify the environment is to use the default value in the environments.yaml file.  This was always the fallback position if one of the other ways was not specified.

Another way was to be explicit for some commands, and use the -e or --environment command line argument.


$ juju bootstrap -e hpcloud



There is also an environment variable that can be set which will override the default specified in the environments.yaml file.


$ export JUJU_ENV=hpcloud
$ juju bootstrap          # now bootstraps hpcloud
$ juju deploy wordpress   # deploys to hpcloud



The switch option effectively overrides what the default is for the environments.yaml file without actually changing the environments.yaml file. This means that -e and the JUJU_ENV options still override the environment defined by switch.


$ juju help switch
usage: juju switch [options] [environment name]
purpose: show or change the default juju environment name
 
options:
-l, --list  (= false)
    list the environment names
 
Show or change the default juju environment name.
 
If no command line parameters are passed, switch will output the current
environment as defined by the file $JUJU_HOME/current-environment.
 
If a command line parameter is passed in, that value will is stored in the
current environment file if it represents a valid environment name as
specified in the environments.yaml file.
 
aliases: env



It works something like this:


$ juju env
Current environment: "amazon-ap"
$ juju switch
Current environment: "amazon-ap"
$ juju switch -l
Current environment: "amazon-ap"

Environments:
        amazon
        amazon-ap
        hpcloud
        openstack
$ juju switch amazon
Changed default environment from "amazon-ap" to "amazon"
$ juju switch amazon
Current environment: "amazon"
$ juju switch
Current environment: "amazon"



If you have JUJU_ENV set, then you get told that the current environment is defined by this.  Also if you try to use switch to change the current environment when the environment is defined by JUJU_ENV, you will get an error.


$ export JUJU_ENV="amazon-ap"
$ juju switch
Current environment: "amazon-ap" (from JUJU_ENV)
$ juju switch amazon
error: Cannot switch when JUJU_ENV is overriding the environment (set to "amazon-ap")


 

by Tim Penhey (thumper) (noreply@blogger.com) at May 10, 2013 07:08 AM

May 09, 2013

Jonathan Riddell

The Breakouts: UEFI

KDE Project:

Me and Rohan and Harald spent the day playing with the cheapo Sony Vaio laptop I got with Windows 8 and UEFI firmware.

This laptop has many partitions:
sda1 is fat32 and contains a Boot and a Microsoft EFI boot loaders
sda2 is ntfs and contains Windows Recovery bits
sda3 is efi/fat32 and contains a Boot, a Microsoft, a kubuntu and a ubuntu EFI boot loader
sda4 is a Microsoft reserved parition and won't mount, spooky
sda5 is an ntfs partition and has Windows 8 on it
sda6 is ext4 and I install Ubuntu and Kubuntu to it
sda7 is a linux-swap partition

I've no idea why there are two efi partitions
I've no idea why there's both an ntfs windows recovery partition and a microsoft reserved partition.

We installed Kubuntu but it didn't set up Grub and we couldn't do much useful at the Grub command line.

So we installed Ubuntu Unity 13.04 and it successfully set up Grub so we could boot from Grub into Ubuntu. Grub also listed Windows 8 but it gives an error on trying to boot "error: can't find command drivemap error: invalid EFI file path". Grub also listed windows recovery and this does boot and lets us boot into Windows 8 but that then stops Grub being loaded so there's no way to reboot into Ubuntu. see log.

Then we tried to install Kubuntu again and it give an error during install about the grub setup package not configuring right see bug for log.

If you go to ubuntu.com to download it points Windows 8 users to this scary UEFI wiki page with scary headings like "Installing Ubuntu Quickly and Easily via Trial and Error".

Conclusion: UEFI is a giant MS conspiracy to make installing Linux more faffy than it already is. Kubuntu is slightly more broken then Ubuntu but not much. Only silver lining is that Windows 8 is rubbish and when we tried it there genuinely was a notification saying "Warning: your children might not be protected". Think of the children and don't use Windows 8!

Oh well, here's some pretty pictures to keep you amused.

DSCF7600
Les Frogs sont hypercool

DSCF7593
The view of Catalunia is great for contemplation

DSCF7594
Murdering a water mellon

DSCF7589
VHanda ignores Doctor Who.

by jriddell at May 09, 2013 03:18 PM

May 08, 2013

Jonathan Riddell

Mataro Sessions II: the breakouts

KDE Project:

Notes from breakout on Homerun:

  • Needs to move to Extragear
  • no upstream designer in Plasma so hard to change fundementals like app menu
  • KWin would be against it as default, uses full screen blur, no visual consistency between it and dashboard
  • Does not show app generic names
  • netrunner says full screen is distracting for a menu
  • no filters
  • no recent apps

Notes from breakout on High DPI sceens:

  • see the wiki page
  • faking it with large font not really accurate, many more problems, see screenshot
  • needs someone with a high dpi monitor to test and fix

DSCF7590
Post-it Kanban

DSCF7587
The talks

DSCF7597
Acrobatics

DSCF7599
KDE People talking about KPeople

by jriddell at May 08, 2013 10:42 PM

Elliot Murphy

2nd Occasional Think Tank Portland hack morning

Today was the second of a series of hack mornings at the Think Tank Congress coworking space. The results were even more stunning than the first time, and sparked a lot of ideas. Here is a summary of the projects that were completed in 2.5 hours

  • John Colton joined us as a C hacker looking to get his feet wet with web development. By the end of the morning he got a python web app running with Flask, got set up with Github, and deployed the app to Heroku.
  • Abe Fettig, Alex Launi, and Elliot Murphy worked on a web enabled door latch with a Raspberry Pi, using a Node.js REST API talking to a PiFace digital I/O board. At the end of the morning they demoed pressing a button on a single-page web app served from Heroku and the local door latch buzzed and opened. Next time additional sensors and some real time status updates will be added, and then it’s time to think about installing it on a real door.
  • Patrick Kenney was exploring building a responsive 3 column single-page web app, rendering some of the areas off-canvas and then using ScrollTo for navigation and pure CSS3 animations. It worked and he published the code!
  • Alex Dorsk was working on a web app which aggregates information about all the music events happening in Portland. Since each venue publishes the calendar in a different way, he needed to do screen scraping, and Alex got scrapers written for 7 venues in a single morning using ScraPy.
  • Hasan Adil was experimenting with data driven visualization using D3.js. He got an interactive force directed graph running, visualizing node size and connectedness. Shiny!
  • Daniel Kopyc added speech recognition to an iOS app, using the OpenEars CMU speech recognition library, and drove his demo by talking to an iPad.
  • Hugh Morgenbesser put together a Facebook app using Django. He showed how using 2scoops of Django, Fandjango, and FacePy make it possible to have a running app in a couple of hours.
  • Alex Jones is working on digitizing beekeeping, and wanted to see whether he could use computer vision to count the number of mites on an IPM board. Using Processing PYImage and a digital photo of a board with some mites on it, he was able to “see” all the mites using color and blob detection and then calculate the number of mites by estimating the average area of a typical mite.

hackmorning2

It was an impressive and energizing array of projects. Thanks to Patrick Roche for hosting the event at Think Tank, Abe Fettig for organizing, Hugh Morgenbesser for donuts, and Hasan Adil for coffee. At the end of the morning, we realized it would have been easier if we were using a shared document to gather links and instructions together over the course of the morning instead of trying to gather the details at the end, and we also struggled with the presentations due to poor WiFi coverage in the front room, something we’ll be trying to correct for next time. Thanks to everyone for coming out!


emurphy77hackmorning2

by Elliot at May 08, 2013 07:54 PM

Jonathan Riddell

Kubuntu Developer Summit @ Akademy

KDE Project:

Since there's no UDS we have a room booked at Akademy to spend the day discussing things in Kubuntu

if you're coming put yourself on https://notes.kde.org/p/kubuntu-akademy

Would be good to have as many Kubuntu people there as possible.
The Kubuntu Council has funds if you need sponsorship for travel, don't be afraid to ask.

by jriddell at May 08, 2013 02:40 PM

Notes from Breakout sessions at Mataro Sessions II

KDE Project:

13050016

Here's some notes from the breakout sessions we had yesterday for my own recolation.

KWin and Wayland on Kubuntu

  • Differences between Wayland and Mir are minimal, only client vs server side buffer allocation, so no benefit from it for a desktop distro
  • dri3000 is a project to make X do client side buffer allocating
  • KWin won't support Mir, (unless canonical wants to do it) it has no ABI stability
  • KWin was working on Wayland suppport, now shifted effort to Qt 5 support before going back to Wayland work.
  • KWin in 4.11 might work with Qt 5 but not for distros to use
  • X wayland is a rootless X server used in both Wayland and Mir, no use for KWin which needs a rooted X server.
  • wayland has libwaylandserver and libwaylandclient libraries, libwaylandclient for use in toolkits like Qt.
  • current KWin architecture not fully planned but probably Weston as system compositor and KWin as client compositor
  • worry that Canonical might havily patch mesa for Unity/Mir making Kwin/Weston break (more then it already is)
  • Only Weston needed for LightDM then Kwin started same as currently by startkde (maybe a bit earlier in the script)
  • Change to Wayland for Kubuntu about 14.10 or 15.04
  • Wayland & Weston release every 3 months, KWin every 6 months
  • Unity will have 1 binary equivalent to X, compiz and unity
  • Weston can be run on X for testing
  • current thinking is to ensure Debian's Weston packages are in Ubuntu archive and use those for Kubuntu, might make ubuntu-desktop and kubuntu-desktop not easily co-installable
  • Installer ubiquity-dm a tricky point

DSC06831

Kubuntu SRUs

  • KDE people get frustrated when their point releases don't get into distros or get in very slowly
  • ubuntu SRU process is beurocratic for a reason - introducing new bugs is really nasty
  • lightdm did introduce a new bug recently in a point release which was caught in the SRU process
  • building SRUs in a PPA first to test unnecessary and time wasting, just test it locally then upload to -proposed
  • possible scope to have approved from ~ubuntu-sru during the 7 day testing period rather than before to remove one blocker?
  • delay in KWin updates causes bug reports to keep coming into KWin bugzilla, very time consuming for upstream
  • work items too brief - danger of not understanding later what a point is
  • use of trello to be encouraged for work item tracking with enough info to understand each point from someone coming fresh
  • UEHS unknown if it works reliably, needs to be investigated and improved to update packaging as much as possible itself, at lp:dehs
  • public kde-packager e-mail list (discussion has been done several times in past)
  • automated copyright file from upstream?

by jriddell at May 08, 2013 10:29 AM

May 04, 2013

Jonathan Riddell

Mataro Sessions II

KDE Project:

The Ubuntu Developer Summit should have been this week but got cancelled in order to increase transparency. But you wouldn't want to let an expensive hotel booking go to waste so there seems to have been a meeting of Canonical engineers this week anyway just without the community. Twitter says some grumpy things. Well two can play at that game: I've been to every UDS except the Mataro Sessions back in 2004 so this week I'm down the road from Mataro with a dozen KDE and Kubuntu people to discuss what we're all working on. So far mgraesslin has shown his plans for KWin (including no small part of slagging off Mir and the instability of X in Ubuntu) and now Kevin is talking about the status of KDE Frameworks 5.

13050006
Sebas makes a good manager

13050007
Martin draws diagrams of KWin

13050008
Alex takes on the British Empire

13050009
Lunch time

by jriddell at May 04, 2013 12:32 PM

Kubuntu Support

KDE Project:


Some time ago I got a phone call saying Canonical were stepping back from their support of Kubuntu. But Free Software doesn't like to quietly disappear and I've been spending the last year getting back what went missing. Last week I had a meeting to get the last bit in place, commercial support. A nice guy called Niall from Emerge spent a lot of time and energy getting an agreement from Canonical to be able to provide the commercial support then found a company to actually provide that. So I drove down to a part of England called Huddersfield to visit the offices of With Support, a small company doing Linux support. Their office has a fresh cut wood smell coming from all the fresh cut wood. Tariq is the head man having built up the business from scratch. He started off doing Linux desktop support but has moved away from that due to lack of business, hopefully being an official Kubuntu partner will fix that.

We installed Kubuntu to take a look from a user support point of view and found a bunch of issues. The main one was krfb not working to share the desktop, this is important as a way to get access to the user's computer. We didn't look at Kiosk but he considers it important to be able to lock down KDE's settings for companies that want it, I think this should still work but it'll need testing. Muon was a lovely package manager but no good if it doesn't know about packages which if you install without a network connection is the case until the cron job runs, ug. QApt seemed to not be doing what it needs to either installing .deb packages or working with the directory share plugin to install samba. And then he had some features he thought the users would expect like new applications highlighted in the application menu.

Then we had a conference call to talk business. The important thing about this deal is all profits go to the Kubuntu Council to spend on things to help Kubuntu. We'll need to set up a Paypal account or other way to pay and a transparent way to split money between us. And it'll need putting that on the website in some suitably clear marketing talk. I'm very excited.

by jriddell at May 04, 2013 11:09 AM

May 01, 2013

Elliot Murphy

Web-enabled door latch

Raw materials for the next hack morning. We are working on web-enabling the door latch at Think Tank so that we can open the door remotely from a web page. We’ll be using a Node.js REST API connected to the GPIO pins on a WiFi-enabled Raspberry Pi. The GPIO pins operate a relay which operates a door latch with a builtin electromagnetic release.

Raspberry Pi with relay and electromagnetic door latch.

Raspberry Pi with relay and electromagnetic door latch.


emurphy77Raspberry Pi with relay and electromagnetic door latch.

by Elliot at May 01, 2013 06:52 PM

April 29, 2013

Jonathan Lange

Deliberately being naughty

I don't get a whole lot of time to hack on things outside of work. Maybe one or two slots of about two hours in a good week. What I want is for that time to be fun, creative, and hopefully useful for others.

When I do get such discretionary time, what I often end up doing is code review. I believe that finishing things is more important than starting them, and know how much it sucks to be waiting for someone to review your code.

So, I'll do a couple of code reviews (some of which might be strictly blocking on me). And then I'll run out of time.

This means I rarely work on anything I actually find fun. Code reviews are rarely fun.

There's a similar, related thing working on a project that's got a backlog of code reviews, like, say Twisted. Twisted has forty or fifty patches right now that are waiting for someone to review them. Do I want to fix bugs in Twisted? That would be contributing to the patch problem, so probably not. Do I want to do code reviews? Well, I guess I should, but I'll probably find something else to do instead.

I don't think Twisted should change its policy. I think the solution is for people like me to volunteer more time doing something they don't necessarily enjoy for the sake of achieving some broader, nobler outcome.

However, for me to sustain myself and keep enjoying open source and my chosen career, I've decided to make sure that I regularly schedule "naughty time". That's going to be time where I don't work on the thing that I should be working on, but instead play with something I find interesting at the time, even if it's not the best thing to do.

by Jonathan Lange (noreply@blogger.com) at April 29, 2013 02:23 PM

April 25, 2013

Mark Shuttleworth

The Supercalifragilisticexpialidocious Scorpionfish. Not.

Congratulations and thanks to the entire extended Ubuntu community for today’s release of Ubuntu 13.04, the Raring Ringtail. Feedback over the past few months on raring has been fantastic – pretty much universal recognition of the performance and quality initiatives Rick’s team have lead and which have been embraced across the platform and the community.

In the work to underpin a rolling release, we made huge strides in automated quality assessment and performance testing. From here on our, I’m going to treat the cutting edge of Ubuntu as a rolling release, because the team have done such an amazing job of making daily quality a reality. That’s a value that we have all adopted, and the project is much better off for it.

Slipping the phrase ‘ring ring’ into the codename of 13.04 was, frankly, a triumph of linguistic engineering. And I thought I might quit on a high… For a while, there was the distinct possibility that Rick’s Rolling Release Rodeo would absolve me of the  twice-annual rite of composition that goes into the naming of a new release. That, together with the extent of my travels these past few months, have left me a little short in the research department. I usually spend a few weekend afternoons doodling with a dictionary (it’s actually quite a blast, and I recently had the pleasure of actually knowing what some ponce was talking about when they described something as ‘rugose’).

So today I find myself somewhat short in the naming department, which is to say, I have a name, but not the soliloquy that usually goes with it!

Which is why, upon not very deep reflection, I would like to introduce you to our mascot for the next six months, the saucy salamander.

The salamander is one of nature’s most magical creatures; they are a strong indicator of a pristine environment, which is a fitting way to describe the new world emerging around Ubuntu Touch – new applications, a new SDK, a gorgeous clean interface. You’ll find salamanders swimming in clear, clean upstreams – which is exactly what’s forming around Ubuntu’s mobile ecosystem. It’s a way of saying ‘thank you’ to the tremendous community that has joined the effort to create a single unified experience from phone to PC, with tons of crisp and stylish core apps made by people from all over the world who want to build something fast, fresh and free. And we’re saucy too – life’s too short to be stodgy or stilted. Our work is our play – we make amazing things for a huge audience, we find space for pretty much every flavour of interface and do it with style.

Happy release day everyone! Here’s to a super saucy cycle.

by mark at April 25, 2013 02:32 PM

April 23, 2013

Jonathan Riddell

13.04 Testers Needed!

KDE Project:

We need you to test candidates for the 13.04 Kubuntu release. ISO tracker has the tests needed and links to the images. Chat in #kubuntu-devel to coordinate. Happy testing!

by jriddell at April 23, 2013 10:44 PM

April 18, 2013

Jonathan Riddell

Slick New Artwork and call for testers

KDE Project:

Some slick new artwork has arrived in Kubuntu 13.04. 13.04 is due for release a week today so all hands on deck for testing, join us in #kubuntu-devel to help out.




Plymouth boot screen




Ubiquity installer

Hugs to agateau, sheytan and apachelogger for the artwork polishing.

by jriddell at April 18, 2013 11:20 AM

April 17, 2013

Jonathan Riddell

100 things that are great about Kubuntu?

KDE Project:

Google+ topic to name 100 things that are great about Kubuntu

"Community involvement."

"I like KDevelop, KDE and Debian packages combined with the fast update service of Kubuntu."

"I have to hand it to the Kubuntu package team, they really get the updates out fast"

"Everything is highly customizable."

Add your reason today :)

by jriddell at April 17, 2013 10:04 PM

Tim Penhey

The Go Language - My thoughts

I've been using the Go programming language for almost three months now pretty much full time. I have moved from the Desktop Experience team working on Unity, into the Juju team. One of the main reasons I moved was to learn Go. It had been too long since I had learned another language, and I felt it was better to dive in, than to just mess with it on my own time.

A friend of mine had poked around with Go during a hack fest and blogged about his thoughts. This was just before I really started poking around. Interestingly the main issues that Aldo found frustrating with the errors for unused variables and unused imports, I have found not to be such a big deal. Passingly griping, sure, but not a big issue. Having the language enforce what is often a lint checker in other languages I see as an overall benefit. Also, even though I don't agree with the Go formatting rules, enforced by gofmt, it doesn't matter. It doesn't matter because all code is formatted by the tool prior to commit. As an emacs user, I found the go-mode to be extremely helpful, as I have it formatting all my code using gofmt before saving. I never have to think about it. One thing I couldn't handle though, was the eight character tabs. Luckily emacs can hide this from me.

;; Go bits. 
(require 'go-mode-load)
(add-hook 'before-save-hook #'gofmt-before-save)
(add-hook 'go-mode-hook (lambda () (setq tab-width 4)))
 
There are some nice bits to Go. I very much approve of channels being first class objects, and the use of channels to communicate between concurrently executing code. Go routines are also nifty, although I've not used them too much myself yet. Our codebase does, but I've not poked into all the nooks and crannies yet.

However there are several things which irritate the crap out of me with Go.

Error handling

The first one I guess is a fundamental design decision which I don't really agree with. That is around error handling being in your face so you have to deal with it, as opposed to exceptions, which are all to often not thought about. Now if our codebase is in any way representative of Go code out there, this is just flat out wrong. The most repeated lines of code in the codebase would have to be:

if err != nil {
  return nil
}

This isn't error handling. This is just passing it up to the chain, which is exactly what exception propagation does, only Go makes your codebase two to three times larger due to needing these three lines after every line of code that calls into another function. This is one thing I really dislike, but unlikely to change.

As a user of a language though, there are other things that could be added at the language level to make things slightly nicer. Syntactic sugar, as it is often known, makes the code easier to read.

If the language is wanting to keep the explicit handling of errors in the current way, how about some sugar with that.

Instead of

func magic() (*type, error) {
    something, err := somefunc("blah")
    if err == nil {
        return nil, err
    }
    otherThing, err := otherfunc("blah")
    if err == nil {
        return nil, err
    }
    return foo(something, otherThing), nil 

 
we had some magic sugar, say a built-in method like raise_error, which interrogated the function signature, and returned zeroed values for all non-error types, and the error, and returned only non-error values, we could have this

func magic() (*type, error) {
    something := raise_error(somefunc("blah"))
    otherThing := raise_error(otherfunc("blah"))
    return foo(something, otherThing), nil 
}

The range function

There are several different issues I have with the range function.
  1. range returns one or two parameters, but the language doesn't allow any user defined functions to return one or two parameters, range is super special
  2. using range with a slice or array and getting a single value, doesn't give you the value, but instead the index - I never want this
  3. there is no way to define range behaviour for a user defined type
These three things are mostly equal in annoyance factor. I'd love to see this change.

No generics

Initially I accepted this as a general part of the language. Shouldn't be a big deal right? C doesn't have generics. I guess I spent too long with C++ then.
My first real annoyance was when I had two integers, and I wanted to find the maximum value of the two. I go to look in the standard library and find math.max. However that is just for the float64 type. The standard response from the team was "it is only a two line function". My response is "that's not the point".

Since there is no function overloading, nor generics, there is no way with the language at this stage to make a standard library function that determines the maximum value of two or more numeric types, and return that maximum in the same type as the parameters. Generics would help here.

A second case for generics is standard containers. The primary container in Go at this stage is the map. So many places in our codebase we have map[string]interface{}. The problem with this is that you have to cast all values retrieved from the map. There is also no set, multi_map, or multi_set. Since there is no way to provide simple iteration for user defined types, you can't easily define your own set type and have simple iteration using range.

Interfaces that aren't explicitly marked as being implemented help in some ways to provide features provided by generic types and functions, but it is a poor substitute.

So far...

Learning Go has been an interesting experience so far. I like learning new things, and I'm going to be using Go for some time now with the current project. No doubt I'll have more to write about later.

by Tim Penhey (thumper) (noreply@blogger.com) at April 17, 2013 03:51 PM

April 03, 2013

Elliot Murphy

First occasional Think Tank Portland hack morning

Today we had the first of a series of hack mornings at the Think Tank Congress coworking space where I spend most of my working time. Abe Fettig organized it, and even arranged coffee from Speckled Ax and potato donuts from Holy Donut as well as giving away of few copies of Programming Twisted, 2nd Edition. The idea of a hack morning is to take a break from your normal projects and work on something new or experimental, and then do a 3 minute demo of what you learned/accomplished at the end. Working on the ideas together in the same room with a ticking clock is a nice change of pace and encourages a lot of information sharing. We had coffee at 8:30, worked until 11:30, and then did a bunch of demos. There were 6 of us that participated, and another half dozen that stopped by to watch the demos, so it was a lively morning.

Think Tank Congress Hack Morning

Photo credit Jason Sandifer

I had been itching to get a Geckoboard custom map widget to draw a map on a dashboard using data from my own JSON API, and last night Daniel Piltch of Freeport Metrics offered to bring over a new Raspberry Pi, so we teamed up and built a kiosk. The Raspberry Pi is a cheap, tiny computer with no moving parts or fans that runs linux. We managed to get the Raspberry Pi to boot directly into Google Chromium running in kiosk mode and loading a Geckboard dashboard with my custom latitude/longitude points displayed along with the event schedule for Think Tank pulled from Google Calendar, all displayed on a big HDMI monitor. I can’t wait to do more with the Raspberry Pi, it is a remarkable little device.

Hugh Morgenbesser of TripAdvisor worked on a Django project where he built a web UI that allowed people to enter a street address, and then he used the Google mapping APIs to geocode the address into latitude/longitude points and store the whole thing in a database, and then plotted the markers on a map. It was cool to see this, it’s the very next step I need for my own mapping project. Continuing on the mapping theme, Patrick Kenney of Deviceable worked on a business model canvas and a Rails app which he described as “Pinterest for Modern Architecture & Art”. This took mapping local: the idea is to enable people to share interesting/noteworthy buildings, art installations, and other points of interest, and then discover what is nearby based on your location.

Hasan Adil of LabelTop Software decided to try Ember.js. He has been building a project management application for iOS, and wanted to expand into making a web version. He managed to get a TODO list app running all in Ember.js, and showed off the polished interactions. Hasan described his approach as opposite from lowest-common-denominator thinking – he is building a whole new codebase for the web version because wants his product to take full advantage of the strengths of each different platform.

Abe Fettig of Fig.ly planned to get his hands dirty with drawing and graphics, and exercise an idea about music recommendations based on longitudinal analysis of listening habits – don’t just consider what you have rated as 5 stars, but figure out e.g White Stripes are more of a summer band than a winter band. He managed to pull together graphs of listening frequency over time for his whole iTunes library from the last few years, and plans to add in data from Spotify & Rdio next. He plotted against the seasons and it was interesting to see that there were some seasonal patterns in a few of the bands.

Overall this was a lot of fun, and definitely worth the effort of carving out a morning to do it. I’m looking forward to the next one!


emurphy77Think Tank Congress Hack Morning

by Elliot at April 03, 2013 06:29 PM

March 27, 2013

Jonathan Riddell

Formidable! Un Planet Francais

KDE Project:

Bienvenue au Planet KDE Francais, un grand planet pour tout la monde francophone.



"C'est cool ça un planet en français pout KDE!" Cédric Bellegarde

"Une planète en français s’il vous plait!" Jean-Nicolas Artaud

"So that is the place to go for reading montel blogpost" afiestas

by jriddell at March 27, 2013 05:51 PM

March 25, 2013

Jonathan Riddell

NHS Hack Day Judgement

KDE Project:

Myself and Paul and Nicky and Carry judged the entries. They were all winners. They all showed what could be done when you put people with ideas together with people who can hack. They all showed the power of open, collaborative and friendly development.

The winner was: Pocket TherAPPist, Michael Richardson learnt how to code Android in two days and mastered Eclipse to make a way of recording a patient's anxiety levels for later review.

Second was NHS Quick Help a PR campaign and simple webpage to point people towards the best place to go when you have a problem, could be A&E but could also be your local Pharmacy, Minor Injuries Unit or NHS 24.

Third was: South East Scotland Anesthesia information, they didn't add themselves to the project list so I don't know more :(

Fourth was GP Provision Planner, which used open source, open data and open street map to show where GP surgeries are over subscribed or under subscribed for future planning needs.

Code can be found on github/nhshackscotland and on the Project List. Hopefully the NHS staff can take this back and convince their departments and managers to go forth with Freedom.

525063 10151714044274505 1313883357 n
Judging Mode

DSCF7412
The Judges Contemplate

DSCF7407
Coding on NHS Quick Help

by jriddell at March 25, 2013 12:21 AM