I've written a model world in Ruby to illustrate some of the issues  
being discussed (see below or http://curi.us/code/piracy.html). The  
main thing it demonstrates is the difference between stealing and  
piracy/copying. (This is the longest Ruby program I've written. Any  
code style tips would be appreciated.)

Regarding releasing books in PDF format: Paper things are commonly  
scanned if there is demand for them. Manga and anime are translated  
to English every week by pirates. I don't think relying on the  
laziness of pirates will work well.

On May 15, 2006, at 5:51 PM, Keith Lancaster wrote:
> I cannot afford a Mercedes. I therefore have no plans to buy one.  
> Should
> I steal one? After all, nobody really gets hurt, do they?

The dealership is hurt by having one less car. See output below.

On May 15, 2006, at 6:45 PM, Jeremy Tregunna wrote:
>> who is harmed in the hypothetical case I described?
>
> The publisher, and as a result, the author; by not getting the  
> money for the book.

By this criterion (not getting money), the publisher and author are  
equally harmed by a person who does nothing and a pirate (see program).

If I'm not disrupting an author's future sales, I'm not harming him.  
And it has to be quite clear he would have gotten those sales, or he  
has no legal case. And even if he would have gotten sales, many ways  
to disrupt those sales are and should be legal, including telling  
people the book is terrible, writing a better book, and buying all  
bookstores worldwide and remodeling them to sell only coffee.

On May 15, 2006, at 7:39 PM, John Gabriele wrote:
> A writer works on their book based on the premise that they will be
> reimbursed for each copy, thus making it worth their while --
> otherwise they wouldn't bother writing it.

That isn't *really* the premise. The author needs to get paid, but  
there are many different payment models possible. The most obvious  
approach would be that anyone who reads the book owes the author  
money. This is very hard to enforce, so selling physical copies is  
commonly used instead. The physical copy approach has obvious  
loopholes to screw the author. For example, people trade books around  
so they can all read one copy. This way of screwing authors has been  
formalised as libraries and used book stores. In theory, the entire  
world could read a book that only sold one copy. And that'd be  
perfectly legal! But it doesn't happen. So the important thing is not  
what *could* happen, but whether in a given culture authors are, in  
fact, paid. Because, as you say, if they were not then many potential  
authors would not write their books.

# piracy.rb
# Elliot Temple
# 5/16/06

class Person
   attr_accessor :inventory
   def initialize
     @inventory = []
   end
   def steal store, item_name
     add_inventory store.delete_item!(item_name)
   end
   def copy store, item_name
     add_inventory store.copy_item(item_name)
   end
   def do_nothing
   end
   def add_inventory item
     @inventory << item if item
   end
end

class Item
   attr_accessor :name, :price
   def initialize name, price
     @name = name
     @price = price
   end
end

class Car < Item
end

class Book < Item
end

class Store
   def initialize items, noun, store_name
     @inventory = items
     @noun = noun
     @store_name = store_name
     @initial_inventory_value = inventory_value
     @initial_item_count = @inventory.length
   end
   def delete_item! item_name
     item = @inventory.find {|i| i.name == item_name}
     @inventory.delete item
   end
   def copy_item item_name
     @inventory.find {|i| i.name == item_name}
   end
   def inventory_value
     @inventory.inject(0) {|total, item| total + item.price}
   end
   def status_report
     puts "I am #{@store_name}. This is my status report:"
     puts "I began with #{@initial_item_count} #{@noun}s and now I  
have #{@inventory.length} #{@noun}s."
     puts "My #{@noun}s were worth $#{@initial_inventory_value}. Now  
they are worth $#{inventory_value}."
     if @initial_inventory_value < inventory_value
       puts "I made: $#{inventory_value - @initial_inventory_value}.  
I am happy"
     elsif @initial_inventory_value == inventory_value
       puts "I broke even. I am content."
     else
       puts "I lost: $#{@initial_inventory_value - inventory_value}.  
I am sad."
     end
   end
end

class CarDealership < Store
   def initialize store_name, cars
     super cars, "car", store_name
   end
end

class Bookstore < Store
   def initialize store_name, books
     super books, "book", store_name
   end
end

thief = Person.new
pirate = Person.new
philosopher = Person.new

dealership = CarDealership.new "Casandra's Crazy Cars", [Car.new 
(:Mercedes, 55000), Car.new(:Mercedes, 55000), Car.new(:Jeep, 19000)]

bookstore = Bookstore.new "Bob's Big Books", [Book.new 
(:The_Fabric_Of_Reality, 11), Book.new(:The_Selfish_Gene, 10),  
Book.new(:The_Machinery_Of_Freedom, 27)]

thief.steal(dealership, :Mercedes)
pirate.copy(bookstore, :The_Fabric_Of_Reality)
philosopher.do_nothing

dealership.status_report
puts
bookstore.status_report

# output
#
# I am Casandra's Crazy Cars. This is my status report:
# I began with 3 cars and now I have 2 cars.
# My cars were worth $129000. Now they are worth $74000.
# I lost: $55000. I am sad.
#
# I am Bob's Big Books. This is my status report:
# I began with 3 books and now I have 3 books.
# My books were worth $48. Now they are worth $48.
# I broke even. I am content.

-- Elliot Temple
http://www.curi.us/blog/