Hi everybody, I don't have much actual news about last week, in Taipei the big focus was bugfixing for our stable distribution. Minh HaDuong did a much better job than I could have ever done reporting what was going on the last weeks by initiating the community written community update at http://wiki.openmoko.org/wiki/17th_September%2C_2008_-_Activity_since_launch
There was one important thing last week internally still - we debated for a long time about how 'open' Openmoko products should be. The debate got started because we are now evaluating Marvell's Wi-Fi chips like 8688 for upcoming phones, as reported last week. Like many new Wi-Fi chips (also Atheros' AR 6002 that we look at as well), the Marvell 8688 has a firmware that needs to be uploaded into the memory of the chip at each cold boot. Before, many chips (like Atheros AR6001 used in GTA02) had the firmware in flash inside the chip. However, flash is more expensive and needs more power than memory so vendors are switching to firmwares that need to be uploaded at boot time. The FSF and Richard Stallman don't like that. Their position is that all software in a computer needs to be Free Software. Firmwares that are not Free Software are only acceptable if they are not user upgradeable and can be considered part of the chip's 'circuit'. So the question was - do Openmoko's phones have to meet an _absolute_ freedom level, defined somewhere, or do they just have to be the _most free_ phones available at the time? First we came up with a list of freedom preferences (thanks to Werner :-)): ---1 The 1st best option is that all software on the phone is Free Software. Everything that runs on the main CPU, as well as all firmwares in other chips. Everything should be buildable entirely from Free Software sources using Free Software tools. This is what Openmoko really wants, but it's highly unlikely to happen anytime soon. Firmware inside our GPS chip for example is very complex, and opening it up brings little value to anybody. Firmware in the GSM chip operates in a highly regulated radio band, and the GSM network is generally considered too 'weak' to sustain the protocol 'storm' that would result from freely programmable firmwares. Maybe Wi-Fi firmware can one day be open, and Openmoko is willing to support this although we know it is probably a multi-year effort. Looking for allies we found that some people are already working on free replacements for Marvell Wi-Fi firmwares: http://wiki.laptop.org/go/Marvell_microkernel This is also known as 'Software Defined Radio' (SDR) and the Software Freedom Law Center (SFLC) published a short note about the legal status of this at http://www.softwarefreedom.org/news/2007/jul/06/sdr-paper/ ---2 The 2nd best option would be that all software on the main CPU is Free Software, and other firmwares are not user-upgradeable, do not have to be loaded at boot time, and can thus be considered to be part of the 'circuit' of that chip, a black box. Some people find this option laughable, as it looks like someone not wanting to know the truth, but for a number of reasons the FSF and Richard Stallman believe this is the right way to protect freedom. GTA02 is at this level, let's call it the 'FSF level' :-) ---3 The 3rd best option would allow user-upgradeable firmwares, even if they were proprietary binary firmwares that would need to be loaded at boot time. These firmware files are typically stored in the file system, because Linux kernel standards try to keep binary blobs outside of kernel sources. They are loaded at boot time. At this level (the 3rd best), the loading would happen entirely through the GPL driver, not a proprietary 'upload utility' running on the main CPU. Ideally we would like this proprietary firmware to be as thin as possible and let the Linux kernel on the main CPU handle most logic. This may conflict with power savings (suspend mode) though. Marvell released some thin firmwares to support this idea, for example for the Marvell 8388 Wi-Fi chip: http://wireless.kernel.org/en/users/Drivers/libertastf We will contact Marvell about the possibility of releasing such a thin firmware to Openmoko as well. For all these proprietary firmwares, to be Openmoko's "3rd best" option would mean to give worldwide redistribution rights to Openmoko and all our users and developers. Since our developer program is totally open, the redistribution rights essentially need to be available to everyone. Restrictions against reverse-engineering or modification of the binary firmware would be acceptable for Openmoko. This is the redistribution license Marvell gave to OLPC, for example: http://dev.laptop.org/pub/firmware/libertas/LICENSE Our goal would be to get a firmware from Marvell with similar redistribution rights. ---4 The 4th best option would be to have proprietary firmware, but no redistribution rights, so Openmoko could only flash them onto the phones in the factory, but nobody else could easily create and distribute fully functional images. There are some variants to this, for example on some desktop Linux distributions, some drivers will prompt a download dialog during installation, where the binary firmware has to be downloaded form the vendor's website. ---5 The 5th best option would be to have non-redistributable proprietary firmwares, and a proprietary upload utility that runs on the main CPU. ---6 The 6th best option would be to have no Free Software at all on the phone :-) Bottom line of our discussion: Openmoko's phones do not try to meet an absolute freedom level. We are making phones that are 'as free as possible'. We would probably not want to go down to level 4 or even 5, then we rather delay a new model or feature until we achieved the freedom level we want. But anything on levels 1 to 3 goes. The higher the better. Phew - done. A lot of text and details, I hope it still helps to understand some of our thinking... Feedback very welcome - are we doing the right thing? Should we change something? Best Regards, Wolfgang _______________________________________________ devel mailing list [email protected] https://lists.openmoko.org/mailman/listinfo/devel
