Talk: LibrePlanet2010/Hacking/Free phones workshop

From LibrePlanet
< Talk:LibrePlanet2010
Revision as of 18:29, 16 February 2010 by Dclark (talk | contribs) (Added Need to define "free" and "partially free" section)
Jump to: navigation, search

Are they trying to screw you?

An in progress opinion piece - Danny 19:09, 19 September 2009 (UTC)

  • TO DO: This needs a lot of fact checking and review. Need to make sure I have the quote correctly. Also maybe work in something about "The SDK Trap"; also seeing this with iPhone, Palm Pre - same old story of why in the hell would you develop free software for a platform that respects your freedoms less than GNU OS.

To quote my favorite playwright, David Mamet, "In business, always assume the other guy is trying to screw you, because he probably is. And if he isn't, then you can be pleasantly surprised."

Many companies support free software in various ways, and whether this is because of altruism of the people who happen to control the company at the moment, out of corporate self-interest, or some combination of the two is basically unknowable.

What I do know is that I do not want the free software community to be in a position of being screwed if a corporation's support should be withdrawn, or if that support is shown over time to be part of an overall strategy that is not in the best interests of our intellectual freedoms.

This is why the emergence of the Google Android/Linux operating system, and the excitement over them by some people in the free software community, has been troubling me lately.

Google has basically taken the GNU out of GNU/Linux, and replaced it with Apache-licensed software that they may later relicense as they wish[1]. This software is in a google-specific dialect of Java, a language that may have its own longer-term problems with freedom [3], called Davlik [4], and may require use of a SDK that requires nonfree software to develop for easily[2].

Since Linux has shown that they are willing to include non-GPLed code for the purposes of compatibility with hardware [5], what you have is a platform that could in theory have nonfree drivers for all of the hardware (a big issue, esp. with mobile devices), and any license Google chooses for the user space software. There also is no protection against DRMed hardware under the Apache (Android) or GPLv2 (Linux) licenses, as there is under GPLv3 licensed software such as the GNU Core Utilities.

While the former problem is also an issue for any GNU/Linux distribution not on the Libre distributions list [6], the later has an obvious and immediate remedy for you to take as a developer: if you believe in software freedom, do not develop software that depends on standard developers kits or windowing systems that require nonfree software, or that are controlled by a single corporate entity, unless you truly believe that entity will be as good a steward of that software (and if they ask for assignment your copyright) as you yourself or the FSF / GNU Project would be; and if you do truly believe they would be, I suggest you do more research into the legal responsibilities of publicly traded companies.

If you want to develop for mobile devices, look at the various GPLed free software community based efforts, such as freesmartphone.org; they may not yet be as sexy as the alternatives, but (warning: horrible unfinished analogy ahead) as with people even the sexiest isn't in the long term very helpful to you if their commitment to you may be shallow and they may ditch you at any moment.

References

  1. To contribute to Android, you have to assign copyright of your changes to Google. [1]
  2. "... apt-get install sun-java6-bin ..." [2]; Freest_hardware_comparisons/howto_have_a_free_android_sdk

See Also

To incorporate

-------- Original Message --------
Subject: Re: Are they trying to screw you? - Draft 1 for comments / not for wide redistribution
Date: Sun, 12 Jul 2009 20:58:39 +0200
From: GNUtoo <GNUtoo at no-log.org>
To: Danny Clark <dclark at fsf.org>
References: <4A54AFCB.8020507 at fsf.org>

I've made some more findings...that need to be included in the next
draft:
android@port4 ~ $ cd freedroid/vendor/htc/dream/
android@port4 ~/freedroid/vendor/htc/dream $ ls
AndroidBoard.mk     apns.xml        extract-files.sh  htc_dream.mk
kernel          README.txt   trout-keypad-qwertz.kcm
trout-keypad-v3.kcm  vold.conf
AndroidProducts.mk  BoardConfig.mk  h2w_headset.kl    init.trout.rc
kernel.version  system.prop  trout-keypad-qwertz.kl   trout-keypad-v3.kl
wlan.ko
android@port4 ~/freedroid/vendor/htc/dream $ cat README.txt 

---- build configuration ----

You can configure to build for HTC Dream (aka T-Mobile G1) by putting
the following in your buildspec.mk file at the root of the source tree:

TARGET_PRODUCT := htc_dream

If you wish to override the included prebuilt kernel image, add:

TARGET_PREBUILD_KERNEL := /path/to/kernel/arch/arm/boot/zImage

---- proprietary files ----

The HTC Dream device includes a small number of proprietary binary 
files that are necessary for Android to work correctly on it.

They can be obtained from your Dream device by running the
extract-files.sh script in this directory.  It will create the 
proprietary subdirectory, and use adb (which will need to be in 
your path) to copy the files from your device.  You will need to
enable USB Debugging (under Settings/Applications/Development)
for this to work.

android@port4 ~/freedroid/vendor/htc/dream $ cat extract-files.sh 
#!/bin/sh

mkdir -p proprietary
adb pull /system/etc/AudioFilter.csv proprietary/AudioFilter.csv
adb pull /system/etc/AudioPara4.csv proprietary/AudioPara4.csv
adb pull /system/etc/gps.conf proprietary/gps.conf
adb pull /system/etc/firmware/brf6300.bin proprietary/brf6300.bin
adb pull /system/bin/akmd proprietary/akmd
adb pull /system/lib/libhtc_ril.so proprietary/libhtc_ril.so
adb pull /system/lib/libaudioeq.so proprietary/libaudioeq.so
adb pull /system/lib/libqcamera.so proprietary/libqcamera.so
adb pull /system/lib/libgps.so proprietary/libgps.so
adb pull /system/lib/libhgl.so proprietary/libhgl.so
chmod 755 proprietary/akmd

adb pull /system/etc/wifi/Fw1251r1c.bin proprietary/Fw1251r1c.bin
adb pull /system/etc/wifi/tiwlan.ini proprietary/tiwlan.ini


android@port4 ~/freedroid/vendor/htc/dream $ cat AndroidBoard.mk 
LOCAL_PATH := $(call my-dir)

# kernel binary
#
ifeq ($(TARGET_PREBUILT_KERNEL),)
TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel
endif

file := $(INSTALLED_KERNEL_TARGET)
ALL_PREBUILT += $(file)
$(file): $(TARGET_PREBUILT_KERNEL) | $(ACP)
	$(transform-prebuilt-to-target)

# keyboard layouts
#
PRODUCT_COPY_FILES += \

$(LOCAL_PATH)/trout-keypad-v3.kl:system/usr/keylayout/trout-keypad-v3.kl
\

$(LOCAL_PATH)/trout-keypad-qwertz.kl:system/usr/keylayout/trout-keypad-qwertz.kl \
	$(LOCAL_PATH)/h2w_headset.kl:system/usr/keylayout/h2w_headset.kl

# default apns list
#
PRODUCT_COPY_FILES += \
	vendor/htc/dream/apns.xml:system/etc/apns-conf.xml

# keyboard maps
#
include $(CLEAR_VARS)
LOCAL_SRC_FILES := trout-keypad-v3.kcm
include $(BUILD_KEY_CHAR_MAP)

include $(CLEAR_VARS)
LOCAL_SRC_FILES := trout-keypad-qwertz.kcm
include $(BUILD_KEY_CHAR_MAP)

# board specific init.rc
#
PRODUCT_COPY_FILES += \
	$(LOCAL_PATH)/init.trout.rc:root/init.trout.rc

# prebuilt wifi driver
#
PRODUCT_COPY_FILES += \
	$(LOCAL_PATH)/wlan.ko:system/lib/modules/wlan.ko

# vold.conf
#
#
PRODUCT_COPY_FILES += \
	$(LOCAL_PATH)/vold.conf:system/etc/vold.conf

# htc proprietary code
#
proprietary := $(LOCAL_PATH)/proprietary

PRODUCT_COPY_FILES += \
	$(proprietary)/libhtc_ril.so:system/lib/libhtc_ril.so \
	$(proprietary)/libaudioeq.so:system/lib/libaudioeq.so \
	$(proprietary)/libqcamera.so:system/lib/libqcamera.so \
	$(proprietary)/libgps.so:obj/lib/libgps.so \
	$(proprietary)/libgps.so:system/lib/libgps.so \
	$(proprietary)/libhgl.so:system/lib/libhgl.so \
	$(proprietary)/brf6300.bin:system/etc/firmware/brf6300.bin \
	$(proprietary)/akmd:system/bin/akmd \
	$(proprietary)/AudioFilter.csv:system/etc/AudioFilter.csv

PRODUCT_COPY_FILES += \
	$(proprietary)/AudioPara4.csv:system/etc/AudioPara4.csv \
	$(proprietary)/gps.conf:system/etc/gps.conf

PRODUCT_COPY_FILES += \
	$(proprietary)/tiwlan.ini:system/etc/wifi/tiwlan.ini \
	$(proprietary)/Fw1251r1c.bin:system/etc/wifi/Fw1251r1c.bin
android@port4 ~/freedroid/vendor/htc/dream $ 

Denis.

Need to define "free" and "partially free"

Not sure what this distinction means on the main page. No current maemo or android device can be fully free due to binary blobs being needed for some of the hardware to work as far as I know; so I don't know why for example replicant on an android would be any more free than fso on a palm pre. -Danny 22:29, 16 February 2010 (UTC)