She sells sea shells
Unity isn’t the only desktop environment that Ubuntu has. There are many and as they said, Unity is a shell for Gnome but it is not Gnome-Shell. I have been using Unity for a few years now and figured I would have a bit of a play with Gnome Shell for a bit. It is very easy to install, on Ubuntu clicking here: gnome-shell will with a bit of luck set it up for you. At the lightdm login screen you can then select gnome shell from the list of desktops and you are done.
Shell has two modes, normal and overview, and you get to the overview mode by hitting the super key (that is the one with the anticompetitive Microsoft advert on it in all probability). Overview mode allows you to see a launcher on the left (a lot like the unity launcher) and a workspace switcher on the right which flips workspaces for your primary monitor only, secondary monitor stays static, which actually works rather well for me, I prefer the 1 dimensional list of workspaces to the 2×2 grid that unity has by default. Also in overview mode at the bottom of the screen is a notification area, where you can see notifications that have happened, I like this too. Notifications seem to have a good balance between being ephemeral and reviewable, plus when you click on notifications in shell you actually get to the thing that made them – so you get a notification about an email and decide to go read it, click the notification and you activate Thunderbird rather than having to go and find it yourself. The menu bar has cool looking speech bubble menus on the indicators and best of all it has an accessibility indicator in the menu bar so it is easy to turn on the various interesting assitive tools we have. There isn’t a global menu which is great, after two years of using it I never really understood the benefit or got used to having the menu in a different place to the thing it belongs to. Overall it seems quite polished, quite productive to use and really rather pleasant.
So this is all rather fun, but is there cool stuff I am missing out on? I can see the HUD has gone, and the dash with it’s lenses and omni-global super search. Or are they? Gnome shell has extensions https://extensions.gnome.org/ and they can do rather a lot. I haven’t seen a HUD extension yet, but I think that would be entirely possible. As for Lenses, well yes, they are absolutely there, have a look at the Wikipedia search provider. You type stuff in overview mode and as you type it searches both your local applications and Wikipedia, returning article summaries that you can click on to open them fully in the browser. When running gnome-shell you can install the extension right from that web page with a little slider control, it then automatically downloads (into ~/.local/share/gnome-shell/extensions) and starts working, no sudo access required as it is just your session, and you opted into it personally as these are not installed system-wide (you probably can install them system-wide by putting them somewhere else). They are written in Javascript and have quite a lot of control over the user interface and can do all kinds of things, in fact looking at the capabilities of extensions it strikes me that pretty much all of the Unity features could be re-implemented as gnome-shell extensions. Right now I am mostly interested in extending the search provider area and the overlap of that with lenses. I want to see if the gnome-shell approach has the same problems as Unity with regards to privacy or different ones. I have been doing a bit of tinkering and in the next post I should have something to show.
Privacy is hard. Lets go shopping!
It is possible that you have read some stuff about the Ubuntu shopping lens recently. Unity and lenses are pretty cool, it kind of gives one place to search for all kinds of stuff, and you plug in additional search engines to throw your query at. So you might search for a word and find an application, some local files, some wikipedia articles, a file in a document management system and some products on Amazon that relate to your search terms. A kind of super dooper omni-global search for things as well as web pages. Some people are concerned that searching for things means you have to send your search terms about all over the place, you can’t truly anonymously just search for stuff, you have to tell these various search engines what you are looking for – and if you are using an omni-global super search that means that search terms might go to inappropriate places.
Imagine you are searching for your socks, this is like looking in a drawer that normally contains socks and at the same time phoning up all your friends and asking them if they have seen your socks anywhere. This is not ideal and when people started noticing this (after about a year of it having this behaviour – people only noticed when there was obvious money involved) a switch was added to “implement privacy”. It was a rush job, nobody is arguing with that, and it satisfied most people at first glance. There is now a switch in the privacy controls that can be flipped to turn off online searches. Sounds good right? Well diving a little deeper this just sets a flag, and the individual search scopes (the things that put results in the lenses) have to be modified to check for that flag and not go searching. To stretch our sock analogy this is like contacting each of your friends individually and saying “when I set this flag, and phone you, please just hang up on me”. If you acquire a new friend you have to remember to tell them this important condition of friendship.
Now if you want to ask each of your friends “have you got my Justin Beiber CD?” you have a problem, because they will just hang up on you. So you have to unflip the flag to perform that search – your friends are entirely useless with the flag set because they will just hang up on you – or they will ignore the flag and might end up spying on your morning sock related searches if you accidentally phone them. You do still have the option of doing a focussed lens specific search rather than using the home lens omni-global everywhere search. Using lens specific searches you can “search in my sock drawer” or “ask that friend if they have seen my socks” without other friends finding out about your sock related issues.
A lot of people got hung up over whether the shopping lens should be opt in or opt out. This is a bogus thing to get hung up about, the problem isn’t the default setting, the problem is that it isn’t granular enough. Lets say you install the shopping lens and opt-in to online searches. Awesome, you can now have lots of fun purchasing toasters and shoes and better CDs than that Justin Beiber one that you lent to someone or other. Now lets say you install the rather fine Google Docs lens you would expect that to be opt-in too right? Well, bit late, sorry you opted in to online searches already and there is no more fine grained control (as it happens the Google Docs lens is one of those friends that doesn’t know about your flag and it totally ignores it and picks up the phone).
So, there are issues, the developers know about them and they are a clever bunch, I am sure that they will come up with a more considered and comprehensive approach to this by the next version of Ubuntu. In the mean time I am not particularly comfortable writing lenses because they either have to depend on all other online search lenses being turned on, or they have to ignore the flag. Both options kind of suck, so I have been exploring other interesting things that are similar to lenses, one of which is the topic of my next post.
Actions from Ubuntu UDS-R
This week was the Ubuntu Developer Summit in Copenhagen, this is kind of an internal series of workshops, but as Ubuntu is an open project it isn’t a closed doors event. Anyone can attend in person, some people are sponsored by Canonical to attend. Others (like me this time) can follow along remotely via live video and audio streams and IRC talk back to the workshop rooms. The full schedule was here, and the proceedings of each session are recorded on an Etherpad page. I wrote some scripts to download all the text of these pages and scoop out the action items and you can find that over here. These will all get processed and end up on status.ubuntu.com as pretty burndown charts for ongoing tracking, but this is a quick and dirty list of all of them.
Time for an Upgrade
The Ubuntu UK Local Team allocation of CDs arrived yesterday and as usual these are available for free to anyone who wants one in the UK. Just send me an SAE following the procedure here and please please try to put enough postage on it, I get bored of walking to the post office to pay the fine.
If you want several of them to hand out at an event then please get in touch and we can sort that out.
As usual there is one special CD that gets upgraded each release, the one my chickens peck at! They were using Ubuntu Server 12.04 LTS before, but today I upgraded them to Ubuntu Server 12.10 the Quantal Qetzal. I think they were pleased at the bird themed code name and they have been getting quite familiar with the command line over the last few months. I tested the retired 12.04 CD and it still works great in a computer after washing the muck off it.

Would you put that in your chicken run?

It might have Long Term Support, but would you put it in your laptop?
OpenERP and Ubuntu Unity Desktop Integration
Ubuntu has been in the news quite a lot recently with the release of version 12.10 including the Amazon shopping lens and next week some game shop thing called Steam is going to be announced. It isn’t all toys and shopping though, some of the new features make a heap of sense for serious business applications too. One really interesting area for me is the webapp integration, this is an extension for Firefox and Chromium that allows stuff running in the web browser to integrate with the Unity desktop in a variety of ways, making the distinction between a web application and a desktop application a bit more blurry – which is a good thing. There is built in integration for an assortment of popular consumer websites like youtube, twitter, facebook etc. but it isn’t limited to these single domain software as a service sites. Any web site or web application can test for the presence of the extension then export it’s menu items, do notifications and other actions.
OpenERP is probably my favourite web application to work on, and this is a typical application you might install to help manage a business, it is a modular framework that covers accountancy, logistics, sales process, project management, manufacturing, HR etc. The web server is largely python based, but as it happens this integration just uses javascript. After you install the module and visit your OpenERP server you should be prompted to allow integration, if you accept this you will get a notification (bubble in the top right of the screen) to say it is activated and from then you can use the alt key to bring up the HUD and type anything you might find in an OpenERP menu somewhere, such as “Invoice”. You don’t have to type all of the word, it will search as you type.
You can grab the code from here and the module as a standard module zip file from here. I am thinking of adding some more features, possibly messaging menu integration and notifications. I might do a separate theme module that is mostly CSS and cosmetically adjusts the user interface to match the unity desktop. Right now most of our customers running OpenERP use it on an Ubuntu server, but use a mixture of Windows and Mac on the desktop, what I want to show with this kind of integration (this is just the start) is that Ubuntu can simply be a better platform for business than other operating systems, especially as things move away from dedicated client applications to web based interfaces.
Camera Control
This is based on a £35 wireless pan and tilt camera, but with a bit of python running on a separate web server to control it. The camera comes with a rather messy user interface, that isn’t tablet/phone friendly but is fairly easy to pick apart and see how it operates by poking a few cgi files on the camera to give it instructions. The camera itself is running Linux (with a bit of a GPL violation as there is no source published as far as I can tell). The mjpeg video stream is direct from the camera and it has a clickable imagemap overlay which chops up the image into 40px squares. Clicking a square requests a simple web service running on a computer close to the camera which starts the camera moving and stops it again after a fraction of a second multiplied by the number of pixels it needs to move. The camera itself has no absolute or relative positioning (not quite true, you can set 8 preset absolute positions), it is just done by careful timing of the start and stop signals.
The camera can move in diagonal directions, it would be nice to get it to smoothly move to a new location smoothly first by panning and tilting, then the rest of the way on one axis. Might be nice to have something round the outside of the image to allow you to move double the distance, at the moment you can move a half frame in one click would be nice to be able to go a whole frame away.
The camera stream has a maximum of 4 concurrent viewers, a few more if I drop the resolution to 320×200. For lots of viewers I would use ffmpeg to reencode from mjpeg to something else on the fly and possibly pass it to a streaming server of some kind, the overlay control should work just as it is over a multicast video stream. In reality, if you are expecting more than a couple of concurrent viewers they are going to argue over control too much.
Source code is on launchpad and I will tidy it up somewhat as time goes by and make it more of a collaborative project (starting with some installation instructions, it uses apache and mod_python at the moment). Please share ideas for features in the comments here.
This is an image from the camera when you loaded this page, click through for the live steerable video
If you can’t see the video, try coming back later, it probably hit the limit of viewers.



