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