Copy protection: users vs. developers

ChrisDolan on 2009-07-04T18:12:41

A few weeks ago, LWN ran an article about the Okular PDF viewer which enforces copy protection as specified in the PDF specification. The LWN editor and several commenters complained about this restriction to their freedom. I have three comments on that topic:

1) As a PDF implementor myself, I chose to implement the PDF copy protection features just as Okular did. I did this because Adobe's license agreement to download the spec insisted that I do not willfully violate the spec. I agreed to those terms and so I have ignored all requests to disable said protection in my own library.

2) It's open source. Anybody can trivially turn off the copy protection and recompile (my library is Perl, so you don't even need to recompile). If they do, then they can bear the responsibility for violating the spec.

3) Do you ever hear people complaining about permissions in the tar file utility? Even GNU tar implements file access controls as specified in the tar file. If I untar a file which is -r--r--r-- or even ---x--x--x, is that a violation of my rights? I say not. It's a minor inconvenience at worst and an excellent safety precaution at best. Nobody's beating a drum to remove copy protection features from tar.

The copy protection worth fighting against is the kind that can take away your current rights at some unspecified future time (like what happened when Google Video or Walmart music shut down their DRM servers)


un-broken?

educated_foo on 2009-07-05T02:26:06

Note that I haven't downloaded Adobe's click-through EULA, but there's at least a chance it might un-break the module. Note that it does nothing about encryption.

diff --git a/lib/CAM/PDF.pm b/lib/CAM/PDF.pm
index b362280..ef0343f 100644
--- a/lib/CAM/PDF.pm
+++ b/lib/CAM/PDF.pm
@@ -2677,6 +2677,7 @@ on the PDF.

  sub canPrint
  {
+ return 1;
        my $self = shift;
        return ($self->getPrefs())[$PREF_PRINT];
  }
@@ -2690,6 +2691,7 @@ on the PDF.

  sub canModify
  {
+ return 1;
        my $self = shift;
        return ($self->getPrefs())[$PREF_MODIFY];
  }
@@ -2703,6 +2705,7 @@ on the PDF.

  sub canCopy
  {
+ return 1;
        my $self = shift;
        return ($self->getPrefs())[$PREF_COPY];
  }
@@ -2716,6 +2719,7 @@ on the PDF.

  sub canAdd
  {
+ return 1;
        my $self = shift;
        return ($self->getPrefs())[$PREF_ADD];
  }

Re:un-broken?

ChrisDolan on 2009-07-05T04:15:46

Oh, bravo. Your 1334 skillz amaze us all.

Re:un-broken?

educated_foo on 2009-07-05T15:38:49

It wasn't my goal, but hey, I always like having my ego stroked. However, I don't like annoying make-work restrictions in software. If you make me re-type excerpts instead of copy and pasting, or take screen captures instead of printing, you are just annoying me, not protecting your precious intellectual property. If you expect to send people a piece of text without letting them copy excerpts or print it out, you are an idiot.