IF Authors' Group: An idea for developer mutual aid

The General Idea

It seems that some people come to IF mainly from a writing background, and some people come to IF mainly from a programming background: both tend to be excited by the combination of writing and gaming, but are generally more proficient in one than the other; those equally proficient seem to be a talented minority.

I’ve been doing some thinking about how people could share their strengths and support each other’s work, so that writers can become better programmers and programmers can become better writers. At the moment, I’m thinking along the lines of creating a space where writers and programmers can meet up to provide constructive criticism and suggestions for each other’s writing and programming.

I’m starting this thread to throw the idea out there, see how it’s received, and see what will or ideas there might be for taking it forward.

The Personal Background

I’m returning to authoring IF after a couple of years’ absence, though I’ve been playing all that while. As I slowly get reacquainted with Inform, I’m rediscovering something about myself: I am not a natural programmer. I’ve got a logical enough mind to write serviceable code: I can make my game do what I want it to most of the time, and after extensive beta-testing it’s reasonably (though not completely) bug-free. But I know that the code I write is not good: it’s inelegant, generally too complex, doesn’t always grasp the way the central concepts work, is filled with ugly workarounds.

I am, however, I think, a pretty decent writer. It’s part of what I do as a job (of sorts). Another part of what I do is working as an editor and event organiser, so whatever my own writing abilities, I do have an experience of how writing works and a sensitivity to what good writing should do. I spend a lot of my time reading on and commenting on other people’s work, and enjoy that.

I also really believe in collaboration and mutual support. I set very little store by the idea of the heroic lone author, and think that most writers benefit from sharing their work and asking for criticism. One of the lessons of the open source movement seems to be that the same is true of programming.

So, faced with the problem of my weak programming skills, my natural reaction is to seek support and advice: I’d like to find people willing to look over my code and tell me where I’m going wrong. I’m not talking about debugging it or rewriting it for me, but rather look at it and saying “This bit is too complex: have a look at this bit in this manual which will help you rework it”, or “If you use that rule there it’s likely to have impacts later on when you do such-and-such.”, and so on. Not debugging, but helping me improve my style.

But that’s quite a lot to ask, so I started thinking about what I could offer in return. And, just as my code is serviceable but not good, I honestly think that the majority of IF is only serviceably written: the prose tends to do the job, but not much more than that. There’s less understanding around of what makes good writing, of what makes good prose, than there is of what makes good code. There’s a reliance on cliché and stock tropes, there’s inelegant story-telling and poor grammar everywhere, and so on. So now I’m thinking: what if I could offer my services as a critical reader in return?

I run more than one writers’ group where people get together to discuss their works in progress. So I suppose what I’m proposing is an online IF authors’ group where people can share and discuss what they’re working on, and seek criticism, support and advice.

How It Might Work

I can see two main ways of this might work:

There could be a mailing list or forum where people regularly post parts of their game, asking all participants for constructive criticism on the code or the prose. There could be a timetable to this – in one writers’ group I run each writer e-mails a poem every Saturday, and everyone responds with their comments, for example – or it could be open or free-flowing.
There could be a sort of matchmaking service, where people post about their IF and what kind of readers they’re looking for, and people get paired off with each other on the basis of mutually compatible needs. The pairs would then proceed on whatever schedule best suits them.

There are probably other, better ways this might work. I’d love to hear comments on these thoughts and suggestions, other ideas for how this could work, and suggestions for how the whole idea could be moved forward.

So

what do you think?

My first thought is that your programming skills may not be as bad as you think :slight_smile:.

That aside, author groups can take so many forms and we even have a few examples in the IF community past and present, from the TADS group that Jim Aikin started to the ongoing workshop the PR-IF runs, as well as one-off events like IF Month. I’m interested in hearing from those guys about what they think is successful and not.

One challenge that online groups seem to face is keeping motivation up, so I think deliberately addressing that is a good idea – whether you do this with regularly scheduled real-time chats/Skypes or something else.

I’ve seen some groups have a formal queue and quotas (so you can’t put your work in the queue-to-be-reviewed unless you meet your quota-of-reviewing). That may be a good idea only for larger groups; a simple commitment to review once per week may work just as well for a smaller group as you mentioned.

This is interesting and I’ll throw a little anecdote out there. I won’t do my normal long-winded posting here but I will say that during my classes, writers often seemed to prefer TADS 3 to Inform 7 and the reason for that was because they felt that Inform too much tried to conflate the act of writing with the act of programming. They felt that there was a certain dislocation in terms of how they thought about their writing tasks as distinct from their programming tasks.

So the idea of separation of concerns – which is really what my writers were looking for – is interesting because with the idea you are talking about, the separation would be done by person, rather than by the medium itself. That was something I tried as well. In my earlier classes – and this goes back a few years – I did have programmers and writers do “pair writing”, as it were. (Sort of like pair programming, but more akin to how you would have a tester and a programmer work together rather than a programmer and a programmer. The reason this is relevant is because in such “pairing” you have programmers focus on the implementation, while testers focus on the intent. There is a corollary there with writers vs. programmers.)

One of the challenges I found in this with Inform 7 in particular was that people (even the programmers) needed better ways to think about how to “think in Inform.” In other words, it was felt that certain idioms and even design patterns were lurking in the language but were not expressely called out. To be sure, some of those same charges could be leveled against TADS 3 but since TADS has a more traditional programming structure – at least on the surface – this was found to be less of a problem. I only bring that up because it mattered if the workshops were constructed with more than one language in mind.

In terms of how this was all done, in all classes where I had programmers and writers teaming up, I did something equivalent to the notion of a “spec workshop.” (In the IT world, this has to do when business users, quality assurance, and developers get together to “spec” out a user story.) The issue here is that “effective programming technique” and “effective writing technique” are different domains and that middle ground (“effective programming supports the effective writing”) becomes tricky because the programmers and the writers collaborate at very different levels. It often became very one-sided until I had at least more than one writer/programmer teaming up. But even then there was a tricky aspect because the writers often wanted to write their own story.

So it depends here if your focus is an active learning for each person’s specific purpose or collaborative learning. In the latter case, you can almost run these things like writing workshops combined with programming “spikes.” (For example, in my classes the goal was always to have a “spike solution” implemented at the end of the class for the given area being tackled.) That spike was then discussed with the class – both programmers and writers – so that there was understanding across domains. This way I allowed writers to still work on the story they wanted to work on (active learning) but allowed some discussion of overall technique, design considerations, and implementation (collaborative learning). This allowed more cross-pollination as well between the writers and the programmers (similar to how you would encourage more of that between developers and business users in the software engineering world). This seemed to work to keep motivation alive because there was more interest in what was being done across the board rather than the self-interest of one writer’s story or one programmer’s game.

Now, your mileage may vary on this next point, but I tended to find that the writers ultimately wanted to be more involved and hands-on – and, in fact, doing the programming work – once they were confident they had a good grasp of the techniques they could use to get what they wanted to achieve. A certain “programmer lockout” had to be watched for. I should also note that it did help when the programmers had some background in game design as well, such as story frameworks, movement impetus, architectural pressure, challenge modulation, and so on. That was one way that the “programmer lockout” was avoided because the programmers could clearly keep articulating ways to incorporate game-focused thinking into the more writer-focused aspects of dialogue, exposition, pacing, and so forth.

(Hmm. What was that I said about not doing a long-winded posting?)

I’d love to be in on something like this. I’m not really satisfied with where I am on a programming or writing level, though. I think I’m a pretty decent writer outside of IF, but once it comes down to chopping things into bits, things go wibbly.

I’d like to see something where regular work of some kind was expected; I tend to go through dry spells, and a little extra encouragement to get something down, even if it’s only an object description, would be helpful. I suspect regular real-time chats will be a real challenge for most people, given the diversity of locations and schedules.

Count me in, too. I’ve had a lot of projects that have helped me learn stuff, though there are some areas I keep avoiding out of general fear. Right now there’s so much I don’t know I can always find something easy, but it won’t always be that way.

If I had someone to push me on the stuff that gave me trouble, and if I could do the reverse for them, that’d be a wonderful boost.

With Inform, or really any sort of programming, it’s useful to have a bunch of people who may know something you don’t and know how to present it well. I mean, there is a lot of good documentation, but it needs to be general to get the point out to as many people as possible. I’ve found even the Inform 6/7 questions on this message board to be valuable, and if there was a more directed and formal and scheduled way for people of various levels to learn and trade information, I’d be in for that.

There’s a sense in which IFMonth totally backfired for me personally: I spent so much of my [already tightly-budgeted because of schoolwork] time designing the site, putting together a mailing list, re-reading the DM4, writing blog posts, and uploading other people’s games to actually, you know, write any IF myself. So, as a tool for actually getting IF writing done, IFMonth was not so great. However, some things turned out well: I learned some names of members of the community, which I still think of as my IFMonth friends (the first Comp 2009 game I played, other than my own, of course, was by one of them), and I had an excuse to get Goob to talk to some of us about narrative. Writing the blog posts also encouraged me to get a little more rigorous about the theory side of things, though I like to think I have progressed since then. And I get to claim to be partially responsible for the formation of PR-IF. Two of those positives are directly related to the in-person meet-ups.

I’m still a great believer in the “just put together something” (more eloquently explained by an acquaintance here) school of overcoming the hurdles to [at least one form of] productivity. I’ve also done some 24-hour comics, Ludum Dare, and my undergrad gallery show, Instamatique (which could be described as “24 hour dresses day”), and the experiences have been positive for me. I also love implicit peer pressure as a motivating force for getting things done: if I tell someone (especially someone whose respect I want to keep) that I am going to do something, I am at least twice as likely to actually do it, even if that person doesn’t actually care whether or not I do. So the general structure of IFMonth was something that was influenced by my own productivity strategies. It’s not entirely clear to me whether this structure was optimal for the participants. It’s interesting that the dropoff in submissions was roughly equal among people I know personally and people “from the internet.” (Data: 5 of 20 first assignment submissions vs 2 of 6 last assignment submissions from people I know.)

Harry,
sounds very intriguing at a high level. But I don’t actually know what would be done here that isn’t done already via these forums. Are you suggesting a different medium for collaboration? Or just an active way of soliciting collaboration?

I’m working on my first IF piece (a murder mystery story) and while I find it rewarding, it is sometimes daunting to be programming solo without a solid grounding of how to think in Inform and without knowing all the best practices, design patterns, idioms etc. (And the more I read on these forums, the more I think very few people have this down cold.)

I’m happy to share what I uncover along the way with others and would love some convenient mechanism for getting input. (I would love to get someone to look at some of my code and make it more Inform-like in some areas.) But I’m also not looking to just hand-off my design document and the working prologue and ask someone to finish it. (Maybe if I run out of time, that might happen.)

Perhaps it would be enough to declare December (or perhaps through Feb 1) as a time to encourage folks to start on a new game, and set some milestones, sort of like NaNoWriMo (national novel writing month) or IFmonth. Could easily make it possible for folks to check-in their progress, share tips, share code excerpts, curse Inform’s documentation :slight_smile: and at the end all drink beer, whether real or virtual.

That said, it might be good to understand what worked or didn’t work about IFmonth.

–Zack
www.z-machine-matter.com

I’ve participated in these two, so I can say a little something.

In short, the best thing about both of them was having a deadline and a group of people I had to show something to.

The IF Month was set up as a learning thing, and it was very effective at that for me. I was able to dip my toes into IF programming with some guided help, which really was a great way to do it. Having that blog post to read and also being pointed at other sources to read helped focus things.

Grue Street, the PR-IF semi-regular workshop (we need to have another one soon), works nicely because of the in-person-ness. Everyone is required to bring something, at the very least some small bit of interactivity, and then everyone else gathers around and plays that person’s thing, generally with the author keeping quiet. It’s not only a good motivator to get at least some work done, but it’s great to be able to watch live as people play with your work, and you can pretty quickly see ways in which your implementation could be improved, things that you thought were obvious but that are actually not obvious, etc. I could see this possibly being turned into a live remote thing, where people get on some kind of voice chat thing and play together remotely.

-Kevin

Speaking of which, is anyone doing something like this in the San Francisco Bay Area? (I’m aware of the IF Meetup, but it doesn’t seem like quite the same thing.)

I would think the SF IF meetup could incorporate this type of activity. Pls suggest it to Dan F. Might be good to have a venue where we could project a game and/or code onscreen.

Projecting on a screen would probably work well, but we have always done it with just people gathered around a laptop, and it’s worked fine. So, find a place to project if you can, but don’t let not being able to easily find such a place stop you from doing it.

-Kevin

Addressing the opening message post again:

I’m all for collaboration. I think it’s the way IF will continue to grow and draw new audiences. But do all writers want to be programmers? And can–or should–they be?

As I put together my frist real piece of anything in Inform 7, I’m quickly realising that it’s not as friendly as I’d hoped. The myth of it being easy to pick up and use by writers extends only as far as the basics. From my experience, anything else means learning lots of syntax rules, programming quirks and much referencing of the user manual. To be honest, I don’t mind too much: I like the sense of satisfaction I get when my code finally works the way I want it to. But, I wonder if collaboration could be more about finding ways that people can retain their expertise, without necessarily having to learn someone elses…

I only say this because I read this thread a few days ago, and since then all I can think about is the way that Juhana approached the IF Trainer. Before any code was written at all, he wrote this based on a few ideas we bounced back and forth:

http://www.inthecompanyofgrues.com/iftrainer/index.php?title=Mock_transcript

Even now, when I read through this I see something that any author could write with almost no knowledge of how to code. All that would be required was a basic knowledge of playing IF.

Yet, if you gave this transcript to someone who’s adept at coding, they’d easily be able to create a game from it, and would already have the tone of the piece, numerous descriptions, and even a large chunk of dialgoue. Anything extra that’s required of the author could be requested by the programmer once the majority of the game design and coding is done. (eg. Coder: “Hey, writer, could you write up another room that would be a secret place accessed by the player if they use the magic word XYZZY? That’d be awesome. Cheers.” etc.) Or, you might have distinct writing/coding phases.

It might not be necessarily “mutual aid” as you propose, but it is mutual development. It also clearly marks the lines between work tasks, and possibly reduces the likelihood of “lockout”.

Slightly OT, that’d make for an interesting minicomp. People sign up as programmers and/or writers, then the programmers get (randomly?) transcripts to implement.

My experience of the writer/programmer dichotomy is that writers often want programmers to collaborate with and often believe in the division of labour, conveniently keeping most of the inspiring stuff to themselves. Whereas programmers want to play both sides because coming up with neat content to implement is where most of the fun is.

Somebody who programs as a hobby, is probably doing it out of creative excitement to see the finished product. The exciting part is envisioning something and then making what you personally had envisioned real. That’s where the juice is. It’s just not as exciting to realise somebody else’s vision wholesale. And it’s a lot of work w/o pay, so it had better be exciting.

A programmer should be thought of as just another creative mind but with more technical knowledge. Such a person should be probably be approached as a full creative partner rather than as a potential implementor of your visions.

It’d be sort of like if a programmer came up to you and said, ‘I’ll do all the puzzles and the plot and all the mechanics, but you just polish my dialogue and prose.’ You might do it out of a desire to help, but you probably wouldn’t feel too excited about it — your services are merely being rendered on a project that is essentially unconnected to you. Now imagine that same relationship only instead of polishing the prose, you are doing all the actual coding and debugging, and trying to implement puzzles envisioned by someone who doesn’t know what’s easy to do or what’s hard.

To me that sounds like a nightmare project with no upside and a huge downside. YMMV, but in order to win over collaborators you have to understand what they need to be fulfilled. Maybe there are a lot of people who just love programming things dictated by others, for the sake of the act of coding alone (or maybe they are just very altruistic), but I’ve hardly ever met these people. Nor has any of the coding I’ve done in my life been motivated in that simplistic way. Without having my own creative vision to implement I never would have coded a single thing (nor indeed would I have bothered to learn how), and since I am no longer employed as a programmer, if I never had any further creative visions, I surely wouldn’t bother programming anything ever again. It is a means to an end, and no more.

Paul.

P.S. This is not a knock against the authors’ group idea, which sounds cool…

Paul,
Great perspective, and I think it gets to the heart of collaboration. From a historical perspective my understanding is that most of the Infocom games were primarily the work of one person as an ‘implementor’ covering coding and writing. (The low level compiler and runtime done separately.) Collaboration was more informal in tossing around design ideas, puzzle ideas etc.

The notable exception to this was Hitchhiker’s Guide to the Galaxy. But even there, Steve Meretsky (mostly programming) ended up writing much of the prose in later stages in the style of Douglas Adams.

It’s a small sample size for sure. But worth noting. Here’s a link to some interviews with Infocom folks
z-machine-matter.com/2010/11 … mmies.html

Zack

Zack

I agree with Paul. There’s a few writers whose vision I trust solely, and would be okay implementing for them. But it’s about those writers and that vision, not about the love of fiddly programming in particular. Even when I beta, I think I do a much better job when I feel invested in the process - either I love the work itself, or the writer is implementing/changing things per suggestion, or at least demonstrating that s/he’s thinking about it. And as a result, I am biased for most of the games I beta, because I have to be creatively invested to do a halfway decent job.

Perhaps this line was overlooked. I wasn’t suggesting at all that the writer simply plops a finished concept/transcript on the programmer and says, “Code this!” The creative process can still be shared.

Hey all,

I wanted to let the discussion go round a bit before responding. I’m glad to hear there are several people who think that something like this might be worthwhile. Currently, looking at the projects I’ve got on, I’m unlikely to be able to set something up until after Christmas. However, if anyone would actively like to help me plan and run such a group, feel free to e-mail me on harry DOT lodestone SPLAT gmail DOT com and we can chat about it.

The major piece of feedback I’m getting is that something which would give people a regular target or a reason to regularly write would be really beneficial, quite apart from the aspect of critical commentary. So that’s something we should definitely incorporate. I’m also getting a sense that a group approach rather than a paired approach might work best: so, for example, the group could be a small mailing list to which everyone sends a section of writing/code each fortnight, on which each member constructively comments. What do people think about that?

To respond to a few points, and some of the discussion of collaboration:

I’m not actually looking for a medium for collaborative authoring: rather, it’s about authors getting critical input on authoring. So this isn’t about two or more people authoring an IF together, but about people getting commentary and input on their authoring.

Currently, discussion here seems to focus on either debugging or high level theory. What I think isn’t already done is discussion of good programming and good writing style. People don’t post working code or complete passages and ask for comment: they post things that aren’t working or that they’re having trouble with. So this is about critical feedback to improve our writing and programming. Does that make it clearer?

So there was this interesting discussion of what makes good collaboration. My own perspective on this is that there are lots of different models of collaboration, none of which can be said to be universally ideal: really, how a collaboration works depends on the collaborators; different sets of collaborators need to work out between them how they’re going to work, what the roles are going to be, and so on. My first IF was written collaboratively with one other author, but we made no split of code and text: we just wrote different sections of the game, and then edited each other’s sections, so that the result was an emergent voice that was both of us and neither of us at the same time.

That said, I think that having a good understanding of programming makes for better writing, and vice versa, in the context of IF authoring. IF authoring is not simply writing + programming: the two influence each other heavily, and the whole is more than the sum of the parts. How one writes the text depends on game dynamics which depends on the programming, and what one programs depends on the demands of the text. And so on. So I personally counsel against a very firm and clear demarcation of the roles.

But this is all an interesting side discussion, rather than what I think this group would be about, as I hope is now a bit clearer.

Sorry, I did not mean to contribute to thread entropy. Nor to miss the subtleties of Neo’s post. But…

This!

As for a ‘reason to write’, I already do write. There is a mixed media project that involves IF that I work a little bit on every day, and there is a side project I started up specifically for acquainting myself with Inform 7, which I work on a little bit every other day. (The days when I don’t work in Inform 7 I use that time for a non-IF project instead.) Not sure where I would make room for yet another project.

There are some writers who have trouble getting started and others who have trouble getting finished. I tend to fall into the latter due to intercompetition between various projects I do for myself and others, so yet another project (particularly a regular recurring one) is the last thing I personally need. I don’t know where everyone else falls on it — probably it’s a great idea for some.

Paul.

I know my idea for collaboration got knocked down pretty hard earlier in this thread, but this is the project I was working on when I made those comments:

The ‘Plug-and-Play Gamebook’ template. (Or, how do you get writers and CYOA players one step closer to interactive fiction?)
http://www.inthecompanyofgrues.com/?p=228

Perhaps that goes a little further towards explaining what I was suggesting.