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 L. 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 T. 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 G. 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 T.
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 T.