Following my questions on the freeness of the Nokia N900, I received quite a lot of comments. I’m trying to summarize the most important points here.
- Maemo is not 100% free software. There are some proprietary components. The Free Maemo wiki page lists them all, and there are some explanations on Why the closed packages.
- The Mer project (install notes for N900) aims at providing a 100% free alternative to Maemo.
- It’s possible to rebuild/upgrade the kernel, however the newest kernel build-depends on a fiasco-gen package that is not provided. It is being worked on.
- Nokia is sponsoring someone to work on Maemo derivatives.
For all the details, see the comments and Tollef’s blog.
Mer cannot provide a 100% free alternative to Maemo. It is Nokia’s policy to keep a key set of low-level userspace applications closed source. In particular, this applies to the battery charging code (bme).
Note that battery charging logic is a key component in any device powered by a Lithium polymer battery which will burn up (the smoke is highly toxic) or explode if not charged properly. Discharging Lithium polymer batteries beyond a critical level will destroy the battery permanently and may cause it to explode in an attempt of charging it again [1].
This has two consequences: Firstly, safe operation of a free/open userspace is impossible without bme [2]. Secondly, nobody competent enough to do the required reverse engineering to replace bme with an open source implementation will ever touch it because those people also know that the risk is just too high and you can in fact be held liable for damages caused by open source software (because the respective clause of, e.g., the GPL is void in most continental-European jurisdictions).
Nokia has been aware of the chilling effect (intended or not, I don’t know) this has on free software Maemo alternatives ever since before the official launch of the 770 in 2005. Numerous and repeated requests from various members of the embedded/handheld Linux community to rectify the situation have been ignored. Note that these requests included (substantiated) offers to support the 770/800/810/900 in OpenEmbedded based distros.
–J
[1] Needless to say that the only truly safe way of handling battery charging is in hardware (custom ASIC or dedicated uC) and everyone in the industry (Nokia included) knows that. The fact that several manufacturers (including but not limited to Noka) do it in software anyway illustrates the fact that they value profit over the safety of the people using their products.
[2] Since there is no documentation on the battery charging logic it is unclear whether deep-discharging safeguards are in place.