Here are some thoughts on how the N900 MeeGo closed blobs can be made better and easier to use long-term without being tied to specific OS components such as kernel version, PulseAudio version, choice of packaging technology (deb vs rpm), X11 version or other OS choices. Each item contains some statements about how the change will benefit these people working on the N900.

Note that I am not a lawyer and dont know anything about the legal work involved, just the technical issues (and slight license changes of certain things) that will make this stuff easier to reuse for alternative operating systems on the N900 (MeeGo and otherwise)

I also have no idea if any of these are already on the radar screen or how much work these would require (i.e. whether they are possible)

1.Make the flasher binaries (flasher, fiasco-gen etc) available under a "free to redistribute for non commercial use" license similar to the one used for BME and other binary blobs. Better would be to release code and/or info as per https://bugs.maemo.org/show_bug.cgi?id=4871 but free-to-redistribute license would suffice for people producing say one-click installers for N900 alternative operating systems. Pluses of taking this action would be that people building alternative operating systems for the N900 could include the flasher and tools as part of their operating system distribution without the need for end-users to download these tools from Nokia. It also ensures the files will be available in the future even if Nokia decides to cease distribution. Also make the bits of the standard N900 combined FIASCO image that are still used by MeeGo (e.g. the most recent cell modem firmware image and the bits required to flash that to the phone) available under the same "free to redistribute for non commercial use", again for the same reasons as above (e.g. being able to distribute an all-in-one firmware that will install on a N900 with any cell modem firmware, being able to obtain it without needing to pull the right bits from a stock Maemo flash file)

2.Make the packaging files (e.g. .yaml, .spec) available under a license that allows modification. This will enable people who are producing other operating systems for the N900 (such as a Debian based OS with .deb packages) to repackage the binary blobs.

3.Make files such as Makefiles, init scripts, shell scripts and config files available under a license that allows modification. Again this will benefit people producing alternative OSs where changes may be required.

4.Consider providing a version of BME that is statically linked and/or that has as few dependancies as possible. This would be of benefit for rescue firmwares and stuff where there is a need to load/flash an emergency rescue that can boot up and charge the battery (e.g. to get/retain enough charge to allow fixing of the main OS in the case where the main OS wont boot far enough to allow charging and an alternative charging method is unavailable)

5.Eliminate libbmeipc and replace its use in contextkit-battery and pulseaudio-modules-nokia with open libbme.

6.Consider providing headers for libcal as is done on Maemo Fremantle and Maemo Harmattan to allow access to the CAL area by apps where required (there are various bits of the CAL that apps may want to read)

7.As per #6, consider providing headers for sysinfo as is done in the Harmattan SDK (again to allow accessing system information on the N900) Another option is to replace sysinfo with a small (but documented) blob that just obtains the WiFi and BT MAC addresses (the only reason sysinfo is needed), thus leading to less closed-source bits.

8.Where header files are provided for interfacing with closed source libraries such as liblocation (or the libcal/libsysinfo items mentioned above), consider providing them under a license that allows reuse. In the case of these specific libraries, it would allow e.g. people to interface to them from languages such as Python which allow you to talk to C libraries if you translate the C header files into some form of Python code. So basically the current license (including the non-commercial-use clause) but with a clause allowing modification and/or adaptation (the actual libraries could retain the current restrictive license of course)

9.Find a way to make libppu/libwl1251/wl1251-cal smaller, more documented or more open (whatever is appropriate/legally possible). There are projects out there to improve the wl1251 WiFi driver in the N900 kernel and replacement of the clunky interface (netlink or whatever it is) used by wl1251-cal to talk to the WiFi driver with something simple and clean is one thing the people behind those projects would like to do. I know there are regulatory reasons why some of what wl1251-cal does has to remain secret but that doesn't mean it has to be tied to a specific clunky interface in the process. Having a more streamlined wl1251-cal setup would also benefit those who are building rescue disks or other minimal OSs and want working WiFi.

10.http://www.wirelessmodemapi.com/ contains some header files related to the interface to the N900 cell modem. The current version of the Nokia QT SDK contains more header files in QtSDK\Maemo\4.6.2\sysroots\fremantle-arm-sysroot-20.2010.36-2-slim\usr\include\ISI\icpr82. It would be of benefit to see these headers (or a similar set that more closely matches the actual versions of the various servers in the most current N900 cell modem firmware) available for use by MeeGo developers (and others) who want to e.g. improve ofono and make it support things it does not currently support but which are exposed by the actual cellular modem. This would also benefit projects like fsogsmd that wish to support the N900 and its cell modem.

11.The pulseaudio closed modules should be made into static libraries with an open source wrapper file that talks to them and wraps the PulseAudio calls, i.e. pulseaudio calls the wrapper which calls the closed bits which calls the wrapper which calls pulseaudio. This ensures that everything is detached from the specific version of PulseAudio being used. Also, there should be some minimal documentation about what the static library blobs actually do e.g. something like "libxprot.a contains algorithim for speaker protection". No file in the closed static blobs should #include ANY PulseAudio related header file or depend on any details specific to the version of PulseAudio in use.

I believe #11 is something stskeeps has already indicated that he wants to do.
_______________________________________________
MeeGo-handset mailing list
MeeGo-handset@lists.meego.com
http://lists.meego.com/listinfo/meego-handset

Reply via email to