Showing posts with label ubuntu. Show all posts
Showing posts with label ubuntu. Show all posts

Monday, January 16, 2012

New laptop, and Ubuntu Ocelot comments

Some news about my finances made me buy a laptop just after Christmas, not because they're good, but because this'll probably be the last time I get the chance to buy one for the next five years or so. Don't worry, the news is good news. I'll share more in a few weeks.

What I got was a Dell. Yes, I voluntarily went out and bought a Dell. Nobody buys Dells except (1) corporate IT departments and (2) "PC owners" in the fevered imagination of Mac zealots, until now. And in classic Dell style, the machine looks and feels boring. Corporate. Depressing. Urgh.

So why Dell? Well, because the alternative was Lenovo, and quite honestly, my last few experiences with Lenovo have not been good. I was thinking HP, but for some reason they refuse to include nipples on their laptops unless they cost four digits, which is a shame because I'd have gone in that direction given the budget PC I bought from them is excellent. And it gets harder to get nipples on your laptop with other brands. As it is, the Dell nipple could be a lot better, I'm on the look out for a better nub because it's actually quite painful to use.

What did I get? Well: It's a Latitude E6420, which is a Toyota Camry of the laptop world I guess. It has a Core i7, albeit a low end version (ie just the two cores, made to look like four using hyperthreading). The screen is a 1600x900 14" thing, which is very nice indeed, and there's a low end nVidia in there that, even under Wine, does a pretty good job on everything I've thrown at it, although GTA 4 is wanting. There's a (fairly crappy) webcam, an SD card reader, and a few things Ubuntu doesn't have drivers for like an RFID reader, finger print reader, etc. I've upgraded it to have a 750G disk, and 8G of RAM (which maxes it out unfortunately. With 4G being the standard today I'm bothered 8G will look pretty crappy in five years.)

I put Ubuntu 11.10 on it. Now, I'll be honest with you, while I like the direction Unity is going in, I do think - fairly strongly - that it was released too early. It's still not ready for prime time, in my opinion. There are major and minor complaints I have with it:

  • Running an app that isn't on the dock is a PITA.
  • The dock doesn't really understand/respect the "multiple workspaces" thing.
  • The single menu thing is a great idea, but the whole "Move the mouse to it to see it" thing is bad. I'm a fan of Apple's solution here, change the "File" menu to have the same of the app and otherwise show the menu all the time. Or go the Commodore Amiga route and use the right mouse button. And, just showing the menu and not trying to id the app is OK in practice too (see below.) But however you do it, understand Fitts Law doesn't work well if you don't know where to send the mouse.
Some of these may seem minor, and it may not be a long list, but honestly, it's enough for me to not be able to stand the system for any great length of time. What I did instead was:
  • Use the GNOME 3 "fallback" system
  • Install the third party GNOME 3 panel applets that implement the Ubuntu menus (including the single menu) and that thing on the right with all the icons and your name and so on.
  • Installed "Docky" and had that be the bottom panel. Docky isn't perfect, but it's slightly better at the multiple workspaces thing, and I prefer that style of window management - slightly - to the Windows 95 taskbar thing.
The third party PPA that includes Ubuntu panel applets for GNOME 3 is described by this article. The menu thing actually shows the menu at all times (no hiding it when the mouse isn't near it), and that works for me.

People are switching in droves to alternatives to Ubuntu because of Unity. I'm not convinced that it's quite as high as some of the claims - many people are citing figures from ISO distribution sites for instance, but most people upgrading from Ubuntu X to Ubuntu Y will never be in those figures. But still, Canonical does need to be a little more careful when releasing their new technologies. It's hard seeing giants of the Open Source/Free Software world fall not because their technologies are bad, but because they're willing to release unfinished crap as production code when they should sit on it and make it work properly before releasing it. Unity is getting there though. And from my brief testing of GNOME 3's Shell, I'm of the opinion Canonical are slightly ahead, although the GNOME 3 people have some great ideas too.

On that note, would it be too much to ask for Ubuntu to put Firefox 3.6 back in the repositories?

Also: Thunderbird is OK, but it's not Evolution, and quite honestly, I think Evolution is a much better product. It's much faster, and does more without the need for extensions. It's a little annoying that Ubuntu is supporting the former over the latter because even if you install the latter, it doesn't automatically integrate with Ubuntu's notification bar, while Thunderbird just sits there thumbing its nose at you.

Here's what I think Canonical needs to do for Ubuntu 12.04 (or 12.10, it's probably too late for 12.04.)
  • Bring back hierarchical menus as a way to launch applications. Big translucent panels with huge icons that leave most apps hidden and with it being confusing as to whether an app is even on your computer or not doesn't work. It really doesn't. If you must do something like that, make the icons smaller.
  • The dock really needs a lot of fixing. There's not enough space to show everything on most PCs which leads to awkward hacks involving scrolling. And it doesn't respect multiple workspaces. So, to that end:
    • Make the dock thinner
    • Let the user place the dock on the bottom of the screen if they so wish
    • Only show icons for apps on the current workspace (plus launchers, widgets, etc), and if the same app has windows open on multiple workspaces, pretend those windows don't exist.
    • Disable multiple workspaces by default (but make it easy for us to enable.)
    • Reduce the number of circumstances in which the dock is hidden.
  • The single menu needs to be implemented in all Ubuntu supported apps, including LibreOffice. It should not be hidden with the current window's name.
  • Replace Thunderbird with Evolution.
  • Replace Banshee (OMG. You know that thing causes the fan to start running, and both memory and CPU to be maxed out, immediately upon starting on my Netbook?) with RhythmBox. As a general rule, avoid replacing working software in the future just because it's imperfect and something else looks like it's going in the right direction - wait until that other app is proven first.
So, those are my opinions.

Finally, when did Wine get so good? With some minor exceptions, pretty much everything I've got on Steam that I tried has worked perfectly right out of the box. GTA IV needed some tweaking, and a third party DLL to disable Windows Live (which unfortunately disables all multiplayer, including LAN, alas) but once it works it's hard to believe it's not running natively. Awesome job.

Sunday, December 4, 2011

LXC

So, it's been over a week since I switched to LXC from Xen. I thought I'd post something about my experience with it.

Why did I switch?

Quite simply, I had two problems with my existing Xen set up, neither of which is the fault of Xen. I want to make that clear: I love Xen, I love the concept, it's a great system.

But I'm also a Ubuntu guy, and (problem #1) frankly, Xen is one of those things Canonical has never taken seriously. Getting a Xen compatible kernel usually means downloading it from somewhere obscure, and the repositories are far from ideal. You can't, in a 8.04 VM, upgrade to a more recent Ubuntu simply by using the usual upgrade tools. And I needed to upgrade. Everything I was running, from the version of Ubuntu Hardy (8.04) to the version of Xen was old, had little support, and didn't really work the way I wanted. In fact, bugs in the versions of Xen and Linux I was running meant that if any VM had to do a lot of disk activity, the chances were that one or more VMs would crash.

The second issue was my CPU. It's a 64 bit Intel contraption, but unfortunately it doesn't have native virtualization. This is fine for Xen, if you have operating system support (but I'm running Ubuntu, so I don't) but it's not fine for any of Ubuntu's supported virtualization platforms. KVM, as provided by Ubuntu, requires full virtualization be supported in the CPU. Other options such as VirtualBox likewise require CPU support. I still find it ludicrous that Canonical (and, to be fair, the organizations Canonical relies upon) decided to support KVM over Xen when Xen is clearly more efficient and has a much better architecture for this kind of thing. And yes, I know that KVM pays lip-service to paravirtualization, but in practice you can't use it.

This doesn't leave many options without spending money, and right now I didn't want to do that if it was avoidable. That meant looking at other technologies supported (enough) by Ubuntu, and frankly, there aren't many. After reading about OpenVZ (a common technology deployed by VPS vendors), I decided to give LXC a try.

LXC is essentially a "supported" version of OpenVZ - the latter requiring kernel patches, just like Xen. LXC is pseudo-virtualization. Rather than actually emulate a full computer (virtualization) or provide an infrastructure for multiple operating systems to share a computer and allocate resources (para-virtualization), LXC's approach is to have a single operating system kernel run multiple operating system userlands.


About LXC

LXC's approach is interesting. Services provided by the kernel - file systems, networking, process scheduling, memory allocation, etc, exist once. The kernel hides (or tries to hide, see later) anything that doesn't belong to a process's userland. chroot is used to provide a completely distinct part of the core file system (of course, the administrator can  still give a "VM" - called a container - a disk or partition of its own by mounting a disk and chrooting to it.) Each container is given certain rights such as devices it can access and memory and disk usage quotas (which can be unlimited.)

This approach leads to advantages and disadvantages. The primary advantage is efficiency. If there's one kernel running, there's no need to have a layer arbitrating between competing systems or, worse, emulating hardware so that operating systems "think" they have the run of a system. Better still, resources not in use by one environment aren't wasted as they might be in a virtualization or paravirtualization system if the latter has no specific strategy to handle them.

The major disadvantages are:

  • Each container's "operating system" must support the provided kernel. In practice, this just means "run something recent, and don't try running an operating system that has wild requirements." The standard Ubuntu kernel is able to host all the major distributions, other Ubuntus (including older versions, see below), CentOS, etc. And yes, you can have different containers have different operating systems. It's just they all have to run Linux.
  • LXC is unfinished. As an example, go into a container and type "ls /sys/class/net" and compare it to the output of ifconfig -a in both the container and the "host" system. Both sysfs and procfs have problems with containers, and in some cases, there are actually real security holes - as in you can have a container execute a local script in the host environment. Also there are other little things that don't work, like rebooting or halting containers using the reboot and halt commands.
  • LXC doesn't have the more advanced features offered by virtualizers. For example, you can't take snapshots or migrate running VMs from one computer to another.
The latter is considered a major issue by LXC's developers and is being worked on, but it takes time. 

The concept behind LXC isn't new by the way. LXC is Linux's answer to BSD's jails system, and jails is often seen as a "fixed" version of chroot, a technology that appeared in Unix a long, long time ago. 


Migrating to LXC

I'm bothered by the security aspects of LXC, but for the most part I'm OK using the system, at least in my own environment. There's not a lot worth hacking about my own computer network. Still, I'm looking forward to LXC being finished.

To set up LXC in a Ubuntu 10.04 environment, this is what I did:

1. Installed the latest version

LXC doesn't actually work in the official Ubuntu 10.04 release. You heard that right. It ships with a major bug that causes problems starting up a container if you have multiple volumes mounted. As my /boot is on another partition (2T drive on a BIOS that doesn't support disks that big) mine failed every time with an error about not being able to unmount the root file system.

So the first thing to do is add a third party repository that provides a more recent LXC:

# add-apt-repository ppa:ubuntu-lxc/daily

Networking needs to be manually configured, you don't want Network Manager getting in the way. The easiest way to fix that is to uninstall it:

# apt-get purge network-manager network-manager-gnome

And then there's the installation of lxc and some other important tools:

# apt-get install lxc bridge-utils debootstrap cgroup-bin


2. Configured networking

Networking requires configuration of tunnels, which isn't that hard fortunately. The key thing to understand is that tunnels replace your existing networking configuration. When you configure eth0, for example, you have to do leave as few options (IP addresses, etc) configured as possible. Here's what my /etc/network/interfaces looks like:

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
   address 10.0.X.X
   netmask 255.0.0.0
   gateway 10.0.X.Y
   bridge_ports eth0
   bridge_stp off
   bridge_maxwait 5
   post-up /usr/sbin/brctl setfd br0 0

At this point you should reboot to make sure everything is working as wanted.

3. Made a space for the containers to live

I decided to create a user "lxc" which I did using the adduser command in the usual way. Under /home/lxc I put my containers. Each container is a directory, and each directory contains the configuration file, file system mounts, and root directory of the container itself, like so:

/home/lxc/endothelial/lxc.conf
/home/lxc/endothelial/fstab
/home/lxc/endothelial/root/

I'll explain how to create those files and directories shortly, the important bit right now though is that /home/lxc/container-name exists.

4. I was migrating my existing Ubuntu 8.04 Xen systems. To do this:

4.1 Mount the VM's file system

losetup -f /path/to/disk.img
mount -r /dev/loop0 /media

4.2 Copy the contents making sure permissions etc remain unchanged

cp -a /media /home/lxc/endothelial/ ; mv /home/lxc/endothelial/media /home/lxc/endothelial/root

4.3 Modify the VMs to remove anything that'll interfere with the new environment

cd /home/lxc/endothelial/root/etc/init.d
mkdir DISABLE
mv checkfs.sh  checkroot.sh  udev  udev-finish DISABLE/

4.4 One more modification - Xen uses /dev/xcv0 for the console, change it to /dev/console

vi /home/lxc/endothelial/root/etc/event.d/tty1

Change the last line to:

exec /sbin/getty 38400 console


5. Create the configuration files mentioned above.

lxc.conf looks like this:

lxc.utsname = endothelial
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.mtu = 1400
lxc.network.name = eth0
lxc.network.hwaddr = (my VM's mac address)
lxc.network.ipv4 = (my VM's IPv4 address)
lxc.network.ipv6 = (my VM's IPv6 address, I'm sure this is necessary but...)

lxc.cgroup.devices.deny = a
#/dev/null/zero/random
lxc.cgroup.devices.allow = c 1:3 rwm
lxc.cgroup.devices.allow = c 1:5 rwm
lxc.cgroup.devices.allow = c 1:9 rwm
lxc.cgroup.devices.allow = c 1:8 rwm

#Consoles
lxc.cgroup.devices.allow = c 5:1 rwm
lxc.cgroup.devices.allow = c 5:0 rwm
lxc.cgroup.devices.allow = c 4:0 rwm
lxc.cgroup.devices.allow = c 4:1 rwm

#Ptys
lxc.cgroup.devices.allow = c 136:* rwm
lxc.cgroup.devices.allow = c 5:2 rwm

#rtc
lxc.cgroup.devices.allow = c 254:0 rwm

lxc.tty = 4
lxc.rootfs = /home/lxc/endothelial/root
lxc.mount = /home/lxc/endothelial/fstab

fstab looks like this:

none /home/lxc/endothelial/root/dev/pts devpts defaults 0 0
none /home/lxc/endothelial/root/proc proc defaults 0 0
none /home/lxc/endothelial/root/sys sysfs defaults 0 0 


6. We want the server to start automatically, so create symlinks in /etc/lxc/auto

# ln -s /home/lxc/endothelial/lxc.conf /etc/lxc/auto/endothelial.conf


7. Start the session

For now, we'll start it interactively. We can always shut it down and start afresh once we know it's working.

# lxc-create -n endothelial -f /home/lxc/endothelial/lxc.conf

(Note, each time you change lxc.conf you need to do an lxc-destroy -n container-name and then do the above command.)

# lxc-start -n endothelial

If everything's set up correctly, your console session should become the container's console and you should be able to log in and all that jazz. To shut down the container, open a different console on the host, and type lxc-stop -n container-name.

In use

The above works for me and I was somewhat surprised by how well it works. Despite the 8.04 images I migrated being completely unaware of the LXC system's existence, they run well with no noticeable problems.

Everything's much faster. I'm sure part of this is that I never had a particularly optimal Xen environment to begin with, but, well, the LXC environment is much more efficient anyway, and it really shows.

Things I'm happy about:
  • Fast, efficient, and reliable
  • Power management is reliable. Xen had a habit of running everything at full blast
  • Migrating back ot Xen should be easy. At worst, I can run LXC within Xen VMs without penalties.
Things I'm uncomfortable with:
  • Not 100% transparent. I don't know what will break as a result. Nothing as yet, but it doesn't help my confidence in the platform. Supposedly Oracle will not install because the LXC APIs tell it there's no virtual memory available - but my view is that's a bug in Oracle, who the hell codes that kind of logic into their systems anyway?
  • Security issues
  • No scope for experimentation with operating systems other than those based on Linux. No Solaris or BSDs for example.
  • I'd like to make containers that have no virtual memory for those few applications that absolutely definitely must be available at a moment's notice - Asterisk for example. This isn't possible in LXC, to the best of my knowledge. Still, Asterisk works pretty well in the new environment, while it crashed a lot under Xen.
The list of things I'm uncomfortable with is longer than the "things I'm happy about", but that's a little unfair. Most of the uncomfortable issues are theoretical. The platform is working very well at the moment, and I hope the developers can get the kinks worked out so I can feel more comfortable about the security of my system while running it.

Tuesday, September 20, 2011

The Windows 8 "Walled Garden"

From MSDN:

(On the new touch-UI apps for Windows 8) Distributed through the Windows Store. Apps must pass certification so that users download and try apps with confidence in their safety and privacy. Side-loading is available for enterprises and developers.

This is scary. Or should be. The concept of having to defer to someone else for "permission" to install a piece of software is absolutely outrageous, and is one of the reasons why I'm avoiding the iOS sphere.

About the nearest thing to a positive I can think of (well, not a positive so much as a "might not be as bad as..." thing) is that Microsoft's dominant position pretty much rules out the idea they can screen for content, in the same way that Apple does. If Microsoft uses the concept to screen out, say, compilations of political cartoons (as Apple did) then Microsoft is likely to attract the attention of a lot of anti-trust lawyers again, especially if Windows 8 truly ends up having the devastating affect on the market I think it will.

This, again, really, really, really, underscores the need for Canonical and Google to address the situation. I desperately hope both organizations are discussing this internally. Android doesn't stand a chance as long as it remains a stripped down single user operating system, and Ubuntu doesn't stand a chance as long as its primary APIs have no relevance to touchscreens.


Saturday, September 17, 2011

Ubuntu, Android, and Firefox in serious danger

Let me preface this by saying three things.

First, people who know me know I'm a serious fan of free software (as defined by the FSF) and I'm not exactly a fan of Microsoft. With that said, my views towards Microsoft have significantly softened over the past few years as Microsoft has started to become genuinely innovative and has embraced open standards. But Microsoft remains, at heart, a vendor of proprietary software.

Secondly, I do not have access to Android Icecream Sandwich. That said, the hints about what's in it do not really affect what's written here. It's just about possible that Icecream Sandwich is a true universal operating system that's just at home on the desktop as on a tablet or phone, but it's extremely improbable given the advance notice developers would need to make use of that.

Thirdly, while I technically have access to the betas of Ubuntu 11.10, I haven't yet downloaded it. I have followed its development, and Canonical have been fairly open about what it contains. So I don't think it's wrong for me to come to the conclusions that I'm coming to.

So, with that said, let's get to the meat of this journal entry. I think Microsoft's Windows 8 is going to change the way we use computers, and I don't think Android, Ubuntu, or Firefox are in a position right now to be a part of the future.

I spent about fifteen minutes using Windows 8 this morning. I knew roughly what was in it, and it was an interesting experience. Windows 8 has a very different UI from what we're used to. In some ways, it felt like going back to the 1980s when people started playing with GUIs. There were one or two significant problems: the UI, as is, just doesn't work well with a mouse. Lots of things are non-obvious, with hidden dialogs and strange menus.

Still, it does actually work, and you can see exactly how Microsoft intends for it to be used. This is a universal user interface. It'll appear on a tablet - which quite honestly, is probably what Microsoft intends the PC to turn into, it'll be on your TV, your phone, and your desktop - insofar as you still have one.

And by tablet, I don't mean a toy like an iPad or Xoom. I mean something that runs real applications, the logical successors to the ones you run on your desktop, not stripped down versions designed for a stripped down computer running a stripped down operating system. In that respect, this is almost a threat to Apple too, except that I suspect the iMac will run a touch version of Mac OS X in the long run anyway, and I believe Apple is working on it.

The other aspect of Windows 8 that's worth noting is that it's a web operating system. During the 1990s, Microsoft wanted to kill Netscape and spent a lot of time "integrating" IE into Windows to make it appear it was a necessary component of the system. The integration was essentially a sham, Microsoft wasn't ready to produce a real web based operating system at the time, and saw the entire concept as a threat.

That's not true of Windows 8. The user interface is, very clearly, a system built on web technologies, on top of the IE engine, and it's no longer realistic to suggest that users are going to find it useful to have alternative browsers installed.

There are C++ APIs, including an entirely new API unrelated to Win32, but it seems to exist largely as a belts-and-braces thing, a way to ensure that scenarios Microsoft hasn't thought of aren't impossible in the new system.

The combination of these technologies seems to point to drastic changes in the way we're using computers. If tablets are suddenly useful, it's quite easy to envisage people actually using them rather than buying them and ignoring them after a few weeks. Microsoft has been pioneering tablets for the last decade, but hasn't found a winning formula for the systems - but with the advances in UI design of the last few years, it really has a chance to make a workable tablet system.

Would people want these things? Well, the way I suspect it'd work would be something like a bigger version of the Motorola Atrix concept. You'd have a very portable device that contains everything, with the option of hooking it up to a proper keyboard and monitor when you need the comfort of having both. And personally, I love the idea. I've been wanting something like that since the 1980s. I'm not kidding. And I don't see why everyone wouldn't like the idea, given a tablet device that's powerful enough.


Ubuntu

Ubuntu has been doing some very interesting stuff on the UI front lately, but it's like they're heading in entirely the wrong direction. By this, I don't mean the usual "Wah! I don't like Unity!!" arguments - as a mouse driven UI it's heading in absolutely the right direction. I'm not saying it's "good" yet, it isn't, there's a reason I don't run it as my primary UI, but I liked where Unity was going.

The problem here is that Unity is very much mouse oriented. The decisions the Ubuntu people are making are mostly revolving around the idea that the user will be using a mouse to control their system. Some features, such as the dock, are virtually unusable in a touch-UI context. Drop down menus? Again, hostile to the touch UI world without major changes.

The issue for Ubuntu though is not merely that their own attempts at building a next generation UI are heading in the wrong direction, it's that they're still locked to the GNOME application base. To build a user interface that works with the future "way of doing things", you need to essentially tell developers "Throw out what you're doing, and move to something else". That's extremely tough, especially for a system built upon goodwill and sharing rather than monopolist control of a major part of the infrastructure.

Nonetheless Canonical needs to change direction, and do it fast. There are things Ubuntu can adopt, the most obvious being to look at Android, especially when Icecream Sandwich comes around, to see what can be incorporated into a next generation UI. And they need to look at how the applications that Ubuntu provides can be rebuilt to work best with a universal UI.


Android

Android, at least, has a - well - tablet friendly UI. It's not a Desktop friendly UI, and moreover, Android is a stripped down operating system. Android doesn't have many of the lower level and middleware layers that are needed to support a full, universal, operating system in the same way as Ubuntu or Windows. It's single user. The file system is awful. There's limited USB and Bluetooth support - indeed, if Google hasn't thought of it in a mobile context, the chances are it's not supported.

Porting proper desktop software to Android is a serious problem. While "any language that can be translated to Java byte code" can in theory be ported, in practice there's just no infrastructure for non-Java Dalvik development. The other option to developers is the NDK, but the NDK - again - is limited, being a C/C++ only thing, with a limited API. The NDK also limits the ability of an app to run on multiple CPU architectures, and it's realistic to suggest that Microsoft's decision will result in a massive influx of Intel based tablets in the near future.

Android is an excellent mobile operating system, and a true competitor to iOS. But it's just not powerful enough to take on Windows. I don't think Android is salvageable. Can it survive anyway, as a phone operating system? That depends on whether Windows Phone starts to make headway in a Windows 8 world. I can't comment on the likelihood of that.


Firefox

Firefox has a large number of problems right now which makes me concerned for its future. Here are some points that have nothing to do with Windows 8.
  • While Firefox had some minor (but useful) new features added in version 4, this seemed to be at the expense of a browser that uses so much memory it simply becomes unusable on most desktops. Ironically, the reason it's causing your computer to halt and sit swapping for two or three minutes at a time is because they're trying to use memory to make Firefox slightly faster. Mozilla seems to go back and forth in terms of fixing this problem. But it's fair to say Firefox is rapidly gaining an atrocious reputation right now.
  • Firefox is pissing off developers. They teamed with Microsoft to kill the popular Web Database system, introducing the awful IndexedDB specification as an "alternative" (that doesn't even solve the same problems!) Their rapid release schedule is making it harder to ensure extensions work with the system - both upsetting developers of extensions, and developers who rely on extensions like Firebug.
  • Firefox is pissing off system administrators, by proposing release schedules, version update policies, and software update policies, that fly in the face of standard IT practice, and to add insult to injury, with some Firefox developers announcing that Firefox has no place in the corporate environment as a response.
I'm upset about this, because I love the Firefox browser. But I'm using the 4+ versions solely because Ubuntu doesn't give me the option of installing 3.6. Even with the memory issues half fixed, I find myself drifting towards Chrome these days.

Now, let's look forward on this. The Windows 8 UI is simple, it has a web browser integrated into it, and it doesn't really feel like you're using apps any more - eg you're selecting a page in News that you go to, you're not loading IE to look at a web site.

In this environment, you have to be fairly motivated to want to install another web browser, let alone use it. Where is this motivation as far as Firefox goes?

What of Chrome and Safari? I don't think anyone's going to install them under Windows 8 either, but Safari at least has the benefit of being a part of wherever Mac OS X is heading, and Chrome's importance is lessened by virtue of the fact it's just another Webkit browser, albeit a nicer one (in my opinion) than Safari.


What happens from here

I think unless Ubuntu changes direction it's dead in the water. I think it'll start rapidly losing what little marketshare it has from 2013 onwards unless the Canonical people find a way to fix the UI issues so it can run efficiently and well in a tablet environment.

I think Android is going to have severe problems going forward. I can't see how it can be fixed. I think the system may work well as a phone OS, but it may lose the battle if people find themselves drawn to Windows Phones because they work well, and are well integrated with Windows 8.

I think we're going to be seeing the death throes of Firefox in the very near future. Canonical was reportedly considering a switch to Chrome with the last version, I think they'll eventually go in that direction. I think relatively few Windows 8 users will deliberately install Firefox.

On a separate note, I think it'll be interesting to see what Apple is doing. If I had to make a prediction, I'd say it seems likely, to me, that the iPad and iMac "products" will merge in the near future. I think Mac OS X will steadily become more tablet oriented, and once it's ready, a "tablet iMac" will be the next thing that comes out of Cupertino. The iPad will likely be phased out at that point.

What do you think? Anyone else used Windows 8 yet?


Saturday, June 18, 2011

More Ubuntu Natty thoughts (11.04)

So, after a month or so of using it, here are my thoughts on Natty:

Unity

I'm using this on my netbook and not on my main laptop. It's got some good ideas, but I really think it needs polishing, and shouldn't have been released as the default desktop.

Criticially, it still doesn't feel like there's a natural flow to using it. For all of its faults, the "classic" desktop model is something that's fairly intuitive, even if it sometimes takes a large number of steps to do basic things.

The Ubuntu menu thing (that brings up a search for applications panel) is awful, and needs to be completely replaced. Nothing about it is right. It doesn't bring up what you expect it to, instead bringing up some alphabetically sorted apps, with no categorization by default. The entire point of that panel is to bring up applications that aren't in the dock.

The dock is OK although I tend to hate stuff that keeps moving on screen, but as far as a "hidden/unhides itself" item it's the best implementation I've seen of that. My personal view on how it could be improved?
  • Reduce the width of the dock especially on smaller screens like those of Netbooks. That'd also solve the problem that it very quickly fills up
  • Make it a permanent fixture save for things like full screen movie playback.
  • Given what it essentially replaces, and the fact that users expect to see something there, maybe it should be moved to the bottom of the screen by default, with an option to move it to the side of necessary? Think about why Ubuntu's devs are insistent it must hide itself when an app is maximized. Could it be the dock's position?
Regular readers will know that a fitts-menu implementation has been something I've wanted in Ubuntu since before I switched to it, and I'm glad that something resembling one has finally made it into Natty, but it needs more work.
  • Hiding the menu labels until you get close to them doesn't help in terms of trying to hit them when your mouse is on the other side of the screen. You have nothing to aim at!
  • It all kinda looks silly right now, with the window title fighting the menu for visibility.
My view of how this could be fixed?
  • If you're going to do the hiding thing, go the Amiga route and have a menu "button" on the mouse. Holding down the right mouse button can cause both a contextual menu to appear, if relevant, where the mouse pointer is, together with unhiding the menu at the top of the screen.
  • Otherwise, have the menu appear permanently.
  • Shove most of the non-application specific stuff into the dock. That makes the dock the one stop shop for control over the desktop, while turning the menu bar into the application controller.

Banshee vs Rhythmbox

Natty replaces the Rhythmbox iTunes-like music manager software with Banshee. Banshee's certainly interesting, and has some interesting features (plus it's easier to spell) but have to admit I switched back to Rhythmbox, because the latter doesn't suck up all of memory and CPU on my Netbook. I'm not sure why Banshee was such a resource hog, but Rhythmbox seems generally to be more efficient, cleaner, and lacking in playback glitches in a way Banshee wasn't. I'm not sure what's going on there, although in fairness Banshee is fighting Compiz which also seemed to be dragging down the performance of the machine.


The scrollbar

I liked the concept behind the new, thin, scrollbar in Natty, but I ended up being fairly glad that only one or two applications actually have it. For those who haven't seen it, the scroll "bar" is replaced by a small nub you drag up or down, that only appears when you place the mouse near the side of the window, and when it appears, you also see a line within a long box stretching the entire length of the window, that does roughly what the scroll bar did in terms of showing you where you are in your document, except it's much thinner.

The reasoning seems to be "Well, it takes up less space so you can see more stuff". I like the fact they've thought about it, but at the same time I miss being able to scroll up and down a page at a time by clicking above or below the nub. Also the scroll panel thing doesn't always appear, and when it does it frequently does only for a split second - the problem being that the system doesn't always know why you moved the cursor, and if you move from one window to another it overlaps or is just very close to, it doesn't always know what to do. Fighting to the system to get a user interface element to appear is one of my pet hates.

Scrollbars are not that big, and have never been a major issue in terms of taking up screen real estate. I'd rather we keep them as is.


General Reliability

For the most part, I'd put this between 10.04 (which is awful) and 10.10 (which is good) for general reliability, but I'm not sure I'd blame Canonical for this - this time. At least, not everything.
  • On my Thinkpad, I needed to tweak certain settings to get it to reliably work with my ATI video system. There's nothing worse than that whole "Oh my God, I just upgraded and nothing friggin works." thing. Hey, Canonical, could you PLEASE implement a "rollback" feature so that if an operating system upgrade doesn't go smoothly, we can safely return to a previous version?
  • Likewise, the system came with a bug ridden Atheos Wifi driver that virtually everyone's complaining about. To fix it required installing a patched kernel. Not Canonical's fault, the fact is Linux has some crappy quality control going on these days, but still.
  • Firefox. OMG. What happened to it? What's with the out of control memory consumption? And no, "We have to so the browser is fast" excuse doesn't cut it with me - Firefox is already fast. If you need to cache more stuff, stick it in files like everyone else does. Put it in /tmp if you don't want to upset people with SDDs.
There's one change that apparently Canonical considered but didn't go with, and that was to switch to Chrome as the default browser. Assuming they meant Chromium, I have no objection whatsoever to that. Chromium has its downsides, but it's a quality product, and Firefox right now isn't. I'm actually tempted to suggest it's time for another fork in the Mozilla world.

Yeah, another one. You remember the history of Firefox? Essentially, the Mozilla team were concentrating on, what was then called, "Mozilla", a nice browser that kept growing with functionality that really didn't belong in the system, with no-one ever putting their hand up and saying "Wait a moment, what about efficiency?" Firefox started a kinda fork (I guess if it's an official project it probably doesn't count as a fork, but, whatever) by the minority horrified with what was going on, who concentrated on putting together a minimal browser that had all of Mozilla's greatness, but would load quickly and play nice with others.

Firefox needs the same treatment.

Conclusion

I think Natty needs some work, but I'd also say all of the problems are fixable. If I were in charge of the project, these are the changes I'd make for 11.10:
  • Reduce the size of the dock buttons by about a third
  • Move it by default to the bottom of the screen
  • Move most of the top bar functions to the dock, with the exception of the application menus. Maybe the time and date can stay up there too.
  • Either repurpose the right mouse button as I described (show all menus), or move the window title/menus around so one is right justified and the other left justified. I don't mind which, actually I think having the menus right justified would look pretty nice.
  • Change the way in which users select applications that aren't in the dock. Again, smaller icons would help here, and showing the application categories would also be a good idea.
  • Do some serious quality control on the Linux kernel. Here's a radical proposal: test with both a recent kernel and a slightly older version, and install the latter by default, only installing the more recent kernel if certain features of it are absolutely necessary for the hardware it's being installed upon.
  • Do some serious quality control with X.
  • Bear in mind that many of us have had to install workarounds before to get certain things to work, that might not be appropriate. Things like xorg.conf and modprobe.d/* should be backed-up and replaced to ensure that things that have been fixed aren't broken by settings designed for when they weren't.
  • If the user has enough disk space, have Ubuntu back up the current version of the operating system before upgrading, and provide a tool allowing the user to back out of the upgrade if it doesn't work well - the tool being available from GRUB.
  • Monitor the performance and state of certain third party tools, like Firefox and Banshee, you bundle with the operating system. If these aren't right, either install older versions that are, or consider switching to a more stable alternative like Chromium or Rhythmbox.
That's what I would do. What do you think?

Friday, May 20, 2011

Ubuntu: Is Natty the last great Ubuntu? Or the first?

Having used it for a few days I'm in two minds about Ubuntu 11.04.

This is reportedly the last version that will support the "classic" GNOME 2 environment. Having used GNOME 2 since I switched back to GNU/Linux from Mac OS X half a decade ago, I'm sorry to see a good friend go. And GNOME 2 really is a good friend, probably the best user interface anyone has put together for Unix (well, aside from Mac OS X, but I'm not sure if I really feel that counts.)

GNOME2 is intuitive, quick (on my hardware), slick looking, friendly, and the builders of it took the time to understand concepts like Fitts law and muscle memory.

Natty gives you the choice between GNOME 2 (called "Ubuntu Classic") and an environment originally intended for netbooks, but substantially improved, called Unity. And Unity is...

...well, it's not ready yet, really, is it? Now, don't get me wrong, it's got a huge number of excellent ideas. Some of these are clearly borrowed from others - the dock, for example, is clearly inspired by the equivalent feature of Mac OS X. The top-of-the-screen menu appears to owe much to the Amiga environment, funnily enough - displaying menu only when it's needed, but title information otherwise. And we still have many classic GNOME elements, such as the Nautilus desktop/file management environment, and virtual desktops.

On the other hand, good ideas or not, sometimes the whole can be spoiled by a few glaring issues, and that was my problem with Unity. In fact, the major issue is the way to launch applications that are not in the dock. I think the assumption made by Unity's developers is that if a user uses an application a lot, they'll put it in the dock, but in reality the dock just isn't large enough, and you still have to start somewhere. Launching an app means going through a system that's laid out like the search feature of a really bad retail website. Finding the apps you want to run requires an enormous amount of clicking around.

Still, the system has enormous potential. If it's true that the next release of Ubuntu doesn't have GNOME 2, then it'll be interesting to see what the result is. A fixed Unity would make the next Ubuntu awesome. The danger is that it won't be.