Home       About Me       Contact       Downloads       Part 32    Part 34   

Part 33: Taking Contributions

September 15, 2011

Some of the comments on the blog are about working with other people. Why don't I use more libraries, why don't I get some volunteers to help out, why must I do everything myself?

I really enjoy programming, otherwise I would never take on a project this large. So asking me why I want to write all this code is like asking a chef why they want to make all this tasty food, when you could just go out and buy it.

I'm also trying to learn things about graphics programming and game programming. You don't really learn something unless you try to do it yourself. Using a big multi-platform library or an existing game engine wouldn't teach me much.

Then there's the problem of debugging. Things go wrong and you need to isolate the problem down to a particular piece of code. It helps enormously if you've written it all yourself. If other people are working in the same area, it's practically impossible to know whether the bug was caused by the thing you just changed, or by someone else's change. It also helps that I know my own style and the kinds of mistakes I tend to make.

I'm also a difficult person to work with. Especially now that my health stinks, I have very erratic work habits, doing nothing for a day or two, then working late at night (it's 3:30AM as I write this.) More of a problem is that when I decide something is wrong with the code, I'm brutal about just rewriting it. This means important interfaces and classes can squirm around quite a bit until I'm happy with them. I also tend to keep several subprojects going at once, switching between them when I get stuck or bored. All of this is a nightmare for other people to deal with.

Finally, there are these intellectual property issues which have become more and more of a problem over the last twenty years or so.

Afraid of the Law

From what I read on blogs like TechDirt, patent, copyright and trademark law is an incomprehensible mess pretty much everywhere in the world. As the various publishing companies in music, movies, TV, books, magazines and newspapers all come under pressure from the internet, they are striking back by suing everyone and lobbying to change the law in their favor. On top of that, patent-holding (as opposed to product development) is now a big business. There are a few ways that affects this project.

If I take work contributed by other people, what about the rights?

At this point, that sounds like a silly thing to worry about. This is a hobby project, I'm not even interested in making it a commercial product, and it has no users. But suppose that Notch had taken a big piece of someone else's code when writing Minecraft. After making $30 million or so on it, don't you think lawsuits would be coming out of the woodwork now?

This is not a case of me being anal about ownership. I certainly don't object to open source. If you've downloaded the source, you'll see the copyright I put on it:

  Copyright (C) 1995-2011 by Michael J. Goodfellow

This source code is distributed for free and may be modified, redistributed, and incorporated in other projects (commercial, non-commercial and open-source) without restriction. No attribution to the author is required. There is no requirement to make the source code available (no share-alike required.)

This source code is distributed "AS IS", with no warranty expressed or implied. The user assumes all risks related to quality, accuracy and fitness of use.

Except where noted, this source code is the sole work of the author, but it has not been checked for any intellectual property infringements such as copyrights, trademarks or patents. The user assumes all legal risks. The original version may be found at "http://www.sea-of-memes.com". The author is not responsible for subsequent alterations.

Retain this copyright notice and add your own copyrights and revisions above this notice.

I would put this code in the public domain if I could. From what I've read though, there's some doubt about whether it's even possible to do that in the U.S. now. Apparently you can always change your mind about copyrights, so for a user of my code, the "public domain" designation might not stick. Even if I die, my hiers have rights, for 70 years after my death!

Creative Commons has created the "CC-0" license, but introduce it with this description of "The Problem":

  Dedicating works to the public domain is difficult if not impossible for those wanting to contribute their works for public use before applicable copyright or database protection terms expire. Few if any jurisdictions have a process for doing so easily and reliably. Laws vary from jurisdiction to jurisdiction as to what rights are automatically granted and how and when they expire or may be voluntarily relinquished. More challenging yet, many legal systems effectively prohibit any attempt by these owners to surrender rights automatically conferred by law, particularly moral rights, even when the author wishing to do so is well informed and resolute about doing so and contributing their work to the public domain.

I could have used the CC-0 license or one of the popular open source licenses. In the end, when I read them over, there was a lot of legalese I didn't understand. I also didn't really want to restrict the code to non-commercial use. I have no problem with someone making money off of this. So I put together a simple statement of what I wanted to do and used that.

That's probably a mistake, since nothing in the law is simple, and the plain meaning of a piece of text seems to have nothing to do with its legal interpretation. But I'd rather defend something I wrote that says what I mean than use some huge tract of legalese that I don't understand at all.

There are practical issues as well. I can't make any money on this without losing my disability status. And there's no point in asserting legal rights when you have no money to hire a lawyer. With these copyright issues, rights are only worth something if you can afford to defend them, and I can't.

File Sharing

I intend to write an MMO, and in that world, you'll be able to do programming, so that users can extend the game. I might not get that far, but if I do, there's an obvious application that people will write -- peer to peer file sharing.

I don't intend to write that application, since it's legal poison, but I can't stop people from writing it either. To implement an extensible P2P world, you have to be able to add graphics, sound and code and get them distributed to anyone who enters your part of the world. There's no clean dividing line between that and moving bootleg files around. Since the system is peer to peer, it will effectively be anonymous (no central point like YouTube to monitor) and out of my control.

You could certainly argue that I have no liability in this situation. I would claim that I'm like a CB-radio maker, who has no liability when people use the radio to broadcast copyrighted music. On the other hand, Internet Service Providers have some designated safe harbors in the law, if they respond to take-down notices and so on. I doubt any of that applies to me. If it never takes off as a game world, but does become the next Napster, am I liable? BitTorrent has avoided any legal trouble, so I'm hopeful that I will too.

Patents

I have one patent from when I worked at IBM Research. Another company I contracted for wanted me to sign a patent application, but I wrote several pages on why the idea wasn't patentable and sent it back. I don't intend to use anyone's patented algorithms in this project. But of course, it's not that simple.

Apple is apparently suing Samsung over similarities between their product and the iPad. The press articles I've read about it mention things as simple as the "slide to unlock" message the iPad (and apparent the Galaxy Tab) display for the user. If patents can cover this, they can cover anything.

Again, from what I read, there's no point in someone like me trying to defend against a patent lawsuit. Apparently the average spending is over a million dollars per patent claim, on each side of the case. I don't have enough money to get a lawyer to even write me a "go away" letter. So that part of the legal system is just a random hole that can open up under this project and kill it without warning or recourse.

I have read things that seem to make a distinction between the source code and binary files. Source code is of course text, and there are strong First Amendment rights to distribute text. The binaries on the other hand, seem to be put in the category of machine or tangible product. I have wondered if the law really makes this distinction and if I can use it.

For example, I could distribute a little compiler, which is clearly not an infringing piece of code, and then a big collection of source files as text. You would download them both, compile the game and run it. If the law treats the text as speech, perhaps this is a way to get the protections of speech for my program. But I can't afford a lawyer to ask this question, and I suspect the answer is "Who knows? Get sued, pay us a lot of money, and we'll find out."

My only real defense against any kind of legal action is 1) this is a non-commercial hobby project, and 2) I have no money to give anyone suing me. I think that's called "judgement proof." I suppose they can seize my van and computers.

The Bottom Line

The bottom line here is my motivation. I wrote hundreds of thousands of lines of code in my career. Most of it eventually ended up in the trash, because it was part of a larger project that never went anywhere, or management changed directions, the company went bankrupt, or it was a personal project I just couldn't finish.

My goal with this project is to finally do something people use. Charging for the product or restricting use of the source code will only get in the way of that. Incorporating source from other people might risk the thing getting tangled up in ownership fights. And if I do finish the whole thing and end up with some file-sharing system instead of a game, most people are not going to want to have any legal connection to the thing anyway!

So I don't expect to take much code from other people. I hope they will take my code and do neat things with it. Tell me if you have any use for it! I'll even give you advice and other help.

I would take artwork or music from other people. I can't see much legal risk on that. If someone changes their mind or doesn't really have the rights to the art they sent me, I can pull it all out without changing any of the code. And contributing art to a project shouldn't put the artist at any legal risk if I am sued.

Status

I continued to work on the Minecraft view code this week. It turns out that my new version gets transparency wrong somehow. I'm hoping this is a stupid bug and does not require a rewrite. It's also still doing very odd things on the Mac whenever I use multiple threads. I suspect that either pthread doesn't work the way I think it does, or doesn't work the same way on the Mac as on Linux (where the program runs fine.)

Mostly I've ignored all that and concentrated on doing all the Minecraft brick types, including things that require non-cube shapes such as stairs, plants, rails, ladders, etc. I'll post a new part with demos and source code when I get all that stable.

Home       About Me       Contact       Downloads       Part 32    Part 34   

blog comments powered by Disqus