His position, I'm guessing, is that when a good has no natural scarcity (pictures and music in digital form, for example, or compiled code), society should not be creating an artificial scarcity in its stead (ie. compelling others not to reproduce it through force of law). He views the idea of this compelled scarcity to be, basically, rent-seeking behavior codified into law.
I'm not entirely sure, but I suspect the "you can't own" portion of his statement was a point of possession and direct control, not necessarily law.
exratione, please let me know if I'm misrepresenting your position here at all, and I'll correct my post. (I'm intentionally leaving out my opinion, just trying to clarify yours. :))
The thing is, most physical goods no longer have natural scarcity in rich western societies like the UK or US. A bottle of water is not at all scarce, but it's still illegal to take it from a store and use it without permission.
For any practical purpose, there is no limit on our supply of plastic bottles. They are incredibly cheap to make and the raw materials are incredibly abundant.
> Low-cost is not no-cost, and digital copies made by someone else are actually no-cost.
They're not actually no-cost, it's just that the costs are indirect so it's easy to lose track of them. For example, I'd be interested to see someone make and use a digital copy without a computer and electricity, both of which cost money. Distribution takes an Internet connection and servers, which cost money too.
>For any practical purpose, there is no limit on our supply of plastic bottles. They are incredibly cheap to make and the raw materials are incredibly abundant.
The raw resources for bottles are abundant, but it requires labor to make and transport them. Labor is not free, so bottled water remains scarce. If robot swarms will refill and restock bottles for you, then you can take one off a shelf.
>They're not actually no-cost, it's just that the costs are indirect
None of those come out of the pocket of the person being copied. I guess I was too unclear about specifying made by someone else. When we're talking about a '''theft''' scenario, the burden imposed on the person being '''stolen''' from is very important, and when it comes to digital copies they are uninvolved in the action and have no costs at all.
You're not playing fair with your comparisons. In the case of bottled water, you want to count all the costs of making the bottles, filling them, transporting, them, etc. In the case of digital content, you want to ignore the cost of producing the original, and focus only on the subsequent copies.
When you take a bottle of water, the cost of inventory (which captures the entirety of the amortized cost of production) is less than half of the harm to the shop keeper, because the markup on bottled water is well over 50%. The primary harm is the revenue the shop keeper will forego because he cannot sell that bottle.
In the digital realm, using a copyrighted piece of content without permission causes the copyright owner--who did have to invest in the original creation--to forego revenue as well.
>You're not playing fair with your comparisons. In the case of bottled water, you want to count all the costs of making the bottles, filling them, transporting, them, etc. In the case of digital content, you want to ignore the cost of producing the original, and focus only on the subsequent copies.
With bottled water, I want to count all the costs to the manufacturer of making a specific bottle: materials, wages, property taxes, equipment wear, etc.
With digital content, I want to count all the costs to the manufacturer of making a specific copy: none.
I'm not saying that unlimited copying of work is fair, I'm just saying that there is a qualitative difference in scarcity.
I don't really want to argue about what hurts more. I'll just point out that using nothing, or purchasing a license to work A, or purchasing a license to work B, can all be looked at as causing the creators of A and/or B to forego revenue.
There is no single manufacturer of digital content. In that respect, I agree that there is a qualitative difference.
The difference is that water bottle manufacturing is centralized, while digital content "manufacturing" is distributed--each person "manufactures" the digital content on their personal electronic device. That is, they use a device and energy that they paid for, to turn the IP into something that is physically consumable (sound, images, etc.)
So the concept of scarcity is different too, but it doesn't go away. There is still a physical cost to digital content, it's just unbundled from the act of creation.
You could not give infinite amounts of digital content to everyone on Earth, because you'd need to first give everyone an electronic device that can store and play it, the power to operate that device, and a means of digital distribution (network connectivity or shippable media). There are physical and cost limits on all of that.
Digital content only looks free and infinite if you ignore the required infrastructure.
But infrastructure is paid for separately. I'm ignoring the cost of the highways for water bottle shipping, because highways are needed with or without them.
Basically, since people already have computers and power for them to do things completely unrelated to getting this media, the 'cost' of a copy is in the same range as asking for one. Tap your phone against someone else's and you're done, for example. And if you think asking is a real cost then you've defined things so that it's impossible to be past scarcity, so I reject such a definition.
I tend to agree with your point, but apart from the obvious question of paying creators, there is another question: what do we do with scarce, intangible resources, like creators' reputations? Suppose we abolished copyright. Should a creator be able to prevent the WBC from using their creations in a way that might defame the creator, or to promote a cause that is highly offensive to the creator?
Just a quick note about the disassembly challenge he faced (indirect references), having gone through this before: you can get amazingly good results by cheating a bit. That is to say, rather than assuming you actually have to properly execute through the code path, you can get very close by roughly tracking register assignments when making your initial pass through a block of code. (Even better, if you can track potential ranges of values with later calls into a given block. Some of this depends on how you've implemented your disassembler, though.)
I ended up doing this with a SuperH disassembler (with SH2, due to its two-byte opcode layout, indirect addressing is the order of the day), and by doing basic register assignment tracking and adding a few crude heuristics, I was able to get very usable results. No, the end result won't be "pretty"; you'll be moderately embarrassed to show it off., but it will work. :)
(Heuristics: one structure that I had to manually handle were compiler-generated jump tables; thankfully, for my project, I'd had a bit of help from the compiler that was used, and there were distinct signatures I could key off of.)
If you're even remotely interested in the disassembly aspect of this, I'd recommend learning a bit about a piece of software called IDA Pro: https://www.hex-rays.com/products/ida/ As horrible as the UI of it is, there is simply nothing better on the market for reverse engineering analysis.
Second this. There are a lot of "signatures" in most asm. Programmers for 6502 and derivatives might be a nasty bunch of sadists that love to do weird stuff to save cycles, but even there there are lots and lots of common patterns that often "happened" just because people learned from the same sources, or because it made sense, or because conventions appeared.
I never had a NES, but I had a C64, and the 6502 code wrote there seemed nasty to translate on the surface, with lots and lots of self-modification, for example. But in the end most of the self modification was specific looping patterns because the 6502 can only index 256 values, and so many loops involved writing addresses into the looping code, iterate 256 times, increase the most significant byte directly in the code and see if you'd reached the end, and jump back to iterate 256 times.
Most of this "nasty" stuff is relatively well known by now and much of it is relatively regular and easy to detect.
Constant propagation is not really cheating though: it's a completely safe and accurate optimization. We use that in the PPC->X86 Jit of the Dolphin Emulator to reduce register pressure and use the fact that X86 instructions can have 32 bit constants (while PPC is usually limited to 16 bit consts, and 32 bit values are loaded with 2 instructions: lis/ori). If you implement it properly, you can actually brag about it :) (we have an abstract object that can be either an X86 register or a constant value, and instruction handlers handle these two cases differently - when they can't, the constant is loaded to a register).
+1 for IDA Pro. It's a shame this software is so expensive. The UI is actually pretty decent when you get used to it, and there are a ton of good plugins.
Agreed; for example, in our (in-house) use case, switching a django app from using either stdlib's json or simplejson to using ujson was a significant performance increase when serializing/deserializing large-ish (~100MB) JSON datasets.