Narrowness in software

It’s a joy working with software projects, but there always seems to be half as much time available as estimated and what’s to be done always seems to be twice as much as estimated.  And that’s in the good cases. No matter how narrowly you think you’ve defined a project, it tends to fractalize.  If you can reduce at the outset — and even seemingly unnecessarily — the number of new things that have to be learned or dealt with in a project, the probability of getting it functional increases.

In the recent past, I’ve tried to stay up on a way larger number of new things that are bright and shiny than I can really deal with.  Time to toss a lot out.  Narrowness in software, goals for 2012:

  • Python 2.7.2  <– avoid diversions to learn more in Ruby, Javascript, JQuery, bash, Java, C++, Erlang, php, etc,. and put off Python 3.2+ until Django runs on it, which seems roughly one year out.
  • PostgreSQL <– MySQL.  Took a while to get comfortable in pg but seems reasonable now.
  • nginx and uwsgi <– ok, need Apache and mod_wsgi in two ongoing projects.
  • Django 1.3 <– avoid diversions to learn other frameworks, enjoy the fruits of class-based generic views in 1.3, look forward to 1.4 fixing some things.
  • Ubuntu 10.10 on laptop and 11.04 server on servers <– 11.10 still has “classic” option, though not installed by default; avoid investigating proliferating hubris of Mint, Ubuntu, non-Ubuntu UI options.
  • git <– lots of good documentation; if I force myself to use git every day I might actually start needing to consult the docs less.

Dirk Hohndel on Open Source Software in China

Dirk Hohndel, Chief Linux and Open Source Technologist at Intel, gave a talk centered on the evolution of open source in China for a lunch meeting of the China Business Network of the NW China Council on December 3.   Mike Rogoway of The Oregonian has coverage on his blog, so I’ll try to complement what he had to say about it.

Dirk emphasized that he was representing his own views; not Intel’s.  They reflect his involvement as a committer to Linux and related open source projects since 1991, his frequent participation in fostering open source in China over the past several years, and a clearly articulated vision of open source as a natural continuation of the way humanity has evolved the state of knowledge over the past 300 years by building on the work of peers and predecessors. 

From this perspective, selling software executables without access to source, which started in the late 1970’s, was an aberration not only from the previous practice of delivering source code with the sale of computers, but also from a longer history of the progress of knowledge.

In China, there was initially a perception that open source software was almost too good to be true by people looking for short term profit.  They could include it for free, bundled with a computer or other device they charged for, or just put a “brand” on a disk and sell it.  According to Dirk, for example, there were many failed attempts to put a brand on the code of the open source project and sell it without source as a cheaper flavor of Microsoft Office. 

Within the past 3-4 years, Dirk said, there has been a change in China to true open source participation for the long term by companies, organizations, and individuals, as they have learned that open source creates more value when you do not disconnect from the value chain. Now companies like Red Flag, CS2C, and Sun Wah have become active in open source; and Chinese government ministries and universities have started to become important Linux and open source drivers.

Initial Impressions: iPhone 3G

Rather than a general review, these are initial impressions on some aspects of the new iPhone of particular interest to me and also relative to the competitive market context.

U.S. TV ads during the Olympics have been touting it as twice as fast, which probably is a good, uncomplicated message for that audience, but maybe not quite what was hoped for (EDGE is around 160Kbits/sec and “3G” on UMTS phones you would hope to be running 1-2 Mbits/sec, so 6-12X would be a lot nicer).  Twice as fast basically means you’re still looking for wifi access (see my previous iPhone 3G posting for discussion of Apple’s coup with AT&T wifi at Starbucks), unless you’ve just got to have that email or web page, so most people I know are turning off “3G” (Settings -> General -> Network:  3G -> off) to save power.

The iPhone 3G system software is somewhat more sluggish and the Safari browser more prone to crashing than on the previous iPhone, but neither of these things is a major problem.

My favorite two innovations are downloadable apps and the multilingual operating environment.  The first thing I downloaded was a WordPress client (no, this post is not being written on the iPhone.  Desktop typing is faster than for an 親指俗人 oyayubi zokujin (“thumb tribesman”) using the phone.  But that brings me to the language part, which actually means the system language, the keyboard, and the region.  For example, switching to Chinese (mainland characters or traditional) puts most everything in Chinese and then you can set the region as China, Singapore, Taiwan, etc.

The keyboard, in the case of Chinese, can be “pinyin” (typing in Roman alphabet, which is contextually converted to Chinese characters) or “handwriting.”  These techniques have been around for a while but work great implemented on the iPhone 3G.

I have to admit I naively thought there was no way that handwriting was going to work with a finger tip dragging across a capacitive-sensitive screen rather with a stylus on a touch sensitive screen (like my previous favorite cell phone, the Chinese Motorola A780 — see way below).  I’m not sure why I thought that, because a common way to clarify to someone which character you mean (in a Chinese language context) is to “write” the character you mean with your finger on the palm of your hand so they can “see” it written. Well, contrary to what I thought, it works great!

Twitter posts in many languages, yes!  Once I started trying some Twitter posts in Japanese and Chinese from the phone, I moved on to German and French, which are almost as cool because predictive interpretation and correction are used there, too.  You type “sein konnen” and it’s changed, like “fail whale, oder warum Twitter Posts trotzdem toll sein können.” Same thing with French diacritics and accents.

In the competitive context (writing as I watch a Verizon ad with an LG iPhone-alike being rolled out and pasted on the side of a building out my office window), adding downloadable webbish apps like WordPress almost, almost, quasi open sources the iPhone, which I think is a key strategic front on which a competitor “could” make their offering(s) bigger and broader (maybe Android phones or Ubuntu on Intel MIDs as they evolve into cell phones will have an opportunity here), and adding lots of languages that work extremely well (esp. Chinese with 600 million cell phone users) both are going to put the iPhone brand just way out there in a way that took the iPod much longer to accomplish.

iPhone 3G

The new iPhone becoming available July 11 will have 3G for faster web and email connections and longer battery operating time. Meanwhile, where’s the best place for 4 million iPhone users (not counting the 2 million that are in China or elsewhere) to demo to potential buyers? Starbucks. Apple has pulled off a great move in the U.S. with free AT&T wifi through Starbucks, significantly reducing the barrier of locked or for-pay wifi access points. This also will do more for Starbucks’ stock price than Starbucks could manage by changing their menu. There is, er, the small matter of a contract with T-Mobile that needs to be rationalized. Apple, AT&T, and Starbucks could perhaps share equally the cost of splitting the difference with T-Mobile.

Since everyone I know who has an iPhone is planning to switch to the new one, and everyone I know who doesn’t have an iPhone is planning to get the new one, it appears that Apple can do no wrong.

When the iPhone launched at the end of June last year, I made a bet with a friend about which would happen first (and by the end of 2007): iPhone clones from Chinese cell phone makers, or iPhone liberation by open source software.

Well, there have been clone sightings (“Top 10 iPhone Clones“), and a lot of hacking (“iPhone Hacks” – it was a matter of days before samba and ssh were functional on it), but I don’t think you could argue that either of these outcomes has occurred.

Now Sprint is going to take a $100 million run at AT&T and Apple with the Samsung “Instinct” iPhone clone. Sound familiar? I think it’s going to be “Indistinct.” In 2005, the year that iPod sales really took off, Creative Technology’s CEO said he was going to spend $100 million to compete with the iPod. A year later, Creative had decreased market share. By that time, “podcasting” was hot and “iPod” was the category. I’d say it’s too late for Sprint and Samsung to compete on feature-vs.-feature comparisons and ad spending because the iPhone has already redefined the smartphone category. It will take another redefinition.

An “open phone” could be that redefinition, but the hardware will have to be cool-better (OpenMoko has not been able to execute on either aspect; and the Google Android cell phone platform is Java, not sufficiently open source, and may have bitten off too big a piece of the stack; maybe evolution of the Intel MID project with the Atom processor on Linux will be the source of a broadly usable open phone platform).

Barcamp Portland – May 2008

Notes on everything in which I participated at Portland’s latest session of the international, self-organizing “unconferences” organized by techies for techies that occurred at Cubespace in Portland on May 2-4. (I link to notes if I could find them.)

– Haskell programming language: promising for multicore programming.

Online Community Management, led by Dawn Foster, who has that role at Jive Software. Mostly I think this was a comparing notes kind of session.

– Calagator is an online calendar of Portland technology events and also a community-programmed Ruby on Rails project. See

– Time-centric social networking: for some participants the answer to how to do it already exists: Twitter.

Options for Inexpensive Web Presence, esp. for small non-profits and startups: a session that Jim Tyhurst and I led. Least expensive ($0) is WordPress hosted on WordPress (don’t even need to know HTML). The next level ($20-$40/month) is a VPS (Virtual Private Server, which requires having someone who can put togther environments like WordPress, MediaWiki, Drupal, or Ruby on Rails applications on a server. The next level ($100/month) is a collocated server at a service provider, which has programming requirements similar to VPS but also means putting effort into supporting the server.

– Distributed Collaboration Tools for Software Development: For me, the best thing was finding out about Gobby collaborative text editor.

Migrating from MySQL? Try Postgresql. By Selena Deckelman of the PDX Postgresql User Group. People are evaluating moving from MySQL to Postgres because the latter is a community-driven open source project and has had some important database technology longer than MySQL.

– Wagn: described as a database-like wiki on Ruby on Rails.

– Using WordPress as a Content Management System. Well, you can. Bottomline: Once there is much content, better off moving to Drupal.

– What’s the Web Missing for Bike Culture? Portland-based project to provide Google Maps-style street level views and optimal routing that does not include sending a bicyclist onto the freeway.

– Drupal. Overview of a widely-used content management system in PHP on MySQL. For me, I learned I probably would be well advised to stay away for a while, because there are too many modules and options to deal with and also the transition to 6.0 has created some bumps in the road.


The Saturday, March 29, 2008 Startupalooza event at Cubespace in Portland (thank you, Todd Kenefsky, who organized it, and Eva and the rest of the Cubespace hosts) was the lowest BS-quotient startup confab I’ve ever seen.

The format was PowerPoint overviews, mostly of what companies or projects were doing, but instead of puffery and pitches, the approach was almost from the perspective of a confessional. Pretty much everything was interesting and well done, but most memorable for me were GarageGames (evolved from game software contract work to web-based distributed games building platform) and Jive Software (evolved from Jabber-based chat to a broader platform solution for customer communications – see Matt Tucker’s XMPP posting from January on Jive’s potential direction), as well as projects, like (happy hour mashups on Google Maps), which spawned (same idea, but for knitting supplies).

It was striking that none none of these had been successful on the first go – sequential failure (or maybe I should really say “less than complete success,” “aborted success,” “undermined success,” “unleverageable success,” etc.) over many years was the norm – not that I’ve experienced that :). Also, none were heroic solo successes. Each was driven by multiple people who had somehow found others that complimented themselves.

A few weeks later at an Oregon Entrepreneurs’ Network forum, I couldn’t help thinking that the contrast with Startupalooza was like the contrast between 90’s, Microsoft-like software and 00’s open source.

UTF8 for Chinese, Japanese web apps

The motivation to use UTF8 character encoding in a web application is to be able to maintain a single development environment regardless of language content. I set out with the goal of creating a cheat sheet I could refer back to for UTF8 in the tools underlying a web application — MySQL database and Apache server configuration, plus PHP, Python, and Ruby programming. There’s also some discussion of Ubuntu Linux and Windows XP, and a side note on WordPress.

For a backgrounder on UTF8, see Joel Spolsky, “The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!).”

Part 1: MySQL

Note: I’m working with MySQL 5.0.45 on Ubuntu GNU/Linux 7.10:

/etc/mysql/my.cnf // Ubuntu and Debian; formerly /etc/my.cnf


You can check the model cnf files in /usr/local/mysql/support-files for other configuration information, but there’s nothing on UTF8. MySQL by default has character_set_server=latin1 and collation_server=latin1_swedish_ci. These can be changed by recompiling using ./configure –with-charset= and –with-collation=. Or mysqld can be started with –character-set-server and –collation-server, or with the corresponding settings in /etc/mysql/my.cnf, as detailed in the previous section. With those cnf settings, restart the MySQL server and now 3/6 responses in MySQL to issuing show variables like ‘char%’ are “utf8” instead of “latin1.” To get 6/6, add –default-character-set=utf8, as in mysql -u root -p –default-character-set=utf8. If you forget to use –default-character-set=utf8, you get mangled display of everything above the lower ASCII range.

MySQL uses “CHARACTER SET utf8” as a modifier to database and table definitions. So a model database definition for UTF8 would be:

create database my_database default character set utf8 default collate utf8_general_ci

and a model table definition for UTF8 would be

create table my_table (
my_id int unsigned not null auto_increment primary key,
my_string varchar(128)
) type=InnoDB CHARACTER SET utf8;

See 10.3.2 “Database Character Set and Collation” If a character set is defined for the database, it is the default for its tables. Note that show create database my_database indicates that it is UTF-8 but describe my_table does not. Also, when using regular expressions with REGEX in queries, first be sure to issue set names “utf8” or the results will be mangled. See 5.11.1 “The Character Set Used for Data and Sorting” (

Important note for using load data to put Chinese or Japanese text into a database: character_set_database affects data imports.



最好的解决办法呢。我觉得就是加密的闪存盘,我特别喜欢的是一个开放源代码加密程序,叫做Truecrypt,应用于Linux和Windows的造作系统两个都可以。在下我试试描写Truecrypt最方便的用法。总的来说,就是加密闪存盘的一个所谓”volume”,然后把你的文件放在这个volume上,这样子你可以拿这个闪存盘,随便用于你办公室的电脑或者家里的电脑或者移动的电脑。这样子,每次开始用这个闪存盘跟另外一个有Truecrypt加密系统电脑,Truecrypt加密系统先让你轮入闪存盘上被加密的volume的密码,然后你每次把文件放在闪存盘上或者用你的Text Editor或者Word processor编辑闪存盘上的文件,Truecrypt加密系统就会自动的加密或者解决,不需要再次轮入密码。

安装(GNU/Linux Ubuntu 6.10):
>truecrypt -V // 假如Truecrypt不在或者不是4.2a以上,作sudo apt-get install truecrypt
// 连接你想用的闪存盘于你的有Linux造作系统的电脑的USB端口而
>ls -latr /dev // 试试看最后被打的pluggable device (plugdev)叫什么名子(例如“sdb1”)。 也可以用dmesg
>sudo fdisk /dev/sdb // 创造1个给Truecrypt加密系统用的partition
>sudo truecrypt -c /dev/sdb1 // 在这个partition上创造Truecrypt要用的volume
// 我选的encryption是“Twofish”而hash是“Whirlpool”

// 连接闪存盘于USB端口
>ls -latr /dev // 试试看最后被打的pluggable device (plugdev)叫什么名子(不一定是“sdb1”)
>sudo mkdir /mnt/sdb1 // 如果没有/mnt/sdb1
>sudo truecrypt -u /dev/sdb1 /mnt/sdb1
// 用Truecrypt系统来mount这个device
// Truecrypt系统只要问你Linux系统的密码和Truecypt volume的密码

// 现在你可以随便继续用这个volume上的文件,比如:

>ls /mnt/sdb1/myfile.txt // or edit, etc.

// 工作做完的时候:
>sudo truecrypt -d /dev/sdb1 // 以Truecrypt系统卸载加密的文件系统
// 在电脑的桌面上的一个“cdrom“图标上的右键菜单中你就要选“eject”。 现在可以断开你的闪存盘。

>sudo truecrypt -vl // Truecrypt系统的volume的属性看得出来.


How to Use an Encrypted Flash Drive

Like everybody else, recently I’m finding I need to use more and more web IDs and passwords, as well as user names and passwords for credit card and banking information. If you look at this in terms of a computer file, it amounts to more than 30K of information. Furthermore, if this kind of material weren’t in electronic form, it would be pretty inconvenient. Why? One reason is that this is information that is frequently changing and needing to be edited. The second reason is that, if this information were not electronic, it might take up 20 paper pages, in which case you can’t just hit ctrl-F to go find something, so it might take you five minutes to locate a particular password. The third reason is that there’s no practical way to encrypt information you’re going to keep on paper, so you’d better hope you don’t lose it!

What’s the best solution to this? I think it is an encrypted flash drive. I particularly like an open source encryption program called Truecrypt, which can be used both on Linux and on Windows operating systems. In the following, I try to describe the most practical ways of using Truecrypt. In short, it’s to encrypt a “”olume” on a flash drive and then put files onto this volume. Then you can just take the flash drive and plug it into your office computer or your home computer or your mobile computer. This way, each time you start to use the flash drive with a different computer that has the Truecrypt encryption program, the Truecrypt encryption system will first require you to enter a password for the Truecrypt-encrypted volume, and then automatically encrypt or decrypt files, as you put them onto the volume, or open them from there, in a text editor or word processor, without requiring entering a password again.

Installation (GNU/Linux Ubuntu 6.10):
>truecrypt -V // If Truecrypt is not installed, or is not version 4.2a or greater, do: sudo apt-get install truecrypt
// Connect the flash drive you’re planning to use to the USB port of your Linux OS computer
>ls -latr /dev // check to find the name of the pluggable device (plugdev) hit most recently (like “sdb1”). You can also do this with dmesg.
>sudo fdisk /dev/sdb // Create a partition intended for Truecrypt use.
>sudo truecrypt -c /dev/sdb1 // On this partition, create a volume intended for Truecrypt use
// I chose “Twofish” for the encryption and “Whirlpool” for the hash.

Each time you use it with a computer that has Truecrypt:
// Connect the flash drive to a USB port
>ls -latr /dev // Check to find the name of the pluggable device (plugdev) hit most recently (like “sdb1”).
>sudo mkdir /mnt/sdb1 // If there is no /mnt/sdb1
>sudo truecrypt -u /dev/sdb1 /mnt/sdb1 // Use the Truecrypt system to mount the device
// The Truecrypt system will ask for the Linux system password and the Truecrypt volume password

// Now continue doing whatever you need to with the volume’s file system, such as:
>ls /mnt/sdb1/myfile.txt // or edit, etc.

When finished:
>sudo truecrypt -d /dev/sdb1 // Dismount the volume’s file system through the Truecrypt system.
// Right click on the “cdrom” icon on the computer desktop and select “eject” from the menu list. Now you can disconnect the flash drive.

>sudo truecrypt -vl // To access properties of the volume in the Truecrypt system.

That’s it. It’s really very simple. Aside from these few things, the only other thing you ought to do is to make a secured backup.

Linux Projects Should Totally Concentrate on 3G Cell Phones

With the introduction over the past month of the Cingular 8525, the Cingular Samsung Blackjack (both running Windows Mobile 5.0, incidentally), plus several LG and Samsung flip phones sold by Cingular, such as the SGH-ZX20, as the first 3G (UMTS -> HSDPA) cell phones in the U.S., it seems obvious that Linux projects should totally focus on 3G, because that’s where open source will bring the greatest value proposition for consumers, enterprise application buyers, cell phone makers, and wireless service providers.

The Cingular 8525 is made by HTC in Taiwan (宏達國際電子股份有限公司 -> 宏達電, the 8525 is the HTC P3600 phone), known by the XDA-developers project as the “Hermes” — the Hermes Linux port wiki on is the focus for Linux effort on that phone.

As far as I know, a Blackjack Linux project hasn’t been started yet.
An article from a year ago on by Luke Kenneth Casson Leighton, a prime mover of the projects, on “Hacking HTC’s Windows CE phones with Linux – a progress report,” is still a good summary of the issues and motivations for hacking Linux on cell phones. It just all adds up to creating more value faster at lower cost.

Just as it’s obvious that open source should concentrate on 3G cell phones, it’s also becoming obvious that open source can help open the flood gates by swarming to help one wireless service provider in each major national market gain competitive advantage through open source, just to get the system out of balance. Looking at this thing in terms of competitive moves, that’s something open source can do but the competition can’t, so that would be good. I’d suggest Cingular in the U.S., NTT DoCoMo in Japan, China Mobile in China, and Bharti Airtel in India.

Maybe a wiki to facilitate 3G focus and carrier concentration would be helpful.

Cingular 3125 Customization Tips

Cingular 3125

My wife got a Cingular 3125 ( review) Friday after Thanksgiving. It’s a cool phone and very practical for people who “just want a phone” with long battery operation that can sync with their desktop Outlook contacts and calendar, especially if they don’t have (or have gotten over) Blackberry-envy.The 3125 is the first flip phone running Windows Mobile 5.0. It’s made by HTC in Taiwan, which has a number of phones with Linux projects on, but not yet this one, known as the “StarTrek”.

The following are customization tips. A lot of it is general Windows Mobile 5 topics rather than 3125-specific. None of it is a big deal. It’s just a new customer sitting down with the phone and saying “Could you find a way to…,” again and again at each turn for an hour, to someone who says “Maybe, let’s see…,” until a dog has been turned into a kitten.

Two useful forums for howto information are:



  • How to use Activesync to put files onto the phone or to manipulate files on the phone:
    Start Activesync (comes on a CD with the phone; installs to a Windows PC) by connecting the phone, wait until it finishes synchronizing, click on “Explore Device” -> navigate around in the Windows Explorer that opens up and drag from the PC desktop to the phone directory as needed.
  • Clutter reduction: Using Activesync, create an “other” folder in \device\Windows\Start Up and then drag into it all the other programs besides Calendar, Contacts, Settings, Win Media Player, Communications, a few others, reducing 3+ screens of icons to 1 screen.
  • How to get rid of the promotion of Xpress Mail on the home screen: Settings -> home screen background: pick “Windows Default” or “Windows Simple.” All the screens that start with “Cingular…” have the promotion.
  • How to customize the home screen wallpaper: In GIMP on Linux or Photoshop on Windows, make a 320×240 pixel JPG file, use Activesync to put it onto the root of the file system, then in Settings -> home screen background, select the file name.
  • “What happened? I can’t make a call/receive a call”: If the home screen says “Phone is off,” go to Communications and click on the phone icon, which will have an “x” on it, to remove the “x”
  • “Registry editor” needed for some configuration hacks below: PHM Registry Editor: Google it, download it (as a .CAB file, I think), use Activesync to put it on the phone, use the phone “file manager” to select and run the .CAB to install it.
  • How to turn off start up and shutdown sounds: use PHM Registry Editor: HKLM -> software -> HTC -> startup -> WAV –> set to none; and HKLM -> software -> HTC -> shutdown -> WAV –> set to none
  • How to change the name of the phone that shows up in Activesync: use PHM Registry Editor on HKLM -> Ident -> “Values” -> “Name” -> change
  • How to get sounds: for custom rings, etc. .MP3 files that are placed into the “sounds” folder are supposed to be available for ringtones, but I found that “ringtones” in Settings also has access to sound files in the root directory. I also found there was no need to convert to .flac or .mp3 if you’re in a hurry and don’t care about the space savings; a .wav music file worked just great.
  • Browser short cuts: I put all the predefined links she wasn’t figuring on using into an “Other” folder and added instead:
    • // cell phone-oriented weather
    • google
    • PDX arrivals // Portland airport arrival schedule
  • How to delete one large set of contacts and put on another:
    • On the PC, copy Outlook.pst (the Outlook data file) to a save backup location in case of error. Outlook.pst is in Documents and Settings\\Local Settings\Application Data\Microsoft\Outlook
    • Then, in Outlook, delete all contacts.
    • Now sync with the 3125, thereby deleting everything on the 3125.
    • Now move the new Outlook.pst file to the …\Microsoft\Outlook directory, overwriting the old file.
    • Now sync with the 3125, which will put all the new Outlook contacts onto the blank 3125.

    The same approach can be used with Schedule and Tasks. Seems like it should be possible to select all and delete in Contacts, but online searches just turned up people looking for ways to do it. Seems like it would be possible in Contacts -> menu -> 6 SIM manager, which allows you to select all and to delete, but all I could get it to do was to scroll rapidly through the entire contact list.

  • Quickest way to do sound file conversion: on Linux, use flac -s $in -o $out // $in and $out would be, for example, the wav to flac filenames
  • How to clear storage including contacts, schedule, email, music, photos, settings [think about it for a while before doing it, because that’s pretty much everything]: Start -> Accessories -> clear
  • How to do a soft reset: Hold down both soft keys + power
  • What are alternative browsers: Minimo (phone version of Firefox) might work. Opera Mini is great on the Motorola A780. A forum note suggested installing the version for the LG 225. [On 2006-11-28 Opera introduced Opera Mini 3.0; need to check it out and see if it’ll run on the 3125 WM5 environment.]

More Linux cell phones

FIC (First International Computer 大众电脑, Taipei) and Trolltech (Oslo) have announced cell phones that bring open source Linux closer to reality on cellular.

The FIC Neo1973 uses Linux 2.6.17, a Samsung ARM9 processor, a simple case design with a 640×480 2.8 inch touchscreen, and a UI based on a widget kit FIC’s own “OpenMoko” group wrote using GTK2+. There are open APIs to connect to the proprietary GPS and radio parts of the phone. Like the Motorola Linux phones, it patches quad-band GSM/GPRS multiplexing into Linux, but does so using open standards.

The Trolltech Greenphone is more of a development phone for Trolltech’s “Qtopia Phone Edition” UI platform. Using Linux kernel 2.4.19 and based on a Marvell (ex-Intel) XScale PXA270 (ARM) processor, it has a 320×240 touchscreen display. The price is $695 and you have to get it as part of an SDK.

The Greenphone and the Neo really have different purposes, because the two companies’ situations are very different. Trolltech is a software component supplier to many cell phone producers and apparently would like the Greenphone to shorten their customers’ “time to money” for each new phone, which would strengthen Trolltech’s position as a “platform” (QPE is also on Windows phones). FIC, on the other hand, is a computer device maker, as well as contract manufacturer and designer, with nothing to lose in cell phones. So their strategy seems to be to do, as fully and as quickly as possible, whatever is necessary to get legions of open source developers cranking on their hardware. Worst case, they fail with the end-user product but build a strong basis for supplying bigger producers who have better customer access. I guess you could say the Greenphone hands out matches on the street but the Neo lights a fire in a closet.

By linuxdevices count, there are now over 50 (mostly cell phones) Linux devices. Of these, I’ve used the NEC-Panasonic phones as rentals in Japan and they’re great. I also like my [not really] open source Chinese Moto A780. But if you were doing an enterprise application in the U.S. today, it would be pretty hard not to check out the Neo.

$350 for the Neo and a SIM card on a GSM cellular service like Cingular in the U.S. and you’re in business doing sudo apt-get for everything that runs on hundreds of millions of Linux systems.

A780 GNU/Linux cell phone

Motorola A780

Motorola has the first more generally successful GNU/Linux-based cell phone in China and Europe, and reportedly sold 2 million Linux-based phones, including the A780 and the newer A1200, in China in Q3 2006. Using MontaVista embedded Linux 2.4 and Trolltech’s Qtopia, the quad-band GSM A780 started shipping in August 2005. It’s reviewed on and

I recently picked one up second-hand on eBay from Hong Kong by way of LA. Once you download the Opera Mini browser to improve web performance, the 150 kbps EDGE (rarely falling back to 50 kbps GPRS) Cingular connection for data, such as email and web browsing, is nothing to write home about, but certainly ok for limited use, like looking up entries on Wikipedia while waiting for lunch in a restaurant. Fortunately, gigabit web phones are coming. Meanwhile, people are poking at the GNU/Linux side of the A780.

Using information assembled by Dino Kern at, I set up a telnet connection into the phone that works over Bluetooth or USB. It’s pretty cool to make the connection and issue dmesg and ls -latr to see what’s up on the phone, but it’s not really a true open source environment, yet.

Motorola probably could profit hugely from market leadership with open source phones (Japanese companies NEC, Panasonic, and NTT Docomo are also active in this space, as are Chinese companies Zhongxing tongxun [ZTE] and Datang) but I don’t think you can say that Motorola’s strategy is “open source” today. They’ve been building needed technology and talking around the periphery of open source for several years now, without making the management decision to “go native,” as noted in June by Eugenia Loli-Queru, editor of The official Motorola strategy appears to be defensive — the party line is that application developers should write Java applications on Motorola’s J2ME platform. Kinda booring!

Meanwhile, Harald Welte and others are working to create a flashable, open-source Linux 2.6 environment for the A780 and its successors through the OpenEZX project. The, Opie, and OpenEmbedded sites also have related information. It will be interesting to see what happens with Linux on (and around) cell phones.