Winter Scripting Games: More Feedback Needed

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?

Posted in:
About the Author

Don Jones

Profile photo of Don Jones

Don Jones is a Windows PowerShell MVP, author of several Windows PowerShell books (and other IT books), Co-founder and President/CEO of, PowerShell columnist for Microsoft TechNet Magazine, PowerShell educator, and designer/author of several Windows PowerShell courses (including Microsoft's). Power to the shell!


  1. I don't think there's a need to reinvent the wheel; if people want version control with comparisons, etc, there are free options available online (github comes to mind). Teams could just submit their final script version for judging, and the Games site wouldn't have to be concerned with what led to the creation of that script.

    The private forums you mentioned would be enough for basic collaboration, and teams could choose to use other resources if they prefer. If possible, disabling the "smart quotes" functionality on the forums might be helpful. They can cause problems when people post code in the body of a thread without using PRE or CODE tags.

  2. I agree with David, I think the collaborative tools are already out there and available for free, no need to go reinventing the wheel. Basic async collaboration on the games site would be fine and then a final upload of the completed script.

    • I'm a little concerned about requiring folks to set up something elsewhere. While git's wonderful, a lot of the folks who participate in the games aren't programmers and have no experience with that stuff. It feels like adding a pretty deep layer on top of something. I want to provide something, however basic; if people choose to use something elsewhere that's obviously fine.

  3. I agree. I don't think should focus so much on building the collaborative framework. Some team management and private discussion thread access is a good foundation and then the teams can leverage the power of the Internet from there. Just accept one entry or one or more files.

    It might be a bit ambitious, but I would like to see the Games build upon some community focused module sharing project like PoshCode. That provides a standard for packing an entry and opens people to the idea of contributing to the Powershell community.

    • PoshCode was used as the basis for past Games, without 100% success. It's simply not what the system was mainly designed to handle. That said, folks can obviously use that as a collaboration/sharing mechanism if they choose. Or git. Or whatever.

    • You know, that's a great idea. Actually, they're all great ideas. I think I'd rather see folks doing that themselves to collab in their teams - it's a very real-world set of skills with real-world benefits, and I think folks should be comfortable using those mechanisms. I think if people want to collab via pastebin (PoshCode), via git, or via any combination of those - they ought to do so.

  4. Why not start simple - every team has to designate one person who can upload the final entry, and let the teams decide on what their collaborative model will be and what tools they want to use. Have an open discussion period in the forums after the first event and let everyone weigh in on what their group did, and what they did or didn't like about the way it worked out.