Tuxrocket

Improving Apps

Why Even Talk About Linux Popularity?

It seems like such a waste of time- in the past several weeks most of the ‘news’ my various sources have cobbled together based on my interests have been a slew of “Ubuntu no longer the most popular” ‘news’ stories. Give me a break.

I saw one reaction to this on omgubuntu.co.uk that dismissed the numbers and the comments were, I think, unfair. The author rightly notes that all these ‘news’ stories are based on Distrowatch visitors. And not based on the their platform as reported by the browser, but the pages on the Distrowatch site that people visit. In other words it’s useless. Before you rip me apart, follow my logic here.

Gus uses Windows but keeps hearing that the wise and powerful think Linux is where it’s at- but he’s confused about the idea of ‘distributions’. A friend suggests he look at Distrowatch to help him decide on a distribution to try.

Gus visits Distrowatch. He clicks around, looking at Fedora, openSUSE, and Ubuntu. He decides he doesn’t know enough and doesn’t install anything.

Distrowatch tallies his visit- 1 new visit each for Fedora, openSUSE, and Ubuntu!

Gus sees in the news that Linux Mint is actually the best. He checks back at Distrowatch and looks at Linux Mint. He decides he’s still not ready.

Distrowatch tallies a new visit for Linux Mint.

Gus sees more and more articles about Linux Mint and returns to Distrowatch, trying to muster his courage to install.

Distrowatch tallies a new visit for Linux Mint.

At this point, Fedora, openSUSE, and Ubuntu all picked up a visit, and Linux Mint picked up 2 and he still hasn’t installed! News people somehow equate those visits with distribution usage. The irony behind this whole conversation is that the resources at Distrowatch are geared to people wanting a new or different distribution. A real user isn’t going to visit the page when he’s happily using his chosen distribution of Linux every day.

‘News’ writers: you’re ridiculous and you are the problem here. Distrowatch doesn’t pretend that their stats have anything to do with users. Write some real news articles please.

All Linux distributions: can you please settle on a centralized way to track actual usage? Managed by someone else. Maybe it just counts via your update mechanism. I don’t know.

Until they do, can everyone stop whining about who is best and get back to making great apps for Linux?

To Steve Jobs, the Magician of Closed Systems

Steve Jobs brought us to a new level of art in technology. He will be missed.

Recently I read that Richard Stallman’s comment about Steve Jobs garnered some harsh reactions. This is not surprising- he is Richard Stallman. But there’s one thing even ardent Apple fans would admit: Apple products work best with other Apple products.

Apple has always made it clear that it is a hardware company and that they make the software that runs on that hardware to create the smoothest user experience possible. And it is smooth. But throw something else in there and it’s not optimal. Interesting example- the Safari browser is available for Windows but in the most recent browser benchmarks, Safari on Windows isn’t even a contender. But on Mac OS X? It rules the roost.

Over time, and as its brand popularity has soared, Apple has tightened the noose a bit. The latest version of the Mac OS X operating system (Lion) can only be purchased in the Mac App Store. This means that if you’re running Leopard you first have to buy Snow Leopard to get the Mac App Store, then upgrade to Lion.

I do not question the brilliance of Steve Jobs at all. But he was the magician of closed systems- he produced things that were insanely great when he controlled the whole package. But he didn’t care about openness or existing in a shared ecosystem (except where he set the rules). I would even predict that on its current trajectory, in 5 years you won’t be able to install non-Mac App Store apps on a Mac desktop or laptop without an Developer License from Apple. (Update: We’re already on the way)

That closed system is great as long as you like it, but once you need or want to include something else in your workflow, or heaven forbid, want to move to a different platform, you’re in for it. It turns out the money you’ve invested over the years on that closed system paid for a wall with you on the inside.

Complaints aside, Steve Jobs was a genius. I will always remember his keynotes and enthusiasm with fondness. But I hope in your genius you’ll embrace open systems.

Be Kind to the User- Even When it Comes to Errors

Errors- they’re everywhere. No matter how well you coded your app, there will be problems you just can’t foresee. But in some cases you’re bound to realize in advance that there could be a problem. Here are the ways, in order of helpfulness, in which you can handle errors in your app and make it kinder to users:

  1. Absolutely Nothing. Don’t even tell the user something happened. After all, if there’s nothing they can do, why worry them about it? Please don’t do this.
  2. Hidden Error Console. This makes sense in a web browser for all the messy JavaScript or browser specific code out there that won’t validate. But in just about every other case a hidden console that the user can discover and activate is the coward’s way out.
  3. Dialog Window. Pop up a little window that says ‘Sorry, had some trouble.’ This is unhelpful, although at least the user knows not to trust your app anymore.
  4. Suggest an Action. In addition to mentioning the error, your app suggests a specific course of action. An example might be that your app expects an image but can only accept one up to a certain size. Someday you plan to add a way to do that within the app, but this is 1.0! So your dialog says ‘Can you try that again with an image that’s only 32 x 32 pixels?’ It’s not perfect but the user knows exactly how to get around the problem.
  5. Launch their Next Action. You can see that the Gimp is installed on their computer. Ask them if they want to launch it to resize their image. Even better, give them instructions on resizing it in the Gimp.
  6. Ask If You Can Help. You ask them in the dialog if they want you to attempt to resize it for them. If they click yes, use ImageMagick or similar to resize and show them the results to see if they accept the changes. Now obviously them not ever knowing there was a problem because you handled it so smoothly is ideal most of the time. But in some cases, you may be stepping on the user’s creative toes if you assume too much. The other benefit to asking them if you can help is that the user recognizes you’ve helped. So they pay attention to how you do and if it’s done well, they’ll be grateful and trust your app a bit more. If they don’t know you helped, you just don’t get credit.

I recently experienced a few of these in Ubuntu. I had gotten used to MySQL Workbench’s specific error messages without realizing I had. Since installing the Oneiric Ocelot release candidate, Workbench loads so slowly that I fired up the aging (yet generally more usable) MySQL Query Browser. I noticed right away that about the only feedback it gave was that I had run a query. It didn’t mention that it failed and ideas about why, which Workbench does.

An even better example: a few weeks ago, after downloading a compressed file I tried to extract the files and got a little warning dialog. But instead of jut saying ‘Invalid’ or ‘Unsupported File Type’ it asked if I’d like to install the needed files in the Ubuntu Software Center. Yes please! Problem solved.

Where are the problem points in your app? Anything you can do to make it a little kinder?

Ubuntu 11.04 and Why I’m an Ubuntu Fan

People that know me well know that switching operating systems is something I enjoy the same way others like to take cruises. I love kicking the tires on a new operating system or desktop environment. Since starting Tuxrocket I’ve see-sawed back and forth between openSUSE and Ubuntu. My first (successful) use of Linux was with Red Hat about a dozen years ago. BeOS was a definite favorite and someday I hope Haiku will be stable (and have apps) for daily use.

Every operating system has good and bad, some having in general more bad than good- I try to avoid that. Despite liking to fiddle around, I do need to actually work on the computer, so I’m pretty careful.

So with that in mind, when I say I’m back to Ubuntu as of about two months ago, you’re probably not surprised. But this time it might stick.

Maybe I’m just getting older, or maybe I see the bar getting raised by available operating systems out there, but I’m unwilling to settle for a set of workarounds or a poorly thought out interface. At the same time, in terms of applications, more than any time in the past, your OS itself doesn’t have to do much- you’ve got the cloud to fill in any gaps.

78 of the 313 active Linux distributions on distrowatch.com right now are Ubuntu derivatives. That’s 25%! It’s hard to tell how much of the Linux user base that is, but Ubuntu has been considered the most popular Linux distribution for some time, with many of the runner-ups being based on Ubuntu. It’s certainly the easiest for which to find software. In some instances when you go to download the ‘Linux’ version, it’s a .deb package meant for Ubuntu. Yes it leaves some distros out in the cold. But for the most part, there’s nothing stopping those distros from packaging the software for their own platform.

So it’s easy to find software in packaged form, so what? Well, it’s one less thing I have to worry about. The same is true for other users that just want to use their system. As a minimum, a Linux software developer needs to provide a DEB package.

But add to that Canonical’s drive to make Ubuntu better. I don’t think they necessarily intended it, but some of the painful choices and stances they’ve taken also mean that they’ve differentiated themselves from other distros in significant ways. Aside from several lesser known desktop environments for Linux, you’ve basically got Gnome and KDE. They’re both great with tons of talented people behind them. Ubuntu wanted to do something different and made Unity. Everyone else jeered or got angry, but Ubuntu stuck to it. I love that.

Not just how Unity works or looks, but that Canonical is doing it. If I install Fedora with Gnome or openSUSE with Gnome, the differences in daily use will be fairly minor. Same thing goes if you install the KDE desktop on them. Yes, some things are tweaked differently, but Gnome and KDE both seem to be out to provide the entire desktop environment (meaning all needed apps) for their users. Which means that more and more, distros are coating their base system with one of those desktop environments and they’re done. I know I’m simplifying.

Ubuntu on the other hand is it’s own creature. Just like an app developer needs something to make his app special, Ubuntu has made choices that make it special. Yes you can put other desktop environments onto it, but by default you get a system and a desktop environment that was made to work together. I think there are a couple of distros you can say that about, but it’s rare. For the most part you have to qualify things. Fedora 15 with KDE or openSUSE 11 with Gnome 3. It’s such a mishmash. I’m using Ubuntu.

Quick Example of a Great Icon and a Great App Name

I know I go on endlessly about naming your app well. It seems like such a simple thing. Here’s an app I came across earlier. It’s for Mac, but I think the icon and name combination are excellent. The app is Nottingham.

 If you’re not aware, Nottingham is the town/area in which Robin Hood lived and ‘worked’ in English history. The name Nottingham has a form of Note in it- Nottingham (I don’t know if the developer wants it to be pronounced Note-ingham). I’m pretty sure Nottingham, the location, has nothing to do with taking notes- that’s OK! And the icon features a stack of sticky notes topped with a tower crenellation that takes it’s cue from medieval England’s architecture. It’s a very nice, distinctive icon. Very cool brand integration. Well done!

When it comes to your app’s name, be original. Don’t slap a G on it just because it’s in Gnome or a K just because it’s for KDE! Use some imagination. Jason Fried from 37Signals often talks about working with constraints. Instead of spending lots of time trying to overcome constraints, embrace them! Figure out your constraints and quickly move to work within them.

For an app name, here are some constraints:

  1. The name should have at least a tangential relationship with what your app does.
  2. If you’re going to intentionally mis-spell a word for your app name, you should have a reason for doing so.
  3. A large part of your users should recognize what the word(s) you’re using as a name mean- if you pick an ancient Inca name, you may not have too many users who understand what it’s for.
  4. The name should differentiate your app. No one but an OEM would ship an app named ‘Clock’. If you’re making a clock app there had better be something that sets it apart- use that feature in the name!

And for your icon, here are a few:

  1. Design your icon with both what the app name is and what the app does in mind.
  2. Don’t just use the first letter of the app name as an icon- that would qualify as an icon but so would a math equation.
  3. The icon will have to fit in certain sizes on the desktop- have a super-detailed version for the biggest and simpler designs as you get smaller.
  4. Use some different colors and contrast to make the icon interesting.

Making Non-KDE Apps Look Beautiful in KDE

Recently a big step towards a unified KDE interface occurred- the oxygen-gtk project. Rather than the imperfect solution of theming where a GTK theme that approximates the KDE Oxygen look is made, this project is an actual GTK engine that will dynamically and perfectly render a KDE interface on a GTK app. Yay! It’s not perfect but it ships in openSUSE 11.4 by default. I can’t say it’s perfect- several apps have a white box in the background of the app where oxygen-gtk appears to be failing to render the Oxygen radial background. Update: The white rectangle is caused by a bug in Cairo + Nvidia’s proprietary driver. If you switch to the Nouveau driver, the white rectangle is gone. There’s also a patch for Cairo if you’d rather keep the Nvidia display driver and can’t wait. Update 2: Cairo’s been updated in openSUSE- Gnome apps are looking great!

If you’re seeing a faint seam along the title bar, make sure your Application Appearance > Colors settings are set to the Oxygen preset.

Firefox 4 looks great in openSUSE 11.4. I’ve got the Oxygen KDE add-on installed from KDE-look. It really looks like a KDE app. No longer distracted!

For those that prefer Google Chrome, take a look at the Oxychrome theme on KDE-look. Follow the instructions and Chrome will look like it belongs in KDE. For what it’s worth, when I unzipped the scrollbars extension, there were no remote exploits or odd code- it’s just CSS. But you can never be sure- so check!

Are We Open or Fragmented?

And does it matter?

You bet it does. To millions of people out there, Apple products are the height of cool. As Matt points out over at 37Signals’ blog, Apple can change the whole debate by redefining what the words involved mean. Of course they don’t want to take part in an open vs. closed debate. Closed is bad. Apple is not bad. So we can’t have Apple be on the closed side. Let’s see. What would be a better word? Hmm. Hmm. Wait- got it. Integrated. After all, integrated circuits have changed the world. Being integrated means we’re more economical- everything just fitting together perfectly. And often a small form factor! Yes, integrated is definitely the word we want.

And now Android can be… fragmented. Perfect.

The rest of Steve Jobs’ statements proceed to misrepresent what Android developers face and skew the argument in Apple’s favor. He seems to indicate that we as customers should be thankful that Apple’s taking care of all this for us so we don’t have to think about it. Apple’s mantra has shifted from Think Different to Don’t Think About It.

Why Microsoft Loves This

Huh? What does Microsoft have to do with this? In case you didn’t notice or were distracted because you were rolling on the floor laughing, Steve Jobs said (I’m serious):

Google loves to characterize Android as open, and iOS and iPhone as closed. We find this a bit disingenuous and clouding the real difference between our two approaches. The first thing most of us think about when we hear the work open is Windows which is available on a variety of devices.

That’s right- Microsoft is now an example of being open. While the software industry recognizes open as meaning the code is accessible, it’s clear from what follows that Steve means that Windows is on computers everywhere. So I guess Adobe’s Flash is open too. And my Nintendo Wii. Wide open. The real danger here is that if Apple says it enough, when people hear that Linux is open, they’ll think “Oh! Like Windows.” Nothing special. Just something else out there that they don’t need to think about.

Steve Jobs is co-opting the word open and giving it to Microsoft. Then they’re turning around and branding Android as fragmented and calling themselves integrated instead of closed. The fact is that Apple products are the most closed products out there right now. They want you to use computers made by them running operating systems made by them. You want music or movies- great! You can buy them from Apple. Want to play the music on something else? Oh, well why would you want to? This little box you bought from Apple has everything you need. At some point you won’t be allowed to touch it without wearing gloves.

Enter… the Build Service

For those of you that have been dodging the use of the openSUSE Build Service because it’s from openSUSE- good news! They seem to have had a slight name change and you can now refer to it simply as the Build Service. I think they should have gone for The Build Service, but then the acronym TBS is trademarked, so…

A great introduction to the Build Service can be found at the openSUSE news site because of some upcoming conference sessions on using this great tool. A couple choice tidbits:

The Build Service runs on a server and builds packages by starting a clean virtualized operating system for every package that needs to be built. The Build Service will automatically install the needed dependencies (specified in the build files) in the virtual image and build the package. In case any errors occur, it will report these back to the packager. The openSUSE Build Service running on build.opensuse.org currently supports Ubuntu, Red Hat, Mandriva, CentOS, Debian, SLE and Fedora besides openSUSE. And all that can be controlled entirely from a web interface — which supports even Internet Explorer.

The Build Service is a completely open source server solution; users can download the source code and create a locally hosted build service project tailored to their own requirements — particularly useful if they are developing for unsupported platforms. Several software projects have employed this soulution, including the Linux Foundation in developing MeeGo, the collaborative open source project aiming to develop a new GUI for netbooks and mobile devices.

The end result? An app listing like luckyBackup’s. Scroll down and you can see the packages that are available. That’s right- every major distro. How’s that for some instant credibility? That’s a lot of users that won’t have to wonder how messy the compile is going to be.

Find tons of documentation at http://en.opensuse.org//Portal:Build_Service and get started building packages for every major Linux distribution. Give it a try!

Phoning Home

Lately there’s been a lot of commentary about Canonical’s new package that they’ll be using to count computers using Ubuntu for an OEM partner. As that last comment clearly said, people need to calm down about this. Even if they were tracking users in disagreeable ways, it’s open source and out in the open. If they start doing something shady, people can see that in the code and you can just uninstall it. From what I understand, it’s not even going to be part of the default- it’s specifically for an OEM’s customers which implies ‘normal’ Ubuntu users aren’t going to have this installed.

What’s the Big Deal?

Why is it such a surprise that a software maker would want to see how many users they have? In the commercial world where a software license is involved, user registration often is required and the software maker can be privy to all kinds of customer demographics. When my parents fill out these registration forms, it doesn’t even occur to them to not enter the information or to lie. They just type it in. And if that data is anonymous why should we begrudge our Linux distribution of choice a few demographics that will help them hone their product.

There are several other ways open source companies try to find out what they can- without threatening users. There’s Smolt from Red Hat which openSUSE also participates in that’s intended to evaluate hardware support priorities based on the userbase for a certain device. Debian has Popcon and openSUSE has Popcorn, their own spin on it. According to the description it “is an attempt to map the usage of … packages.” What a great idea! Know what users are using! It’s shocking!

Why Would You Want Your App to Phone Home?

Outside the Linux ecosystem, it would be typical to phone home to check for updates. Since the norm is for Linux to let you know and help you update accordingly, I think we’re used to apps not phoning home. But there are other reasons an app phoning home is a good idea:

  • Update content for users like news or to highlight website content
  • Get statistics on usage of your releases

Here’s a great example. Thunderbird from Mozilla uses the phone home tactic to great effect. At least since Thunderbird 2, the start screen when Thunderbird opens is by default a web page on Mozilla’s servers.

And in fact, when Thunderbird calls that page on the server it sends several bits of data:

  • application
  • version
  • locale
  • operating system
  • application build number

They don’t know it’s you- don’t worry. But they can get an idea of their userbase in broad terms. Not just that, they can show users content targeted to the version the user has installed. If the user is using a version that’s about to be abandoned, they can be warned. In the Shredder example (Thunderbird’s developer version codename), early adopters and testers are given information that will help them get feedback to the Thunderbird development team. In the 3.1 start page, Mozilla adds a donation button for a good cause. Potentially, they could highlight a feature every day, training the user on how to use the app from within the app itself! The start page can be overridden, but most users won’t bother, leaving this valuable two-way communication channel open for you to better understand and help your users to use your app even better.

Maybe phoning home isn’t for you, but maybe it’s going to be key to making your app great. Think about it.

By the way, the Thunderbird pages are here, here, here, and here.

Tweak Your UI- The Ubuntu Calculator

Recently I saw a couple articles on the improved calculator that will be shipping in Ubuntu 10.10 and I thought “Really? An improved calculator?” It turns out that the major, obvious improvement is a UI change. It seems odd. I mean, calculators are calculators right?

Take a look.

The second I saw it I loved it- the colors make the eye easily track where the button groups are. Reminds me of other calculator apps I’ve seen mentions of lately:

A little UI polish goes a long way to making an app fabulous to use.

A few years ago, an interesting blog article surfaced about the development of Coda, a web development app for Mac OS X. The toolbar was strikingly different- it really just meshed well with the overall UI. Coda is sofware that is just fun to use. Extremely slick and powerful. Anyway, the toolbar wasn’t possible to do using standard Mac OS X apis, due to a 3 pixel border they couldn’t get around and still use standard UI controls.

I’m just as much (maybe more) of a standardista as the next guy. But your app needs to be perfect and to do that, it may have to break rules. After a long development cycle, the team behind Coda threw out the system toolbar and wrote their own, even though it took a lot longer.

And all because we didn’t want to settle.

So take a look at your app. Are you settling?

In the end, by the way, the UI looked so good that Apple incorporated that look into the system toolbar in the next release of Mac OS X. It’ not rule breaking- it’s pioneering.

Improving Apps: Some hints, tips, and thoughts on marketing an app for Linux.

More

Pure Linux: How I use Linux 100% of the time.

More