3 Answers
3

Ubuntu running on one computer is really no different from Ubuntu running on another computer, whether one of the computers is called a "phone" or not :P

Things to consider for your applications:

Does this application rely on specific video libraries? No existing Android phone has an ATI video chip, for example, as far as I'm aware.

Does this application rely on specific input methods or other hardware? Not all Android devices support peripherals. Of course, most have Bluetooth so Ubuntu should be able to manage a Bluetooth keyboard, for example, but I'm not sure whether a phone's Bluetooth stack could be so different as to not work in Ubuntu.

Does this application rely on the x86 architecture? Most (all?) Android devices use the ARM architecture.

I would suspect that Emacs would be fine if you compiled it for the chipset of whatever device you used. Ruby might be more complicated -- maybe it relies on specific x86 instructions, I haven't really studied how interpreted languages work in that regard -- but maybe not.

You're making me want to try Ubuntu on my phone so I can better answer these questions :P

I've seen OpenOffice.org running on Debian on an OpenMoko FreeRunner. That doesn't mean it was a good idea, but I've seen it done. :)

If there is an ARM build of a package, you should be able to get it to at least run. The limitations is that things may not always be supported by Free Software - even the venerable Dream (G1) has binary drivers. There are projects reverse-engineering these drivers (as of this writing, the RIL has been reversed and GPS (not AGPS) works.)

No, you can install anything, but it may not work. You need to find packages and programs matching your hardware architecture. For example, in common case programs compiled for x86 architecture won't run at all on your smartphone, because phone has different CPU type - usually ARM7.