So I’m continuing to work through some logistics regarding the Winter Scripting Games (and no, there’s no dates set).

The intent of these Games, as I’ve written before, is to offer a collaborative experience. You’ll work in teams of (proposed) 2-6. You have two ways to join a team: Pick an existing one that needs players (you’ll be shown the average time zone offset, in minutes, of the existing players, so that you can choose a team near you) or create a new team from scratch – which others can then join. You’d be welcome to “recruit” for your team using social media.

NB: Collaborate does not mean live online collaboration. Your team could do a Google Hangout or whatever optionally, but we’re only providing asynchronous collaboration.

You will be able to leave your team up to a point. That is, you could always LEAVE your team, but each event within the Games will have a deadline for joining – meaning if you’re not on a team when the event starts, you’ll have to wait for the next event to re-join a team.

My question right now revolves around the collaborative process. The idea is that the team has a single, shared code repository, meaning everyone on the team can see it. I want you to visualize this in your head, and then describe to me how you think it should work.

The overall idea is that your team works on the assignment together, and then forwards (by the deadline) a final team entry for judging.

Would you start by allowing one team member to upload an entry, and everyone would collaborate on it? Or would every member have the ability to upload a potential entry, and you’d all discuss which one you wanted to use as the team’s starting point? If there can be multiple parallel entries, how will the team decide, and then indicate to the system, which one is the “final” one? Remember, the team only sends ONE entry up for judging.

NB: We will provide private team discussion threads within the system. You will not necessarily be able to comment on a given script file per se, but we’ll provide a means to reference lines of code within the team discussion threads. That keeps the discussion in one place, but allows you to refer to specific wodges of code.

How will the code portion of the collaboration work? That is, when someone wants to provide a revision to the team entry, would they upload/paste an entirely new entry? Or would we provide a text editor so that you could edit the code that already exists? I’ll note that we’re NOT NOT NOT providing an ISE experience – so a Web-based text editor might well leave room for unintentional errors. We won’t help you with those.

If we use a paste-in text editor, we’d enable you to paste in an all-new entry, or to simply make quick changes to an existing entry, right in the Web page. That might be convenient.

The new system will recognize the concept of a given entry consisting of multiple files – e.g., a script module that includes a .psm1, .psd1, and .ps1xml file, all working as a unit.

Do we version-control this? That is, if everyone’s uploading revisions, do we just keep ’em all, and indicate which one was most recent? That way you could always access older versions? Again, if each team gets a single entry, and each member can paste in new code or edit the existing code, this seems workable. We’d keep old versions so you could “roll back” if needed.

If we did that, would you NEED a version-to-version comparison tool? If so, the complexity of that may mean we don’t run the Games this Winter. So think real hard about WANT vs. NEED. We COULD provide a way to download, in a ZIPped folder hierarchy, all versions of the entry, meaning you could then use local comparison tools on your computer to compare revisions.

Your thoughts? What do you think is the best workflow for this kind of Games?