NAGI Legal Notes
By Nick Sonneveld and others
NAGI was created with the purpose to help fan-game developers so they had
something to release along with their game. The reason why they couldn't
package it with the original Sierra interpreter was because Sierra owns the
copyright to it and legal issues could arise.
As some people know, NAGI was created by disassembling the AGI executable
and recoding it in C to act the same as the ASM source. This wasn't as easy
as it sounds. I had to implement a lot of my own code to interact with Windows,
converge v2 and v3 code, implement a crc system and other bits 'n pieces.
The original sierra code also had to be debugged and the variable names had
to be determined.
The issue here is that it's not exactly legal to do that with any code.
It's still Sierra's copyright, although in smaller pieces, throughout the
NAGI code. This, along with other reasons, is why I'm not releasing the source
just yet.
However, many fan games use Sierra's sprites or other logic code and Sarien
uses specs that were mostly derived from Russians who disassembled an old
v2.440 interpreter. There are many examples of programs uses little bits
and pieces of Sierra's intellectual property.
Digger
When I started, I was under the assumption that this was semi-legal because
another programmer used the exact same technique to re-create Digger which
is an old game, just like AGI. However, this is an excerpt from the Digger
FAQ
(http://www.digger.org)
Q: Is this legal?
A:Strictly speaking, no. According to intellectual property law, a work
copyrighted by a company continues to be copyrighted for 75 years.
I have no moral objections to violating Windmill software's copyright by
re-releasing the game, and I feel you should have no moral objections to playing
it (unless you're doing it when you should be doing something else). Copyright
exists to protect intellectual rights, not to prevent people from having
access to software. I can think of two reasons why Windmill software would
want to protect their intellectual rights:
- To ensure that they are recognized as the true authors of Digger.
- To ensure that they make as much money as possible.
I have retained the original copyright messages in the game and I take
pains to ensure that Windmill are credited properly whereever possible so
the first of these concerns is taken care of. As for the second - Windmill
hasn't made any money from Digger for a long time, and if they insist I will
relinquish all rights to Digger to them to do with as they wish. Having Digger
restored and working on modern computers, they would be in a much better position
to make money from it than they would if I hadn't remastered it.
In conclusion, therefore, I think that Digger Remastered follows the spirit
of the law, if not the letter. And since laws, being so rigid, can never be
perfect, the world works much better this way (as any Digger fan must concur.)
For more information about abandonwarez and the associated legal problems,
have a look at this essay.
#SDL
I also had a nice chat to the SDL people in #SDL at irc.openprojects.net.
I was asking about SDL licenses and the discussion shifted to how I programmed
NAGI. They're not as nice as other coders but they managed to answer some
questions:
<Note: bits and pieces not relevent to disassembling were removed>
[05:21] <EvilIdler> J5:What license is your own program under?
[05:22] <J5> none atm.. i wanted to make it closed source until it
was finished
[05:23] <J5> i know some other people go release early, release often
but I subscribe to the "release it when it looks good"
[05:23] <Frapazoid> same here
[05:23] <akawaka> haha
[05:23] <Frapazoid> it's bad to give people a really bad impression
before it's done..
[05:23] <akawaka> "release when it looks good"
[05:23] <akawaka> how about "release when it works"?
[05:23] <akawaka> hmm, yes
[05:23] <J5> plus, I wrote a lot of the code by disassembling an old
game.. so I don't know the legalities of that and..
[05:24] <Frapazoid> they may not understand the pre-release concept,
as I know many people don't, and then never check back
[05:24] <J5> there's a few goto replacing the mess of jmp's
[05:24] <hofi> who wants working stuff ? it has to look good....
[05:24] <Frapazoid> whoa!
[05:24] <Frapazoid> disassembling?
[05:24] <Frapazoid> J5: what about dissambling?
[05:24] <Frapazoid> what game?
[05:25] <J5> I'm disassembling an old game interpreter (agi) and recoding
it all in C
[05:25] <J5> like Sarien except it works kinda better atm
[05:25] <Frapazoid> how old is it
[05:25] <Frapazoid> ?
[05:25] <J5> doesn't support as many os's atm
[05:25] <Frapazoid> (Thats like cheating!)
[05:25] <EvilIdler> J5:*How* did you go about using what you disassembled?
Did you rewrite from the way assembly looked?
[05:25] <J5> umm.. late 1980's
[05:26] <Frapazoid> to me that just doesn't seem right, still..
[05:26] <J5> evil: yeh.. some of the code yes.. others I had to guess
and others I wrote from scratch (like sdl's)
[05:26] <Frapazoid> well, whatever
[05:26] <EvilIdler> J5:Well, the way Norwegian reverse-engineering
laws work, you're safe. Check your own country ;)
[05:26] <J5> frap: well.. i couldn't think of any way of getting my
version to work the same as the original
[05:27] <EvilIdler> If you disassemble to see "how it works", then
code something that works the same way, especially in another language, it's
usually in the clear. Local laws apply ;)
[05:27] <Yorick> I doubt norwegian laws are safe about reverse-engineering
[05:28] <EvilIdler> Yorick:They work. Like I said before, Norwegians
are nuts!
[05:28] <J5> evil: i guess i'll have to..
<Note: discussion moved to different editors so I decided to wrap things
up>
[05:30] <J5> anyway.. thanks for the help
[05:30] <J5> I'll put up the appropriate notices for sdl
[05:30] <Diablo-D3> heh
[05:30] <Diablo-D3> Vi!!!
[05:30] <J5> and work on making my disassembled code more legal
[05:30] <J5> (if it's not already)
[05:31] <EvilIdler> J5:Do that, and let us know if any games work
completely ;)
[05:31] <J5> evil: they do already
[05:31] <Frapazoid> J5: the developers may have to file a lawsuit
[05:31] <J5> i don't think sierra cares anymore
[05:31] <EvilIdler> J5:Are there any Spacequest based on agi?
[05:31] <J5> http://members.dingoblue.net.au/~sonneveld/nagi
[05:31] <J5> sq1 and 2
[05:31] <EvilIdler> Sierra *died* when they laid off their adventure-making
people.
[05:32] <Diablo-D3> heh
[05:32] <Diablo-D3> sierra is dead anyhow
[05:32] <Frapazoid> it's knot only stupids, it's real
[05:32] <J5> i only have builds for win32 atm though..
[05:33] <Frapazoid> hmm.. i have to go now..
[05:33] <Frapazoid> bye
[05:33] <EvilIdler> J5:Get some SDL-based ones, and you can cross-compile
from Linux.
[05:35] <J5> it's sdl based atm.. i've only compiled under mingw atm
though
[05:35] <Diablo-D3> heh
[05:35] <Diablo-D3> and any other gcc clone
[05:35] <Diablo-D3> like
[05:35] * aoiushi looks up. no, sierra died when they let roberta williams
make adventure games. ;)
[05:35] <Diablo-D3> cygwin
[05:35] <Diablo-D3> or...
[05:35] <Diablo-D3> xming
[05:35] <Diablo-D3> or... gcc ...
[05:36] <Diablo-D3> heheh
[05:36] <J5> diablo: I know.. but the only working version on my website
is a windows executable
[05:36] <Diablo-D3> heh
[05:36] <Diablo-D3> suckz0rs to be j00
[05:37] <J5> cheers diablo
[05:38] <J5> anyway.. thanks again
[05:38] <J5> cyas
Session Close: Tue Jul 10 05:38:36 2001
I just wanted to point out that I don't think it was "like cheating". If
it was it would be a lot easier to do. Depends on your coding experience
I guess.
#Sarien
Here's another chat I had in #sarien. These guys are friendlier at least.
:) It's a bit lengthy but there's a lot of interesting information. I was
tired and bummed out through most of this conversation because I was working
night shift before it and hadn't had any sleep. But that's another story...
[08:57] <DopefishJustin> on the plus side, you'll have more time for
nagi now ;)
[08:58] <JayFive> heh.. true
[08:59] <JayFive> I went on #sdl to ask about sdl packaging 'n stuff
[08:59] <JayFive> and one person thought that the way i was making
nagi was cheating :)
[08:59] <JayFive> then you've got the legalities of it as well
[08:59] <JayFive> is it worth it?
[09:00] <DopefishJustin> i like the sarien approach more, but nagi
is currently much more functional
[09:00] <JayFive> currently.. what about when sarien is more functional?
is everybody going to forget about nagi?
[09:00] <syke> JayFive: if sierra ever decides to go after you, you
will definitely have quite a few problems
[09:01] * syke shrugs
[09:01] <syke> I never looked at NAGI or the source
[09:01] <syke> sarien seems to be portable to the extreme
[09:01] <DopefishJustin> some of the nagi-original modifications may
find a home in sarien someday
[09:02] <JayFive> nagi gets to be a sarien patch
[09:02] <DopefishJustin> i'm not sure about the legality of using
spec information gleaned from it
[09:03] <JayFive> but spec information from russian disassemblers
is ok
[09:04] <syke> JayFive: it can be very tricky.
[09:05] <syke> For instance, someone can reverse engineer/disassemble
directly from the code
[09:05] <syke> and write documentation
[09:05] <syke> and then someone can implement from that documentation
[09:06] <syke> and there is precedent in the US for that being considered
"clean room"
[09:06] <syke> however
[09:06] <syke> reverse engineering to source code
[09:06] <syke> and then copying or reimplenting that code into new
code
[09:06] <syke> is highly suspect
[09:07] <JayFive> so i've written something that no agi coder wants
to touch basically
[09:07] <syke> mm
[09:07] <syke> well
[09:07] <syke> I wouldn't recommend anyone copy the code directly
[09:08] <JayFive> nice...
[09:08] <syke> but
[09:08] <syke> if you re-implemented what you learned from the disassembly
[09:08] <syke> without directly copying that disassembly
[09:08] <syke> that might be excusable
[09:08] <syke> are you in teh US?
[09:09] <JayFive> aus
[09:09] <syke> ok
[09:09] <syke> the laws there may be more lax
[09:09] <syke> but yes, you've done a big no-no as far as free software
is concerned
[09:09] <syke> have you contacted sierra in any way?
[09:10] <syke> to ger permission, or to make them aware of the project,
or to request information?
[09:10] <JayFive> no, i was under the assumption that they never replied
to any such thing
[09:12] <syke> ask christoph from freesci about his experiences
[09:12] <syke> he asked a number of hte original programmers, who
all refused to give infromation fo course :)
[09:12] <syke> (mostly fearing sierra's wrath)
[09:12] <syke> on a side note
[09:12] <syke> I think it would be awesome to unite the two projects,
tho
[09:13] <syke> I'm all for pooling efforts :)
[09:13] <JayFive> i dunno if you'd want to touch the bits *i* actually
wrote
[09:13] <syke> in the same way I would love it if FreeSCI and Sarien
shared video driver code and graphics effects code
[09:13] <JayFive> the rest would be untouchable
[09:13] <syke> well, yea
[09:13] <syke> but you could apply your knowledge to sarien
[09:13] <syke> and not necessarily copy code
[09:13] <DopefishJustin> nagi has some cool stuff, like the click-to-move
code
[09:14] <DopefishJustin> and fullscreen under Win32
[09:14] <syke> DopefishJustin: if you want fullscreen under win32,
I can do that pretty quickly :)
[09:14] <syke> fuck
[09:14] <syke> i need to do some checkins for sarien and freesci
[09:14] <JayFive> 1) move.obj without setting a flag and ignore player.control
[09:14] <JayFive> 2) like syke said
[09:15] * JayFive doesn't like the idea of just being some agi tour-guide
[09:15] <DopefishJustin> ummm...nagi' sample based sound mixer?
[09:15] <JayFive> whee
[09:15] <syke> JayFive: Maybe you misunderstand --
[09:15] <syke> you can re-code things, that is probably safe
[09:16] <syke> but directly copying code from the reverse engineered
binary isn't, I don't tihnk
[09:16] <JayFive> yes but how far do I go until the re-coded stuff
is legal?
[09:17] <JayFive> and in going through these hoops I have to make
it work with the original agi
<Note: stuff on watcom and graphics libraries.. not nagi/legal related>
[09:45] <JayFive> i think i might drop nagi and start up another project
[09:45] <JayFive> too much wasted time already
[09:45] <DopefishJustin> the agi studio thing?
[09:45] <JayFive> maybe something totally unrelated to agi
[09:46] <JayFive> this whole thing is getting me down.. i just wasted
my time
[09:46] <DopefishJustin> hey now
[09:46] <DopefishJustin> if nothing else, you got programming experience
[09:47] <JayFive> whee
[09:47] <DopefishJustin> i've programmed all kinds of stuff that doesn't
work
[09:47] <DopefishJustin> i don't care
[09:47] <DopefishJustin> it's the fun of programming it that counts
[09:48] <JayFive> all this other stuff doesn't make it fun
[09:48] <syke> JayFive: not at all
[09:48] <syke> you definitely learned things about AGI no one else
could have figued out
[09:49] <syke> like the mouse support stuff
[09:49] <syke> and i'll bet you learned a lot of about how to disassemble
and rever engineer thinggs :)
[09:49] <DopefishJustin> and it gets the award of the first fully
functional fan-made agi interpreter
[09:50] <JayFive> yeh, but what's the use of knowing how to do that
if all you're going to do is write specs so somebody else can code the thing?
[09:50] <JayFive> if i try and re-code it.. i'll always be accused
of using the original code
[09:51] <JayFive> i spent a long time on this and it's just one big
bummer
[09:52] <syke> JayFive: like I said, check out the laws in your country
[09:52] <syke> also
[09:52] <JayFive> i did.. it's legal for certain things
[09:52] <syke> you may end up getting permission from sierra
[09:52] <syke> there are still many options here, should you choose
to take them
[09:53] <syke> JayFive: the wonder of open source is that re-use of
proprietary IP can be easily disproven
[09:53] <syke> since the source is public
[09:53] <DopefishJustin> and what about that standard.ini idea you
had? that's something unique
[09:53] <syke> all you have to watch out for is patented algorithms
[09:53] <syke> (I don't think ther eare any in AGI)
[09:53] <DopefishJustin> LZW
[09:53] <JayFive> nothing to do with patents.. it's copyright law
[09:54] <JayFive> despite the fact it's object code.. copyright law
still applies
[09:54] <JayFive> and apparently reverseengineering is only "legal"
enough if it's for interoperability issues
[09:54] <syke> yes
[09:54] <JayFive> http://www.dcita.gov.au/cgi-bin/trap.pl?path=4189
[09:54] <DopefishJustin> and sierra had a patent on "3-d graphical
adventure games" but i think that got shot down in court
[09:56] <syke> JayFive: before you get too discouraged, I would talk
to a lawyer perhaps
[09:56] <syke> or contact Sierra
[09:56] <syke> but
[09:56] <syke> there is precendent in the US that should be looked
at, since Sierra is a US company
[09:57] <syke> I am somehat farmiliar with this stuff because I follow
IP law caes
[09:57] <syke> cases, rather
[09:57] <JayFive> i'll try the sierra route but then i'll give up
the nagi project
[09:57] <JayFive> it's basically a rebadged sierra interpreter with
extra bits put in
[09:58] <syke> I'm sorry you're down :/
[09:58] <syke> I think there is still neat stuff that can be done
[09:58] <DopefishJustin> think of it as a port, not a rehash
[09:59] <syke> bringing some of the best games ever made to open platforms
is a great accomplishment
[09:59] <JayFive> i think that's sarien.. nagi was only built for
windows (despite the sdl)
[10:00] <syke> hm
[10:00] <syke> are you just feeling you've taken it as far as it can
go?
[10:00] <syke> are you bored with it?
[10:00] <syke> you seem to just be down, in general
[10:01] <JayFive> no, I'm feeling it's not worth it if people aren't
going to want to use it
[10:01] <JayFive> people want a legal interpreter they can bundle
with their games or they want an interpreter for another system
[10:01] <syke> why not join forces with claudio and work on Sarien,
to help accelerate the development
[10:02] <syke> (or even freesci ;>)
[10:02] <JayFive> it's the same with nagi.. any recoding could be
considered using the original code
[10:02] <syke> I don't think that's tru under US precedent
[10:03] <syke> is australian law says that, then asking sierra for
permission might be your only option
[10:03] <JayFive> dunno exactly about aus law
[10:04] <syke> btw, writing documentation is *very* helpful
[10:04] <syke> has been for FreeSCI, anyways
[10:04] <JayFive> but i don't know how i feel about working for sarien
and just giving up on nagi
[10:04] * syke shrugs
[10:04] <DopefishJustin> you said you were going to do that anyway
[10:04] <DopefishJustin> give up nagi
[10:05] <syke> if you're tired of AGI in general and just want to
move onto something else, then go for it
[10:05] <syke> if you still fidn it interesting, there are options
[10:05] <DopefishJustin> and besides, AGI needs to be documented for
future generations when the systems it ran on originally aren't available
anymore
[10:06] <DopefishJustin> gotta go, bbl
[10:06] *** DopefishJustin is now known as JustinGone
[10:06] <JayFive> cya later justin
[10:06] <syke> JustinGone: documentation has been helpful in figuring
out algorithms. when you try to explain something in english instead of code,
sometimes inconsistencies jump out at you :)
[10:07] <JayFive> i'm going to get some sleep and think about it
[10:07] <JayFive> thanks for the suggestions
[10:07] <syke> ok
[10:07] <syke> uit would be cool to have you keep coding, you seem
like a very bright guy :)
[10:07] <syke> nite :)
[10:07] <JayFive> cheers :)
[10:07] <JayFive> cya!
Session Close: Wed Jul 11 10:08:01 2001
Session Start: Thu Jul 12 08:28:30 2001
[08:32] <DopefishJustin> so, decided what to do with nagi?
[08:32] <JayFive> I'm thinking about sending a letter to sierra
[08:32] <JayFive> but I don't know what to do in the meantime
[08:33] <DopefishJustin> move zig for great justice? ;)
[08:33] <JayFive> I could give up on nagi.. work on sarien or something
like that.. but I always think of cool things to add to nagi
[08:33] <JayFive> like df said, he's just in it for it to work
[08:33] <JayFive> I wanted to make nagi a free interpreter to help
people make their own new games as well as play the old ones
[08:34] <JayFive> i think, like i said on the website, I mentioned
that this guy rewrote digger and he was my inspiration
[08:34] <JayFive> I go to the site, read the faq and read the question
"is this legal?"
[08:34] <JayFive> http://www.digger.org/faq.html
[08:34] <JayFive> so until i get sierra's blessing.. i guess not
[08:34] <DopefishJustin> i was just about to ask that
[08:35] <JayFive> but this guy is willing to give up any copyright
to the original authors.. i could be willing to do the same.. but I wouldn't
be able to make nagi opensource then
[08:35] <DopefishJustin> you start running into abandonware / emulation
type issues with this kinda stuff
[08:36] <JayFive> yer, abandonware is cool.. but it's not legal unless
it's authorised
[08:37] <JayFive> I mean, I could ignore the legal issues but then
that gets rid of one of the reasons why i wrote nagi
[08:37] <DopefishJustin> right, if you wanna be illegal just use sierra
[08:37] <DopefishJustin> although i seem to recall them giving permission
for that
[08:38] <JayFive> did they? if you could find mention of that somewhere,
that would be interesting
[08:38] <JayFive> on the sierra website they have a snail mail address
for general enquires
[08:38] <JayFive> and a crappy feedback web interface
[08:38] <DopefishJustin> i think it was only for one AGI site though,
not blanket
[08:38] <JayFive> I think the snail mail is the way to go though
[08:38] <DopefishJustin> yeah
[08:39] <DopefishJustin> copyright laws are just fscked for computer
software
[08:40] <JayFive> well no, they're fine
[08:40] <DopefishJustin> they're way too long
[08:40] <JayFive> but software companies have to clearly define what's
going on with software that's 15 years old
[08:41] <JayFive> the gpl *needs* the copyright law for it to work
[08:41] <JayFive> software patents.. that's another kettle of fish
[08:41] <DopefishJustin> by the time it's legal to copy anything it'll
have physically rotted
[08:48] <JayFive> well yer.. it depends ont he
[08:48] <JayFive> the copyright holder to back it up
[08:48] <DopefishJustin> fat chance
[08:53] <JayFive> basically, you need a fair enough time for large
corporations to look after their copyright
[08:53] <JayFive> a way for them to extend it if they wish
[08:53] <JayFive> and some public backup system so that when the copyright
does expire, people can access the information
[08:54] <DopefishJustin> yeah, renewal is good because that lets the
stuff they care about get protected while letting the old stuff expire and
get distributed
[08:54] <DopefishJustin> if they've forgotten it exists, they can't
renew the copyright
[08:54] <JayFive> perhaps if it's owned by one person, let the copyright
exist until they die
[08:54] <JayFive> if it's a corporation.. 10 years or more if they
renew it
[08:55] <DopefishJustin> but no, Disney's gotta increase the copyright
for EVERYTHING, just so mickey mouse won't expire
[08:55] <JayFive> eventually, the copyright for mickey will last until
the sun blows up
[08:55] <DopefishJustin> but what about the human colonies on alpha
centauri?
[08:55] <DopefishJustin> they must pay to see mickey too!!!!
[08:56] <JayFive> i think they'd be more worried about killing aliens
[08:57] <JayFive> I'd only move to alpha centauri if i could fight
aliens
[08:57] <JayFive> bugger this whole population crisis thingy.. give
me death of aliens!
[08:58] <DopefishJustin> plus, copyright is now nonenforceable in
practice
[08:58] <JayFive> oh, they'd find a way to get somebody over to alpha
centauri
[08:59] <JayFive> the law cases might take a while though
[09:00] <JayFive> heh, i love saying "they
[09:01] <JayFive> they'll find a way" even if i don't know if they
can :)
[09:02] <JayFive> if QT's gpl
[09:02] <JayFive> why doesn't somebody port the linux version to windows?
[09:02] <JayFive> qt's linux port is qpl I mean
[09:02] <DopefishJustin> that's a darn good question
[09:02] <JayFive> arrgh.. gpl
[09:02] <DopefishJustin> i dunno if it's gpl, it might be some other
license
[09:03] <JayFive> i heard the words trolltech, gpl and qt in the same
sentence I'm sure!
[09:05] <DopefishJustin> from their web page, it looks like it's free
but commercial
[09:07] <JayFive> http://www.trolltech.com/products/download/freelicense/qtfree-dl.html
[09:08] <DopefishJustin> hmm
[09:08] <DopefishJustin> maybe it's a lot of work and there are already
other free widget sets to use
[09:09] <JayFive> i love how the free version for windows only supports
a non-free ide/compiler (visual c)
[09:10] <DopefishJustin> I don't know whether to laugh or be angered
at the IDSA FAQ on their web page. They answer all the questions but completely
miss the point.
[09:12] <JayFive> i think the correct emotion is frustrated.. anger
gets you nowhere apparently
[09:12] <DopefishJustin> frustration is good
[09:13] <DopefishJustin> unfortunately, it looks like Sierra is an
IDSA member
[09:15] <JayFive> if they've got contact info on the idsa site. .that
could be good
[09:15] <DopefishJustin> it only mentions Havas Interactive, their
parent company
[09:22] <JayFive> oh no.. the original agi-studio is in pascal! :)
[09:34] <syke|gone> hi
[09:35] *** syke|gone is now known as syke
[09:36] <syke> QT is dual-licensed. GPL and Commercial licenses
[09:36] <syke> the win32 QT has an odd free license
[09:36] <syke> but is still free
[09:36] <DopefishJustin> free beer?
[09:36] <syke> someone has a KDE on windows project that uses cygwin
------
Heh, I'm talking about copyright issues and here I am, copying and pasting
information without asking for permission.
I'm in the process of writing letters to Sierra and other peoples if I can
get around to it. The good news is that I'll be working on NAGI until I get
a reply (if any). I'm not as depressed about the situation as I was before.
(i've had time to sleep and think about it)
The ideas:
- write letters to Sierra
- release the source or specs for the disassmbled functions and let other
people "rewrite them"
- ignore Sierra. (not a good idea.. they could bite me on the ass later
on)
- trash NAGI and just release docs for Sarien to work on.
- contribute my original code and specs to Sarien.
- contribute to AGI Studio instead.
I don't really want to trash NAGI and I like the idea of working in a project
where I wrote most of the code. So I'm going with the writing letters and
working on NAGI at the moment.
Thanks for reading all this if you actually did. :) If you have any ideas
or suggestions, they would be VERY welcome!
- Nick
--> sonneveld@hotmail.com
--> #AGI channel on dalnet
--> #Sarien channel on irc.openprojects.net
--> Megatokyo Messageboard too (http://www.mega-tokyo.com/cgi-bin/yabb/YaBB.pl)