This blog covers the rants, ponderings, considerations, experiences and life of Cameron Harris.

Wednesday, 4 November 2009

What Linux Should Have To Succeed..

It's late so I'm not going to think too hard about my wording.

Integrated authentication, consistent, easy domain support
Just like Windows, you should be able to install a Linux server and very simply configure it as a domain server.

The framework is already there:
- there are plenty of capable LDAP directory servers
- NFS and SMB support for file sharing
- Kerberos for authentication
- plenty of amazing filesystems for distrubted servers
- gconf for configuration policies
- SSH and X for remote management, thin clients
- KVM for virtualisation, live migration, etc.
- apt for distributing updates
- Sabayon and other admin tools
- ... and of course, all the standard network services like DNS, DHCP are there.

In many places, there is far better stuff on there than there is on Windows. Where Linux lacks is support for all this out of the box with minimal hacking and configuration. Canonical could really solve this with their simultaneous Ubuntu and Ubuntu Server releases. I'm sure this is their long term goal.

This should be integrated from both the server side and client side to provide interop with Windows and Mac OS X.

Windows application support

This is a pretty large topic but there are three main ways to achieve it, which could be mixed together: WINE, Mono (.NET), Virtualisation. Mono P/Invoke calls should fall-back on WINE libs if there isn't a native lib on the system, and this should work just as it does in Windows. WINE should use the native Windows libraries if there isn't a WINE implementation present. Virtualised applications should be managed by the window manager, like Parallels Coherence, should support drag and drop and transparently work with the Linux file-system.

Of course some of these features would only be possible if you have installed Windows onto the system too, but the UI should prompt for a Windows installation if required and one isn't present, to get the virtualisation, native WINE libraries to work. The UI should also scan the hard drive for bootable Windows installations and provide Boot Camp like methods for installing a side-by-side Windows that can also be launched from within Linux.

Linux needs native support for the latest DirectX, and there needs to be an effort to write Windows application "profiles" that will recognise an application and select the appropriate WINE version, .NET libraries, virtualisation and configuration to run the application. The end goal should be that 80% of Windows applications will work well when you put them in the disk and install them, 99.9% will work if you install Windows virtually.

One True Theme
The Linux community would probably give me a lot of flack for this, but GTK3 should drop multiple theme/theme engine support and put all it's resources behind a single, fast, usable customizable [to an extent, via CSS] theme or theme set. This means that application developers could rely on certain things looking and functioning the same way, with the rest defined in a standard, simple format. Speaking as a developer, this would drastically simplify application development and particularly anything that involves custom UI controls. Currently, building custom UI controls is a nightmare because you need to support looking normal on potentially thousands of themes. Consequently, most "custom controls" are very basic combinations of existing controls rather than something more intuitive and better suited to the task at hand. See iTunes for some good examples of why custom controls can be good for usability, and try to imagine implementing them in a widget toolkit where the widgets could literally look like anything under the sun. You could see this mismatch when Vista was first introduced, and some applications still looked distinctly non-Aero. Now it's often the other way around.

From a Linux standpoint, it means that effort could be more intensely centred around a single set of themes, and theme-breaking regressions are less likely to occur. Most of the effective codebase would be stored in the one location. Naturally, since this is open source, I'm not saying people can't implement their own themes, just that it should be done in third party patches. I don't know anyone who changes their theme beyond a few slight colour customisations. Most people stick to the OS default, typically because it's the best.

Like anything in the world, custom controls can be horribly abused. I'm not supporting this, but custom controls have definite advantages that cannot be ignored.

Draw window borders inside the client window
Window borders should no longer be the realm of a separate application. Like the above, there should be One True Window Border as part of the GTK theme, but GTK should draw it itself, and applications should be able to 'overload' this window border with their own functionality. It sounds like a usability nightmare, but it's being used very effectively in Mac OS X and Windows by applications such as Microsoft Office and Google Chrome.

Due to the history of Linux, it should be possible to disable this feature and go back to the old fashioned window manager provided borders, and the default window manager should still provide support for drawing window borders using GTK for clients that want window borders.

Bling
Users like bling. 'nuff said.

Okay, not exactly the greatest reason, but bling can definitely add usability and create opportunities in UI design that weren't there in the past. Again, see Mac OS X for an example of a UI that wouldn't be possible without composited, accelerated graphics.

Get the basics working perfectly, all of the time, absolutely guaranteed
We should never be in a situation where Linux does not work with the graphics hardware, or sound. If there is even a small chance it won't work, the installer disk should tell you before you get to the end.

When I install an operating system, I don't expect to look for drivers or to run things at the command line to get it working. A basic installation should work with the following:
  • Hardware accelerated graphics rendering, with support for all the effects on reasonably recent video cards, and default to native resolution of attached devices

  • Audio should work out of the box. All useful sliders and options should be present and presented intuitively. Software mixing should work with all applications.

  • You should be able to play videos and games without any screen tearing, audio sync issues.

  • Flash should be installed by default and work perfectly for all the major sites for HD video (dailymotion, youtube, iPlayer and any other popular video sharing sites that users might want to access..)

  • If you have accelerated video decoding hardware, it should be used by the media players and flash (be it VDPAU, XvBA, VA API or even an OpenCL based system)

  • Networking should work flawlessly, without kernel panics and sporadic disconnects. All of the following should work and should be configurable in the UI in as intuitive as a way possible: WiFi a/b/g/n, Ethernet, Bluetooth, all common VPN protocols

  • 'Evil' protocols should be licensed and installed by default. An Ubuntu installation should support playing DVDs, BluRays, h.264 videos.

If anyone who can do anything about it reads this post, I think it's important we remember to focus on the present. Ideally in the future, Flash support, reading .docx files, running Windows apps and so on won't be an issue. For corporate installations, more specific problems like accessing SharePoint sites and running more esoteric apps are bound to come up. Unfortunately, at the moment these issues are of critical importance and can be the deal breaker for someone considering a migration to Linux. We can't expect potential users to change everything they're used to overnight for something that might not stick.

The easiest way to get people to move will to be reduce the cost of their investment in a new operating system, even those nominally it's price may be free. This includes releasing our beloved open source software for Windows so they can switch over bit by bit. However, some people fear that this means that Windows users won't have any Killer App incentive to switch to Linux, but that's not what we need to beat it. To beat Windows, Linux only needs to be able to do everything that Windows does and yet still be cheaper, and not tied to a specific vendor. Everything else is a bonus, and most users probably won't care about them when trying to evaluate a decision to migrate.

That's it for now.

Sunday, 1 November 2009

Windows 7 Problems

Windows 7 has been hailed as a kind of Vista done right. So far my experience with it has been rather poor... worse than Vista, in fact. Today my hard drive failed. So I got it replaced and put my shiny new Windows 7 Pro disk in. After an unexpectedly long install of 45 minutes, I was up and running with Windows 7. The first thing that appeared when I logged in for the first time (before I had even clicked anything) was an error. Great start!

1 update failed to install Code 80070103: Windows Update encountered an unknown error

Okay well, I'll ignore that for now, bigger fish to fry. It was displaying my graphics (plugged in via HDMI) with low quality text and an under-scan black border, and it wasn't outputting sound. I got the latest drivers for my ATi card and rebooted. All working, sound playing. I adjusted my under-scan with the Catalyst Control Center and changed the colour profile to RGB Full. I set my interface size to medium as I'm using it on a TV, which is a nice additional feature, logged out/back in and now it was usable! Time to get onto the other problems..

Looked at the Windows Update again, saw that it was trying to install a couple week old ATI driver (that was what caused the error on first boot), so I unticked it and ran the rest of the updates... and my network stopped working. Windows Update had installed a 3 year old (!) NIC driver that apparently wasn't compatible with either Windows 7 or my hardware! I installed the correct NIC driver using USB pen, rebooted again. Okay, it all seemed to be working now.

I set it on installing some stuff and went to watch TV.... but I heard the system turn off a short while later. It had put itself to sleep. Annoying. I went to turn it back on and rather than turning on, it died. First BSOD! A new record, I think. I've only had Windows 7 installed for a few hours and it's cocked-up twice and crashed once. Not a great start, to be honest.


Problem signature:
Problem Event Name: BlueScreen
OS Version: 6.1.7600.2.0.0.256.48
Locale ID: 2057

Additional information about the problem:
BCCode: 7a
BCP1: 0000000000000020
BCP2: FFFFFFFFC000009D
BCP3: FFFFFA8006333078
BCP4: 0000000000000000
OS Version: 6_1_7600
Service Pack: 0_0
Product: 256_1