This is a list of features and behaviors that I wish
make to happen. This list is quite a bit shorter than the corresponding
one for Maemo.
Policy from KDE vs. Gnome: For every application, all configurable options should be listed in its configuration file(s) with default values, legal selections or ranges, and help text. X[HT]ML is suggested despite its annoying prolixity because it is easy to parse. A generic GUI (analogous to gconf) should be able to read such a file and alter any such options, even in the recommended case that a nicer GUI has been handcrafted for the more commonly altered options.
Many applications have persistent data, not only settings but content, such as the notes in AK-Notepad and the encrypted storage in OISafe. It would appear that each app is a little world unto itself and the content is not supposed to be accessible outside. This is not the UNIX Way, and it's also hard to find and back up all the little microcosms. Perhaps even more important, the microcosms are in /data/data/name.of.app, that is, in main flash, where space is very limited. I am more comfortable with a user's home directory (on the memory card) with the content in subdirectories. This also allows true multi-user operation.
There should be a distinctive border, texture or color on all
buttons for which
long touch yields a menu.
There should be a sign that a screen has a menu activated by the Menu button, such as a colored line near this button.
A desktop browser would have a configuration page where you could set up associations, e.g. in my case, tell it to send an application/ogg link direct to the media player for streaming. In Android, I believe that associations are handled by global infrastructure.
We need a fingerprint reader for authentication.
Alarm Clock: the alarms need a name, e.g.
How do you use an arbitrary audio track for the alarm clock signal?
Formerly alarms were performed through the media player backend, but
a forum posting says that now the Alarm Clock
plays them itself
because the backend can be inhibited by modal dialogs. I think this
is a crock: change the API to include a flag meaning
or not a modal dialog is in progress.
If you download a X.509 root cert, the browser has no association (mailcap) for it. The browser should install it in the CA collection. Is there any way at all to add certs to the collection?
An (optional) wattmeter or ammeter in the status bar could help us understand what's eating up the battery's energy. Lots of people have asked for the battery icon to show the battery state numerically.
The status bar icon for the GPS should show the number of satellites seen, and whether position is currently being reported from GPS, from cell towers (lacking a quorum of satellites), or neither (if disabled).
There should be a procedure so the user can calibrate the accelerometer, and all apps should transform the raw data through the resulting matrix. Similarly, it should be possible to calibrate the magnetometer, though a calibration standard is harder to come by.
I need to record data of various kinds. On Maemo I have been using Gnumeric (a spreadsheet), but logically this is a job for a database.
We need Bluetooth OBEX, both in and out.
The Android Browser has no way to show the title, alt, summary, href or src attributes of elements having them, specifically, the carefully annotated <acronym> tags throughout this document. Opera for Linux marks an <acronym> with a dotted underline (the green box would be more in style on Android), and it will pop a tooltip with these items if you hover over an <acronym>, an <img> or a link. (Still in v1.5.)
It looks to me like the Android Developers put together a focus group and made a list of everything annoying about cellphones and handheld devices that they wanted to avoid. Here is a list of items I've noticed that the developers deserve congratulations for.
First, the biggest deal is that the users can inspect arbitrary files and can install arbitrary software. This feature greatly expands the range of niche markets that the G1 is useful for, and allows the user to make the phone do what he wants, not what some marketing droid thought might attract the kids to buy it. One of my co-workers tried the G1 floor model in a retail store, installed the ConnectBot SSH client, connected to her account at work, and bought the phone and a contract on the spot. An iPhone, which she also was considering, couldn't do that.
The keyboard is actually useful: it has unshifted number keys, and all the useful ASCII punctuation is right there. While the feel of the keys is not as nice as on a real desktop keyboard, the keys are reasonably useable. Compare to the keyboard on the Nokia N810, which was a disappointment.
The battery readout is linear, unlike on the N810, which goes by voltage and for which 100% to 20% all look the same.
A trackball for pointing is unique and is an excellent choice.
When Maemo turns off the display after inactivity, it just turns out the light. Android gives you a warning of five seconds, turning the brightness to minimum, and you can touch the screen or move the trackball if you are still reading a page.
When Android is upgraded, user and system settings are preserved. This is standard behavior in desktop operating systems, but is not too common on cellphones, and specifically Maemo is very annoying in this aspect: you have to reconfigure everything after an upgrade.
Can I put a webserver on this phone? That would handle the local content issue immediately. [Done, see i-jetty in the hacking page. But it would need a new plugin to serve local content.]
Build a content provider for local HTML content, until file: URLs can be revived.
Hack WebKit to revert the change that suppressed file: URLs. If possible, provide different but similarly effective security protection. Try to convince the devs to accept this patch.
In any case, file a bug report about file:/// URLs. [Done, here is a local copy of the bug report with a link to their bugzilla.]
Locate the root certificate store; install the CFT and Mathnet root certs. Build an app to do this, preferably effective as a browser plugin or mailcap executor, so a root cert can be downloaded. [Partially done, see the installation procedure here.]
Locate the association engine and tell it to pass Ogg/Vorbis URLs directly to the media player. Build an app to jigger associations that is integrated in the settings dialog.
Jigger the media player to accept a M3U file sent in by the browser. Help the real developers to add support in the players for M3U files stuffed with URLs.
Add smileys to Jabiru (XMPP/Jabber client). Add the ability to connect to multiple servers at once. If Gnome's Pidgin (an excellent multi protocol client) could be ported, that would be really great, although my requirement for IM on MSN is no longer operative. I should try to hack the distro's IM client so it will connect to an arbitrary server, i.e. to mine.
Port a PDF viewer. A multi format viewer such as Evince would be even better.
Port Gnumeric to Android. Yeah, sure.
Create a generic database app to be used for recording blood pressure, credit card and checkbook journal, and the dutiable items report for foreign travel. Each would be handled by a custom form feeding into the generic backend. See Google Gears for a possibility here.
Create an ammeter plug for the status bar. Also a numeric readout in the existing battery plug.
Add ammeter support to Tricorder. Also battery temperature, see
T-Mobile My Account. Also randomly blink the
in the speaker grille.
Come up with a OBEX client and server.
When GPS starts up, it takes a long time to find satellites. I suspect that the daemon does not remember their orbital elements -- and it could. Yes, it does; GPS details here with suggestions how to improve startup speed.
Install a real program development distro such as Debian.
I would not be booting the Debian kernel, nor even chrooting (the distro
does not even provide chroot); I would put the Debian utilities on the path
and use them from Android itself (in a shell). An alternative is to
install busybox, and this hack is reported often, but I hate busybox;
I want bash and a real
find program. More
notes on the Debian project here.
Since VFAT has a maximum of 216 allocation units, on a 8Gb SD card each one is 217 (131072) bytes. This is outrageous. I want to reformat the card with ext2 or ext3. As with Maemo, most hackers who do this have a small VFAT filesystem as partition 1, and reformat partition 2, because various startup scripts have a VFAT mount hardcoded, and also, the startup module that handles flashing only knows about VFAT. However, this project will have to wait until post-Cupcake, when I hope we'll get modules for more filesystems. Progress on this issue is described in the notes on the Debian project.