diff --git a/presentations/20min-violation-intro/violation-intro.md b/presentations/20min-violation-intro/violation-intro.md
index 8a99469..1cbc270 100644
--- a/presentations/20min-violation-intro/violation-intro.md
+++ b/presentations/20min-violation-intro/violation-intro.md
@@ -1,337 +1,7 @@
-% A Practical Guide to Compliance with the GNU GPL
-% Bradley M. Kuhn and Karen M. Sandler
+% The What and How of GPL Violations
+% Bradley M. Kuhn
% Thursday 19 January 2016
-
-# Audience
-
-+ Our goal here is to move faster or slower based on audience knowledge.
-
-+ There are folks in this audience who have worked with this stuff for years,
- and those who are completely new.
-
-+ We want these presentations to be valuable to all of you.
-
-# Audience
-
-+ Please, don't be embarrassed:
- + Ever GPL expert in the world, including us, started as a student who
- knew none of this.
-
-+ This is a course; raise your hand if you are confused or have a question.
-
-+ We are glad to go "off-slides" and get your questions answered.
-
-# The Tutorial's Textbook
-
-+ This tutorial actually has a 125-page textbook.
-
-+ You can download it (PDF or online HTML browse, or the source code!) from
- [copyleft.org/guide](https://copyleft.org/guide)
-
-+ The text is in integration and culmination of every freely licensed
- material on copyleft (and GPL in particular) we could find.
-
-+ We don't mind if you read the text while we talk and raise your hand with questions.
-
-# How this Tutorial Go?
-
-+ Materials presented will mix the simple & complex.
-
-+ We cannot possibly cover the entire GPL and compliance procedures in merely
- two hours.
- + a full course could take a whole day or more.
- + but we'll give you the key highlights.
-
-# Outline
-
-+ Discuss: motivations, origins, then a few of GPL's sections.
-
-+ Turn to focus to how it relates to meeting the requirements of the license
- (aka compliance).
-
-+ If you haven't asked enough questions at that point, we'll then still have
- lots of time at the end to take questions and answer them.
-
-# Why Listen To Us?
-
-+ Conservancy operates and practices license compliance activities extremely transparently.
-
-+ So you have access to drafters, interpreters, enforcers.
-
-+ Someday, we may (or already have) sit across the table from you.
-
-+ Our transparency does make your job easier.
-
-# The Mindset of GPL
-
-+ GPL protects software freedom.
-
-+ Ultimate goal: make sure every user has the four freedoms.
- + Freedom to run the software.
- + Freedom to study and modify the software.
- + Freedom to share the software.
- + Freedom to distribute modified versions.
-
-+ Every clause in GPL was designed to uphold one of these freedoms.
- + Or, it's a compromise of drafting in adoption vs. freedom debate.
-
-# Using Copyright
-
-+ GPL is primarily a copyright license.
- + Software is copyrighted.
- + License grants key freedoms.
- + Requirement prohibit activities that take away freedoms.
-
-+ General concept: copyleft.
-
-+ Specific implementation: GPL.
-
-# Conditional Permissions
-
-+ A copyleft license grants copyright permissions, conditionally.
-
-+ Think of the phrase: “provided that”
-
-+ “provided that”: appears (in some form) only
- + 4 times in GPLv2
- + 9 times in GPLv3.
-
-# Compare To Proprietary Licenses
-
-+ Yes, the GPL has its requirements.
-
-+ But *none* of these activities are ever permitted under proprietary
- licenses.
-
-+ If you don't like what the GPL requires you to do, then just use
- proprietary software instead.
-
-+ That way, you know the answer to every “Am I allowed to?” question is “no”
-
-+ rather than: “yes, but only as long as you …”
-
-+ Many business advantages to copyleft...
-
-# The Technical Gap
-
-+ Understanding GPL well requires a some software expertise & legal
- expertise.
-
-+ You don't have to be a professional on either side to grok it.
- + but you're best off if you're a professional in one & an amateur
- in the other.
-
-+ Most important technical concepts you need:
- + source code, binaries, methods of distribution.
-
-# Modification As a Center Provision
-
-+ GPL's primary copyright hook is copyright controls on the right to modify.
-
-+ GPL's central tenant:
-
-+ You can make a modified version of various types privately as much as you'd like.
-
-+ When you distribute that modified version, you have requirements to meet.
-
-+ Technological considerations dictate necessity of more complex rules for
-certain types of modifications.
-
-# GPLv2 § 2(a-b)
-
-
-[GPLv2§]2. You may modify your copy or copies of the Program or any
-portion of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1 above,
-provided that you also meet all of these conditions:
-
-
-a) You must cause the modified files to carry prominent notices stating
-that you changed the files and the date of any change.
-
-
-b) You must cause any work that you distribute or publish, that in
-whole or in part contains or is derived from the Program or any
-part thereof, to be licensed as a whole at no charge to all third
-parties under the terms of this License.
-
-
-
-# GPLv3§5(a-c)
-
-
-
-You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-
-a) The work must carry prominent notices stating that you modified it, and
-giving a relevant date.
-
-
-b) The work must carry prominent notices stating that it is released under
-this License and any conditions added under section 7. This requirement
-modifies the requirement in section 4 to "keep intact all notices".
-
-
-c) You must license the entire work, as a whole, under this License to anyone
-who comes into possession of a copy. This License will therefore apply,
-along with any applicable section 7 additional terms, to the whole of the
-work, and all its parts, regardless of how they are packaged. This License
-gives no permission to license the work in any other way, but it does not
-invalidate such permission if you have separately received it.
-
-
-
-# GPLv2§2¶ penultimates
-
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-
-Thus, it is not the intent of this section 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 based on the Program.
-
-
-
-
-# GPLv3 §0 ¶1-5
-
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
-
-To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-
-# Binaries (Object Code) are Modifications
-
-+ Software that the computer understands is different than software humans
- read.
-
-+ There is often a process required to modify (and/or translate) the software
- from human-readable
- + This process can be done ahead of time.
-
-+ Separation of source and binary was the first way proprietary software
- companies discovered to subjugate users.
- + GPL uses the fact that binaries are modifications (which are often
- distribution) to prevent that subjugation.
-
-# GPLv2 § 3(a-b)
-
-
-
-
[GPLv2§]3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-
-a) Accompany it with the complete corresponding machine-readable
-source code, which must be distributed under the terms of Sections
-1 and 2 above on a medium customarily used for software interchange; or,
-
-
-b) Accompany it with a written offer, valid for at least three
-years, to give any third party, for a charge no more than your
-cost of physically performing source distribution, a complete
-machine-readable copy of the corresponding source code, to be
-distributed under the terms of Sections 1 and 2 above on a medium
-customarily used for software interchange;
-
-
-
-# GPLv3 § 6(a-b)
-
-
-
-[GPLv3 § ] 6. Conveying Non-Source Forms.
-
-
-You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-
-a) Convey the object code in, or embodied in, a physical product
-(including a physical distribution medium), accompanied by the
-Corresponding Source fixed on a durable physical medium
-customarily used for software interchange.
-
-
-b) Convey the object code in, or embodied in, a physical product
-(including a physical distribution medium), accompanied by a
-written offer, valid for at least three years and valid for as
-long as you offer spare parts or customer support for that product
-model, to give anyone who possesses the object code either (1) a
-copy of the Corresponding Source for all the software in the
-product that is covered by this License, on a durable physical
-medium customarily used for software interchange, for a price no
-more than your reasonable cost of physically performing this
-conveying of source, or (2) access to copy the
-Corresponding Source from a network server at no charge.
-
-
-
-# GPLv3 § 1 ¶ 1, 4-6
-
-
-
-The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
-
-The "Corresponding Source" for a work in object code form means all the
-source code needed to generate, install, and (for an executable work) run the
-object code and to modify the work, including scripts to control those
-activities. However, it does not include the work's System Libraries, or
-general-purpose tools or generally available free programs which are used
-unmodified in performing those activities but which are not part of the work.
-For example, Corresponding Source includes interface definition files
-associated with source files for the work, and the source code for shared
-libraries and dynamically linked subprograms that the work is specifically
-designed to require, such as by intimate data communication or control flow
-between those subprograms and other parts of the work.
-
-
-The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-
-The Corresponding Source for a work in source code form is that
-same work.
-
-
-
# What's a GPL Violation?
+ GPL (both v2 and v3) require:
@@ -447,319 +117,10 @@ same work.
+ The worst I've ever experienced is 22 rounds.
+ We send detailed reports.
-
-# No Build Instructions
-
-
- The primary issues we found were a dearth of build instructions as well
- as a complete lack of installation instructions. There was no
- information that mentioned how one might build each package so we had to
- guess about which Makefile and/or build script to run for each package.
- And in many cases it was not possible or straight-forward to build - this
- must be resolved in the next source candidate.
-
-# Making General Recommendations
-
-
- We generally recommend that the source release be a single file (ie. one
- tarball containing all packages required for the build) that includes a
- README or similar in the main directory explaining exactly how to build
- and install all of the packages. See section 21.2 of
- http://compliance.guide/pristine-example for an excellent example.
-
-# Suspicious, But Not Captious.
-
-
- Also, we noticed that some packages mentioned in the "OPEN SOURCE
- SOFTWARE NOTICE" included with the device (and also downloaded as part of
- the source release; see
- Open_Source_Software_Notice_and_Privacy_Policy.pdf ) could not be found
- in the source release. For example, we found "Software: Samba 3.0.XX" in
- the notice, but could not find any trace of Samba in the source release.
- Please ensure that all the software included in the notice is included in
- the source release as well.
-
-# Nesting Doll Packages
-
-
-
- Once extracted, the 3 .rar files above produce the following output
- files:
- * busybox-1.21.1.rar
- * AB_A0101.123.tar.gz
- * source.rar
- * a small text file that gives two-word descriptions of the above files
-
-
-# Actual(ly Trying to) Build
-
-
-
- This file included no instructions for how one might build it so we
- tried to run "make" but received the following error:
-
- $ make
- .../busybox-1.21.1/scripts/gcc-version.sh: line 11:
- arm-none-linux-gnueabi-gcc: command not found
-
-# Toolchain?
-
-+ The toolchain is rarely considered mandatory as part of “the
- scripts”.
-
-+ Admittedly, it doesn't *control* compilation, it *is* compilation.
-
-+ The script here is explaining precisely what type of toolchain is needed.
-
-+ Something like: “GCC vX built with the following ./configure
- line” is usually adequate.
-
-+ But including the toolchain is a nice step to make it easy for your users.
-
-
-> the scripts used to **control compilation** and installation of the executable.
-
-
-— GPLv2§3
-
-
-
-# We Guess at Compiler Anyway
-
-
- So we searched for an arm-none-linux-gnueabi- cross-compiler in the
- other files but could not find one. We then tried to use our own (be
- editing the PATH appropriately), which did get us past this error. Note
- that this is not acceptable in a source release - the cross-compiler
- that a user must use needs to be clearly indicated (name, version, etc.)
- and/or included with the source release.
-
-# Feedback on Small Problems
-
-
-
- Once we had the custom cross-compiler configured, we then ran into these
- errors:
-
- $ make
- .../busybox-1.21.1/scripts/gen_build_files.sh: Permission denied
- make: *** [gen_build_files] Error 127
-
- $ make
- .../busybox-1.21.1/scripts/mkconfigs: Permission denied
- make: *** [include/config/MARKER] Error 126
-
- $ make
- /bin/sh: applets/usage_compressed: Permission denied
- make[1]: *** [include/usage_compressed.h] Error 126
- make: *** [applets_dir] Error 2
-
- $ make
- .../busybox-1.21.1/scripts/trylink: Permission denied
- make: *** [busybox_unstripped] Error 126
-
- In each case, we found the mentioned file and then added executable
- permissions to it (ie. "chmod u+x scripts/gen_build_files.sh"). This
- must be fixed in the next source release - please set the executable
- bits on the above files appropriately in the archive file you
- distribute.
-
-# Install Instructions missing
-
-
- After fixing the above, a "busybox" binary was generated. However,
- there were no instructions to indicate how one might install this binary
- on the device. Such instructions are required by GPLv2, under which
- BusyBox is licensed. Please include the instructions in your next
- source release.
-
-# Build "Only Seems" To build
-
-
- For the AAB_A0101.123.tar.gz package, we ran "./build.sh", the build
- took about 140 seconds, which is less than one would expect for building
- all of the programs listed in the "OPEN SOURCE SOFTWARE NOTICE". The
- only files we could immediately find that were clearly the result of
- this "./build.sh" invocation were some kernel image binaries, found in
- path/path/path/path/path/KERNEL_OBJ . This path was not mentioned at
- all and we had to guess at where they might be.
-
-# Maybe Proprietary Kernel Modules?
-
-
- Furthermore, there were no .ko files generated, which is abnormal for a
- build of the kernel, Linux. Please ensure that all .ko files which are
- used on the system are generated with "./build.sh" or a similar script.
-
-# Weird versioning
-
-
-
- * The following libraries have different versions in the firmware than
- is built from the candidate CCS. Specifically, your candidate CCS
- contains version "1800", and the firmware has version "2400". Since
- most of these libraries are licensed under the LGPL, you are required
- to have the complete, corresponding source present for the correct
- version as distributed in the firmware. You also must include the
- "scripts to control compilation and installation of the executable".
-
- * lib/libgio-2.0.so.0.2400.2
- * lib/libglib-2.0.so.0.2400.2
- * lib/libgmodule-2.0.so.0.2400.2
- * lib/libgobject-2.0.so.0.2400.2
- * lib/libgthread-2.0.so.0.2400.2
- * lib/libz.so.1.2.5 (version 1.2.2 is provided in the sources)
-
-# Weird Build Issues Over Many Candidates
-
-
- You mentioned in your Round 6 commentary that you have corrected the
- thatlib issues. However, we are unable to see what you mean. There are
- now two copies of thatlib, one in 2624.7_524/uclinux-rootfs/lib/thatlib/,
- as well as the one in yourlibs. We aren't sure which one you intend to
- be built to generate the binaries on the firmware. When we try to build
- the yourlibs one from scratch, by cleaning the whole area, we get the
- following build issues. Here's what we did:
-
-# Getting Really build-technical
-
-
-
- We ran:
-
- make -C libsrc/thatlib install
-
- which did not work because of a missing Makefile error. We read the
- build source and discovered that the Makefile, etc, for that directory
- is generated by running:
-
- cd libsrc/thatlib/thatlib-0.9.22_mipsel-uclibc; sh configure_thatlib_mipsel-uclibc
-
- Once we did that
-
- make -C libsrc/thatlib install
-
- worked correctly. The only remaining binaries were in build source and
- discovered that the Makefile, etc, for that directory is generated by
- running:
-
- cd libsrc/thatlib/thatlib-0.9.22_mipsel-uclibc; sh configure_thatlib_mipsel-uclibc
-
-# Getting Really build-technical
-
-
-
- Once we did that
-
- make -C libsrc/thatlib install
-
- worked correctly. The only remaining binaries were in
- ./libsrc/thatlib/\{YOURLIB_ROOT_DIR\}/ which looks like a build with a
- misconfigured environment somehow, so we simply removed that
- directory.
-
- Then, after running make clean, thatlib failed with the following
- errors. Random .o/.so files laying around in the thatlib source
- directory, and then it failing to build correctly after they are
- removed. If there some set of .so files you claim are not required
- as part of the C&CS since thatlib is LGPL'd, we understand that, but
- the rest of the sources must build and install those other .so's.
- Here's the build error we get in the bdvdlibs version:
-
-# Getting Really build-technical
-
-
-
- mkdir .libs/libthatlibwm_default.a.tmp
- (cd .libs/libthatlibwm_default.a.tmp && ar x ../../.libs/libthatlibwm_default.a)
- mkdir .libs/libthatlibwm_default.a.tmp
- (cd .libs/libthatlibwm_default.a.tmp && ar x ../../.libs/libthatlibwm_default.a)
- /opt/toolchains/crosstools_sf-linux-2.6.18.0_gcc-4.2-9ts_uclibc-nptl-0.9.29-20070423_20080702/bin//mipsel-uclibc-
- ld -o libthatlibwm_default.o -r .libs/libthatlibwm_default.a.tmp/*.o
- /opt/toolchains/crosstools_sf-linux-2.6.18.0_gcc-4.2-9ts_uclibc-nptl-0.9.29-20070423_20080702/bin//mipsel-uclibc-
- ld: .libs/libthatlibwm_default.a.tmp/default.o: Relocations in generic ELF (EM: 3)
- /opt/toolchains/crosstools_sf-linux-2.6.18.0_gcc-4.2-9ts_uclibc-nptl-0.9.29-20070423_20080702/bin//mipsel-uclibc-
- ld: .libs/libthatlibwm_default.a.tmp/default.o: Relocations in generic ELF (EM: 3)
- /opt/toolchains/crosstools_sf-linux-2.6.18.0_gcc-4.2-9ts_uclibc-nptl-0.9.29-20070423_20080702/bin//mipsel-uclibc-
- ld: .libs/libthatlibwm_default.a.tmp/default.o: Relocations in generic ELF (EM: 3)
- /opt/toolchains/crosstools_sf-linux-2.6.18.0_gcc-4.2-9ts_uclibc-nptl-0.9.29-20070423_20080702/bin//mipsel-uclibc-
- ld: .libs/libthatlibwm_default.a.tmp/default.o: Relocations in generic ELF (EM: 3)
- .libs/libthatlibwm_default.a.tmp/default.o: could not read symbols: File in wrong format
- make[4]: *** [libthatlibwm_default.o] Error 1
-
-# Proprietary Linux Modules Are Everywhere
-
-
- We did find one .ko file that was already included in the package, but
- wasn't built when we ran "./build.sh". This is
- path/path/android_X.X/device/device-type/mydevice.ko , which notes that
- its license is "GPL v2" in the modinfo, but for which we could find no
- source code in the source release. Please ensure that the source code
- for mydevice.ko is included in the next source candidate.
-
-# Proprietary Linux Modules Are Everywhere
-
-
-
- * The following files are derivative of the kernel named Linux and
- therefore covered by the GPL. However, no source code, scripts to
- control compilation nor installation are included in your CCS
- candidate:
- lib/modules/myfilesystem.ko
- lib/modules/mydevicecontroller.ko
- lib/modules/myblockdevice.ko
- lib/modules/mypcicard.ko
-
-# Non-Technical GPL Compliance Issues
-
-
- Regarding over the air updates: we'd like to see a screenshot or other
- details documenting what has now been implemented by BestBuy to make
- sure the offer for source appears to users appropriately after
- upgrade. There was a consensus reached on the last conference call
- how this would be done, so we only need follow up and implementation
- on that.
-
-
-# Binary Comparison.
-
-
-
- Note that we did not receive a firmware image to compare this with
- (though we do have the device). Company's website did not appear to
- have any firmware images available for download. It would be helpful to
- have such an image for the next CCS check.
-
- The above source candidate was downloaded from
- http:///sourcez.company.com/en/search/index.htm?keywords=X1234Y, which
- was alluded to in Company's 2017-01-18 email to us that said:
-
- "You can check this website
- http://sourcez.company.com/en/search/index.htm "
-
- The email did not mention how to use that website, but we found that by
- entering "X1234Y" into the top right search box that we could find the
- source file list.
-
- Note that the offer for source included in the web UI of the device said
- to email NAME@COMPANY.com , which is how the above instructions for
- downloading the source were received.
-
-
-
-
# More Info / Talk License
-+ URLs / Social Networking / Email:
- - Pls. support Conservancy: [sfconservancy.org/supporter/](https://sfconservancy.org/supporter/)
- - If you hold copyrights in Linux, Debian, Samba, or BusyBox, you can
- join our enforcement coalition. [Contact us!](https://sfconservancy.org/linux-compliance/about.html)
- - [*The Guide*](https://copyleft.org/guide) is available & [welcomes contributions at copyleft.org](https://copyleft.org).
- - Conservancy: [sfconservancy.org](https://sfconservancy.org/) & [@conservancy](https://twitter.com/conservancy/).
- - Me: [faif.us](http://faif.us) & [ebb.org/bkuhn](http://ebb.org/bkuhn)
- - Slides: [ebb.org/bkuhn/talks](http://ebb.org/bkuhn/talks/ELC-2015/pristine-example.html).
Presentation and slides are: Copyright © Bradley M. Kuhn (2008–2011, 2015, 2017), Karen M. Sandler (2017), and are licensed under the Creative Commons Attribution-Share Alike 4.0 International License.