Lucas asks about how free the N900 is, whether he can download and
recompile and reflash. I'll try to answer some of those questions.
No, you can't download all the source. Part of it is just not open.
I am not privy to Nokia's decisions on why or why not to open up, but
it seems like the user interface bits are only partially open. Hildon
itself is open so you can poke at widgets and see how those work. The
address book is not open. The telepathy component that talks to the
cellular modem is not open.
As for having to accept EULAs, I honestly don't remember accepting one
of those, but I'm not going to say there are none. There's at least
one which is every time you install a package where you have to check
a box saying "Yes, I know this package is third party and will not sue
Nokia if it causes my house to burn down, my wife to divorce me or
causes somebody to steal the car". It's annoying, but I'm willing to
live with it.
The contents of apt's sources.list is:
deb https://downloads.maemo.nokia.com/fremantle/ssu/apps/ ./
deb https://downloads.maemo.nokia.com/fremantle/ssu/mr0 ./
deb https://downloads.maemo.nokia.com/fremantle/ovi/ ./
deb http://repository.maemo.org/extras/ fremantle free non-free
deb http://repository.maemo.org/extras-devel/ fremantle free non-free
(technically, it comes from
/etc/apt/sources.list.d/hildon-application-manager.list, not
sources.list.)
I believe the built-in applications are generally not free, so
rebuilding everything that is free will for instance leave you without
any address book UI, the built-in map application or camera. Sadly,
the X driver is also proprietary, so you won't be able to see anything
either.
I don't think you can usefully install another free distro on the
N900. You might be able to, at some point, assuming somebody goes to
the effort.
The last question is "- Besides the non-free telephony stack, are
there any other “antifeatures” I should be aware of?". The telephony
stack is implemented around Telepathy, which is LGPL-ed free software.
While it's correct that telepathy-ring (which talks to the cellular
modem), the call UI and most of the address book are proprietary, the
rest of Telepathy is free. There are SIP and XMPP connection managers
that are free, and you can install more connection managers for MSN,
IRC and so on.
Also, I think it's important to emphasise that the telephony stack
does not contain any antifeatures. The closest thing you would be
able to find is probably the restriction to one active and one held
call at the same time, but as one of the developers said: "That's to
prevent the UI from going mad".
While I like to tout the N900 as a free phone, it is in no way
completely free. Large parts of it are free, and almost as
importantly: most of the programming interfaces are free and at least
somewhat documented, so if somebody wants to replace the built-in
camera application with a free one, they can replace the DBus
interface that the camera app provides. Ditto for maps applications,
the address book and so on.
I've been using an iphone since late 2007 as my primary phone and so
I've gotten quite a few contacts and SMS conversations stored on it.
Now that Collabora has given me a nice and shiny N900, I wanted to
move my contacts and conversations over, but this proved to be a bit
more work than expected. Please note that the following procedure
worked for me, I have tried to take reasonable steps to prevent
anything breaking, but if something breaks, you get to keep both
pieces. I am not responsible and this comes with absolutely no
warranty. Take backups.
What you need
the addressbook and SMS SQLite databases. On my phone, they live
in /var/mobile/Library/AddressBook and /var/mobile/Library/SMS.
A copy of my iphone-contacts-convert script. It's
written in Perl and should be reasonably easy to understand. Put
it in the same directory as AddressBook.sqlitedb.
A copy of my iphone-export-sms script. It's also written
in Perl and should also be reasonably easy to understand. Put it
in the same directory as sms.db.
The smstools program you can get from this thread on
talk.maemo.org.
The address book conversion script takes the SQLite database structure
and converts that into a VCF file. It should be completely safe to
run multiple times (it only does SELECT from the different tables in
the contacts database, and you have made backups, haven't you?).
If it dies with an "Unknown property", "Unknown label" or other error,
you can poke it and see if you can work out what's wrong or drop me an
email and I'll see if I can help you. Assuming it doesn't fall over,
it will spit out a series of VCards, which you should store in a file,
which you then to the N900 and open in the address book. Assuming
you have less than 1000 contacts, they should now all be in your
address book. If you have more, you need to split the file.
A couple of known limitations:
It doesn't handle some of the attributes, like job title, notes,
department, display names, prefix and suffix. None of my contacts
used those, so I just didn't care. Patches to change this
accepted. Also, it doesn't handle custom attributes and
birthdays. I intended to handle birthdays, but forgot and I have
few enough contacts with birthdays that I just did it by hand.
When it hits something it doesn't know how to handle, it stops and
you need to add the relevant handle to the code. I think it is
mostly clear, how to, but again, feel free to contact me with any
problems.
Only tested on firmware version 2.2. Yes, ancient, but it's what
my iphone is running.
If you have contacts that are organisations, they will come up with
a blank full name. Just edit them on the N900 (pressing edit and
then save immediately works fine) and they'll be automatically
fixed.
No picture support. This looked a bit involved, so I didn't do
this bit. Should be possible with a bit of effort.
The procedure for exporting and importing SMS-es is a bit more
involved. First, export the sms-es by running the perl script. It
spits out a tab-separated file which you should copy to the N900 along
with the smsimporter program from the smstools thread. Run
./smsimporter foo.csv and you should get all your SMS-es put into
the conversation app. I ended up compiling my own smsimporter based
on the 0.2.1 from the thread with the UUID patch too. Read the whole
thread and it should be fairly clear.