From: Elliot Temple Date: 2006-05-17T07:58:31+09:00 Subject: Re: Ticked Off 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/