Programmer code of honor (reminder)

Discussion of chess software programming and technical issues.

Moderator: Ras

bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Programmer code of honor (reminder)

Post by bob »

Rebel wrote:
wgarvin wrote:
hgm wrote:
wgarvin wrote:I still don't understand why RE-ing is being singled out here. What is wrong with RE-ing other people's programs?
It could be illegal and a violation of the license agreement. As such it becomes a bit of a 'Robin Hood discussion': is it morally wrong to break the law if it is for the 'greater good'? And who is to say what is the 'greated good'? Robbing the rich to help the poor is still very popular nowadays. But we delegated the monopoly on that to the state, and call it 'taxes'. Should we go beyond the rules the state prescribes for this?
I don't understand all this Robin Hood talk, or stuff about taxes. We were talking about reverse-engineering of compiled software programs. In some countries it is illegal (sometimes with exceptions for specific purposes), in others it is legal. I don't see what that has to do with Ed's code of conduct though. He appears to be exhorting programmers to pledge to act honorable way, and I don't understand why reverse-engineering is considered dishonorable. Copying other people's hard work, especially if you then try to pass it off as your own work, is obviously dishonorable. But taking apart something that another person built in order to learn its secrets (i.e. understand how it works) doesn't seem dishonorable to me.

It seems to me that its the copying without permission (whether its by RE or by cut-and-pasting from open sources) that we should be discouraging.

crappy analogy time: This is like asking everyone to agree "I won't ever own a gun", when it seems to me what we really want is for them to agree "I won't threaten or kill other people with my gun". A gun is just a tool, it has defensive uses too. It seems to me that Ed is asking programmers to shun the entire tool of RE, rather than the mis-use of that tool to copy other people's work.

[Edit: I guess I will stop belaboring the topic, though. I've made my point.]
I think I expressed myself clearly in this thread.

It's about EU Law and US is not far behind, read what it stipulates.

I don't think I have to explain the audience to whom it is addressed what the RE clause means, it's self understood, stealing for the use of a competitive engine, everything else is nitpicking words.
There is still the issue of non-binary reverse-engineering. Yet all reach the same basic place. You don't want anyone to study the OUTPUT of an engine either? Enough test positions and you can figure out what an engine is doing. That's just another form of reverse-engineering, and it is absolutely legal anywhere on the planet.
User avatar
Rebel
Posts: 7522
Joined: Thu Aug 18, 2011 12:04 pm
Full name: Ed Schröder

Re: Programmer code of honor (reminder)

Post by Rebel »

bob wrote:
Rebel wrote:
Henk wrote:Ok, I removed the piece square table values from my chess program. They were not mine. I copied them from the piece square table contest. Costs me 100 ELO or so. My previous ones are crap.
If someone post stuff it's public domain, use it.
Totally wrong. Anything anyone posts is copyrighted unless the poster explicitly says "I forgo the copyright and place this into the public domain." You earn the copyright by writing the material. Unless you are quoting someone else's copyrighted material of course.
I think it's the other way around :lol:

The lack of a © copyright notice.

Every published book has one, guess why that is.
User avatar
Rebel
Posts: 7522
Joined: Thu Aug 18, 2011 12:04 pm
Full name: Ed Schröder

Re: Programmer code of honor (reminder)

Post by Rebel »

bob wrote:
Rebel wrote:
wgarvin wrote:
hgm wrote:
wgarvin wrote:I still don't understand why RE-ing is being singled out here. What is wrong with RE-ing other people's programs?
It could be illegal and a violation of the license agreement. As such it becomes a bit of a 'Robin Hood discussion': is it morally wrong to break the law if it is for the 'greater good'? And who is to say what is the 'greated good'? Robbing the rich to help the poor is still very popular nowadays. But we delegated the monopoly on that to the state, and call it 'taxes'. Should we go beyond the rules the state prescribes for this?
I don't understand all this Robin Hood talk, or stuff about taxes. We were talking about reverse-engineering of compiled software programs. In some countries it is illegal (sometimes with exceptions for specific purposes), in others it is legal. I don't see what that has to do with Ed's code of conduct though. He appears to be exhorting programmers to pledge to act honorable way, and I don't understand why reverse-engineering is considered dishonorable. Copying other people's hard work, especially if you then try to pass it off as your own work, is obviously dishonorable. But taking apart something that another person built in order to learn its secrets (i.e. understand how it works) doesn't seem dishonorable to me.

It seems to me that its the copying without permission (whether its by RE or by cut-and-pasting from open sources) that we should be discouraging.

crappy analogy time: This is like asking everyone to agree "I won't ever own a gun", when it seems to me what we really want is for them to agree "I won't threaten or kill other people with my gun". A gun is just a tool, it has defensive uses too. It seems to me that Ed is asking programmers to shun the entire tool of RE, rather than the mis-use of that tool to copy other people's work.

[Edit: I guess I will stop belaboring the topic, though. I've made my point.]
I think I expressed myself clearly in this thread.

It's about EU Law and US is not far behind, read what it stipulates.

I don't think I have to explain the audience to whom it is addressed what the RE clause means, it's self understood, stealing for the use of a competitive engine, everything else is nitpicking words.
There is still the issue of non-binary reverse-engineering. Yet all reach the same basic place. You don't want anyone to study the OUTPUT of an engine either? Enough test positions and you can figure out what an engine is doing. That's just another form of reverse-engineering, and it is absolutely legal anywhere on the planet.
So you are saying you missed the intend of the programme code?
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Programmer code of honor (reminder)

Post by bob »

Rebel wrote:
bob wrote:
Rebel wrote:
wgarvin wrote:
hgm wrote:
wgarvin wrote:I still don't understand why RE-ing is being singled out here. What is wrong with RE-ing other people's programs?
It could be illegal and a violation of the license agreement. As such it becomes a bit of a 'Robin Hood discussion': is it morally wrong to break the law if it is for the 'greater good'? And who is to say what is the 'greated good'? Robbing the rich to help the poor is still very popular nowadays. But we delegated the monopoly on that to the state, and call it 'taxes'. Should we go beyond the rules the state prescribes for this?
I don't understand all this Robin Hood talk, or stuff about taxes. We were talking about reverse-engineering of compiled software programs. In some countries it is illegal (sometimes with exceptions for specific purposes), in others it is legal. I don't see what that has to do with Ed's code of conduct though. He appears to be exhorting programmers to pledge to act honorable way, and I don't understand why reverse-engineering is considered dishonorable. Copying other people's hard work, especially if you then try to pass it off as your own work, is obviously dishonorable. But taking apart something that another person built in order to learn its secrets (i.e. understand how it works) doesn't seem dishonorable to me.

It seems to me that its the copying without permission (whether its by RE or by cut-and-pasting from open sources) that we should be discouraging.

crappy analogy time: This is like asking everyone to agree "I won't ever own a gun", when it seems to me what we really want is for them to agree "I won't threaten or kill other people with my gun". A gun is just a tool, it has defensive uses too. It seems to me that Ed is asking programmers to shun the entire tool of RE, rather than the mis-use of that tool to copy other people's work.

[Edit: I guess I will stop belaboring the topic, though. I've made my point.]
I think I expressed myself clearly in this thread.

It's about EU Law and US is not far behind, read what it stipulates.

I don't think I have to explain the audience to whom it is addressed what the RE clause means, it's self understood, stealing for the use of a competitive engine, everything else is nitpicking words.
There is still the issue of non-binary reverse-engineering. Yet all reach the same basic place. You don't want anyone to study the OUTPUT of an engine either? Enough test positions and you can figure out what an engine is doing. That's just another form of reverse-engineering, and it is absolutely legal anywhere on the planet.
So you are saying you missed the intend of the programme code?
Yes. "program code" is what I would be running to try to figure out what is going on inside. If you made it clearer later in the thread, point me to the right post, I didn't read the entire thread you linked to.

I think the point is "reverse-engineering" is a very vague and imprecise term. Perhaps disassembling or decompiling might address what I think you are after, but what is the point of asking programmers to not look at the binary when they can do exactly the same thing by sitting down with a bunch of test positions? I'm with Wylie here, this really makes no sense, because it is so vague and has multiple loopholes that are not addressed. For example:

(1) can I look at a binary if I choose, either via hex-rays, objdump, or even the debugger?

(2) can I sit down with an engine and feed it test positions that address very specific search issues, to see what the program is doing internally?

(3) can I study the program's output to discern what it is doing, either via positions I give it or by watching it during a game?

It is very difficult to hide what an engine is doing, without resorting to the Rybka-like obfuscation. Display false information such as depth, nodes searched, PV, whatever. Most do not seem to be obfuscating today, which means figuring out what they are doing is not an impossible task even without looking inside the binary.

So what is it about looking in the binary that is so distasteful? Far fewer are capable of doing that than are capable of studying an engine with a set of positions to figure out what it is doing.

There has to be a point to asking people to do or not do something, otherwise...
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Programmer code of honor (reminder)

Post by bob »

Rebel wrote:
bob wrote:
Rebel wrote:
Henk wrote:Ok, I removed the piece square table values from my chess program. They were not mine. I copied them from the piece square table contest. Costs me 100 ELO or so. My previous ones are crap.
If someone post stuff it's public domain, use it.
Totally wrong. Anything anyone posts is copyrighted unless the poster explicitly says "I forgo the copyright and place this into the public domain." You earn the copyright by writing the material. Unless you are quoting someone else's copyrighted material of course.
I think it's the other way around :lol:

The lack of a © copyright notice.

Every published book has one, guess why that is.
Look up copyright law. You own the copyright by DEFAULT.

From US copyright law, which is compatible with international copyright law.

Initial Ownership.—Copyright in a work protected under this title vests initially in the author or authors of the work. The authors of a joint work are coowners of copyright in the work.

(e) Involuntary Transfer.—When an individual author’s ownership of a
copyright, or of any of the exclusive rights under a copyright, has not previously been transferred voluntarily by that individual author, no action by any governmental body or other official or organization purporting to seize, expropriate, transfer, or exercise rights of ownership with respect to the copyright, or any of the exclusive rights under a copyright, shall be given effect under this title, except as provided under title 11.2

(a) A transfer of copyright ownership, other than by operation of law, is not valid unless an instrument of conveyance, or a note or memorandum of the transfer, is in writing and signed by the owner of the rights conveyed or such owner’s duly authorized agent.

In short, you have to explicitly transfer copyright to someone else, or specifically give up the copyright by placing something into the public domain via a written statement. It is yours until you give it up, no matter where you write the material. There is one well-documented exception, if someone hires you to write something and requires the copyright be theirs:

(b) Works Made for Hire.—In the case of a work made for hire, the employer or other person for whom the work was prepared is considered the author for purposes of this title, and, unless the parties have expressly agreed otherwise in a written instrument signed by them, owns all of the rights comprised in the copyright.

btw the little copyright symbol usually means that a copy of the document has been filed with the copyright office. Makes it easier to show a copyright infringement because that provides a date and copy that will stand up in court. But it is not necessary.
wgarvin
Posts: 838
Joined: Thu Jul 05, 2007 5:03 pm
Location: British Columbia, Canada

Re: Programmer code of honor (reminder)

Post by wgarvin »

Rebel wrote:I think I expressed myself clearly in this thread.

It's about EU Law and US is not far behind, read what it stipulates.

I don't think I have to explain the audience to whom it is addressed what the RE clause means, it's self understood, stealing for the use of a competitive engine, everything else is nitpicking words.
That's not what your Code of Honor actually says.
Ed's Programmer Code of Honor wrote:2. Not to reverse engineer the work of other programmers without their express permission.
It doesn't say anything about stealing, or about copying the result into other engines (competitive or otherwise). [Edit: actually I take this back. The line right before it DOES say "no copying without permission". It very explicitly does cover the part I care about. sorry.]

It just says "no reverse engineering without permission". That is a stronger prohibition than either EU or US copyright law insists on. They both contain exceptions for interoperability, security research, among other things.

Legally, if you reverse-engineer someone else's code without being covered by one of these exceptions then you will probably need their permission ("license") or else you are infringing their copyright. This is not even a crime in sane jurisdictions, its a civil liability. Other things you do with it afterward (like, if you copy some reverse-engineered code into your own engine, distribute that engine to others, etc.) might or might not be actual crimes in your country, but copyright law covers all of that already. I don't see what it has to do with honor.

Pledging not to copy other people's work makes sense to me, for a Code of Honor. Pledging not to peek inside them to try and learn things.. not so much. :lol:


[Edit: Anyways.. don't worry about it. I like the idea of asking programmers to behave honorably, it probably has a good influence on people's behavior just to think about these issues, even if they don't end up signing it.]

.
Last edited by wgarvin on Thu Feb 27, 2014 12:19 am, edited 1 time in total.
wgarvin
Posts: 838
Joined: Thu Jul 05, 2007 5:03 pm
Location: British Columbia, Canada

Re: Programmer code of honor (reminder)

Post by wgarvin »

http://en.wikipedia.org/wiki/Berne_Convention
The Berne Convention requires its signatories to recognize the copyright of works of authors from other signatory countries (known as members of the Berne Union) in the same way as it recognizes the copyright of its own nationals. For example, French copyright law applies to anything published or performed in France, regardless of where it was originally created.

In addition to establishing a system of equal treatment that internationalised copyright amongst signatories, the agreement also required member states to provide strong minimum standards for copyright law.

Copyright under the Berne Convention must be automatic; it is prohibited to require formal registration (note however that when the United States joined the Convention in 1988, it continued to make statutory damages and attorney's fees only available for registered works).
Emphasis mine. Everything is copyrighted automatically. In the U.S., you generally can't recover statutory damages (those huge inflated $250,000-per-infringement type amounts you occasionally hear about in file sharing lawsuits for example) unless you registered your work with the copyright office. I think even if you never registered it, you can still sue for and recover actual damages. IANAL or even a United-Statesian.
wgarvin
Posts: 838
Joined: Thu Jul 05, 2007 5:03 pm
Location: British Columbia, Canada

Re: Programmer code of honor (reminder)

Post by wgarvin »

Since I live in Canada, here is wikipedia's description of how "fair dealing" exceptions are applied in my country.
http://en.wikipedia.org/wiki/Fair_dealing#Canada

Education, research, and private study are three purposes which tilt the evaluation towards fair dealing. However, large-scale copying, commercial purpose, and having an effect on the market of the copyright owner [for the original work] would all tip the scales away from fair dealing.

IANAL and you'll never know for sure whether a particular use is "fair dealing" or not until you get hauled into court over it, however, I think in my country, reverse-engineering a chess engine to learn techniques from it, and then use those techniques to improve a different chess engine (especially a hobby one that is not competing commercially with the original engine) would likely be covered by "fair dealing" and would not infringe the original author's copyright. Copying substantial chunks of it (such as the entire evaluation), WOULD infringe his copyright, even if the copying was non-literal as it was in the Rybka case.

As for moral rights, I don't believe anyone can own ideas or mathematics. They are insubstantial, intangible; they are discovered, not made. Even programs are intangible in this same way. On a deep level, software is math, and source code is speech. Government can grant you a monopoly on the tangible medium in which this speech is fixed (I mean, when you write it down they can give you a monopoly on the specific written form) but I think trying to control the spread of ideas through force of law (as software patents do, for example) is hopelessly immoral. It offends me to have to share a planet with people who actively try to interfere with the spreading of knowledge to other humans. I find that disgusting. But I guess history will judge.
User avatar
Evert
Posts: 2929
Joined: Sat Jan 22, 2011 12:42 am
Location: NL

Re: Programmer code of honor (reminder)

Post by Evert »

Rebel wrote: I think it'sy around :lol:

The lack of a © copyright notice.

Every published book has one, guess why that is.
You may think that, but you'd be wrong. You automatically own the copyright to anything you create.

The copyright sign has no legal standing as far as I'm aware and is completely redundant.
User avatar
Rebel
Posts: 7522
Joined: Thu Aug 18, 2011 12:04 pm
Full name: Ed Schröder

Re: Programmer code of honor (reminder)

Post by Rebel »

Evert wrote:
Rebel wrote: I think it's the other way around :lol:

The lack of a © copyright notice.

Every published book has one, guess why that is.
You may think that, but you'd be wrong. You automatically own the copyright to anything you create.
Of course.

But if you post something in a forum then others may use it. Duplicating the posting itself elsewhere is another issue.

Or else Henk initially broke copyright law. That can't be.
The copyright sign has no legal standing as far as I'm aware and is completely redundant.
I will ask a lawyer.