A quick update on Firefox OS

A couple of months ago I wrote about having bought a Geeksphone Keon, one of the early developer devices for FirefoxOS. I haven’t done much—all right, any—developing with it, but I have continued to use it and update it occasionally on the Firefox 1.2 developer track.

Some of the changes so far:

  • Navigation and browsing have got quite a bit faster, kinetic scrolling is improved, and the on-screen keyboard has become more reliable. There’s evidently been a lot of tuning going on. As a pure web-browsing experience, this device is now really nice.
  • I wrote, “Anyone know what audio recording and playback latencies are like?” — well, it turned out that audio capture was not supported at all in the device as shipped. Support is now appearing in the Gecko 26 release branch which Firefox OS 1.2 will be based on, and basic audio input works on my device now.
  • Strangely, the on-screen keyboard has changed from showing a mixture of caps and lower case (i.e. lower case on each key until you hit Shift, then switching to caps), as on Android devices, to showing only caps as on iOS. I wonder why?
  • The 1.2 track isn’t all that reliable at the moment. For example the email client doesn’t work on my device, though that doesn’t actually bother me because the Fastmail browser interface works very well on it. Screen rotation seems to be taking a holiday, and the notifications pulldown doesn’t always want to go away when I ask it to. Very interesting to keep an eye on though.

 

Firefox OS on the Geeksphone Keon

(Previous post: What is Firefox OS all about?)

Hardware

KeonTo get this out of the way first: this is clearly intended to be the lowest-end device that Firefox OS apps will need to support. It’s distinctly bargain-basement.

By far the best thing about this hardware is its soft-touch orange plastic rear cover, which is nice to look at and delightful to grip.

(Digression: it’s interesting how many expensive smartphones are unpleasant to hold. The iPhone 4 and 5 are sharp and angular, Samsung’s premium phones feel alien and tacky, and Nokia’s Windows Phone devices that I have encountered have been either very hard around the corners or grossly big. HTC is the one company that seems to have focused on how to make a phone feel natural in the hand. Not that it’s done them any good in the market.)

The loudspeaker isn’t bad, in a kitchen radio sort of way. The headphone jack is not so good. The battery is removable; the mini-SIM and micro-SD card slots are easily reached.

The worst thing about it, by “modern” standards, is the screen—but then, good screens are expensive. My first impression was pretty bad because the first thing I tried to do with it was use it outside on a sunny day. That doesn’t work so well.

Basics of the OS

Starting up and running a current Firefox OS build (as of June 2013) is pretty painless. It boots quickly into a sensible homescreen arrangement. An over-the-air update arrived just after the phone did, and installed without trouble. SIM and SD card are recognised, it makes calls and sends texts, and the wifi is more stable than my usual phone. (Much of this stuff is borrowed back from Android.)

The browser is as you’d expect from Firefox; there’s a Nokia maps app—though I didn’t manage to get it to recognise my location—; app installation from the marketplace is painless. Not that there’s much to install, and I’ve no idea how billing will work, as it seems to be free apps only at the moment.

It works well as a music player. My kids rapidly requisitioned it for that purpose, resulting in embarrassment at work the next day when I hit the wrong button and got Harlem Shake at top volume. Kids, what were you thinking? That song is over four months old!

Email is easy to set up and pleasant to use.The camera’s crap, but the camera app appears to be OK.

Angry Birds is not available.

UI design

KeonI’ve no idea how provisional the general design of Firefox OS is, but I like the basics. You get a homescreen with a clock, a few quick access buttons, and your wallpaper. Swipe one way to get a grid of installed apps, the other way to get the marketplace. Swipe down for the now-traditional translucent notifications pane. It’s simple and it works fine. I like it.

Navigation design within apps is less satisfying. The sheer inclusiveness of a browser-app-based phone means that many apps are not going to be well-adapted to a common platform design. The principle seems to be, mainly, to hope that there’s enough in common amongst mobile versions of websites to avoid too much user confusion.

There are a lot of half-width buttons at screen edges, which I assume are intended to take advantage of the fact that there’s more “effective” touchable space there. That works, kind of, but the Keon’s touchscreen isn’t responsive enough for me to trust it. (Similarly, using the on-screen keyboard is something I anticipate without much joy.)

Scrolling and transitions are currently just functional. There’s no bounce scrolling, and kinetic scrolling sometimes stops working or works only in one direction. Interactions like these are sometimes jerky. I have confidence in the Mozilla developers’ ability to sort out things like this.

Firefox OS is unusual in using a distinctly humanist font. Appropriately, it seems to be an evolution of the “anti-Helvetica,” FontFont Meta, from the same designer (Erik Spiekermann). The Firefox version (called Feura) is tuned for small-screen legibility, and it looks lovely.  I do worry that I might tire of it; the less mechanical and more distinctive a font, the more likely it is to wear you out eventually. Let’s see.

Would I buy it?

KeonEr, I did buy it.

But would I buy it as my only phone?

Not at the moment. There’s potential, though, and I think it may depend on how practical I was feeling. You might expect this to be a fun toy that isn’t particularly useful, but the opposite is true: it would be quite workable for down-to-earth business use, it just currently isn’t that much fun to use. Still, if my other phone died, I could certainly get by with this one.

Hardware-wise, I’d quite like a phone from this manufacturer, with this case, with fancier screen and innards. It’s not the most elegant object, but I do rather like it.

But this isn’t a consumer product, it’s a developer device.

Will the platform succeed?

Here I’m moderately optimistic.

I hope improvements are possible to the general slickness and smoothness of the device, because there’s definitely some work to be done there. But the functional basics are sound, and I think the fact that your business is already developing for this device (almost) could work out for it.

The OS seems designed to be minimally obstructive for everyday communications work, and it is complete enough to do that work. I appreciate it and I am keen to mess with it. Anyone know what audio recording and playback latencies are like?

What is Firefox OS all about?

When I first read about Firefox OS, the ongoing project to make an operating system for phones and tablets that runs entirely in a Firefox browser, I thought: what a marvellously futile idea.

The world isn’t short on niche, provisional, or failed experiments in operating systems for phones: Sailfish, Tizen, webOS, BB10, Ubuntu-for-phones, Meego, (cough) Windows Phone 8… Firefox OS is aimed at low-end phones—just the sort where you’d expect the hardware efficiency and limited data requirements of offline native-code apps to offer a big advantage over the browser. So I was ambivalent about its advantages to the user.

The developer side is interesting, though.

C++, the Portable Choice

Look at the current mainstream phone platforms.

For iOS, the “native” development language and framework is Objective-C with Cocoa. For Android, it is Java. For Windows Phone 7 (I do mean 7, rather than 8) it was C# with Silverlight or XNA frameworks.

These three are totally mutually incompatible. You can’t reuse Objective-C/Cocoa code on Android, you can’t run Java on iOS, and the Windows Phone managed environment was incompatible with both.

But every platform has an embeddable web browser, so besides native apps, there have always been somewhat cross-platform HTML apps—often developed using tools like PhoneGap. These aren’t always popular with users, something widely acknowledged when Facebook rewrote their HTML-based iOS app as a native one.

The tension is that while native apps usually work better than totally cross-platform ones, it is desirable to be able to reuse at least some of an app’s business logic across platforms. So developers have increasingly been shifting business logic from the platforms’ primary languages to C++. Google made increasingly more of the Android frameworks accessible from C++ using the Android NDK; Microsoft switched to C++ as their recommended language when developing for Windows Phone 8. Objective-C apps can incorporate C++, so the same code can serve across all three platforms. (How interesting that C++ should have become the portable choice in preference to Java or C#.)

This situation isn’t wholly satisfactory, not least because C++ is a difficult language to learn to write reliable, comprehensible code in.

The Web Angle

So there may be no successful portable managed runtime for typical apps, but there is a very widely used portable runtime on the web, in the form of Javascript. All the major browser makers have been hammering on Javascript optimisations for some years; it now runs pretty much as fast as managed environments outside the browser do, and it’s become widely accepted as a compilation target for other languages (this page lists over 200 of them). The Firefox developers have formalised this arrangement through asm.js, a subset of Javascript designed for fast execution and intended only to be used as a compilation target.

The final piece in that particular puzzle is Emscripten. This so, so wrong piece of software is a backend for a standard C++ compiler, which compiles C or C++ to Javascript. It includes Javascript libraries that map some widely used C infrastructure (such as OpenGL or sockets) to the browser equivalents (WebGL, WebSockets). The resulting code approaches half the speed of native code—except that work such as 3D rendering happens at full speed, because it’s handled by the same OpenGL stack in either case.

So: we have a code environment (the Javascript target) that is genuinely cross-platform, comparable with managed runtimes like the JVM or CLR for performance (though not as sophisticated in terms of memory management) and supported on every current desktop and mobile device. We have a tool that takes existing portable C++ business logic and compiles it to that target. And now, in the shape of Firefox OS, we have a phone OS on which that environment is the native one.

Now there are still all sorts of holes and potential pitfalls here. But you’ve got to admit, it’s a pretty interesting proposition.

So I bought one of the Firefox OS developer devices to have a look at. In my next post I’ll make a few notes about the current state of the platform, and try to guess whether any non-developer would ever want to use it.

Linux

tagsI write plenty of tedious posts about computers and technology, and I usually tag them according to what they’re about.

As I write this, the tag cloud for this blog looks like the picture on the left—Apple and Microsoft loom large, Nokia and Oracle get a look in, and there’s no reference to Linux at all.

But Linux is the main operating system I use, and it has been for the last 15 years or more.

I never write about it because, like the boy in the German child joke, I’m content with it. I write about things that fascinate me, and there’s nothing less fascinating than a system that does what you expect it to, again and again.

Although I also develop software for Windows, OS/X, and Android among others, Linux is my home platform.

I like that it gives me a sense of independence from any particular platform I might deploy to. I like that it allows me to make my own decisions about the type of desktop environment I choose. (Never trust an OS that won’t allow you to change the system font.) I like the transparency of the development environment, and I appreciate being given the opportunity to find out how anything in it works—even though I don’t take as much advantage as I might.

So far, using mostly Linux has been a fine way to observe developments in other operating systems, from just enough distance not to get too caught up in any one of them.

A touch of froth

A jolt, though, comes with the arrival of touch interfaces. I’m not the only one to be surprised to find how pleasant a touch screen is to use with a laptop. For me, Apple had it wrong: though familiarity means I still prefer a mouse for detail work, I’d rather have a touch screen than a trackpad.

Maybe I just haven’t used touch screens enough to become really fatigued. But I wonder whether the research might not have underestimated how fatiguing the crabbing action of using a touchpad is. I don’t think “I’ve been waiting all my life for this touch screen”; I think “thank goodness I don’t have to use the touchpad”.

I’ve heard it remarked that innovative input devices interest consumers in a way that novel output devices seldom do. There are many examples of new input devices becoming mainstream, sometimes in wildly popular ways: the joystick, the mouse, the D-pad, the touchpad, gaming controllers with accelerometers and gyroscopes, computer vision devices (the Kinect) and so on. Meanwhile various innovations in output (such as 3D and very high-resolution screens) have appeared repeatedly and been largely ignored—unless they came in packages that were attractive for other reasons, such as the LCD display with its slender physical dimensions.

So, over the years I’ve taken quite good advantage of the ability to pick and choose my desktop interface on Linux. Like all self-regarding programmers, I’ve used my own window manager. I’ve used KDE, until I switched away when KDE4 arrived. Then I used GNOME, until I switched away when GNOME 3 arrived. Right now I’m using XFCE4. But it’s not at all touch-friendly, and nor are any of the applications I use. This one has so far completely passed me by.

In short, then, those Ubuntu and Gnome people that I’ve probably been rather rude about might have had a point. There was some reason to be piddling about with the basics of the user interface after all. I need to start finding out whether Linux, other than Android, can work well in the touch screen world.

Windows Phone: a bit like BeOS

Today’s possibly stretching-a-point Technology Analogy

In a previous article I compared the situation of Windows 8 on the desktop to that of OS/2 in the late 80s.

Windows Phone 8 is in a different position. While Windows 8 gets its awkwardness from the need to provide compatibility with the dominant platform—which in this case means earlier versions of Windows—the dominant platforms competing with Windows Phone are iOS and Android. And it’s totally incompatible with both.

So, why choose Windows Phone? Not because it has greater capabilities, all in all, than its competition. It doesn’t have any very significant platform-exclusive applications. It isn’t any more open (in either a useful or fun kind of way). There are two reasons you might choose it: a preference for its interaction design, or integration with some networked services.

BeOS is an operating system dating from the mid-90s developed, according to Wikipedia, “on the principles of clarity and a clean, uncluttered design”. (Sounds familiar?) It was pretty to look at and nice to use. It had decent networking support and made good use of the hardware available to it.

But it was always going to have niche appeal. By the time of its release, Windows 95 was dominant and generally tolerated by mass-market users, while Unix-based operating systems like Linux, FreeBSD, and NeXTSTEP were working their way down from higher-end workstations with hacker appeal. BeOS was incompatible, no cheaper, no more open, and ultimately more limited by lack of useful applications. It remains a likeable curio.

 

Windows 8: A bit like OS/2

Today in Technology Analogy Week…

In 1987, three years after the world’s perception of the possibilities of the PC had been changed by the Apple Mac and two years after the Mac’s cheap knockoff Microsoft Windows had been released, the world’s leading PC manufacturer released a new operating system.

OS/2 was the perfected pinnacle of many years’ development by serious software developers. Although IBM had initially worked on it with Microsoft, by the time of release it had become an IBM product alone. It was solid, sophisticated, fairly demanding of PC hardware of its time.

Given the resources, OS/2 worked well. But its compatibility with the popular software of the time—for MS-DOS or Windows—was always a bit awkward. Running such “legacy” software felt uncomfortable, as if you were ignoring the major part of the operating system and always on the verge of tripping up on the edges of its competent compatibility. But legacy software was almost all the software available: very few applications ever turned up in OS/2 native form.

The maddening problem of OS/2 was that it tried too hard to do everything. Its developers did all the right things, but it wasn’t different enough from the other popular operating systems of the time to be something you could choose for its strengths alone. It had to rely on compatibility with whatever everyone else was already using; but its compatibility with the technologically weaker market leader just wasn’t satisfying enough.

(You can see where this is going.)

In 2012, five years after iOS and its cheap knockoff Android, and two after the iPad, the world’s leading PC operating system manufacturer releases its new operating system…

Windows 8, like Windows Phone 7, is broadly a satisfying design—but only if you run nothing but native apps on it.

In the case of Windows 8, “native” means managed-code Modern UI software, a category so nebulously defined that nobody I know has yet explained to me the best method of developing for it. Meanwhile, Microsoft have effectively categorised every existing Windows application as a legacy app: they’re available only on the premium version of Windows (i.e. Windows 8 rather than Windows RT), and only in a subsidiary desktop mode.

Think about that for a moment. Windows 8 was released a few days ago. With it, Microsoft have designated every existing Windows application as a “legacy app”.

But Windows 8 isn’t a clean break. Like OS/2, it tries to do everything. It isn’t different enough from the other popular operating systems, iOS or Android, to be something you could choose for its strengths alone. It has to rely on compatibility with desktop Windows, and its compatibility isn’t very satisfying.

Next in Technology Analogy Week: How Nokia’s decisions during the last two years resemble British bands of the 80s and 90s whose managers have decided they must conquer America