From fca59bea770346cf1c1f9b0e00cb48a61b44a8f3 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 25 Oct 2015 21:00:20 +0100 Subject: import of old now defunct presentation slides svn repo --- 2007/gpl-compliance-tw2007/gpl-compliance.mgp | 527 +++++++++++++++ .../gpl-compliance/index.html | 41 ++ .../gpl-compliance/mgp00001.html | 9 + .../gpl-compliance/mgp00001.idx.jpg | Bin 0 -> 3183 bytes .../gpl-compliance/mgp00001.jpg | Bin 0 -> 33540 bytes .../gpl-compliance/mgp00001.txt | 13 + .../gpl-compliance/mgp00002.html | 9 + .../gpl-compliance/mgp00002.idx.jpg | Bin 0 -> 8123 bytes .../gpl-compliance/mgp00002.jpg | Bin 0 -> 69554 bytes .../gpl-compliance/mgp00002.txt | 13 + .../gpl-compliance/mgp00003.html | 9 + .../gpl-compliance/mgp00003.idx.jpg | Bin 0 -> 7755 bytes .../gpl-compliance/mgp00003.jpg | Bin 0 -> 74132 bytes .../gpl-compliance/mgp00003.txt | 12 + .../gpl-compliance/mgp00004.html | 9 + .../gpl-compliance/mgp00004.idx.jpg | Bin 0 -> 7333 bytes .../gpl-compliance/mgp00004.jpg | Bin 0 -> 67960 bytes .../gpl-compliance/mgp00004.txt | 11 + .../gpl-compliance/mgp00005.html | 9 + .../gpl-compliance/mgp00005.idx.jpg | Bin 0 -> 9367 bytes .../gpl-compliance/mgp00005.jpg | Bin 0 -> 92496 bytes .../gpl-compliance/mgp00005.txt | 19 + .../gpl-compliance/mgp00006.html | 9 + .../gpl-compliance/mgp00006.idx.jpg | Bin 0 -> 13595 bytes .../gpl-compliance/mgp00006.jpg | Bin 0 -> 121451 bytes .../gpl-compliance/mgp00006.txt | 14 + .../gpl-compliance/mgp00007.html | 9 + .../gpl-compliance/mgp00007.idx.jpg | Bin 0 -> 9506 bytes .../gpl-compliance/mgp00007.jpg | Bin 0 -> 92857 bytes .../gpl-compliance/mgp00007.txt | 14 + .../gpl-compliance/mgp00008.html | 9 + .../gpl-compliance/mgp00008.idx.jpg | Bin 0 -> 11302 bytes .../gpl-compliance/mgp00008.jpg | Bin 0 -> 110790 bytes .../gpl-compliance/mgp00008.txt | 9 + .../gpl-compliance/mgp00009.html | 9 + .../gpl-compliance/mgp00009.idx.jpg | Bin 0 -> 12972 bytes .../gpl-compliance/mgp00009.jpg | Bin 0 -> 130284 bytes .../gpl-compliance/mgp00009.txt | 10 + .../gpl-compliance/mgp00010.html | 9 + .../gpl-compliance/mgp00010.idx.jpg | Bin 0 -> 7725 bytes .../gpl-compliance/mgp00010.jpg | Bin 0 -> 74634 bytes .../gpl-compliance/mgp00010.txt | 8 + .../gpl-compliance/mgp00011.html | 9 + .../gpl-compliance/mgp00011.idx.jpg | Bin 0 -> 11948 bytes .../gpl-compliance/mgp00011.jpg | Bin 0 -> 120138 bytes .../gpl-compliance/mgp00011.txt | 10 + .../gpl-compliance/mgp00012.html | 9 + .../gpl-compliance/mgp00012.idx.jpg | Bin 0 -> 8472 bytes .../gpl-compliance/mgp00012.jpg | Bin 0 -> 87648 bytes .../gpl-compliance/mgp00012.txt | 13 + .../gpl-compliance/mgp00013.html | 9 + .../gpl-compliance/mgp00013.idx.jpg | Bin 0 -> 12373 bytes .../gpl-compliance/mgp00013.jpg | Bin 0 -> 128640 bytes .../gpl-compliance/mgp00013.txt | 18 + .../gpl-compliance/mgp00014.html | 9 + .../gpl-compliance/mgp00014.idx.jpg | Bin 0 -> 11703 bytes .../gpl-compliance/mgp00014.jpg | Bin 0 -> 112854 bytes .../gpl-compliance/mgp00014.txt | 14 + .../gpl-compliance/mgp00015.html | 9 + .../gpl-compliance/mgp00015.idx.jpg | Bin 0 -> 12208 bytes .../gpl-compliance/mgp00015.jpg | Bin 0 -> 124633 bytes .../gpl-compliance/mgp00015.txt | 10 + .../gpl-compliance/mgp00016.html | 9 + .../gpl-compliance/mgp00016.idx.jpg | Bin 0 -> 9687 bytes .../gpl-compliance/mgp00016.jpg | Bin 0 -> 87172 bytes .../gpl-compliance/mgp00016.txt | 9 + .../gpl-compliance/mgp00017.html | 9 + .../gpl-compliance/mgp00017.idx.jpg | Bin 0 -> 14512 bytes .../gpl-compliance/mgp00017.jpg | Bin 0 -> 131217 bytes .../gpl-compliance/mgp00017.txt | 14 + .../gpl-compliance/mgp00018.html | 9 + .../gpl-compliance/mgp00018.idx.jpg | Bin 0 -> 8618 bytes .../gpl-compliance/mgp00018.jpg | Bin 0 -> 82507 bytes .../gpl-compliance/mgp00018.txt | 16 + .../gpl-compliance/mgp00019.html | 9 + .../gpl-compliance/mgp00019.idx.jpg | Bin 0 -> 12245 bytes .../gpl-compliance/mgp00019.jpg | Bin 0 -> 109308 bytes .../gpl-compliance/mgp00019.txt | 8 + .../gpl-compliance/mgp00020.html | 9 + .../gpl-compliance/mgp00020.idx.jpg | Bin 0 -> 8069 bytes .../gpl-compliance/mgp00020.jpg | Bin 0 -> 76375 bytes .../gpl-compliance/mgp00020.txt | 10 + .../gpl-compliance/mgp00021.html | 9 + .../gpl-compliance/mgp00021.idx.jpg | Bin 0 -> 8126 bytes .../gpl-compliance/mgp00021.jpg | Bin 0 -> 78273 bytes .../gpl-compliance/mgp00021.txt | 11 + .../gpl-compliance/mgp00022.html | 9 + .../gpl-compliance/mgp00022.idx.jpg | Bin 0 -> 9653 bytes .../gpl-compliance/mgp00022.jpg | Bin 0 -> 96421 bytes .../gpl-compliance/mgp00022.txt | 12 + .../gpl-compliance/mgp00023.html | 9 + .../gpl-compliance/mgp00023.idx.jpg | Bin 0 -> 9900 bytes .../gpl-compliance/mgp00023.jpg | Bin 0 -> 88629 bytes .../gpl-compliance/mgp00023.txt | 9 + .../gpl-compliance/mgp00024.html | 9 + .../gpl-compliance/mgp00024.idx.jpg | Bin 0 -> 10483 bytes .../gpl-compliance/mgp00024.jpg | Bin 0 -> 105789 bytes .../gpl-compliance/mgp00024.txt | 17 + .../gpl-compliance/mgp00025.html | 9 + .../gpl-compliance/mgp00025.idx.jpg | Bin 0 -> 9021 bytes .../gpl-compliance/mgp00025.jpg | Bin 0 -> 91164 bytes .../gpl-compliance/mgp00025.txt | 13 + .../gpl-compliance/mgp00026.html | 9 + .../gpl-compliance/mgp00026.idx.jpg | Bin 0 -> 7729 bytes .../gpl-compliance/mgp00026.jpg | Bin 0 -> 72801 bytes .../gpl-compliance/mgp00026.txt | 18 + .../gpl-compliance/mgp00027.html | 9 + .../gpl-compliance/mgp00027.idx.jpg | Bin 0 -> 7260 bytes .../gpl-compliance/mgp00027.jpg | Bin 0 -> 68034 bytes .../gpl-compliance/mgp00027.txt | 16 + .../gpl-compliance/mgp00028.html | 9 + .../gpl-compliance/mgp00028.idx.jpg | Bin 0 -> 7904 bytes .../gpl-compliance/mgp00028.jpg | Bin 0 -> 73590 bytes .../gpl-compliance/mgp00028.txt | 20 + .../gpl-compliance/mgp00029.html | 9 + .../gpl-compliance/mgp00029.idx.jpg | Bin 0 -> 10152 bytes .../gpl-compliance/mgp00029.jpg | Bin 0 -> 95003 bytes .../gpl-compliance/mgp00029.txt | 12 + .../gpl-compliance/mgp00030.html | 9 + .../gpl-compliance/mgp00030.idx.jpg | Bin 0 -> 10548 bytes .../gpl-compliance/mgp00030.jpg | Bin 0 -> 95240 bytes .../gpl-compliance/mgp00030.txt | 14 + .../gpl-compliance/mgp00031.html | 9 + .../gpl-compliance/mgp00031.idx.jpg | Bin 0 -> 10772 bytes .../gpl-compliance/mgp00031.jpg | Bin 0 -> 112743 bytes .../gpl-compliance/mgp00031.txt | 13 + .../gpl-compliance/mgp00032.html | 9 + .../gpl-compliance/mgp00032.idx.jpg | Bin 0 -> 11299 bytes .../gpl-compliance/mgp00032.jpg | Bin 0 -> 99744 bytes .../gpl-compliance/mgp00032.txt | 12 + .../gpl-compliance/mgp00033.html | 9 + .../gpl-compliance/mgp00033.idx.jpg | Bin 0 -> 14683 bytes .../gpl-compliance/mgp00033.jpg | Bin 0 -> 137071 bytes .../gpl-compliance/mgp00033.txt | 18 + .../gpl-compliance/mgp00034.html | 9 + .../gpl-compliance/mgp00034.idx.jpg | Bin 0 -> 4925 bytes .../gpl-compliance/mgp00034.jpg | Bin 0 -> 47194 bytes .../gpl-compliance/mgp00034.txt | 11 + 2007/gpl-compliance-tw2007/interact-community.mgp | 270 ++++++++ .../interact-community/index.html | 26 + .../interact-community/mgp00001.html | 9 + .../interact-community/mgp00001.idx.jpg | Bin 0 -> 3112 bytes .../interact-community/mgp00001.jpg | Bin 0 -> 32714 bytes .../interact-community/mgp00001.txt | 12 + .../interact-community/mgp00002.html | 9 + .../interact-community/mgp00002.idx.jpg | Bin 0 -> 7966 bytes .../interact-community/mgp00002.jpg | Bin 0 -> 71231 bytes .../interact-community/mgp00002.txt | 15 + .../interact-community/mgp00003.html | 9 + .../interact-community/mgp00003.idx.jpg | Bin 0 -> 10592 bytes .../interact-community/mgp00003.jpg | Bin 0 -> 94114 bytes .../interact-community/mgp00003.txt | 14 + .../interact-community/mgp00004.html | 9 + .../interact-community/mgp00004.idx.jpg | Bin 0 -> 9679 bytes .../interact-community/mgp00004.jpg | Bin 0 -> 95850 bytes .../interact-community/mgp00004.txt | 14 + .../interact-community/mgp00005.html | 9 + .../interact-community/mgp00005.idx.jpg | Bin 0 -> 11472 bytes .../interact-community/mgp00005.jpg | Bin 0 -> 109968 bytes .../interact-community/mgp00005.txt | 19 + .../interact-community/mgp00006.html | 9 + .../interact-community/mgp00006.idx.jpg | Bin 0 -> 9188 bytes .../interact-community/mgp00006.jpg | Bin 0 -> 83132 bytes .../interact-community/mgp00006.txt | 11 + .../interact-community/mgp00007.html | 9 + .../interact-community/mgp00007.idx.jpg | Bin 0 -> 10234 bytes .../interact-community/mgp00007.jpg | Bin 0 -> 90477 bytes .../interact-community/mgp00007.txt | 9 + .../interact-community/mgp00008.html | 9 + .../interact-community/mgp00008.idx.jpg | Bin 0 -> 8843 bytes .../interact-community/mgp00008.jpg | Bin 0 -> 77543 bytes .../interact-community/mgp00008.txt | 11 + .../interact-community/mgp00009.html | 9 + .../interact-community/mgp00009.idx.jpg | Bin 0 -> 8512 bytes .../interact-community/mgp00009.jpg | Bin 0 -> 76542 bytes .../interact-community/mgp00009.txt | 11 + .../interact-community/mgp00010.html | 9 + .../interact-community/mgp00010.idx.jpg | Bin 0 -> 9734 bytes .../interact-community/mgp00010.jpg | Bin 0 -> 91437 bytes .../interact-community/mgp00010.txt | 12 + .../interact-community/mgp00011.html | 9 + .../interact-community/mgp00011.idx.jpg | Bin 0 -> 7308 bytes .../interact-community/mgp00011.jpg | Bin 0 -> 75610 bytes .../interact-community/mgp00011.txt | 10 + .../interact-community/mgp00012.html | 9 + .../interact-community/mgp00012.idx.jpg | Bin 0 -> 7834 bytes .../interact-community/mgp00012.jpg | Bin 0 -> 77345 bytes .../interact-community/mgp00012.txt | 10 + .../interact-community/mgp00013.html | 9 + .../interact-community/mgp00013.idx.jpg | Bin 0 -> 12153 bytes .../interact-community/mgp00013.jpg | Bin 0 -> 121548 bytes .../interact-community/mgp00013.txt | 13 + .../interact-community/mgp00014.html | 9 + .../interact-community/mgp00014.idx.jpg | Bin 0 -> 5656 bytes .../interact-community/mgp00014.jpg | Bin 0 -> 52623 bytes .../interact-community/mgp00014.txt | 8 + .../interact-community/mgp00015.html | 9 + .../interact-community/mgp00015.idx.jpg | Bin 0 -> 7629 bytes .../interact-community/mgp00015.jpg | Bin 0 -> 73998 bytes .../interact-community/mgp00015.txt | 10 + .../interact-community/mgp00016.html | 9 + .../interact-community/mgp00016.idx.jpg | Bin 0 -> 7119 bytes .../interact-community/mgp00016.jpg | Bin 0 -> 64316 bytes .../interact-community/mgp00016.txt | 7 + .../interact-community/mgp00017.html | 9 + .../interact-community/mgp00017.idx.jpg | Bin 0 -> 6288 bytes .../interact-community/mgp00017.jpg | Bin 0 -> 62092 bytes .../interact-community/mgp00017.txt | 6 + .../interact-community/mgp00018.html | 9 + .../interact-community/mgp00018.idx.jpg | Bin 0 -> 7437 bytes .../interact-community/mgp00018.jpg | Bin 0 -> 70410 bytes .../interact-community/mgp00018.txt | 13 + .../interact-community/mgp00019.html | 9 + .../interact-community/mgp00019.idx.jpg | Bin 0 -> 7482 bytes .../interact-community/mgp00019.jpg | Bin 0 -> 77489 bytes .../interact-community/mgp00019.txt | 18 + .../linux-development-model.mgp | 407 ++++++++++++ .../linux-development-model.pdf | Bin 0 -> 39587 bytes .../netfilter-iptables.mgp | 706 +++++++++++++++++++++ .../images/Gta02v1_bottom.jpg | Bin 0 -> 1045441 bytes .../images/debugboard_v2_concept.jpg | Bin 0 -> 22065 bytes .../images/gta01b_v3_bottom.jpg | Bin 0 -> 849092 bytes .../images/gta01bv4_bottom.jpg | Bin 0 -> 928930 bytes 2007/openmoko-foss_in-2007/images/gta01bv4_top.jpg | Bin 0 -> 824865 bytes .../images/neo1973_debugboard_v2_top_annotated.jpg | Bin 0 -> 318075 bytes 2007/openmoko-foss_in-2007/notes.txt | 57 ++ 2007/openmoko-foss_in-2007/openmoko-tech.mgp | 438 +++++++++++++ 2007/openmoko-foss_in-2007/openmoko-tech.pdf | Bin 0 -> 38564 bytes .../images/debugboard_v2_concept.jpg | Bin 0 -> 22065 bytes .../images/gta01b_v3_bottom.jpg | Bin 0 -> 849092 bytes .../images/gta01bv4_bottom.jpg | Bin 0 -> 928930 bytes .../images/gta01bv4_top.jpg | Bin 0 -> 824865 bytes .../images/neo1973_debugboard_v2_top_annotated.jpg | Bin 0 -> 318075 bytes 2007/openmoko-technical-blr2007/notes.txt | 57 ++ 2007/openmoko-technical-blr2007/openmoko-tech.mgp | 262 ++++++++ .../interact-community.mgp | 275 ++++++++ 236 files changed, 4207 insertions(+) create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance.mgp create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/index.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.txt create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.html create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.jpg create mode 100644 2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community.mgp create mode 100644 2007/gpl-compliance-tw2007/interact-community/index.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00001.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00001.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00001.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00001.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00002.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00002.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00002.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00002.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00003.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00003.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00003.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00003.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00004.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00004.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00004.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00004.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00005.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00005.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00005.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00005.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00006.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00006.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00006.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00006.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00007.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00007.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00007.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00007.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00008.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00008.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00008.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00008.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00009.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00009.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00009.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00009.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00010.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00010.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00010.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00010.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00011.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00011.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00011.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00011.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00012.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00012.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00012.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00012.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00013.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00013.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00013.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00013.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00014.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00014.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00014.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00014.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00015.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00015.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00015.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00015.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00016.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00016.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00016.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00016.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00017.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00017.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00017.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00017.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00018.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00018.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00018.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00018.txt create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00019.html create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00019.idx.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00019.jpg create mode 100644 2007/gpl-compliance-tw2007/interact-community/mgp00019.txt create mode 100644 2007/linux-development-model/linux-development-model.mgp create mode 100644 2007/linux-development-model/linux-development-model.pdf create mode 100644 2007/netfilter-iptables-tfh2007/netfilter-iptables.mgp create mode 100644 2007/openmoko-foss_in-2007/images/Gta02v1_bottom.jpg create mode 100644 2007/openmoko-foss_in-2007/images/debugboard_v2_concept.jpg create mode 100755 2007/openmoko-foss_in-2007/images/gta01b_v3_bottom.jpg create mode 100644 2007/openmoko-foss_in-2007/images/gta01bv4_bottom.jpg create mode 100644 2007/openmoko-foss_in-2007/images/gta01bv4_top.jpg create mode 100644 2007/openmoko-foss_in-2007/images/neo1973_debugboard_v2_top_annotated.jpg create mode 100644 2007/openmoko-foss_in-2007/notes.txt create mode 100644 2007/openmoko-foss_in-2007/openmoko-tech.mgp create mode 100644 2007/openmoko-foss_in-2007/openmoko-tech.pdf create mode 100644 2007/openmoko-technical-blr2007/images/debugboard_v2_concept.jpg create mode 100755 2007/openmoko-technical-blr2007/images/gta01b_v3_bottom.jpg create mode 100644 2007/openmoko-technical-blr2007/images/gta01bv4_bottom.jpg create mode 100644 2007/openmoko-technical-blr2007/images/gta01bv4_top.jpg create mode 100644 2007/openmoko-technical-blr2007/images/neo1973_debugboard_v2_top_annotated.jpg create mode 100644 2007/openmoko-technical-blr2007/notes.txt create mode 100644 2007/openmoko-technical-blr2007/openmoko-tech.mgp create mode 100644 2007/relation-community-tw2007/interact-community.mgp (limited to '2007') diff --git a/2007/gpl-compliance-tw2007/gpl-compliance.mgp b/2007/gpl-compliance-tw2007/gpl-compliance.mgp new file mode 100644 index 0000000..a3874f0 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance.mgp @@ -0,0 +1,527 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + + +GPL Workshop +How to (not?) use Free Software + + +%center +%size 4 +by + +Harald Welte + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Contents + + About the speaker + Ideas / Goals of the GPL + How to (not) use GPL Software + Complete Source Code + Derivative Works + Collective Works + GPL and Embedded Systems + The biggest GPL Myths + Thanks + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Introduction + + +Who is speaking to you? + + an independent Free Software developer + who earns his living off Free Software since 1997 + who is one of the authors of the Linux kernel firewall system called netfilter/iptables + who has started gpl-violations.org to enforce license compliance + who IS NOT A LAWYER + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Disclaimer + +Legal Disclaimer + + All information presented here is provided on an as-is basis + There is no warranty for correctness of legal information + The author is not a lawyer + This does not comprise legal advise + The authors' experience is limited to German copyright law + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Ideas and Goals of the GNU GPL + + Free Software + Software that has fundamental freedoms: + to use it for any purpose + to "help your neighbour" (i.e. make copies) + to study it's functionality (reading source code) + to fix it myself (make modifications and run them) + + Copyleft + Is the legal idea to + exercising copyright to grant the above freedoms + assure that nobody can take away the freedom + + The GNU General Public License + Is a legal instrument to apply they copyleft idea on software + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +The GNU GPL revisited + +Revisiting the GNU General Public License + + Regulates distribution of copyrighted code, not usage + Allows distribution of source code and modified source code + The license itself is mentioned + A copy of the license accompanies every copy + Allows distribution of binaries or modified binaries, if + The license itself is mentioned + A copy of the license accompanies every copy + The complete source code is either included with the copy (alternatively a written offer to send the source code on request to any 3rd party) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Complete Source Code + +%size 3 +"... complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable." + + For standard C-language programs, this means: + Source Code + Makefiles + compile-time Configuration (such as kernel .config) + + General Rule: + Intent of License is to enable user to run modified versions of the program. They need to be enabled to do so. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + What is a derivative work? + Not dependent on any particular kind of technology (static/dynamic linking, dlopen, whatever) + Even while the modification can itself be a copyrightable work, the combination with GPL-licensed code is subject to GPL. + As soon as code is written for a specific non-standard API (such as the iptables plugin API), there is significant indication for a derivative work + This position has been successfully enforced out-of-court with two Vendors so far (iptables modules/plugins). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + Binary-only kernel modules + In-kernel proprietary code (binary kernel modules) are hard to claim GPL compliant + Case-by-case analysis required, as the level of integration into the GPL licensed kernel code depends on particular case + IBM is in the process of getting rid of all binary-only kernel modules. There are exceptions, but they are very clear ones (such as a filesystem port to linux, where the filesystem code already existed under another OS) + There is no general acceptance or tolerance to binary-only kernel modules in the Linux (development) community. Not even Linus himself has ever granted an exception for such modules! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + Glue Code + Acts as glue layer between GPL licensed code and proprietary code + Some Vendors think they can avoid the GPL by doing so + Is definitely not a bullet-proof legal solution, especially when it is clearly visible that the only purpose of this glue code is to "get rid" of the GPL. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Derivative Works + + Moral Issues + Apart from what is legally possible, there are moral issues + Even if in a particular case there is no legal way to claim a binary-only kernel module is a derivative work, you might still be acting against the authors' wishes + By shipping binary-only kernel modules, you violate the "moral code of conduct" of the Free Software community + But it is the work of this very community that enables you to build your product based on Free Software + Such action might have long-term detrimental effects on the motivation of FOSS developers (dissatisfaction, demotivation, ...) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Collective Works + +%size 3 +"... it is not the intent .. to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works ..." + + GPL controls "collective works" + +%size 3 +"... mere aggregation of another work ... with the program on a volume of a storage or distribution medium does not bring the other work und the scope of this license" + + GPL allows "mere aggregation" + like a general-porpose GNU/Linux distribution (SuSE, Red Hat, ...) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +GPL And Embedded Systems + + Historical background: + The GPL was written for userspace programs running on existing operating systems + Covering a whole OS (and even userspace programs) is not an ideal match, but if you read it carefully it still makes sense + + Toolchain: +%size 3 +"... the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major components +(compiler, kernel, and so on) of the operating system on which the executable +runs, unless that component itself accompanies the executable." + Practical case: + You've modified gcc for a specific embedded platform + Therefore, this gcc is not "normally distributed with the operating system" and you have to distribute it together with the source code + gcc itself is covered under GPL, so you need to provide binaries and source code(!) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +GPL And Embedded Systems + + The "Scripts" + (scripts to control compilation and installation, see earlier slide) + In case of embedded hardware, the "scripts" include: + Tools for generating the firmware binary from the source (even if they are technically no 'scripts') + + + Embedded DRM + Intent of License is to enable user to run modified versions of the program. They need to be enabled to do so. + Result: Signing binaries and only accepting signed versions from the bootloader (without providing the signature key or a possibility to set a new key in the bootloader) is not acceptable! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Practical Source Code Offer + + Some Rules + The "complete corresponding source code" has to be made available + It has to be made available for each and every object-code version that was distributed + If you strip down the source code offer (e.g. remove proprietary source code), try to see whether the result actually compiles + If the product is mixed free / proprietary software, consider including the proprietary parts (as object code) in the "source code package", so the full firmware image can be rebuilt without having to tear apart an existing image and ripping out those proprietary programs from there. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +The biggest myths about the GPL + +The biggest myths about the GPL + The GPL is not enforcible + Software licensed under GPL has no copyright + Unmodified distribution does not require source code availability + The vendor can wait for a source code request (without offering it) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +The most common mistakes + +The most common mistakes + not even once reading the GPL text and/or the FAQ from the FSF + not including the GPL license text with the product + not including a written offer with the product + not considering that the GPL also applies to software updates + only providing original source code (e.g. vanilla kernel.org kernel) + not including the "scripts to control installation" + only providing off-site hyperlinks to license and/ore source code + not responding to support requests for source code + charging rediculously high fees for physical shipping of source code + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +License Compatibility + + There's lots of Free Software available + Different Software uses different Licenses: + Linux: GPL + glibc: LGPL + apache: Apache Software License + Perl: Artistic + ucd-snmp: BSD + If you combine (i.e. link) differently-licensed software, + check license compatibility + in case of doubt, ask legal person and/or contact software authors + authors might give you an exception or consider making licenses compatible + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +Dual Licensing + + The copyright holder (often the original author) can provide alternative licensing + Some projects do this as a business model (reiserfs, MySQL) + In some projects it's impossible due to the extremely distributed copyright (e.g. Linux kernel) + However, in smaller projects it never hurts to ask whether there would be interest in providing an alternative (non-copyleft) licensing + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The GNU GPL Revisited +GPL Violations + + When do I violate the license + when one ore more of the obligations are not fulfilled + + What risk do I take if I violate the license? + the GPL automatically revokes any usage right + any copyright holder can obtain a preliminary injunction banning distribution of the infringing product + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +Past GPL enforcement + +Past GPL enforcement + + GPL violations are nothing new, as GPL licensed software is nothing new. + However, the recent GNU/Linux hype made GPL licensed software used more often + The FSF enforces GPL violations of code on which they hold the copyright + silently, without public notice + in lengthy negotiations + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +The Linksys case + + + During 2003 the "Linksys" case drew a lot of attention + Linksys was selling 802.11 WLAN Acces Ponts / Routers + Lots of GPL licensed software embedded in the device (included Linux, uClibc, busybox, iptables, ...) + FSF led alliance took the usual "quiet" approach + Linksys bought itself a lot of time + Some source code was released two months later + About four months later, full GPL compliance was achieved + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +The Linksys case + + Some developers didn't agree with this approach + not enough publicity + violators don't loose anything by first not complying and wait for the FSF + four months delay is too much for low product lifecycles in WLAN world + The netfilter/iptables project started to do their own enforcement in more cases that were coming up + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +Enforcement case timeline + + In chronological order + some user sends us a note he found our code somewhere + reverse engineering of firmware images + test purchase to verify device ships gpl-incompliant + sending the infringing organization a warning notice + wait for them to sign a statement to cease and desist + if no statement is signed + contract technical expert to do a study + apply for a preliminary injunction + if statement was signed + try to work out the details + grace period for boxes in stock possible + try to indicate that a donation would be good PR + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +Sucess so far + + Success so far + amicable agreements with a number (35+) of companies + sdome of which made significant donations to charitable organizations of the free software community + preliminary injunction against Sitecom, Sitecom also lost appeals case + court decision of munich district court in Sitecom appeals case + three more preliminary injunctions + more settled cases (not public yet) + negotiating in more cases + public awareness + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +Cases so far (1/3) + + + Allnet GmbH + Siemens AG + Fujitsu-Siemens Computers GmbH + Axis A.B. + Securepoint GmbH + U.S.Robotics Germany GmbH + Netgear GmbH + Belkin Compnents GmbH + Asus GmbH + Gateprotect GmbH + Sitecom GmbH / B.V. + TomTom B.V. + Gigabyte Technologies GmbH + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +Cases so far (2/3) + + + Sun Deutschland GmbH + Open-E GmbH + Siemens AG (second case) + Deutsche Telekom AG + Hitachi Inc. + Tecom Inc. + ARP Datacon GmbH + Conceptronic B.V. + D-Link GmbH + Adaptec Deutschland GmbH + Belkin Compnents GmbH (second case) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +Cases so far (3/3) + + + Siemens AG (third case) + TARGA GmbH + Medion AG + naviflash GmbH + Maxtor Inc. + Cisco Deutschland GmbH + Fortinet + naviflash GmbH + iRiver Europe GmbH + Cisco Deutschland GmbH (second case) + Acer Deutschland GmbH + SMC Networks GmbH + + >= 100 more not public + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +What we've learned + + + Copyleft-style licenses can be enforced! + A lot of companies don't take Free Software licenses seriously + Even corporations with large legal departments who should know + Reasons unclear, probably the financial risk of infringement was considered less than the expected gains + The FUD spread about "GPL not holding up in court" has disappeared + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +Future GPL Enforcement + + + GPL Enforcement + remains an important issue for Free Software + will start to happen within the court more often + has to be made public in order to raise awareness + will probably happen within some form of organization + talks have started with the FSF Europe + + What about Copylefted Content (Creative Commons) + probably just a matter of time until CC-licensed works of art are infringed + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +Problems of GPL Enforcement + + Problems + distributed copyright + is an important safeguard + can make enforcement difficult, since copyright traditionally doesn't know cases with thousands of copyright holders + distribution of damages extremely difficult + the legal issue of having to do reverse engineering in order to prove copyright infringement(!) + only the copyright holder (in most cases the author) can do it + users discovering GPL'd software need to communicate those issues to all entitled parties (copyright holders) + infringers obfuscating and/or encrypting fres software as disguise + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +gpl-violations.org + + The http://www.gpl-violations.org/ project was started ~ 3 year ago + as a platform wher users can report alleged violations + to verify those violations and inform all copyright holders + to inform the public about ongoing enforcement efforts + + At the moment, project is only backed by the author + more volunteers needed to investigate all cases + something like 270 reported (alleged) violations backlog + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +Make later enforcement easy + + Practical rules for proof by reverse engineering + Don't fix typos in error messages and symbol names + Leave obscure error messages like 'Rusty needs more caffeine' + Make binary contain string of copyright message, not only source + Practical rules for potential damages claims + Use revision control system + Document source of each copyrightable contribution + Name+Email address in CVS commit message + Consider something like FSFE FLA (Fiduciary License Agreement) + Make sure that employers are fine with contributions of their employees + If you find out about violation + Don't make it public (has to be new/urgent for injunctive relief) + Contact lawyer immediately to send wanrning notice + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to (not) use GPL Software +The End + + +%size 3 + Further reading: +%size 3 + The http://gpl-violations.org/ project +%size 3 + The Free Software Foundation http://www.fsf.org/, http://www.fsf-europe.org/ +%size 3 + The GNU Project http://www.gnu.org/ +%size 3 + The netfilter homepage http://www.netfilter.org/ +%% http://management.itmanagersjournal.com/management/04/05/31/1733229.shtml?tid=85&tid=4 + + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/index.html b/2007/gpl-compliance-tw2007/gpl-compliance/index.html new file mode 100644 index 0000000..ddf11a4 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/index.html @@ -0,0 +1,41 @@ + +MagicPoint presentation foils + +Page 1 +Page 2 +Page 3 +Page 4 +Page 5 +Page 6 +Page 7 +Page 8 +Page 9 +Page 10 +Page 11 +Page 12 +Page 13 +Page 14 +Page 15 +Page 16 +Page 17 +Page 18 +Page 19 +Page 20 +Page 21 +Page 22 +Page 23 +Page 24 +Page 25 +Page 26 +Page 27 +Page 28 +Page 29 +Page 30 +Page 31 +Page 32 +Page 33 +Page 34 +
+Generated by MagicPoint +
+ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.html new file mode 100644 index 0000000..dd700f5 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 1: GPL Workshop
+
+Page 1
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.idx.jpg new file mode 100644 index 0000000..d2e6a5c Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.jpg new file mode 100644 index 0000000..59f6b7b Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.txt new file mode 100644 index 0000000..b4dc597 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00001.txt @@ -0,0 +1,13 @@ + + + +GPL Workshop +How to (not?) use Free Software + + +by + +Harald Welte + + + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.html new file mode 100644 index 0000000..5b79023 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 2: How to (not) use GPL Software
+
+Page 2
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.idx.jpg new file mode 100644 index 0000000..b914e77 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.jpg new file mode 100644 index 0000000..691a7e2 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.txt new file mode 100644 index 0000000..b1c2153 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00002.txt @@ -0,0 +1,13 @@ +How to (not) use GPL Software +Contents + +About the speaker +Ideas / Goals of the GPL +How to (not) use GPL Software +Complete Source Code +Derivative Works +Collective Works +GPL and Embedded Systems +The biggest GPL Myths +Thanks + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.html new file mode 100644 index 0000000..f0c161b --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 3: How to (not) use GPL Software
+
+Page 3
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.idx.jpg new file mode 100644 index 0000000..8dfe518 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.jpg new file mode 100644 index 0000000..d01563e Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.txt new file mode 100644 index 0000000..6a57103 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00003.txt @@ -0,0 +1,12 @@ +How to (not) use GPL Software +Introduction + + +Who is speaking to you? + +an independent Free Software developer +who earns his living off Free Software since 1997 +who is one of the authors of the Linux kernel firewall system called netfilter/iptables +who has started gpl-violations.org to enforce license compliance +who IS NOT A LAWYER + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.html new file mode 100644 index 0000000..98b597f --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 4: How to (not) use GPL Software
+
+Page 4
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.idx.jpg new file mode 100644 index 0000000..d10d22b Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.jpg new file mode 100644 index 0000000..ce0b358 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.txt new file mode 100644 index 0000000..5d0b584 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00004.txt @@ -0,0 +1,11 @@ +How to (not) use GPL Software +Disclaimer + +Legal Disclaimer + +All information presented here is provided on an as-is basis +There is no warranty for correctness of legal information +The author is not a lawyer +This does not comprise legal advise +The authors' experience is limited to German copyright law + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.html new file mode 100644 index 0000000..402f46e --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 5: How to (not) use GPL Software
+
+Page 5
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.idx.jpg new file mode 100644 index 0000000..398a434 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.jpg new file mode 100644 index 0000000..abbdde4 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.txt new file mode 100644 index 0000000..7ff2c0a --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00005.txt @@ -0,0 +1,19 @@ +How to (not) use GPL Software +Ideas and Goals of the GNU GPL + +Free Software +Software that has fundamental freedoms: +to use it for any purpose +to "help your neighbour" (i.e. make copies) +to study it's functionality (reading source code) +to fix it myself (make modifications and run them) + +Copyleft +Is the legal idea to +exercising copyright to grant the above freedoms +assure that nobody can take away the freedom + +The GNU General Public License +Is a legal instrument to apply they copyleft idea on software + + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.html new file mode 100644 index 0000000..5aa6714 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 6: How to (not) use GPL Software
+
+Page 6
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.idx.jpg new file mode 100644 index 0000000..226bccf Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.jpg new file mode 100644 index 0000000..9b697a0 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.txt new file mode 100644 index 0000000..75dc73a --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00006.txt @@ -0,0 +1,14 @@ +How to (not) use GPL Software +The GNU GPL revisited + +Revisiting the GNU General Public License + +Regulates distribution of copyrighted code, not usage +Allows distribution of source code and modified source code +The license itself is mentioned +A copy of the license accompanies every copy +Allows distribution of binaries or modified binaries, if +The license itself is mentioned +A copy of the license accompanies every copy +The complete source code is either included with the copy (alternatively a written offer to send the source code on request to any 3rd party) + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.html new file mode 100644 index 0000000..c363f3d --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 7: How to (not) use GPL Software
+
+Page 7
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.idx.jpg new file mode 100644 index 0000000..020d14a Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.jpg new file mode 100644 index 0000000..4c9c8c6 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.txt new file mode 100644 index 0000000..7c531cd --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00007.txt @@ -0,0 +1,14 @@ +How to (not) use GPL Software +Complete Source Code + +"... complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable." + +For standard C-language programs, this means: +Source Code +Makefiles +compile-time Configuration (such as kernel .config) + +General Rule: +Intent of License is to enable user to run modified versions of the program. They need to be enabled to do so. + + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.html new file mode 100644 index 0000000..9cd8a53 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 8: How to (not) use GPL Software
+
+Page 8
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.idx.jpg new file mode 100644 index 0000000..303de1e Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.jpg new file mode 100644 index 0000000..f5c76ed Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.txt new file mode 100644 index 0000000..1e8addb --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00008.txt @@ -0,0 +1,9 @@ +How to (not) use GPL Software +Derivative Works + +What is a derivative work? +Not dependent on any particular kind of technology (static/dynamic linking, dlopen, whatever) +Even while the modification can itself be a copyrightable work, the combination with GPL-licensed code is subject to GPL. +As soon as code is written for a specific non-standard API (such as the iptables plugin API), there is significant indication for a derivative work +This position has been successfully enforced out-of-court with two Vendors so far (iptables modules/plugins). + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.html new file mode 100644 index 0000000..d023e05 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 9: How to (not) use GPL Software
+
+Page 9
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.idx.jpg new file mode 100644 index 0000000..0ea5da6 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.jpg new file mode 100644 index 0000000..52c42ac Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.txt new file mode 100644 index 0000000..db45e6d --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00009.txt @@ -0,0 +1,10 @@ +How to (not) use GPL Software +Derivative Works + +Binary-only kernel modules +In-kernel proprietary code (binary kernel modules) are hard to claim GPL compliant +Case-by-case analysis required, as the level of integration into the GPL licensed kernel code depends on particular case +IBM is in the process of getting rid of all binary-only kernel modules. There are exceptions, but they are very clear ones (such as a filesystem port to linux, where the filesystem code already existed under another OS) +There is no general acceptance or tolerance to binary-only kernel modules in the Linux (development) community. Not even Linus himself has ever granted an exception for such modules! + + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.html new file mode 100644 index 0000000..3cba3dc --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 10: How to (not) use GPL Software
+
+Page 10
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.idx.jpg new file mode 100644 index 0000000..f021749 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.jpg new file mode 100644 index 0000000..a30e78c Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.txt new file mode 100644 index 0000000..2e3e137 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00010.txt @@ -0,0 +1,8 @@ +How to (not) use GPL Software +Derivative Works + +Glue Code +Acts as glue layer between GPL licensed code and proprietary code +Some Vendors think they can avoid the GPL by doing so +Is definitely not a bullet-proof legal solution, especially when it is clearly visible that the only purpose of this glue code is to "get rid" of the GPL. + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.html new file mode 100644 index 0000000..7eb1a3b --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 11: How to (not) use GPL Software
+
+Page 11
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.idx.jpg new file mode 100644 index 0000000..e32b809 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.jpg new file mode 100644 index 0000000..2b4412b Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.txt new file mode 100644 index 0000000..7e9e81d --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00011.txt @@ -0,0 +1,10 @@ +How to (not) use GPL Software +Derivative Works + +Moral Issues +Apart from what is legally possible, there are moral issues +Even if in a particular case there is no legal way to claim a binary-only kernel module is a derivative work, you might still be acting against the authors' wishes +By shipping binary-only kernel modules, you violate the "moral code of conduct" of the Free Software community +But it is the work of this very community that enables you to build your product based on Free Software +Such action might have long-term detrimental effects on the motivation of FOSS developers (dissatisfaction, demotivation, ...) + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.html new file mode 100644 index 0000000..523d6c9 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 12: How to (not) use GPL Software
+
+Page 12
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.idx.jpg new file mode 100644 index 0000000..c978862 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.jpg new file mode 100644 index 0000000..7dc3bdb Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.txt new file mode 100644 index 0000000..297e655 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00012.txt @@ -0,0 +1,13 @@ +How to (not) use GPL Software +Collective Works + +"... it is not the intent .. to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works ..." + +GPL controls "collective works" + +"... mere aggregation of another work ... with the program on a volume of a storage or distribution medium does not bring the other work und the scope of this license" + +GPL allows "mere aggregation" +like a general-porpose GNU/Linux distribution (SuSE, Red Hat, ...) + + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.html new file mode 100644 index 0000000..b93b371 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 13: How to (not) use GPL Software
+
+Page 13
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.idx.jpg new file mode 100644 index 0000000..c6e50c8 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.jpg new file mode 100644 index 0000000..8b53cc1 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.txt new file mode 100644 index 0000000..a21006e --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00013.txt @@ -0,0 +1,18 @@ +How to (not) use GPL Software +GPL And Embedded Systems + +Historical background: +The GPL was written for userspace programs running on existing operating systems +Covering a whole OS (and even userspace programs) is not an ideal match, but if you read it carefully it still makes sense + +Toolchain: +"... the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major components +(compiler, kernel, and so on) of the operating system on which the executable +runs, unless that component itself accompanies the executable." +Practical case: +You've modified gcc for a specific embedded platform +Therefore, this gcc is not "normally distributed with the operating system" and you have to distribute it together with the source code +gcc itself is covered under GPL, so you need to provide binaries and source code(!) + + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.html new file mode 100644 index 0000000..ef4280d --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 14: How to (not) use GPL Software
+
+Page 14
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.idx.jpg new file mode 100644 index 0000000..4a6ebfc Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.jpg new file mode 100644 index 0000000..e9f00ab Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.txt new file mode 100644 index 0000000..3d6e4b1 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00014.txt @@ -0,0 +1,14 @@ +How to (not) use GPL Software +GPL And Embedded Systems + +The "Scripts" +(scripts to control compilation and installation, see earlier slide) +In case of embedded hardware, the "scripts" include: +Tools for generating the firmware binary from the source (even if they are technically no 'scripts') + + +Embedded DRM +Intent of License is to enable user to run modified versions of the program. They need to be enabled to do so. +Result: Signing binaries and only accepting signed versions from the bootloader (without providing the signature key or a possibility to set a new key in the bootloader) is not acceptable! + + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.html new file mode 100644 index 0000000..1098b56 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 15: How to (not) use GPL Software
+
+Page 15
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.idx.jpg new file mode 100644 index 0000000..2f19180 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.jpg new file mode 100644 index 0000000..071a9e1 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.txt new file mode 100644 index 0000000..dfe6a83 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00015.txt @@ -0,0 +1,10 @@ +How to (not) use GPL Software +Practical Source Code Offer + +Some Rules +The "complete corresponding source code" has to be made available +It has to be made available for each and every object-code version that was distributed +If you strip down the source code offer (e.g. remove proprietary source code), try to see whether the result actually compiles +If the product is mixed free / proprietary software, consider including the proprietary parts (as object code) in the "source code package", so the full firmware image can be rebuilt without having to tear apart an existing image and ripping out those proprietary programs from there. + + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.html new file mode 100644 index 0000000..ce7571b --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 16: How to (not) use GPL Software
+
+Page 16
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.idx.jpg new file mode 100644 index 0000000..15c0885 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.jpg new file mode 100644 index 0000000..93d0212 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.txt new file mode 100644 index 0000000..9f111e3 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00016.txt @@ -0,0 +1,9 @@ +How to (not) use GPL Software +The biggest myths about the GPL + +The biggest myths about the GPL +The GPL is not enforcible +Software licensed under GPL has no copyright +Unmodified distribution does not require source code availability +The vendor can wait for a source code request (without offering it) + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.html new file mode 100644 index 0000000..402ceb5 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 17: How to (not) use GPL Software
+
+Page 17
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.idx.jpg new file mode 100644 index 0000000..c10535f Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.jpg new file mode 100644 index 0000000..ab19436 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.txt new file mode 100644 index 0000000..272f416 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00017.txt @@ -0,0 +1,14 @@ +How to (not) use GPL Software +The most common mistakes + +The most common mistakes +not even once reading the GPL text and/or the FAQ from the FSF +not including the GPL license text with the product +not including a written offer with the product +not considering that the GPL also applies to software updates +only providing original source code (e.g. vanilla kernel.org kernel) +not including the "scripts to control installation" +only providing off-site hyperlinks to license and/ore source code +not responding to support requests for source code +charging rediculously high fees for physical shipping of source code + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.html new file mode 100644 index 0000000..897033e --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 18: How to (not) use GPL Software
+
+Page 18
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.idx.jpg new file mode 100644 index 0000000..6344f17 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.jpg new file mode 100644 index 0000000..a4377fd Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.txt new file mode 100644 index 0000000..5d64781 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00018.txt @@ -0,0 +1,16 @@ +How to (not) use GPL Software +License Compatibility + +There's lots of Free Software available +Different Software uses different Licenses: +Linux: GPL +glibc: LGPL +apache: Apache Software License +Perl: Artistic +ucd-snmp: BSD +If you combine (i.e. link) differently-licensed software, +check license compatibility +in case of doubt, ask legal person and/or contact software authors +authors might give you an exception or consider making licenses compatible + + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.html new file mode 100644 index 0000000..2a94391 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 19: How to (not) use GPL Software
+
+Page 19
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.idx.jpg new file mode 100644 index 0000000..fb9973b Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.jpg new file mode 100644 index 0000000..51bbdb1 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.txt new file mode 100644 index 0000000..98e06c0 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00019.txt @@ -0,0 +1,8 @@ +How to (not) use GPL Software +Dual Licensing + +The copyright holder (often the original author) can provide alternative licensing +Some projects do this as a business model (reiserfs, MySQL) +In some projects it's impossible due to the extremely distributed copyright (e.g. Linux kernel) +However, in smaller projects it never hurts to ask whether there would be interest in providing an alternative (non-copyleft) licensing + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.html new file mode 100644 index 0000000..a1a3695 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 20: The GNU GPL Revisited
+
+Page 20
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.idx.jpg new file mode 100644 index 0000000..be55a97 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.jpg new file mode 100644 index 0000000..700c105 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.txt new file mode 100644 index 0000000..00abbb7 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00020.txt @@ -0,0 +1,10 @@ +The GNU GPL Revisited +GPL Violations + +When do I violate the license +when one ore more of the obligations are not fulfilled + +What risk do I take if I violate the license? +the GPL automatically revokes any usage right +any copyright holder can obtain a preliminary injunction banning distribution of the infringing product + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.html new file mode 100644 index 0000000..65ac91b --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 21: GNU GPL - Copyright helps Copyleft
+
+Page 21
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.idx.jpg new file mode 100644 index 0000000..7c9cd79 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.jpg new file mode 100644 index 0000000..b50d814 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.txt new file mode 100644 index 0000000..a31cf50 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00021.txt @@ -0,0 +1,11 @@ +GNU GPL - Copyright helps Copyleft +Past GPL enforcement + +Past GPL enforcement + +GPL violations are nothing new, as GPL licensed software is nothing new. +However, the recent GNU/Linux hype made GPL licensed software used more often +The FSF enforces GPL violations of code on which they hold the copyright +silently, without public notice +in lengthy negotiations + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.html new file mode 100644 index 0000000..0379577 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 22: GNU GPL - Copyright helps Copyleft
+
+Page 22
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.idx.jpg new file mode 100644 index 0000000..8cb803e Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.jpg new file mode 100644 index 0000000..856a81b Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.txt new file mode 100644 index 0000000..0a5155d --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00022.txt @@ -0,0 +1,12 @@ +GNU GPL - Copyright helps Copyleft +The Linksys case + + +During 2003 the "Linksys" case drew a lot of attention +Linksys was selling 802.11 WLAN Acces Ponts / Routers +Lots of GPL licensed software embedded in the device (included Linux, uClibc, busybox, iptables, ...) +FSF led alliance took the usual "quiet" approach +Linksys bought itself a lot of time +Some source code was released two months later +About four months later, full GPL compliance was achieved + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.html new file mode 100644 index 0000000..15ff065 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 23: GNU GPL - Copyright helps Copyleft
+
+Page 23
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.idx.jpg new file mode 100644 index 0000000..d9615a7 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.jpg new file mode 100644 index 0000000..c578809 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.txt new file mode 100644 index 0000000..1a7af70 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00023.txt @@ -0,0 +1,9 @@ +GNU GPL - Copyright helps Copyleft +The Linksys case + +Some developers didn't agree with this approach +not enough publicity +violators don't loose anything by first not complying and wait for the FSF +four months delay is too much for low product lifecycles in WLAN world +The netfilter/iptables project started to do their own enforcement in more cases that were coming up + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.html new file mode 100644 index 0000000..4bada66 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 24: GNU GPL - Copyright helps Copyleft
+
+Page 24
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.idx.jpg new file mode 100644 index 0000000..47f9d08 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.jpg new file mode 100644 index 0000000..44d829b Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.txt new file mode 100644 index 0000000..f1870f4 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00024.txt @@ -0,0 +1,17 @@ +GNU GPL - Copyright helps Copyleft +Enforcement case timeline + +In chronological order +some user sends us a note he found our code somewhere +reverse engineering of firmware images +test purchase to verify device ships gpl-incompliant +sending the infringing organization a warning notice +wait for them to sign a statement to cease and desist +if no statement is signed +contract technical expert to do a study +apply for a preliminary injunction +if statement was signed +try to work out the details +grace period for boxes in stock possible +try to indicate that a donation would be good PR + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.html new file mode 100644 index 0000000..a74f0e2 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 25: GNU GPL - Copyright helps Copyleft
+
+Page 25
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.idx.jpg new file mode 100644 index 0000000..9b85787 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.jpg new file mode 100644 index 0000000..2495c5f Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.txt new file mode 100644 index 0000000..c6c87f3 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00025.txt @@ -0,0 +1,13 @@ +GNU GPL - Copyright helps Copyleft +Sucess so far + +Success so far +amicable agreements with a number (35+) of companies +sdome of which made significant donations to charitable organizations of the free software community +preliminary injunction against Sitecom, Sitecom also lost appeals case +court decision of munich district court in Sitecom appeals case +three more preliminary injunctions +more settled cases (not public yet) +negotiating in more cases +public awareness + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.html new file mode 100644 index 0000000..6d75f51 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 26: GNU GPL - Copyright helps Copyleft
+
+Page 26
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.idx.jpg new file mode 100644 index 0000000..e5c7be6 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.jpg new file mode 100644 index 0000000..6d75904 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.txt new file mode 100644 index 0000000..4ccfbea --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00026.txt @@ -0,0 +1,18 @@ +GNU GPL - Copyright helps Copyleft +Cases so far (1/3) + + +Allnet GmbH +Siemens AG +Fujitsu-Siemens Computers GmbH +Axis A.B. +Securepoint GmbH +U.S.Robotics Germany GmbH +Netgear GmbH +Belkin Compnents GmbH +Asus GmbH +Gateprotect GmbH +Sitecom GmbH / B.V. +TomTom B.V. +Gigabyte Technologies GmbH + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.html new file mode 100644 index 0000000..b8dc43a --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 27: GNU GPL - Copyright helps Copyleft
+
+Page 27
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.idx.jpg new file mode 100644 index 0000000..e464d14 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.jpg new file mode 100644 index 0000000..e05c196 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.txt new file mode 100644 index 0000000..c1ae3c1 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00027.txt @@ -0,0 +1,16 @@ +GNU GPL - Copyright helps Copyleft +Cases so far (2/3) + + +Sun Deutschland GmbH +Open-E GmbH +Siemens AG (second case) +Deutsche Telekom AG +Hitachi Inc. +Tecom Inc. +ARP Datacon GmbH +Conceptronic B.V. +D-Link GmbH +Adaptec Deutschland GmbH +Belkin Compnents GmbH (second case) + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.html new file mode 100644 index 0000000..6a3fd69 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 28: GNU GPL - Copyright helps Copyleft
+
+Page 28
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.idx.jpg new file mode 100644 index 0000000..b662e38 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.jpg new file mode 100644 index 0000000..0aba619 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.txt new file mode 100644 index 0000000..9a118c7 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00028.txt @@ -0,0 +1,20 @@ +GNU GPL - Copyright helps Copyleft +Cases so far (3/3) + + +Siemens AG (third case) +TARGA GmbH +Medion AG +naviflash GmbH +Maxtor Inc. +Cisco Deutschland GmbH +Fortinet +naviflash GmbH +iRiver Europe GmbH +Cisco Deutschland GmbH (second case) +Acer Deutschland GmbH +SMC Networks GmbH + +>= 100 more not public + + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.html new file mode 100644 index 0000000..0d8f10c --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 29: GNU GPL - Copyright helps Copyleft
+
+Page 29
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.idx.jpg new file mode 100644 index 0000000..0c7a8e1 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.jpg new file mode 100644 index 0000000..f9ce2d4 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.txt new file mode 100644 index 0000000..008ff90 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00029.txt @@ -0,0 +1,12 @@ +GNU GPL - Copyright helps Copyleft +What we've learned + + +Copyleft-style licenses can be enforced! +A lot of companies don't take Free Software licenses seriously +Even corporations with large legal departments who should know +Reasons unclear, probably the financial risk of infringement was considered less than the expected gains +The FUD spread about "GPL not holding up in court" has disappeared + + + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.html new file mode 100644 index 0000000..1544a29 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 30: GNU GPL - Copyright helps Copyleft
+
+Page 30
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.idx.jpg new file mode 100644 index 0000000..8d2822c Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.jpg new file mode 100644 index 0000000..f23c863 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.txt new file mode 100644 index 0000000..d23a15d --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00030.txt @@ -0,0 +1,14 @@ +GNU GPL - Copyright helps Copyleft +Future GPL Enforcement + + +GPL Enforcement +remains an important issue for Free Software +will start to happen within the court more often +has to be made public in order to raise awareness +will probably happen within some form of organization +talks have started with the FSF Europe + +What about Copylefted Content (Creative Commons) +probably just a matter of time until CC-licensed works of art are infringed + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.html new file mode 100644 index 0000000..cc26bf0 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 31: GNU GPL - Copyright helps Copyleft
+
+Page 31
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.idx.jpg new file mode 100644 index 0000000..af9782c Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.jpg new file mode 100644 index 0000000..376a27a Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.txt new file mode 100644 index 0000000..a51b88f --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00031.txt @@ -0,0 +1,13 @@ +GNU GPL - Copyright helps Copyleft +Problems of GPL Enforcement + +Problems +distributed copyright +is an important safeguard +can make enforcement difficult, since copyright traditionally doesn't know cases with thousands of copyright holders +distribution of damages extremely difficult +the legal issue of having to do reverse engineering in order to prove copyright infringement(!) +only the copyright holder (in most cases the author) can do it +users discovering GPL'd software need to communicate those issues to all entitled parties (copyright holders) +infringers obfuscating and/or encrypting fres software as disguise + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.html new file mode 100644 index 0000000..ea45c2d --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 32: GNU GPL - Copyright helps Copyleft
+
+Page 32
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.idx.jpg new file mode 100644 index 0000000..1422639 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.jpg new file mode 100644 index 0000000..57c1758 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.txt new file mode 100644 index 0000000..c9af8f4 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00032.txt @@ -0,0 +1,12 @@ +GNU GPL - Copyright helps Copyleft +gpl-violations.org + +The http://www.gpl-violations.org/ project was started ~ 3 year ago +as a platform wher users can report alleged violations +to verify those violations and inform all copyright holders +to inform the public about ongoing enforcement efforts + +At the moment, project is only backed by the author +more volunteers needed to investigate all cases +something like 270 reported (alleged) violations backlog + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.html new file mode 100644 index 0000000..c3b945b --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 33: GNU GPL - Copyright helps Copyleft
+
+Page 33
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.idx.jpg new file mode 100644 index 0000000..466d3b8 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.jpg new file mode 100644 index 0000000..1490b68 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.txt new file mode 100644 index 0000000..0535f89 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00033.txt @@ -0,0 +1,18 @@ +GNU GPL - Copyright helps Copyleft +Make later enforcement easy + +Practical rules for proof by reverse engineering +Don't fix typos in error messages and symbol names +Leave obscure error messages like 'Rusty needs more caffeine' +Make binary contain string of copyright message, not only source +Practical rules for potential damages claims +Use revision control system +Document source of each copyrightable contribution +Name+Email address in CVS commit message +Consider something like FSFE FLA (Fiduciary License Agreement) +Make sure that employers are fine with contributions of their employees +If you find out about violation +Don't make it public (has to be new/urgent for injunctive relief) +Contact lawyer immediately to send wanrning notice + + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.html b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.html new file mode 100644 index 0000000..53bec07 --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 34: How to (not) use GPL Software
+
+Page 34
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.idx.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.idx.jpg new file mode 100644 index 0000000..75f0f11 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.jpg b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.jpg new file mode 100644 index 0000000..5f03da8 Binary files /dev/null and b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.jpg differ diff --git a/2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.txt b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.txt new file mode 100644 index 0000000..38c35aa --- /dev/null +++ b/2007/gpl-compliance-tw2007/gpl-compliance/mgp00034.txt @@ -0,0 +1,11 @@ +How to (not) use GPL Software +The End + + +Further reading: +The http://gpl-violations.org/ project +The Free Software Foundation http://www.fsf.org/, http://www.fsf-europe.org/ +The GNU Project http://www.gnu.org/ +The netfilter homepage http://www.netfilter.org/ + + diff --git a/2007/gpl-compliance-tw2007/interact-community.mgp b/2007/gpl-compliance-tw2007/interact-community.mgp new file mode 100644 index 0000000..5d89222 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community.mgp @@ -0,0 +1,270 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + + +How to interact with the +Free Software Community + + +%center +%size 4 +by + +Harald Welte + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Contents + + Introduction + What is Free Software? + What is the FOSS Community? + People / Groups involved + Development Process + Motivations + FOSS likes + FOSS disliks + Weak Points + Practical Rules + Thanks + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Introduction + +Who is speaking to you? + + an independent Free Software developer, consultant and trainer + who is a member of the free software community for 10 years + who has a background in both the community and the corporate crowd + who will therefore not have fancy animated slides ;) + +Why is he speaking to you? + + because every working day he suffers the lack of understanding between the community and the business world + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +What is the FOSS Community? + + Diverse + any individual can contribute + no formal membership required + every project has it's own culture, rules, ... + International + the internet boosted FOSS development + very common to have developers from all continents closely working together + Evolutionary + developers come and go, as their time permits + projects evolve over time, based on individual contributions + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +People / Groups involved + + Really depends on size of projects + Small projects often a one-man show + Bigger project have groups / subgroups + Common Terms / Definitions + Maintainer + The person who formally maintains a project + Core Team / Steering Committee + A group of skilled developers who make important decisions + Subsystem Maintainer + Somebody who is responsible for a particular sub-project + Developer Community + All developers involved with a project + User Community + Users of the software who often share their experience with others + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Development Process + + "Rough concensus and running code" + Decisions made by technically most skilled people + Reputaion based hierarchy + Direct Communication between developers + Not driven by size of a target market + Release early, release often + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Motivations + + gaining reputation (like in the scientific community) + gaining development experience with real-world software + solving problems that the author encounters on his computer + fighting for free software as ideology + work in creative environment with skilled people and no managers ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +FOSS Community likes + + generic solutions + portable code + vendor-independent architecture + clean code (coding style!) + open standards + good technical documentation + raw hardware, no bundle of hardware and software sold as solution + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +FOSS Community dislikes + + monopolistic structures + e.g. intel-centrism + closed 'industry forums' with rediculous fees + e.g. Infiniband, SD Card Association + standard documents that cost rediculous fees + NDA's, if they prevent development of FOSS + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Weak Ponts of FOSS + + often way behind schedule (if there is any) + already too late when projects start + started when there already is a real need + often a lack of (good) documentation + programmers write code, not enduser docs... + strong in infrastructure, weak in applications + traditionally developers interested in very technical stuff + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 1. Much more communication + It's not a consumer/producer model, but cooperative! + Before you start implementation, talk to project maintainers + It's likely that someone has tried a similar thing before + It's likely that project maintainers have already an idea how to proceed with implementation + Avoid later hazzles when you want your code merged upstream + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 2. Interfaces + If there is a standard interface, use it + Don't invent new interfaces, try to extend existing ones + If there is an existing interface in a later (e.g. development) release upstream, backport that interface + Don't be afraid to touch API's if they're inefficient + Remember, you have the source and _can_ change them + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 3. Merge your code upstream + Initially you basically create a fork + Development of upstream project continues sometimes at high speed + If you keep it out of tree for too long time, conflicts arise + Submissions might get rejected in the first round + Cleanups needed, in coordination with upstream project + Code will eventually get merged + No further maintainance needed for synchronization between your contribution and the ongoing upstream development + Don't be surprised if your code won't be accepted if you didn't discuss it with maintainers upfront and they don't like your implementation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 4. Write portable code + don't assume you're on 32bit cpu + don't assume you're on little endian + if you use assembly optimized code, put it in a plugin + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 5. Write clean code + as opposed to closed-source software, people actually read it + it will be noticed if coding style is bad + lots of projects have official CodingStyle rules + if you comment, do it only in english! + don't clutter hardware/product specific hacks over common code + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 6. Binary-only software will not be accepted + yes, there are corner cases like FTC regulation on softradios + but as a general rule of thumb, the community will not consider object code as a solution to any problem + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 7. Avoid fancy business models + If you ship the same hardware with two different drivers (half featured and full-featured), any free software will likely make full features available on that hardware. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 8. Show your support for the Community + By visibly contributing to the project + discussions + code + equipment + By funding developer meetings + By making cheap hardware offers to developers + By contracting / sponsoring / hiring developers from the community + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +Thanks + + Thanks to + Alan Cox, Alexey Kuznetsov, David Miller, Andi Kleen + for implementing (one of?) the world's best TCP/IP stacks + Paul 'Rusty' Russell + for starting the netfilter/iptables project + for trusting me to maintain it today + Astaro AG + for sponsoring parts of my netfilter work + Free Software Foundation + for the GNU Project + for the GNU General Public License + +%size 3 + The slides of this presentation are available at http://www.gnumonks.org/ + + diff --git a/2007/gpl-compliance-tw2007/interact-community/index.html b/2007/gpl-compliance-tw2007/interact-community/index.html new file mode 100644 index 0000000..39fcf1c --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/index.html @@ -0,0 +1,26 @@ + +MagicPoint presentation foils + +Page 1 +Page 2 +Page 3 +Page 4 +Page 5 +Page 6 +Page 7 +Page 8 +Page 9 +Page 10 +Page 11 +Page 12 +Page 13 +Page 14 +Page 15 +Page 16 +Page 17 +Page 18 +Page 19 +
+Generated by MagicPoint +
+ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00001.html b/2007/gpl-compliance-tw2007/interact-community/mgp00001.html new file mode 100644 index 0000000..88e58c9 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00001.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 1: How to interact with the
+
+Page 1
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00001.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00001.idx.jpg new file mode 100644 index 0000000..421300b Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00001.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00001.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00001.jpg new file mode 100644 index 0000000..28fd823 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00001.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00001.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00001.txt new file mode 100644 index 0000000..abd25d7 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00001.txt @@ -0,0 +1,12 @@ + + + +How to interact with the +Free Software Community + + +by + +Harald Welte + + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00002.html b/2007/gpl-compliance-tw2007/interact-community/mgp00002.html new file mode 100644 index 0000000..a1b0145 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00002.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 2: How to interact with the Free Software Community
+
+Page 2
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00002.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00002.idx.jpg new file mode 100644 index 0000000..0165260 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00002.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00002.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00002.jpg new file mode 100644 index 0000000..a0294cc Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00002.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00002.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00002.txt new file mode 100644 index 0000000..fc7e545 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00002.txt @@ -0,0 +1,15 @@ +How to interact with the Free Software Community +Contents + +Introduction +What is Free Software? +What is the FOSS Community? +People / Groups involved +Development Process +Motivations +FOSS likes +FOSS disliks +Weak Points +Practical Rules +Thanks + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00003.html b/2007/gpl-compliance-tw2007/interact-community/mgp00003.html new file mode 100644 index 0000000..9ee2474 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00003.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 3: How to interact with the Free Software Community
+
+Page 3
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00003.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00003.idx.jpg new file mode 100644 index 0000000..a6d7107 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00003.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00003.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00003.jpg new file mode 100644 index 0000000..4408c6e Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00003.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00003.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00003.txt new file mode 100644 index 0000000..e5e1642 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00003.txt @@ -0,0 +1,14 @@ +How to interact with the Free Software Community +Introduction + +Who is speaking to you? + +an independent Free Software developer, consultant and trainer +who is a member of the free software community for 10 years +who has a background in both the community and the corporate crowd +who will therefore not have fancy animated slides ;) + +Why is he speaking to you? + +because every working day he suffers the lack of understanding between the community and the business world + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00004.html b/2007/gpl-compliance-tw2007/interact-community/mgp00004.html new file mode 100644 index 0000000..f696553 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00004.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 4: How to interact with the Free Software Community
+
+Page 4
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00004.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00004.idx.jpg new file mode 100644 index 0000000..efb5a6e Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00004.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00004.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00004.jpg new file mode 100644 index 0000000..66e19d9 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00004.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00004.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00004.txt new file mode 100644 index 0000000..02bb235 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00004.txt @@ -0,0 +1,14 @@ +How to interact with the Free Software Community +What is the FOSS Community? + +Diverse +any individual can contribute +no formal membership required +every project has it's own culture, rules, ... +International +the internet boosted FOSS development +very common to have developers from all continents closely working together +Evolutionary +developers come and go, as their time permits +projects evolve over time, based on individual contributions + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00005.html b/2007/gpl-compliance-tw2007/interact-community/mgp00005.html new file mode 100644 index 0000000..f0732b6 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00005.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 5: How to interact with the Free Software Community
+
+Page 5
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00005.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00005.idx.jpg new file mode 100644 index 0000000..1fa434b Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00005.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00005.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00005.jpg new file mode 100644 index 0000000..11572a7 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00005.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00005.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00005.txt new file mode 100644 index 0000000..dcf400e --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00005.txt @@ -0,0 +1,19 @@ +How to interact with the Free Software Community +People / Groups involved + +Really depends on size of projects +Small projects often a one-man show +Bigger project have groups / subgroups +Common Terms / Definitions +Maintainer +The person who formally maintains a project +Core Team / Steering Committee +A group of skilled developers who make important decisions +Subsystem Maintainer +Somebody who is responsible for a particular sub-project +Developer Community +All developers involved with a project +User Community +Users of the software who often share their experience with others + + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00006.html b/2007/gpl-compliance-tw2007/interact-community/mgp00006.html new file mode 100644 index 0000000..77999a5 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00006.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 6: How to interact with the Free Software Community
+
+Page 6
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00006.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00006.idx.jpg new file mode 100644 index 0000000..81a025d Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00006.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00006.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00006.jpg new file mode 100644 index 0000000..7020ccb Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00006.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00006.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00006.txt new file mode 100644 index 0000000..c9a9e7f --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00006.txt @@ -0,0 +1,11 @@ +How to interact with the Free Software Community +Development Process + +"Rough concensus and running code" +Decisions made by technically most skilled people +Reputaion based hierarchy +Direct Communication between developers +Not driven by size of a target market +Release early, release often + + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00007.html b/2007/gpl-compliance-tw2007/interact-community/mgp00007.html new file mode 100644 index 0000000..1db3b7b --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00007.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 7: How to interact with the Free Software Community
+
+Page 7
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00007.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00007.idx.jpg new file mode 100644 index 0000000..b3735b7 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00007.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00007.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00007.jpg new file mode 100644 index 0000000..9146369 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00007.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00007.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00007.txt new file mode 100644 index 0000000..85dc29f --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00007.txt @@ -0,0 +1,9 @@ +How to interact with the Free Software Community +Motivations + +gaining reputation (like in the scientific community) +gaining development experience with real-world software +solving problems that the author encounters on his computer +fighting for free software as ideology +work in creative environment with skilled people and no managers ;) + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00008.html b/2007/gpl-compliance-tw2007/interact-community/mgp00008.html new file mode 100644 index 0000000..9280a0c --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00008.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 8: How to interact with the Free Software Community
+
+Page 8
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00008.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00008.idx.jpg new file mode 100644 index 0000000..fdb6025 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00008.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00008.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00008.jpg new file mode 100644 index 0000000..ee1568e Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00008.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00008.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00008.txt new file mode 100644 index 0000000..31810fe --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00008.txt @@ -0,0 +1,11 @@ +How to interact with the Free Software Community +FOSS Community likes + +generic solutions +portable code +vendor-independent architecture +clean code (coding style!) +open standards +good technical documentation +raw hardware, no bundle of hardware and software sold as solution + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00009.html b/2007/gpl-compliance-tw2007/interact-community/mgp00009.html new file mode 100644 index 0000000..c1a6939 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00009.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 9: How to interact with the Free Software Community
+
+Page 9
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00009.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00009.idx.jpg new file mode 100644 index 0000000..ef6d167 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00009.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00009.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00009.jpg new file mode 100644 index 0000000..879d095 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00009.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00009.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00009.txt new file mode 100644 index 0000000..2eeeb4b --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00009.txt @@ -0,0 +1,11 @@ +How to interact with the Free Software Community +FOSS Community dislikes + +monopolistic structures +e.g. intel-centrism +closed 'industry forums' with rediculous fees +e.g. Infiniband, SD Card Association +standard documents that cost rediculous fees +NDA's, if they prevent development of FOSS + + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00010.html b/2007/gpl-compliance-tw2007/interact-community/mgp00010.html new file mode 100644 index 0000000..9e63e42 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00010.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 10: How to interact with the Free Software Community
+
+Page 10
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00010.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00010.idx.jpg new file mode 100644 index 0000000..0c029a6 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00010.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00010.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00010.jpg new file mode 100644 index 0000000..f03d5e3 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00010.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00010.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00010.txt new file mode 100644 index 0000000..8a34b90 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00010.txt @@ -0,0 +1,12 @@ +How to interact with the Free Software Community +Weak Ponts of FOSS + +often way behind schedule (if there is any) +already too late when projects start +started when there already is a real need +often a lack of (good) documentation +programmers write code, not enduser docs... +strong in infrastructure, weak in applications +traditionally developers interested in very technical stuff + + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00011.html b/2007/gpl-compliance-tw2007/interact-community/mgp00011.html new file mode 100644 index 0000000..1c625ad --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00011.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 11: How to interact with the Free Software Community
+
+Page 11
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00011.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00011.idx.jpg new file mode 100644 index 0000000..dd47bad Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00011.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00011.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00011.jpg new file mode 100644 index 0000000..c71ab02 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00011.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00011.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00011.txt new file mode 100644 index 0000000..2cb3c8c --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00011.txt @@ -0,0 +1,10 @@ +How to interact with the Free Software Community +Practical Rules + +1. Much more communication +It's not a consumer/producer model, but cooperative! +Before you start implementation, talk to project maintainers +It's likely that someone has tried a similar thing before +It's likely that project maintainers have already an idea how to proceed with implementation +Avoid later hazzles when you want your code merged upstream + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00012.html b/2007/gpl-compliance-tw2007/interact-community/mgp00012.html new file mode 100644 index 0000000..5552945 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00012.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 12: How to interact with the Free Software Community
+
+Page 12
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00012.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00012.idx.jpg new file mode 100644 index 0000000..dd73ea0 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00012.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00012.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00012.jpg new file mode 100644 index 0000000..957841c Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00012.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00012.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00012.txt new file mode 100644 index 0000000..7a1c8b3 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00012.txt @@ -0,0 +1,10 @@ +How to interact with the Free Software Community +Practical Rules + +2. Interfaces +If there is a standard interface, use it +Don't invent new interfaces, try to extend existing ones +If there is an existing interface in a later (e.g. development) release upstream, backport that interface +Don't be afraid to touch API's if they're inefficient +Remember, you have the source and _can_ change them + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00013.html b/2007/gpl-compliance-tw2007/interact-community/mgp00013.html new file mode 100644 index 0000000..8328129 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00013.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 13: How to interact with the Free Software Community
+
+Page 13
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00013.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00013.idx.jpg new file mode 100644 index 0000000..dd2532a Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00013.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00013.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00013.jpg new file mode 100644 index 0000000..702a3fd Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00013.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00013.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00013.txt new file mode 100644 index 0000000..0ae7c97 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00013.txt @@ -0,0 +1,13 @@ +How to interact with the Free Software Community +Practical Rules + +3. Merge your code upstream +Initially you basically create a fork +Development of upstream project continues sometimes at high speed +If you keep it out of tree for too long time, conflicts arise +Submissions might get rejected in the first round +Cleanups needed, in coordination with upstream project +Code will eventually get merged +No further maintainance needed for synchronization between your contribution and the ongoing upstream development +Don't be surprised if your code won't be accepted if you didn't discuss it with maintainers upfront and they don't like your implementation + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00014.html b/2007/gpl-compliance-tw2007/interact-community/mgp00014.html new file mode 100644 index 0000000..2965222 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00014.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 14: How to interact with the Free Software Community
+
+Page 14
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00014.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00014.idx.jpg new file mode 100644 index 0000000..03f6bd0 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00014.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00014.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00014.jpg new file mode 100644 index 0000000..1ed5eb5 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00014.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00014.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00014.txt new file mode 100644 index 0000000..d0f470b --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00014.txt @@ -0,0 +1,8 @@ +How to interact with the Free Software Community +Practical Rules + +4. Write portable code +don't assume you're on 32bit cpu +don't assume you're on little endian +if you use assembly optimized code, put it in a plugin + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00015.html b/2007/gpl-compliance-tw2007/interact-community/mgp00015.html new file mode 100644 index 0000000..71b5662 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00015.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 15: How to interact with the Free Software Community
+
+Page 15
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00015.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00015.idx.jpg new file mode 100644 index 0000000..e10d1df Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00015.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00015.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00015.jpg new file mode 100644 index 0000000..150cf3a Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00015.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00015.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00015.txt new file mode 100644 index 0000000..dbe8868 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00015.txt @@ -0,0 +1,10 @@ +How to interact with the Free Software Community +Practical Rules + +5. Write clean code +as opposed to closed-source software, people actually read it +it will be noticed if coding style is bad +lots of projects have official CodingStyle rules +if you comment, do it only in english! +don't clutter hardware/product specific hacks over common code + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00016.html b/2007/gpl-compliance-tw2007/interact-community/mgp00016.html new file mode 100644 index 0000000..723fc2e --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00016.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 16: How to interact with the Free Software Community
+
+Page 16
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00016.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00016.idx.jpg new file mode 100644 index 0000000..7a75278 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00016.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00016.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00016.jpg new file mode 100644 index 0000000..0e36b45 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00016.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00016.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00016.txt new file mode 100644 index 0000000..8239d34 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00016.txt @@ -0,0 +1,7 @@ +How to interact with the Free Software Community +Practical Rules + +6. Binary-only software will not be accepted +yes, there are corner cases like FTC regulation on softradios +but as a general rule of thumb, the community will not consider object code as a solution to any problem + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00017.html b/2007/gpl-compliance-tw2007/interact-community/mgp00017.html new file mode 100644 index 0000000..45fb1ac --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00017.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 17: How to interact with the Free Software Community
+
+Page 17
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00017.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00017.idx.jpg new file mode 100644 index 0000000..d1fe032 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00017.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00017.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00017.jpg new file mode 100644 index 0000000..b966aee Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00017.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00017.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00017.txt new file mode 100644 index 0000000..fc5c07a --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00017.txt @@ -0,0 +1,6 @@ +How to interact with the Free Software Community +Practical Rules + +7. Avoid fancy business models +If you ship the same hardware with two different drivers (half featured and full-featured), any free software will likely make full features available on that hardware. + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00018.html b/2007/gpl-compliance-tw2007/interact-community/mgp00018.html new file mode 100644 index 0000000..8fd6b59 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00018.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 18: How to interact with the Free Software Community
+
+Page 18
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00018.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00018.idx.jpg new file mode 100644 index 0000000..eb459f3 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00018.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00018.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00018.jpg new file mode 100644 index 0000000..f94c716 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00018.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00018.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00018.txt new file mode 100644 index 0000000..4905155 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00018.txt @@ -0,0 +1,13 @@ +How to interact with the Free Software Community +Practical Rules + +8. Show your support for the Community +By visibly contributing to the project +discussions +code +equipment +By funding developer meetings +By making cheap hardware offers to developers +By contracting / sponsoring / hiring developers from the community + + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00019.html b/2007/gpl-compliance-tw2007/interact-community/mgp00019.html new file mode 100644 index 0000000..e4a5620 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00019.html @@ -0,0 +1,9 @@ + +MagicPoint presentation foils + +[index] [text page] [<<start] [<prev] [next>] [last>>] +
Page 19: GNU GPL - Copyright helps Copyleft
+
+Page 19
+
Generated by MagicPoint + diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00019.idx.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00019.idx.jpg new file mode 100644 index 0000000..ec42289 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00019.idx.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00019.jpg b/2007/gpl-compliance-tw2007/interact-community/mgp00019.jpg new file mode 100644 index 0000000..192df35 Binary files /dev/null and b/2007/gpl-compliance-tw2007/interact-community/mgp00019.jpg differ diff --git a/2007/gpl-compliance-tw2007/interact-community/mgp00019.txt b/2007/gpl-compliance-tw2007/interact-community/mgp00019.txt new file mode 100644 index 0000000..4ee5553 --- /dev/null +++ b/2007/gpl-compliance-tw2007/interact-community/mgp00019.txt @@ -0,0 +1,18 @@ +GNU GPL - Copyright helps Copyleft +Thanks + +Thanks to +Alan Cox, Alexey Kuznetsov, David Miller, Andi Kleen +for implementing (one of?) the world's best TCP/IP stacks +Paul 'Rusty' Russell +for starting the netfilter/iptables project +for trusting me to maintain it today +Astaro AG +for sponsoring parts of my netfilter work +Free Software Foundation +for the GNU Project +for the GNU General Public License + +The slides of this presentation are available at http://www.gnumonks.org/ + + diff --git a/2007/linux-development-model/linux-development-model.mgp b/2007/linux-development-model/linux-development-model.mgp new file mode 100644 index 0000000..6be687a --- /dev/null +++ b/2007/linux-development-model/linux-development-model.mgp @@ -0,0 +1,407 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + + +Introduction to the +Linux Development Model +for Hardware Companies + +%center +%size 4 +by + +Harald Welte +VIA Open Source Liaison + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Introduction + +Who is speaking to you? + an independent Free Software developer, consultant and trainer + 13 years experience using/deploying and developing for Linux on server and workstation + 10 years professional experience doing Linux system + kernel level development + strong focus on network security and embedded + expert in Free and Open Source Software (FOSS) copyright and licensing + digital board-level hardware design, esp. embedded systems + active developer and contributor to many FOSS projects + thus, a techie, who will therefore not have fancy animated slides ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +What is Free Software? + + Software that is + available in source code + is licensed in a way to allow unlimited distribution + allows modifications, and distribution of modifications + is not freeware, but copyrighted work + subject to license conditions, like any proprietary software + READ THE LICENSE + +What is Open Source? + Practically speaking, not much difference + Remainder of this presentation will use the term FOSS (Free and Open Source Software) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +What is the FOSS Community? + + Diverse + any individual can contribute + no formal membership required + every project has it's own culture, rules, ... + International + the internet boasted FOSS development + very common to have developers from all continents closely working together + Evolutionary + developers come and go, as their time permits + projects evolve over time, based on individual contributions + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +People / Groups involved + + Really depends on size of projects + Small projects often a one-man show + Bigger project have groups / subgroups + Common Terms / Definitions + Maintainer + The person who formally maintains a project + Core Team / Steering Committee + A group of skilled developers who make important decisions + Subsystem Maintainer + Somebody who is responsible for a particular sub-project + Developer Community + All developers involved with a project + User Community + Users of the software who often share their experience with others + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Development Process + + "Rough concensus and running code" + Decisions made by technically most skilled people + Reputation based hierarchy + Direct Communication between developers + Not driven by size of a target market + Release early, release often + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Motivations + + gaining reputation (like in the scientific community) + (students) gaining development experience with real-world software + solving problems that the author encounters on his computer + fighting for Free Software as ideology + working on exciting technology without having to work at company XYZ + work in creative environment with skilled people and no managers ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +FOSS Community likes + + generic solutions + portable code + vendor-independent architecture + clean code (coding style!) + open standards + good technical documentation + raw hardware, no bundle of hardware and software sold as solution + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +FOSS Community dislikes + + monopolistic structures + e.g. intel-centrism + closed 'industry forums' with rediculous fees + e.g. Infiniband, SD Card Association + standard documents that cost rediculous fees + NDA's, if they prevent development of FOSS + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Weak Points of FOSS + +When foss is entirely volunteer-driven + often way behind schedule (if there is any) + already too late when projects start + started when there already is a real need + often a lack of (good) documentation + programmers write code, not enduser docs... + strong in infrastructure, weak in applications + traditionally developers interested in very technical stuff + + Thus, FOSS really improves when organizations/entities get involved the right way! + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Windows driver development model + + + MS defines stable APIs and ABIs for drivers and releases SDK (DDK) + All interfaces are specified by a single entity + The interface between driver and OS core is designed as binary interface + Hardware vendors develop drivers for their hardware component + Hardware vendors compile and package drivers for their hardware component + Hardware vendors sell bundle of hardware and software driver (object code) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Linux driver development model + + + A community-driven process creates in-kernel driver API's + Drivers are written against those APIs + Drivers are submitted to the kernel developes for inclusion into the OS source tree + Because all (good) drivers are inside one singe source tree, OS developers can (and will) refine the APIs whenever apropriate + There are no stable in-kernel API's, and especially no stable in-kernel ABI's + Linux development community releases kernel source code + Hardware vendor sells hardware only. The Windows driver CD is unused. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Linux driver development model + + + Without proper support from HW vendor, Most hardware drivers are developed by people inside that community + sadly most of them have no relation to the HW manufacturer + even more sadly, many of them have to work without or with insufficient documentation (reverse engineering) + + Good HW vendors understand this and support Linux properly! + + Linux is a big market by now + Servers + Embedded devices (est. > 40% of all wifi/dsl router + NAS appliances) + Increasingly popular on the Desktop + Recently: Netbooks + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Linux driver development model, bad case timeline + + + Hardware vendor produces and ships hardware + Users end up getting that hardware without any Linux support + Somebody will start a driver and inquire about HW docs + Hardware vendor doesn't release docs + If hardware is popular enough, somebody will start reverse engineering and driver deevlopment + With some luck, the driver is actually useable or even finished before the HW product is EOL + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Linux driver development model, good case timeline #1 + + + Hardware vendor starts Linux driver development for new HW during HW R&D + Hardware vendor submits Linux driver for review / inclusion into mainline Linux kernel before HW ships + User installs HW and has immediate support by current Linux kernel + Hardware vendor publicly releases HW docs when the product ships, or even later + This enables the community to support/integrate the driver with new interfaces + It also enables the community to support hardware post EOL, at a point where the HW vendor + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Linux driver development model, good case timeline #2 + + + Hardware vendor releases HW documentation during HW R&D or no later than the product start shipping + Somebody in the Linux development community might be interested in writing a driver + in his spare time because of technical interest in the HW + as a paid contractor by the HW vendor + In such cases it helps if the HW vendor provides free samples to trustworthy developers + That driver is very likely to get merged mainline + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Why submit your code mainline? + + + Quantity-wise, most users use some Linux distribution + Every version of every distribution ships a different Linux kernel version + Most end-users are not capable of compiling their own kernel/drives (but way more than you think!) + Thus, + teaming up with one (or even two, three) Linux distributions only addresses a small segment of the user base + distributing your driver independently (bundled with hardware, ...) in a way that is ready-to-use for end-users is a ton of work and almost impossible to get right + the preferred option, with the least overhead for both user and HW vendor is to merge the driver mainline. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +How to submit your code mainline? + + + The FOSS code quality requirements are _extremely_ high + It's not a surprise that Linux is generally considered much more stable than competitors + Code needs to be maintainable + Linux supports old hardware ages beyond their EOL + Thin of MCA, VLB, Decnet, IPX networking, ... + So unless you respect the development culture, your code is likely to get rejected! + Post your driver at the respective mailing lists + Release early, release often + Don't hesitate to ask for feedback and suggestions if you are not 100% sure what is the right way to implement a certain feature + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +What about other FOSS OS's + + + There are quite a number of other non-Linux FOSS OSs, among them + FreeBSD, OpenBSD, NetBSD, ... + Those are not as small as you might think + FreeBSD often used for internet severs (web, mail, ...) + OpenBSD often used in high-security environments + NetBSD a little more prominent in embedded + So how does this affect a HW manufacturer + In case the OS is used in a targetted market, developing a driver might make sense + In most cases, open docuentation is all those projects need + In other cases, dual-licensing a driver (GPL+BSD) makes sense so *BSD can use code from the Linux driver + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Techncal differences + + + In the MS world, almost all interfaces are MS defined + In the Linux world, Linux is only the OS kernel + All other interfaces are specified by their respective projects + Often there are many alternatives, e.g. for graphical drivers + X.org project (X11 window server, typical desktop) + DirectFB project (popular in embedded devices like TV set-top boxes) + Qt/Embedded (popular in certain proprietary Linux-based mobile phones) + Every project has it's own culture, including but not limited to + coding style + patch submission guidelines + software license + communication methods + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Practical Rules + + 1. Much more communication + It's not a consumer/producer model, but cooperative! + Before you start implementation, talk to project maintainers + It's likely that someone has tried a similar thing before + It's likely that project maintainers have already an idea how to proceed with implementation + Avoid later hazzles when you want your code merged upstream + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Practical Rules + + 2. Interfaces + If there is a standard interface, use it + If insufficient: Don't invent new interfaces, try to extend existing ones + If there is an existing interface in a later (e.g. development) release upstream, backport that interface + Don't be afraid to touch API's if they're inefficient + Remember, you have the source and _can_ change them + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Practical Rules + + 3. Merge your code upstream + Initially you basically have to create a fork + Development of upsteram project continues sometimes at high speed + If you keep it out of tree for too long time, conflicts arise + Submissions might get rejected in the first round + Cleanups needed, in coordination with upstream project + Code will eventually get merged + No further maintainance needed for synchronization between your contribution and the ongoing upstream development + Don't be surprised if your code won't be accepted if you didn't discuss it with maintainers upfront and they don't like your implementation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Practical Rules + + 4. Write portable code + don't assume you're on 32bit CPU + don't assume you're on little endian + if you use assembly optimized code, put it in a self-contained module + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Practical Rules + + 5. Binary-only software will not be accepted + yes, there are corner cases like FCC regulation on softradios + but as a general rule of thumb, the community will not consider object code as a solution to any problem + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Practical Rules + + 6. Avoid fancy business models + If you ship the same hardware with two different drivers (half featured and full-featured), any free software will likely make full features available on that hardware. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Practical Rules + + 7. Show your support for the Community + By visibly contributing to the project + discussions + code + equipment + By funding developer meetings + By making rebated hardware offers to developers + By contracting / sponsoring / hiring developers from the community + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +The Linux Development Model for Hardware Companies +Thanks + + + Please share your questions and doubts now! + + Please contact me at any later point, if you have questions + + I'm here to help VIA understand Linux and Open Source! + + HaraldWelte@viatech.com + +%center +Thanks for your Attention diff --git a/2007/linux-development-model/linux-development-model.pdf b/2007/linux-development-model/linux-development-model.pdf new file mode 100644 index 0000000..4644df0 Binary files /dev/null and b/2007/linux-development-model/linux-development-model.pdf differ diff --git a/2007/netfilter-iptables-tfh2007/netfilter-iptables.mgp b/2007/netfilter-iptables-tfh2007/netfilter-iptables.mgp new file mode 100644 index 0000000..4172e97 --- /dev/null +++ b/2007/netfilter-iptables-tfh2007/netfilter-iptables.mgp @@ -0,0 +1,706 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + + +netfilter/iptables +%size 4 + +Jan 29, 2007 +TFH Berlin + +%center +%size 4 +by + +Harald Welte + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Contents + + Introduction + Highly Scalable Linux Network Stack + Netfilter Hooks + Packet selection based on IP Tables + The Connection Tracking Subsystem + The NAT Subsystem + Packet Mangling + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Introduction + + +Who is speaking to you? + an independent Free Software developer + who earns his living off Free Software since 1997 + who is one of the authors of the Linux kernel packet filter + busy with enforcing the GNU GPL at gpl-violations.org + working on Free Software for smartphones (openEZX, OpenMoko)` + ... and Free Software for RFID (librfid) + ... and Free Software for ePassports (libmrtd) + ... and Free Hardware for RFID (openpcd.org, openbeacon.org) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Introduction + +Linux and Networking + Linux is a true child of the Internet + Early adopters: ISP's, Universities + Lots of work went into a highly scalable network stack + Not only for client/server, but also for routers + Features unheared of in other OS's + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Introduction + +Did you know, that a stock 2.6.x linux kernel can provide + + a stateful packet filter ? + fully symmetric NA(P)T ? + policy routing ? + QoS / traffic shaping ? + IPv6 firewalling ? + packet filtering, NA(P)T on a bridge ? + layer 2 (mac) address translation ? + packet forwarding rates of up to 2.1Mpps (in 2005)? + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Introduction + +Why did we need netfilter/iptables? +Because ipchains... + + has no infrastructure for passing packets to userspace + makes transparent proxying extremely difficult + has interface address dependent Packet filter rules + has Masquerading implemented as part of packet filtering + code is too complex and intermixed with core ipv4 stack + is neither modular nor extensible + only barely supports one special case of NAT (masquerading) + has only stateless packet filtering + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Introduction + +Who's behind netfilter/iptables + + The core team + Paul 'Rusty' Russel + co-author of iptables in Linux 2.2 + James Morris + Marc Boucher + Harald Welte + Jozsef Kadlecsik + Martin Josefsson + Patrick McHardy + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Netfilter Hooks + + What is netfilter? + + System of callback functions within network stack + Callback function to be called for every packet traversing certain point (hook) within network stack + Protocol independent framework + Hooks in layer 3 stacks (IPv4, IPv6, DECnet, ARP) + Multiple kernel modules can register with each of the hooks + +Traditional packet filtering, NAT, ... is implemented on top of this framework + +Can be used for other stuff interfacing with the core network stack, like DECnet routing daemon. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Netfilter Hooks + +Netfilter architecture in IPv4 +%font "typewriter" +%size 4 +in --->[1]--->[ROUTE]--->[3]--->[4]---> out + | ^ + | | + | [ROUTE] + v | + [2] [5] + | ^ + | | + v | +%font "standard" +1=NF_IP_PRE_ROUTING +2=NF_IP_LOCAL_IN +3=NF_IP_FORWARD +4=NF_IP_POST_ROUTING +5=NF_IP_LOCAL_OUT + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Netfilter Hooks + +Netfilter Hooks + + Any kernel module may register a callback function at any of the hooks + + The module has to return one of the following constants + + NF_ACCEPT continue traversal as normal + NF_DROP drop the packet, do not continue + NF_STOLEN I've taken over the packet do not continue + NF_QUEUE enqueue packet to userspace + NF_REPEAT call this hook again + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +IP tables + + Packet selection using IP tables + + The kernel provides generic IP tables support + + Each kernel module may create it's own IP table + + The four major parts of the firewalling subsystem are implemented using IP tables + Packet filtering table 'filter' + NAT table 'nat' + Packet mangling table 'mangle' + The 'raw' table for conntrack exemptions + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +IP Tables + + Managing chains and tables + + An IP table consists out of multiple chains + A chain consists out of a list of rules + Every single rule in a chain consists out of + match[es] (rule executed if all matches true) + target (what to do if the rule is matched) + implicit packet and byte counter + +%size 4 +matches and targets can either be builtin or implemented as kernel modules + +%size 5 + The userspace tool iptables is used to control IP tables + handles all different kinds of IP tables + supports a plugin/shlib interface for target/match specific options + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +IP Tables + +Basic iptables commands + + To build a complete iptables command, we must specify + which table to work with + which chain in this table to use + an operation (insert, add, delete, modify) + one or more matches (optional) + a target + +The syntax is +%font "typewriter" +%size 3 +iptables -t table -Operation chain -j target match(es) +%font "standard" +%size 5 + +Example: +%font "typewriter" +%size 3 +iptables -t filter -A INPUT -j ACCEPT -p tcp --dport smtp +%font "standard" +%size 5 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +IP Tables + +Matches + Basic matches + -p protocol (tcp/udp/icmp/...) + -s source address (ip/mask) + -d destination address (ip/mask) + -i incoming interface + -o outgoing interface + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +IP Tables + + addrtype match + matches source/destionation address type + types are UNICAST/LOCAL/BROADCAST/ANYCAST/MULTICAST/... + ah match + matches IPSEC AH SPI (range) + comment match + always matches, allows user to place comment in rule + connmark match + connection marking, see later + conntrack match + more extended version of 'state' + match on timeout, fine-grained state, original tuples + dscp match + matches DSCP codepoint (formerly-known as TOS bits) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +IP Tables + + ecn match + matches ECN bits of tcp and ip header + esp match + matches IPSEC ESP SPI (range) + hashlimit match + dynamic limiting + helper match + allows matching of conntrack helper name + iprange match + match on arbitrary IP address ranges (not a mask) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +IP Tables + + length match + match on packet length + limit + static rate limiting + mac + match on source mac address + mark + match on nfmark (fwmark) + multiport + match on multiple ports + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +IP Tables + + owner + match on socket owner (uid, gid, pid, sid, command name) + physdev + match underlying device in case of bridge + pkttype + match link-layer packet type (unicast,broadcast,multicast) + realm + match routing realm + recent + see special section below + tcpmss + match on TCP maximum segment size + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +IP Tables + +Targets + very dependent on the particular table + + Table specific targets will be discussed later + + Generic Targets, always available + ACCEPT accept packet within chain + DROP silently drop packet + QUEUE enqueue packet to userspace + LOG log packet via syslog + ULOG log packet via ulogd + RETURN return to previous (calling) chain + foobar jump to user defined chain + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Packet Filtering + +Overview + + Implemented as 'filter' table + Registers with three netfilter hooks + + NF_IP_LOCAL_IN (packets destined for the local host) + NF_IP_FORWARD (packets forwarded by local host) + NF_IP_LOCAL_OUT (packets from the local host) + +Each of the three hooks has attached one chain (INPUT, FORWARD, OUTPUT) + +Every packet passes exactly one of the three chains. Note that this is very different compared to the old 2.2.x ipchains behaviour. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Packet Filtering + +Targets available within 'filter' table + + Builtin Targets to be used in filter table + ACCEPT accept the packet + DROP silently drop the packet + QUEUE enqueue packet to userspace + RETURN return to previous (calling) chain + foobar user defined chain + + Targets implemented as loadable modules + REJECT drop the packet but inform sender + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Connection Tracking Subsystem + + Connection tracking... + + implemented seperately from NAT + enables stateful filtering + implementation + hooks into NF_IP_PRE_ROUTING to track packets + hooks into NF_IP_POST_ROUTING and NF_IP_LOCAL_IN to see if packet passed filtering rules + protocol modules (currently TCP/UDP/ICMP/SCTP) + application helpers currently (FTP,IRC,H.323,talk,SNMP) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Connection Tracking Subsystem + + Connection tracking... + + divides packets in the following four categories + NEW - would establish new connection + ESTABLISHED - part of already established connection + RELATED - is related to established connection + INVALID - (multicast, errors...) + does _NOT_ filter packets itself + can be utilized by iptables using the 'state' match + is used by NAT Subsystem + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Connection Tracking Subsystem + + State tracking for TCP is obvious + TCP inherently stateful + Two TCP state machines on each end have well-defined behaviour + Passive tracking of state machines + In more recent 2.6.x kernels, tracking of TCP window (seq/ack) + Max idle timeout of fully-established session: 5 days + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Connection Tracking Subsystem + + State tracking for UDP: How is this possible? + UDP itself not stateful at all + However, higher-level protocols mostly match request-reply + First packet (request) is assumed to be NEW + First matching reply packet is assumed to confirm connection + Further packets in either direction refresh timeout + Timeouts: 30sec unreplied, 180sec confirmed + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Connection Tracking Subsystem + + State tracking on ICMP: What's that? + ICMP Errors (e.g. host/net unreachable, ttl exceeded) + They can always be categorized as RELATED to other connections + ICMP request/reply (ECHO REQUEST, INFO REQUEST) + can be treated like UDP request/reply case + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Connection Tracking Subsystem + + State tracking on SCTP: What's SCTP? + Streaming Control Transfer Protocol + Linux has SCTP in the network stack, so why should the packet filter not support it? + Pretty much like TCP in most cases + Doesn't support more advanced features such as failover of an endpoint + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Connection Tracking Subsystem + + State tracking on other protocols + 'generic' protocol: no layer-4 tuple information + 'gre' helper in patch-o-matic + + State tracking of higher-layer protocols + implemented as 'connection tracking helpers' + currently in-kernel: amanda, ftp, irc, tftp + currently in patch-o-matic: pptp, h.323, sip, quake, ... + have to be explicitly loaded (ip_conntrack_*.[k]o) + work by issuing so-called "expectations" + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Connection Tracking Subsystem + + Exemptions to connection tracking + Usually connection tracking is called first in PRE_ROUTING + Sometimes, filtering is preferred before this conntrack lookup + Therefore, the "raw" table was introduced + In some rare cases, one might want to not track certain packets + The NOTRACK can be used in the "raw" table + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Connection Tracking Subsystem + + Configuration / Tuning + module parameter "hashsize" + number of hash table buckets + /proc/sys/net/ipv4/ip_conntrack_max + maximum number of tracked connections + /proc/sys/net/ipv4/ip_conntrack_buckets (read-only) + number of hash table buckets + /proc/net/ip_conntrack + list of connections + /proc/net/ip_conntrack_expect + list of pending expectations + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Connection Tracking Subsystem + + Configuration / Tuning + /proc/sys/net/ip_conntrack_log_invalid + log invalid packets? + /proc/sys/net/ip_conntrack_tcp_be_liberal + basically disables window tracking, if "1" + /proc/sys/net/ip_conntrack_tcp_loose + how many packets required until sync in case of pickup + if set to zero, disables pickup + /proc/sys/net/ip_conntrack_tcp_max_retrans + maximum number of retransmitted packets without seeing a n ACK + /proc/sys/net/ip_conntrack_*timeout* + timeout values of respective protocol states + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Network Address Translation + + Network Address Translation + + Previous Linux Kernels only implemented one special case of NAT: Masquerading + Linux 2.4.x / 2.6.x can do any kind of NAT. + NAT subsystem implemented on top of netfilter, iptables and conntrack + Following targets available within 'nat' Table + SNAT changes the packet's source whille passing NF_IP_POST_ROUTING + DNAT changes the packet's destination while passing NF_IP_PRE_ROUTING + MASQUERADE is a special case of SNAT + REDIRECT is a special case of DNAT + SAME + NETMAP + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Network Address Translation + + Source NAT + SNAT Example: +%font "typewriter" +%size 3 +iptables -t nat -A POSTROUTING -j SNAT --to-source 1.2.3.4 -s 10.0.0.0/8 +%font "standard" +%size 4 + + MASQUERADE Example: +%font "typewriter" +%size 3 +iptables -t nat -A POSTROUTING -j MASQUERADE -o ppp0 +%font "standard" +%size 5 + + Destination NAT + DNAT example +%font "typewriter" +%size 3 +iptables -t nat -A PREROUTING -j DNAT --to-destination 1.2.3.4:8080 -p tcp --dport 80 -i eth1 +%font "standard" +%size 4 + + REDIRECT example +%font "typewriter" +%size 3 +iptables -t nat -A PREROUTING -j REDIRECT --to-port 3128 -i eth1 -p tcp --dport 80 +%font "standard" +%size 5 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Packet Mangling + + Purpose of 'mangle' table + packet manipulation except address manipulation + + Integration with netfilter + 'mangle' table hooks in all five netfilter hooks + priority: after conntrack + +Simple example: +%font "typewriter" +%size 3 +iptables -t mangle -A PREROUTING -j MARK --set-mark 10 -p tcp --dport 80 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Packet Mangling + + Targets specific to the 'mangle' table: + DSCP + manipulate DSCP field + ECN + manipulate ECN bits + IPV4OPTSSTRIP + strip IPv4 options + MARK + change the nfmark field of the skb + TCPMSS + set TCP MSS option + TOS + manipulate the TOS bits + TTL + set / increase / decrease TTL field + CLASSIFY + classify packet (for tc/iproute) + CONNMARK + set mark of connection + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +The raw Table + + Purpose of 'raw' table + to allow for filtering rules _before_ conntrack + Targets specific to the 'raw' table: + NOTRACK + don't do connection tracking + + The table can also be useful for flood protection rules that happen before traversing the (computational) expensive connection tracking subsystem. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Advanced Netfilter concepts + +%size 4 + Userspace logging + flexible replacement for old syslog-based logging + packets to userspace via multicast netlink sockets + easy-to-use library (libipulog) + plugin-extensible userspace logging daemon (ulogd) + Can even be used to directly log into MySQL + + Queuing + reliable asynchronous packet handling + packets to userspace via unicast netlink socket + easy-to-use library (libipq) + provides Perl bindings + experimental queue multiplex daemon (ipqmpd) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Advanced Netfilter concepts + + Firewalling on a Bridge (ebtables + iptables) + totally transparent to layer 2 and above + no attack vector since firewall has no IP address + even possible to do NAT on the bridge + or even NAT of MAC addresses + + ipset - Faster matching + iptables are a linear list of rules + ipset represents a 'group' scheme + Implements different data types for different applications + hash table (for random addresses) + bitmask (for let's say a /24 network) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Advanced Netfilter concepts + + ipv6 packet filtering + ip6tables almost identical to iptables + no connection tracking in mainline yet, but patches exist + ip6_conntrack + initial copy+paste 'port' by USAGI + was not accepted because of code duplication + nf_conntrack + generalized connection tracking, supports ipv4 and ipv6 + mutually exclusive with ip_conntrack + up to 2.6.20, no ipv4 nat on to of nf_conntrack + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +netfilter/iptables tutorial +Thanks + + Thanks to + the BBS scene, Z-Netz, FIDO, ... + for heavily increasing my computer usage in 1992 + KNF (http://www.franken.de/) + for bringing me in touch with the internet as early as 1994 + for providing a playground for technical people + for telling me about the existance of Linux! + Alan Cox, Alexey Kuznetsov, David Miller, Andi Kleen + for implementing (one of?) the world's best TCP/IP stacks + Paul 'Rusty' Russell + for starting the netfilter/iptables project + for trusting me to maintain it today + Astaro AG + for sponsoring parts of my netfilter work diff --git a/2007/openmoko-foss_in-2007/images/Gta02v1_bottom.jpg b/2007/openmoko-foss_in-2007/images/Gta02v1_bottom.jpg new file mode 100644 index 0000000..cefda28 Binary files /dev/null and b/2007/openmoko-foss_in-2007/images/Gta02v1_bottom.jpg differ diff --git a/2007/openmoko-foss_in-2007/images/debugboard_v2_concept.jpg b/2007/openmoko-foss_in-2007/images/debugboard_v2_concept.jpg new file mode 100644 index 0000000..3a8be44 Binary files /dev/null and b/2007/openmoko-foss_in-2007/images/debugboard_v2_concept.jpg differ diff --git a/2007/openmoko-foss_in-2007/images/gta01b_v3_bottom.jpg b/2007/openmoko-foss_in-2007/images/gta01b_v3_bottom.jpg new file mode 100755 index 0000000..6cfa013 Binary files /dev/null and b/2007/openmoko-foss_in-2007/images/gta01b_v3_bottom.jpg differ diff --git a/2007/openmoko-foss_in-2007/images/gta01bv4_bottom.jpg b/2007/openmoko-foss_in-2007/images/gta01bv4_bottom.jpg new file mode 100644 index 0000000..c4e1ba4 Binary files /dev/null and b/2007/openmoko-foss_in-2007/images/gta01bv4_bottom.jpg differ diff --git a/2007/openmoko-foss_in-2007/images/gta01bv4_top.jpg b/2007/openmoko-foss_in-2007/images/gta01bv4_top.jpg new file mode 100644 index 0000000..e422509 Binary files /dev/null and b/2007/openmoko-foss_in-2007/images/gta01bv4_top.jpg differ diff --git a/2007/openmoko-foss_in-2007/images/neo1973_debugboard_v2_top_annotated.jpg b/2007/openmoko-foss_in-2007/images/neo1973_debugboard_v2_top_annotated.jpg new file mode 100644 index 0000000..b531137 Binary files /dev/null and b/2007/openmoko-foss_in-2007/images/neo1973_debugboard_v2_top_annotated.jpg differ diff --git a/2007/openmoko-foss_in-2007/notes.txt b/2007/openmoko-foss_in-2007/notes.txt new file mode 100644 index 0000000..b205322 --- /dev/null +++ b/2007/openmoko-foss_in-2007/notes.txt @@ -0,0 +1,57 @@ +Neo1973 GTA01 hardware + SC2410 SoC @ 266MHz + 480x640 LCM, 262k colors + 128MB SDRAM + 128MB SLC NAND (512/16k) + USB 1.1 device and host (unpowered) + A-GPS (without processor) + GSM+GPRS chipset (ARM7 based) + 2 stereo speakers (1.2W) + CSR4 based Bluetooth + +Free Software stack + bootloader: u-boot current git + kernel: linux 2.6.20.4 + xserver: kdrive + glibc + glib + gtk+ + libmokoui + libmokocore + libgsmd / gsmd + +Development Model + We actively contribute our code upstream + e.g. kernel goal: make vanilla 2.6.22 kernel have all drivers + Our build system is public + Everyone can rebuild everything + cross-toolchain + u-boot / kernel image + application/library packages + Based on OpenEmbedded (OE) + +Hackable Device + The device shall be under full user control + Everyone should be able to hack it, at any level + hardware hacking (i2c, spi, gpio on test pads / connector) + system-level hacking (bootloader, OS) + UI level hacking + Make entry barrier for development as easy as possible + bootloader prompt via USB serial emulation + Serial console + JTAG for the people + Provide Debug Board with embedded USB JTAG + serial adapter + +Standards compliance + We use open/documented/available standards wherever possible + Use official USB device firmware upgrade protocol + Have charger behave 100% to USB spec (100/500mA) + Use GSM chipset that follows GSM 07.07/07.10 closely + +Application Processor GSM integration + kernel line discipline implementation for GSM 07.10 + userspace GSM daemon with unix domain socket + libgsmd with API for applications + lightweight, doesn't have _any_ dependencies aside from glibc + + diff --git a/2007/openmoko-foss_in-2007/openmoko-tech.mgp b/2007/openmoko-foss_in-2007/openmoko-tech.mgp new file mode 100644 index 0000000..bf870e9 --- /dev/null +++ b/2007/openmoko-foss_in-2007/openmoko-tech.mgp @@ -0,0 +1,438 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + + +%center +%size 8 +OpenMoko +Free Software Phone Architecture + + +%center +%size 4 +by + +Harald Welte + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Introduction + +Who is speaking to you? + + an independent Free Software developer, consultant and trainer + who is a member of the free software community for 10 years + who has worked a lot on the Linux kernel + who had originally started OpenEZX for Motorola phones + and who's been lead hardware + system software architect for OpenMoko until recently + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +WARNING + + +I have quit working for OpenMoko, Inc. or the FIC group. + +Thus, I do not officially represent either of these entities! + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +What is OpenMoko + +The commercial side + + First International Computer, Inc. + A large Taiwanese hardware vendor + Has a FIC Mobility business unit + Hardware R&D and production of Neo1973 GTA01 and GTA02 handsets + + + OpenMoko, Inc., ("OpenMoko, the Company") + Part of First International Computer (FIC) Group + Funding the OpenMoko software R&D + Responsible for product definitil, sales, marketing, PR, ... + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +What is OpenMoko + +The community side + OpenMoko, the overall Free Software project + A FOSS project working on + OpenMoko kernel/u-boot patches (hardware support) + OpenMoko GNU/Linux distribution + OpenMoko UI / framework + Funded by OpenMoko, Inc. + + OpenMoko, the embedded GNU/Linux distribution + An OE-built embedded GNU/Linux distribution for mobile communications devices + Primarily targetted at OpenMoko/FIC handsets + Is being ported to other devices by the community + Maintained by OE coreteam member employed by OpenMoko, Inc. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +What is OpenMoko about? + + Open + Opening up the formerly-closed mobile world + on any achievable level + + Mobile + Mobile devices are the future + + Free + 100% Free Software from driver through UI + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +What is OpenMoko about? + + FIC provides + experience in mass production of consumer electronics + experience in production of GSM handsets + experience in hardware development of GSM handsets + + OpenMoko provides + good contacts within the FOSS communities + strong technical knowledge on GNU/Linux + software development + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Neo1973 GTA01 hardware + +Neo1973 GTA01 hardware (07/2007) + S3C2410 SoC @ 266MHz + 2.8" 480x640 LCM, 262k colors + 128MB SDRAM + 64MB SLC NAND (512/16k) + USB 1.1 device and host (unpowered) + A-GPS (without processor) + GSM+GPRS chipset (ARM7 based) + Wolfson + 2 stereo speakers (1.2W) + 2.5mm headset jack + CSR4 based Bluetooth + NXP PCF50606 power management unit + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Application Processor + +Closer look at Application Processor + SC2410 SoC @ 266MHz + three UART's + 133MHz SDRAM interface + 66MHz external bus + Two channels SPI + IIS + I2C + SDIO + TFT controller + NAND controller + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +GSM Modem + +Closer look at the GSM Modem + Ti Calypso/Iota based chipset + As proprietary as any other phone + runs proprietary nucleus OS + runs proprietary GSM stack + Supports GSM voice/data/fax and GPRS + Tri-Band GSM + Very good TS 07.05 / 07.07 / 07.10 compliance + eveyone can download the protocol docs from ETSI.org + no user/hacker needs access to NDA'd documents + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Free Software stack + +Free Software stack + bootloader: u-boot current git (post-1.3) + kernel: linux 2.6.22.5/2.6.24-rc4 + xserver: kdrive + glibc + glib + gtk+ + pulseaudio + gsmd / libgsmd + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Development Model + +Development Model + "do embedded GNU/Linux the right way" + use and track current mainline code + actively contribute our code upstream + e.g. kernel goal: make vanilla 2.6.25+ kernel have all drivers + all code is immediately committed to public svn repository + development discussions happen on public mailinglists + all code developed by OpenMoko is FOSS licensed + everyone can contribute + no copyright assignments to OpenMoko + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Build System + + We build + an embedded linux distribution + split in ipk packages (just like dpkg/rpm) + ipk feeds (just like apt-get/yum) + + We release + full source code in svn + all patches to all packages + the entire build system (built with OE) + + Our build system is public + Everyone can rebuild everything + cross-toolchain + u-boot / kernel image + application/library packages + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Hackable Device + +Hackable Device + The device shall be under full user control + Everyone should be able to hack it, at any level + hardware hacking (i2c, spi, gpio on test pads / connector) + system-level hacking (bootloader, OS) + UI level hacking + Make entry barrier for development as easy as possible + bootloader prompt via USB serial emulation + Serial console + JTAG for the people + Provide Debug Board with embedded USB JTAG + serial adapter + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Standards compliance + +Standards compliance + We use open/documented/available standards wherever possible + Use official USB device firmware upgrade protocol + Have charger behave 100% to USB spec (100/500mA) + Use GSM chipset that follows GSM 07.07/07.10 closely + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +User control + +User control + The phone needs to be under control of the user, and the free software he uses + Even backdoors or rogue GSM firmware shall not be able to intrude the privacy fo the user + So we e.g. put the Audio codec (under explicit control from the Linux-running AP) between microphone/speaker and the GSM modem + So we enable the Linux-running AP to cut power of the GSM modem + Thus, free software (and thus the user) remains in ultimate control + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +GSM Integration + +Application Processor GSM integration + kernel line discipline implementation for GSM 07.10 + userspace GSM daemon with unix domain socket + libgsmd with API for applications + lightweight, doesn't have _any_ dependencies aside from glibc + we're working on gobject integration on top + kernel part scheduled for mainline submission + will support different phones / gsm chipsets + Various HTC devices with Linux + Motorola EZX phones using OpenEZX + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Difference + +Difference from other Linux phones + 'others' discourage third parties from writing apps + you need explicit permission? WTF! + 'others' try to make customers pay for a device that's still under manufacturer / GSM operator control + 'others' use proprietary kernel modules + locks you into some old kernel version + 'others' use proprietary bootloaders + 'others' dont give you JTAG/serial access + 'others' use proprietary UI toolkits + vendor lock-in + 'others' dont give out their build system + 'others' dont give out their firmware update tools + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Neo1973 GTA02 hardware + +Neo1973 GTA02 hardware ("soon") + S3C2442B SoC @ 400 MHz (500MHz option) + 2.8" 480x640 LCM, 262k colors + 128MB SDRAM + 256MB SLC NAND (2048/128k) + USB 1.1 device and host (with power) + A-GPS (fully autonomous firmware-based) + GSM+GPRS chipset (ARM7 based) + CSR4 based Bluetooth + Atheros AR6k based 802.11b/g WiFi + 2 3D accelerometers + Smedia Glamo 3362 GPU + NXP PCF50633 power management unit + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +GTA02: Smedia Glamo GPU + +Smedia Glamo 3362 GPU + 8MB internal SDRAM + 16bit local bus interface to S3C2410 + 2D acceleration + 3D acceleration + h.263 codec (encode/decode) + LCM controller + SD-Card controller + hardware JPEG encoder/decoder + Camera interface and imapge processing (unused) + +OpenMoko is writing 100% FOSS drivers (GPL/MIT licensed) + kernel driver for core and framebuffer done + Xglamofb making good progress + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Future Hardware + +GTA03 + not public yet :) +GTX01 + not public yet :) +GTX02 + not public yet :) + +Always in motion, the future is! + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Neo1973 GTA01 Emulator + +The Neo1973 GTA01 emulator + based on populer qemu project + full GTA01 hardware emulation, including + NAND controller + LCM controller + power management unit + GSM modem + touchscreen controller + SD card controller + ... + you can run the exact same bootloader/kernel/rootfs images + thus, no need to buy real hardware to start hacking + e.g. NetBSD port has been done entirely on emulator! + http://wiki.openmoko.org/wiki/OpenMoko_under_QEMU + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +How to contribute + + + First: get hands-on experience + with emulator (free, based on qemu, full GTA01 emulation) + with real hardware (GTA01 now, GTA02 soon) + follow instructions on the wiki, improve it with your feedback + start local user / developer groups + go through bugzilla, look for bugs in your favourite components + try to reproduce bug with current images + provide feedback + help by proividing additional debugging information + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +How to contribute + + + write your own gtk+ applications fit for 480x640 screen size and limited CPU + do development on your host pc (native) + then cross-compile for OpenMoko + then test on emulator or hardware + then build and package with OE + go through projects.openmoko.org and contact project teams, help them out + hang out on mailinglists and #openmoko on freenode.net + start sharing your experience with others with your experience + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Online Resources + + + http://www.openmoko.org/ + portal site, just links everywhere else + http://wiki.openmoko.org/ + everything you (n)ever wanted to know about openmoko ;) + http://bugzilla.openmoko.org/ + documents all known bugs, please add/report and debug! + http://lists.openmoko.org/ + various mailing lists for Q&A and discussions + http://planet.openmoko.org/ + planet aggregating RSS feeds of various blogs + irc.freenode.net #openmoko + lots of developers hanging out there + https://direct.openmoko.com/ + for buying actual hardware + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Thanks + + Thanks to + Free Software Foundation + for the GNU Project + for the GNU General Public License + Motorola + for never managing to entirely lock down their EZX device + OpenEZX community + for continuing the effort that I once started + First International Computer, Inc. + for believing in a 100% Open Source product + for funding OpenMoko + mond + my girlfriend, whom I've had terribly neglected + All my friends + for whom I didn't have time a single minute in 18 months diff --git a/2007/openmoko-foss_in-2007/openmoko-tech.pdf b/2007/openmoko-foss_in-2007/openmoko-tech.pdf new file mode 100644 index 0000000..019f342 Binary files /dev/null and b/2007/openmoko-foss_in-2007/openmoko-tech.pdf differ diff --git a/2007/openmoko-technical-blr2007/images/debugboard_v2_concept.jpg b/2007/openmoko-technical-blr2007/images/debugboard_v2_concept.jpg new file mode 100644 index 0000000..3a8be44 Binary files /dev/null and b/2007/openmoko-technical-blr2007/images/debugboard_v2_concept.jpg differ diff --git a/2007/openmoko-technical-blr2007/images/gta01b_v3_bottom.jpg b/2007/openmoko-technical-blr2007/images/gta01b_v3_bottom.jpg new file mode 100755 index 0000000..6cfa013 Binary files /dev/null and b/2007/openmoko-technical-blr2007/images/gta01b_v3_bottom.jpg differ diff --git a/2007/openmoko-technical-blr2007/images/gta01bv4_bottom.jpg b/2007/openmoko-technical-blr2007/images/gta01bv4_bottom.jpg new file mode 100644 index 0000000..c4e1ba4 Binary files /dev/null and b/2007/openmoko-technical-blr2007/images/gta01bv4_bottom.jpg differ diff --git a/2007/openmoko-technical-blr2007/images/gta01bv4_top.jpg b/2007/openmoko-technical-blr2007/images/gta01bv4_top.jpg new file mode 100644 index 0000000..e422509 Binary files /dev/null and b/2007/openmoko-technical-blr2007/images/gta01bv4_top.jpg differ diff --git a/2007/openmoko-technical-blr2007/images/neo1973_debugboard_v2_top_annotated.jpg b/2007/openmoko-technical-blr2007/images/neo1973_debugboard_v2_top_annotated.jpg new file mode 100644 index 0000000..b531137 Binary files /dev/null and b/2007/openmoko-technical-blr2007/images/neo1973_debugboard_v2_top_annotated.jpg differ diff --git a/2007/openmoko-technical-blr2007/notes.txt b/2007/openmoko-technical-blr2007/notes.txt new file mode 100644 index 0000000..b205322 --- /dev/null +++ b/2007/openmoko-technical-blr2007/notes.txt @@ -0,0 +1,57 @@ +Neo1973 GTA01 hardware + SC2410 SoC @ 266MHz + 480x640 LCM, 262k colors + 128MB SDRAM + 128MB SLC NAND (512/16k) + USB 1.1 device and host (unpowered) + A-GPS (without processor) + GSM+GPRS chipset (ARM7 based) + 2 stereo speakers (1.2W) + CSR4 based Bluetooth + +Free Software stack + bootloader: u-boot current git + kernel: linux 2.6.20.4 + xserver: kdrive + glibc + glib + gtk+ + libmokoui + libmokocore + libgsmd / gsmd + +Development Model + We actively contribute our code upstream + e.g. kernel goal: make vanilla 2.6.22 kernel have all drivers + Our build system is public + Everyone can rebuild everything + cross-toolchain + u-boot / kernel image + application/library packages + Based on OpenEmbedded (OE) + +Hackable Device + The device shall be under full user control + Everyone should be able to hack it, at any level + hardware hacking (i2c, spi, gpio on test pads / connector) + system-level hacking (bootloader, OS) + UI level hacking + Make entry barrier for development as easy as possible + bootloader prompt via USB serial emulation + Serial console + JTAG for the people + Provide Debug Board with embedded USB JTAG + serial adapter + +Standards compliance + We use open/documented/available standards wherever possible + Use official USB device firmware upgrade protocol + Have charger behave 100% to USB spec (100/500mA) + Use GSM chipset that follows GSM 07.07/07.10 closely + +Application Processor GSM integration + kernel line discipline implementation for GSM 07.10 + userspace GSM daemon with unix domain socket + libgsmd with API for applications + lightweight, doesn't have _any_ dependencies aside from glibc + + diff --git a/2007/openmoko-technical-blr2007/openmoko-tech.mgp b/2007/openmoko-technical-blr2007/openmoko-tech.mgp new file mode 100644 index 0000000..56e7460 --- /dev/null +++ b/2007/openmoko-technical-blr2007/openmoko-tech.mgp @@ -0,0 +1,262 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + + +OpenMoko +What, Why and How + + +%center +%size 4 +by + +Harald Welte + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Contents + + Introduction + What is Free Software? + What is the FOSS Community? + People / Groups involved + Development Process + Motivations + FOSS likes + FOSS disliks + Weak Points + Practical Rules + Thanks + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Introduction + +Who is speaking to you? + + an independent Free Software developer, consultant and trainer + who is a member of the free software community for 10 years + who has worked a lot on the Linux kernel + who had originally started OpenEZX for Motorola phones + and who was Lead System Architect for OpenMoko until early November 2007 + +Why is he speaking to you? + + because every working day he suffers the lack of understanding between the community and the business world + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Neo1973 GTA01 hardware + +Neo1973 GTA01 hardware + SC2410 SoC @ 266MHz + 480x640 LCM, 262k colors + 128MB SDRAM + 64MB SLC NAND (512/16k) + USB 1.1 device and host (unpowered) + A-GPS (without processor) + GSM+GPRS chipset (ARM7 based) + 2 stereo speakers (1.2W) + CSR4 based Bluetooth + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Application Processor + +Closer look at Application Processor + SC2410 SoC @ 266MHz + three UART's + 133MHz SDRAM interface + 66MHz external bus + Two channels SPI + IIS + I2C + SDIO + TFT controller + NAND controller + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +GSM Modem + +Closer look at the GSM Modem + Ti Calypso/Iota based chipset + As proprietary as any other phone + runs proprietary nucleus OS + runs proprietary GSM stack + Supports GSM voice/data/fax and GPRS + Quad-Band GSM + Very good TS 07.05 / 07.07 / 07.10 compliance + eveyone can download the protocol docs from ETSI.org + no user/hacker needs access to NDA'd documents + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Free Software stack + +Free Software stack + bootloader: u-boot current git + kernel: linux 2.6.20.4 + xserver: kdrive + glibc + glib + gtk+ + libmokoui + libmokocore + libgsmd / gsmd + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Development Model + +Development Model + We actively contribute our code upstream + e.g. kernel goal: make vanilla 2.6.22 kernel have all drivers + Our build system is public + Everyone can rebuild everything + cross-toolchain + u-boot / kernel image + application/library packages + Based on OpenEmbedded (OE) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Hackable Device + +Hackable Device + The device shall be under full user control + Everyone should be able to hack it, at any level + hardware hacking (i2c, spi, gpio on test pads / connector) + system-level hacking (bootloader, OS) + UI level hacking + Make entry barrier for development as easy as possible + bootloader prompt via USB serial emulation + Serial console + JTAG for the people + Provide Debug Board with embedded USB JTAG + serial adapter + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Standards compliance + +Standards compliance + We use open/documented/available standards wherever possible + Use official USB device firmware upgrade protocol + Have charger behave 100% to USB spec (100/500mA) + Use GSM chipset that follows GSM 07.07/07.10 closely + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +User control + +User control + The phone needs to be under control of the user, and the free software he uses + Even backdoors or rogue GSM firmware shall not be able to intrude the privacy fo the user + So we e.g. put the Audio codec (under explicit control from the Linux-running AP) between microphone/speaker and the GSM modem + So we enable the Linux-running AP to cut power of the GSM modem + Thus, free software (and thus the user) remains in ultimate control + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +GSM Integration + +Application Processor GSM integration + kernel line discipline implementation for GSM 07.10 + userspace GSM daemon with unix domain socket + libgsmd with API for applications + lightweight, doesn't have _any_ dependencies aside from glibc + we're working on gobject integration on top + kernel part scheduled for mainline submission + will support different phones / gsm chipsets + Various HTC devices with Linux + Motorola EZX phones using OpenEZX + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Difference + +Difference from other Linux phones + 'others' discourage third parties from writing apps + you need explicit permission? WTF! + 'others' try to make customers pay for a device that's still under manufacturer / GSM operator control + 'others' use proprietary kernel modules + locks you into some old kernel version + 'others' use proprietary bootloaders + 'others' dont give you JTAG/serial access + 'others' use proprietary UI toolkits + vendor lock-in + 'others' dont give out their build system + 'others' dont give out their firmware update tools + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Hardware ahead + +GTA02 + Same case / physical size + Same screen + Same GPS + Samsung S3C2442 at 400MHz + More NAND (256MB) + Will have WiFi (802.11b/g) + Might have EDGE + Better Power management + Dedicated graphics processor + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Hardware ahead + +GTA03 + not public yet :) +GTX01 + not public yet :) +GTX02 + not public yet :) + +All of them really exciting. Stay tuned :) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +OpenMoko +Thanks + + Thanks to + Alan Cox, Alexey Kuznetsov, David Miller, Andi Kleen + for implementing (one of?) the world's best TCP/IP stacks + Paul 'Rusty' Russell + for starting the netfilter/iptables project + for trusting me to maintain it today + Astaro AG + for sponsoring parts of my netfilter work + Free Software Foundation + for the GNU Project + for the GNU General Public License + FIC + for funding OpenMoko + + diff --git a/2007/relation-community-tw2007/interact-community.mgp b/2007/relation-community-tw2007/interact-community.mgp new file mode 100644 index 0000000..5d04983 --- /dev/null +++ b/2007/relation-community-tw2007/interact-community.mgp @@ -0,0 +1,275 @@ +%include "default.mgp" +%default 1 bgrad +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +%nodefault +%back "blue" + +%center +%size 7 + + +How to interact with the +Free Software Community + + +%center +%size 4 +by + +Harald Welte + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Contents + + Introduction + What is Free Software? + What is the FOSS Community? + People / Groups involved + Development Process + Motivations + FOSS likes + FOSS disliks + Weak Points + Practical Rules + Thanks + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Introduction + +Who is speaking to you? + + an independent Free Software developer, consultant and trainer + who is a member of the free software community for 10 years + who has a background in both the community and the corporate crowd + who will therefore not have fancy animated slides ;) + +Why is he speaking to you? + + because every working day he suffers the lack of understanding between the community and the business world + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +What is Free Software? + + Software that is + available in source code + is licensed in a way to allow unlimited distribution + allows modifications, and distribution of modifications + is not freeware, but copyrighted work + subject to license conditions, like any proprietary software + READ THE LICENSE + +What is Open Source? + Practically speaking, not much difference + Remainder of this presentation will use the term FOSS (Free and Open Source Software) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +What is the FOSS Community? + + Diverse + any individual can contribute + no formal membership required + every project has it's own culture, rules, ... + International + the internet boasted FOSS development + very common to have developers from all continents closely working together + Evolutionary + developers come and go, as their time permits + projects evolve over time, based on individual contributions + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +People / Groups involved + + Really depends on size of projects + Small projects often a one-man show + Bigger project have groups / subgroups + Common Terms / Definitions + Maintainer + The person who formally maintains a project + Core Team / Steering Committee + A group of skilled developers who make important decisions + Subsystem Maintainer + Somebody who is responsible for a particular sub-project + Developer Community + All developers involved with a project + User Community + Users of the software who often share their experience with others + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Development Process + + "Rough concensus and running code" + Decisions made by technically most skilled people + Reputation based hierarchy + Direct Communication between developers + Not driven by size of a target market + Release early, release often + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Motivations + + gaining reputation (like in the scientific community) + gaining development experience with real-world software + solving problems that the author encounters on his computer + fighting for Free Software as ideology + work in creative environment with skilled people and no managers ;) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +FOSS Community likes + + generic solutions + portable code + vendor-independent architecture + clean code (coding style!) + open standards + good technical documentation + raw hardware, no bundle of hardware and software sold as solution + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +FOSS Community dislikes + + monopolistic structures + e.g. intel-centrism + closed 'industry forums' with rediculous fees + e.g. Infiniband, SD Card Association + standard documents that cost rediculous fees + NDA's, if they prevent development of FOSS + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Weak Points of FOSS + + often way behind schedule (if there is any) + already too late when projects start + started when there already is a real need + often a lack of (good) documentation + programmers write code, not enduser docs... + strong in infrastructure, weak in applications + traditionally developers interested in very technical stuff + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 1. Much more communication + It's not a consumer/producer model, but cooperative! + Before you start implementation, talk to project maintainers + It's likely that someone has tried a similar thing before + It's likely that project maintainers have already an idea how to proceed with implementation + Avoid later hazzles when you want your code merged upstream + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 2. Interfaces + If there is a standard interface, use it + If insufficient: Don't invent new interfaces, try to extend existing ones + If there is an existing interface in a later (e.g. development) release upstream, backport that interface + Don't be afraid to touch API's if they're inefficient + Remember, you have the source and _can_ change them + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 3. Merge your code upstream + Initially you basically have to create a fork + Development of upsteram project continues sometimes at high speed + If you keep it out of tree for too long time, conflicts arise + Submissions might get rejected in the first round + Cleanups needed, in coordination with upstream project + Code will eventually get merged + No further maintainance needed for synchronization between your contribution and the ongoing upstream development + Don't be surprised if your code won't be accepted if you didn't discuss it with maintainers upfront and they don't like your implementation + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 4. Write portable code + don't assume you're on 32bit CPU + don't assume you're on little endian + if you use assembly optimized code, put it in a self-contained module + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 5. Binary-only software will not be accepted + yes, there are corner cases like FCC regulation on softradios + but as a general rule of thumb, the community will not consider object code as a solution to any problem + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 6. Avoid fancy business models + If you ship the same hardware with two different drivers (half featured and full-featured), any free software will likely make full features available on that hardware. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +How to interact with the Free Software Community +Practical Rules + + 7. Show your support for the Community + By visibly contributing to the project + discussions + code + equipment + By funding developer meetings + By making cheap hardware offers to developers + By contracting / sponsoring / hiring developers from the community + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%page +GNU GPL - Copyright helps Copyleft +Thanks + + Thanks to + Alan Cox, Alexey Kuznetsov, David Miller, Andi Kleen + for implementing (one of?) the world's best TCP/IP stacks + Paul 'Rusty' Russell + for starting the netfilter/iptables project + for trusting me to maintain it today + Astaro AG + for sponsoring parts of my netfilter work + Free Software Foundation + for the GNU Project + for the GNU General Public License + +%size 3 + The slides of this presentation are available at http://www.gnumonks.org/ + + -- cgit v1.2.3