I7: Customizing Extension Code

I came up with 3 versions (no pun intended) depending on how I modified the extension, of if I just used pieces of it.

Minor modification:

Blah 2 is a slightly modified version of the following extension:
Blah version 5 by Author

Major modification:

Blah 2 is a modified version of the following extension:
Blah version 5 by Author

Only minor pieces used:

Blah uses parts of the following extension:
Exit Lister version 10 by Eric Eve

That is how they print out after typing ‘version’. For me at least, that covers all of the options I could think of.

I still think that calling out modifications in this fashion cheapens the contribution from the extension author. It’s fair to say that you don’t want to tarnish his or her reputation by association, but players by and large have no idea what any extension does and will assume that all bugs and defects are your own fault.

It’s a bit like a film director insisting on a shared credit for everything from writing to catering, just because he improvised a few lines of dialog or told the craft services people to move a table. You already have the authorial credit (“An Interactive Fiction by So-and-So”). Implying an additional credit for all the constituent parts just seems like grasping.

IMO Matt Wigdahl handled this like a pro with Aotearoa. Despite what sounds like an inordinate amount of work fitting various extensions together, he left the version information intact. In the game’s credits he only mentioned his modifications to Tutorial Mode, which seem to have amounted to a major rewrite.

I agree that that’s a gracious and admirable approach, however, I’m trying to figure out the “official” approach:

inform7.com/learn/man/doc420.html

And here’s the key. I missed it last time I read this chapter, perhaps because the previous section seems to suggest that it will be explained right away, while it’s actually the very last thing in the section:
inform7.com/learn/man/doc421.html

And look at that! Exactly the feature I was asking for. It’s already there, yet again the only problem is that it’s buried in an unexpected place in the documentation.

Perhaps the right thing to do when making minor modifications to an extension is to add a line saying simply “with minor modifications” or “slightly tweaked for this game,” without giving any additional author names at all.

What about cases where you do massive modifications, or just use a small portion of another extension?

Since I seem to have stirred up a bit of a hornet’s nest, I’ll kick in my own couple of pence.

In the world of “traditional” writing, if I’ve written a piece and somebody quotes it (with attribution, of course) but changes one word in the quote, standard practice requires that the modification be set off in square brackets to indicate that it is not the word that the original author used.

Granted, an extension is different in that what the ultimate reader (the player) see is not the actual language that the extension author wrote but rather something that such language indirectly generated (putting aside the case where the author releases the source code along with the story file). Nonetheless, the possibility exists that my modification, no matter how minor, may be such that the original extension author would consider it a crime against nature. If I don’t, somehow, flag the fact that it contains something which he has not specifically approved, I might be attributing something to him to which he would not want his name attached.

How about something like: “This incorporates Extension So-and-so by Joe Blow, with minor modifications by Robert Rothman. Any errors, inconsistencies or bugs therein are solely the responsibility of Robert Rothman.”

Robert Rothman

That is what I lean towards. I look at it this way… If I were to publish an extension, and someone else were to use it and modify it too better suit them, that is how I would want my original work to be treated.

Another thought…

capmikee, DavidK, and others have helped me with problems in my code. They gave me the fixes I needed when I had a coding issue I couldn’t figure out. There was a problem making an aspect of the extension work the way I wanted it, and they posted the fix for me to use. And I did.

And, as I am sure we all do, I have used ideas and code (modified) from the examples in the documentation in my games and in extensions. How far should this go? Do we need to list every source of every idea that went into the final product so it shows up in a ‘version’ response? I do mention them (the people and example references) in the extension docs… but really, does it all need to be in the ‘version’ response? If I use 20 lines (or even 50 or 100) from another extension (or helpful forum post, or Inform doc example), in a 400 line extension, do I note it?

I think this is a point that we each must deal with in our own way. There is no right way or wrong way. Nor can we make a ‘rule’. Maybe general guidelines. But a 300 line response to ‘version’ is not in anyone’s interest.

Trust the community to be honest. Personal integrity goes a long way… And in the great scheme of things, we have no other choice.

I am sure to some this sounds like a silly post about the issue… But really, how anal do we need to be? And I think this is a subject that is wide open to anal analysis. Pun intended. :mrgreen:

Yes, this is what I believe as well. I’m happy with the way I’m handling these issues now. I started doing what I’m doing to avoid outright errors… inform not mentioning an extension I used cos I changed its author to me for purely technical reasons. And I’ve dealt with it, and I also describe what’s going on with other stuff I’ve used in a way Inform itself could never account for.

As you say, no need to be too guideline-obsessed about this. There is something of an unofficial community tradition of including a “credits” command or menu item that lists people who helped you in substantial ways, such as beta-testers or people who gave you lots of code advice. It is hardly carved in stone, though. As for crediting the manual, I wouldn’t worry about that at all, unless you really want to call out some useful third party guide.

I like the idea of a credits command. The credits could be part of the story file, and the extension files…

I imagine it looking like what we do now with “The story description is” but instead say “The story credits are” and/or “The extension credits are” and have them all lumped together at compile time so if the player types “credits” or in the code we add ‘Say “[Story Credits]”’ they are printed out.

I think this should be part of the standard rules. A built in, as opposed to a ‘how do I do this in a way that is consistent across all games and interpreters and pleases everyone’ type of approach.

I know, easy for me to say. I don’t have to write it into the parser and the compiler. :wink:

I generally try to build the acknowledgements page (testers, people who helped with ideas, etc.) into the game world itself. For example, in one game I have an otherwise-unused computer in a room; if the player turns it on the acknowledgements appear on the screen. In the game I’m working on now, the player finds a file folder in a filing cabinet; if he examines the file he sees the acknowledgements. That way the credits appear without the need for a special command, and it becomes part of the game experience.

I’d never thought of the idea of using the same acknowledgements page for extension authors who are also credited automatically under the “version” command, but its an idea.

Robert Rothman

I had a “credits” command until I saw this thread, and then I moved the credits into the “version” command. But you could always have a one-liner at the end of the “version” output that says “for full acknowledgments, type CREDITS.”

I think this already is built-in under the VERSION command, no additional work needed. I understand CREDITS as a synonym for VERSION. Granted, after collecting some beta testers I’ll likely include an After printing the banner text while versioning or however that rule goes in order to append the beta tester names, but otherwise, rolling credits is a done deal.

I would never remove an author’s name from their extension, nor insert an Authorial Modesty which amounts to the same thing. If I did heavy modifications, I’ll use the 2nd line that the manual mentioned, so VERSION prints “Plurality Plus by Ron Newcomb, based on version 5 of Plurality by Emily Short”. This is because I still need the original Plurality (and its upgrades) so I can’t just edit the file in-place. But their name remains. For minor modifications, I change nothing. It’s so rare than an extension can be included without at least a little tweaking that changing credit for minor modifications seems, as someone wrote, like grasping.

As an extension writer, especially for the more community-driven ones, I’ll add the names of forum people who assisted with debugging / suggesting stuff, in the comments of the extension at the very least. Custom Library Messages has a big block of comments at the top of its source because of this.

As the manual says, “we’re all in this together.”

Chapter 25.3 of the on-line docs says:

[code]Sometimes authorship is complicated. What if Mary Brown finds some Inform 6 code written by John Smith in the mid-90s, and puts an I7 gloss on it to make an I7 extension, but then Pierre Dupont translates it into French: who’s the author of the result? The rule is that the person making the current, latest version is the author listed in the titling line, so we end up with

… by Pierre Dupont begins here.

But Mary and John deserve their credits too: see the next section for how to give them.

[/code]

And the next section says:

[code]A second double-quoted text can also, optionally, be added in yet a third special starting paragraph. This is to provide additional credits to people who have contributed to this or earlier versions. For instance:

The Ducking Action by Graham Nelson begins here.

“An action for ducking one’s head.”

“based on original Inform 6 code by Marc Canard”

Note the typical style here: it’s a phrase rather than a sentence, and neither starts with an upper-case letter nor ends with a full stop. (The additional credit is then used in documentation and also in the VERSION text of any Inform story file using the extension.)

[/code]

I had read this, and understood it conceptually, I was just thinking that ‘version’ and ‘credits’ may compliment each other, but they are not the same thing. And added comments to an extensions doc will never be seen by a player that types ‘version’.

Having a new command would allow ALL to be mentioned… even those that helped or contribute to an extension we might just use, but didn’t modify. Within the game there could be a line:

Story credits: blah blah blah

Which would cover the story. Then within the extensions:

Extension credits: blah... more credits on only this extension

This way if we use an extension and do not modify it, its embedded credits from the author get mentioned too. As the manual states (see above):

The rule is that the person making the current, latest version is the author listed in the titling line...

Which could be read to say “It is okay to change authors name, as long as the modification is more than just minor tweaks”.

And we are all in this together, that is why I want to give credit where credit is due, in a meaningful way.

The reason I disagree with this line of thinking and ‘grasping’ ideas is that it’s a subjective assessment of a command which tries to be objective (version), but can’t necessarily do it.

Typing ‘version’ gives a raw tech dump of info on extension files used in the game, generated by the game from programming. I see this as tech info and help for programmers, not info that a player really needs or is even interested in, at least to this extent. And in that list the game produces itself, if it’s no longer the file ‘Rockin Sounds by Mr Dude Version 2’ as provided by whoever made it, it’s no longer strictly true.

If there were no ‘version’ command, we might not be having this discussion. Everyone can work out what to write in their credits and they will do it.

What I’ve done in my workaround is tried to make up for version’s understandable inability to work out exactly what I’ve done with all the extension code I use, and a truthful splat to the end of it. I also have a credits command separately which is less techy and also the real credits with everybody, not just a list of extensions. People should handle this how they like.

I have to program in the handiest way for me. If I find it handiest to change extension names or authors to move the files around my system, or throw away the extension file and move the code into my game, I will do it. ‘Version’ can’t handle that, so I just make up for that fact myself. If an extension was corrupted or removed from the auto generated list because of what I did, I stick it back there with a realistic appraisal of what I did to the file if necessary.