Monthly Archive for January, 2010
Consider, if you will, the problem of a virtual world whose participants retain intellectual property rights over their creations. How can such a world keep its residents honest in their dealings? How can people do business in a space where copying someone’s property is trivial?
To illustrate the problem, let’s imagine a virtual world in which Alice, Bob, Eve, and Charlie are participants.
Alice is a content creator. She designs objects that people might like to decorate their worlds with. She works hard at it, and feels she deserves to get paid for her work, so she sets up a store in her world that sells the objects for her. The store accepts micropayments from a major online payment processing service and delivers a copy of the object to the purchaser in return.
Now let’s meet Bob. Bob is a musician. He does live streamed concerts in his world and needs some high-quality decorations to wow his fans. His friend Charlie tells him that Alice has designed some awesome stage lights that would really spice up the performances. Bob goes to Alice’s world and buys a set of the lights. Alice makes a few bucks, and Bob has new lights for his stage. All is well with the (virtual) world.
But now Eve enters the picture. Eve doesn’t care about Alice’s intellectual property rights. Maybe she disagrees with them on philosophical grounds, or maybe she’s just broke but still wants stage lights. Either way, she decides she just has to have a copy of those lights. Now, most world browsers prevent people from copying other people’s stuff in the UI, but that’s just to keep honest people honest. There’s no way for the object not to get downloaded to Eve’s computer. How else is it going to be rendered when she gets to Bob’s concert? Eve sees those lights at Bob’s next concert and, talented coder that she is, simply copies the object right out of her cache and into the directory where her own objects are kept. She places the lights in her own world, and since Alice doesn’t keep careful track of who has bought her lights, there’s no way to know anything is amiss.
The solution to this problem is quite simple. Let’s re-imagine the situation with the following modifications:
Each user is assigned a unique cryptographic keypair for security reasons: They use these keys to log into the system securely. It’s exactly the same security used by banks to secure transactions and by secure software distribution channels to sign packages that have been vetted to be free of malware.
Whenever a user creates a new object, it is signed with his or her private key. The user’s public key is kept on file by the registrar and used to verify objects. What the signature contains is the owner of the object, their basic rights (whether the object is allowed to be copied or modified, used in derivative works, etc.), an optional license reference to specify what licensing the object is provided under, the creator of the object, and other information that is to be protected from forgery.
Now, when Bob buys a copy of Alice’s lights, he gets a set of lights that says that Bob is the owner and is signed by Alice’s private key. In essence, this is a license provided by Alice to Bob describing the agreement under which the object was furnished. The server can then check that when Bob places an object in his world, it really belongs to him. And even if Bob were to maliciously modify his server to disregard the discrepancy, other users connected to Bob’s world would be able to see it (since there’s no way for the server to show a certificate deeding the object to Bob if no such certificate exists – Alice’s private key guarantees that.
Now when Eve goes to copy Bob’s lights, she has a problem. If she copies the lights without changing them, she’ll have a set of lights that says “property of Bob.” Clients connecting to her server would be able to recognize the discrepancy and Alice would have solid evidence to invoke a DMCA takedown if she so desired. Everyone would know Eve had stolen the lights – and perhaps even worse, they would know from whom she had stolen them.
Eve could copy it and strip the signature, then resign it under her own name, saying “property of Eve,” but then anyone who saw the lights in her world would see that Eve had supposedly created it, and so anyone who recognized they were actually Alice’s design would know of the fraud.
Of course, this system is not perfect. It’s simply not possible for such a system to be perfect. Even if the graphics were rendered on a server somewhere and streamed to clients so that the object data never had to be sent to the client, anyone determined to steal content could take images of the object from various angles and reconstruct it using computer vision software like CCV. Sure, it would be harder, but the performance penalties would outweigh those gains completely.
Not to mention, someone would be paying an awful lot for their super beefy server rendering graphics for every user. What a mess.
One further addition must be made to handle open content, so let’s consider Charlie. Charlie’s a big believer in open licenses. He uses an open-source operating system, writes a column under a Creative Commons license, and generally dislikes DRM and such. So when Charlie finishes a desk he’s worked hard on and wants to share it with the world, he simply places a copy in his world and deeds it to *, a special reference that indicates that the object belongs to everyone, and anyone can then copy it and place it in their own worlds.
Note: it is important to realize that servers still keep track of who placed what in the world. This is to prevent (at the world owner’s discretion, of course) people from moving objects placed by other people. This dialogue has been concerned with the asset itself. When a copy of it is placed in a world, that is more accurately called an “instance” of that asset, just as the desk you are probably sitting at right now is not desk. It is not the concept of desk. It is a particular desk, with its own set of unique traits (where it is, whether it is clean, what is on it, etc.)
An asset is the combination of a copy of the object data and a license for it. An instance of an asset is the combination of a reference to the asset and a set of information particular to the instance – who placed it, where it is, which direction it is facing, etc.
I think I’d very much like to build a world on these principles and others, but I’m starting to realize that I just don’t have that kind of free time.
I’ve been doodling a lot more ambigrams lately. I would love to find a good design for a Delgar logo, and I think this is pretty good, but it still needs some work. It took a while to get the E/G looking good, but the D/AR still needs a little tweaking and the L needs lots of help before it’ll satisfy me:
It’s not a bad start, though. I should get those oddities smoothed away soon.
What do we think?
Last night I was looking at ambigrams, which are typographical creations which can be read multiple ways. The most common form is one which looks the same after a 180 degree rotation. I decided to mess around a bit with it, and came up with this, inspired by the Abbadon font:
It could use some polish, but it’s quite readable as “QA” from either perspective. It’s a good symbol for a profession so often turned on its head.
I think I’m going to make more of these.
Is it right?
Is it time?
Kiss goodnight
Why does it feel like I’ve known you for half my life
And you’re just meeting me?
Is it safe?
Is it cold?
Are we rushing things?
Or are we already too old?
Seems like my life’s been twisted in ways I can’t describe
Feels like we’re looking for something we can’t find.
Is it even there?
Was it ever there at all?
You think that you can save me?
You think that you can save me?
Maybe it’s not right
Or maybe it’s not time
Or maybe that’s not why
Or maybe I’m just dyin’ to give up
Maybe I’ve just had enough
I don’t know if you believe
But I believe that you know what I mean
I don’t much care about your wasted fears
And I don’t much care about your wasted tears
And every stupid sappy song sung in secret…
You think you can save me.
But you can’t even save yourself
(No you can’t even save yourself)
Maybe it’s not right
Or maybe it’s not time
Or maybe that’s not why
Or maybe I’m just dyin’ to give up
Maybe I’ve just had enough
I don’t know if you believe
But I believe that you know what I mean
[Instrumental]
You know what I mean to you
And I know what it means to me.
But we’re just lookin’ for different things… I guess.
Different things.
Different things.
Copyright (c) 2010 Katie Molnar
Licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 license
(CC) BY-NC-SA
Firefox is a fantastic web browser. It’s fast, secure, and customizable. Unfortunately, by default Firefox wastes an awful lot of space with its prodigious amounts of chrome. Each piece can be conquered, though. That’s what I’ve set out to accomplish in this, the first (and probably last) edition of a series I’m calling “TweakerFox” in which I’ll bring you cool Firefox extensions, or something!
First off, the status bar. The status bar is easy. Just uncheck “Status bar” from the View menu. Want something more elegant? There are some status bar auto-hide extensions available, but I don’t really care for any of them. YMMV, of course.
Now that that’s gone, let’s address the bookmark bar. There’s an extension called “Bookmark Autohider” that does the job just fine. I highly recommend disabling the hide animation if you’re using these tweaks on a netbook, though, as it can be rather slow and unpleasant. Anyway. Properly configured, this extension will hide the bookmark bar until you mouse over the Location bar. One nice side affect of this design is you won’t trigger it by accident when using the other navigation controls.
Next up, the tab bar. If you don’t see any good reason for the tab bar to stick around when you’re not clicking on tabs, take a look at the aptly named “Hide Tabbar” extension. It can be configured to respond to key combinations or to auto-hide, which is what I prefer. Check the preferences for delay configuration and what not.
Last, but not least (annoying), is the menu bar. I, for one, almost never use the darned thing. “Hide Menubar” is one extension which will get it out of your life until you summon it with the Alt key. If you prefer something different, there are quire a few options including one which puts all the menu items under one button which you can then stick off to the side of the navigation bar a la Google Chrome.
There you have it! We have bit-by-bit reduced Firefox to a single navigation bar. I suppose we could get rid of that too, but then we’re probably starting to sacrifice too much functionality. I would like to make an extension that does all of this in one go, auto-hiding the entire top panel until the mouse moves up there, but it turns out triggering things off the window frame doesn’t work too well, so instead of having a blank area to mouse into, it might as well just be the navigation bar.
I hope this has inspired you to trim some fat off your browser!
Stay tuned for the next edition (yeah right) of TweakerFox!

