Many people on Khan Academy (I am not included, though the subject is still of interest to me) love to collaborate on projects. The reasons for this need no excessive explanation, though a simple one would do fine: for instance, while I'm a strong graphic/UI-maker, I'm pretty weak when it comes to creating the game itself. Thus, one of the best solutions for this is to team up with another person, preferably one strong where I'm weak, to create a game, graphic, or simulation together. However, this often can cause problems. Sometimes it can take a long while to implement features together, as the main program is stored on only a single account, while any others working together must wait for that user to combine everything.
My solution isn't anything new, but it also brings improvements to many of the old ideas: Why not create "open-access" programs? Using the settings on the program, the creator could add up to five (or whatever number you want to be the maximum) people that are allowed to edit the program.
This can create problems, though. For instance, any of those people with access might decide to edit it in a way that the original creator doesn't like.
What I'm suggesting is another option for the program's maker. When they change this program to open-access, they can toggle on "suggestion" mode. (Think Google Docs, in a way.) This setting is originally on, for the safety of the creator's code, but can be deactivated so that the collaborators may make whatever edits they choose.
Suggestion Mode essentially allows the collaborators to post suggestions, which the original creator can read through and then react to however he or she decides. These suggestions could come in either the form of code or just normal old text (with the former, it would immediately take on formatting like that in the editor, making it easier to insert), allowing for more choices. (It's kind of like an upgraded version to the T&T, only available to those working with the program's original maker.
To offer a greater sense of control, the programmer could also change settings per each user with access to the program; for instance, User 1 could only suggest, whilst User 2 was free to edit. (Thus, if you feel trust issues with a certain user, you need not let them have free rein.)
Further, the creator could even flag any suggestions, just like the T&T; they could redact certain user's accessing abilities; and they are the only ones capable of adding in more collaborators, removing those already present, or doing pretty much anything else with the program itself.
(Collaborators are also capable of seeing suggestions and editing/deleting their own; that way, they're given the power to flag anything they believe to be unfit for the programming, or counter other's suggestions with better ideas/code.)
The last problem I see arise is, again, with the collaborators themselves. If anybody attempts to add them to a collaboration, they should receive a notification asking to do so. They can deny, accept, or ignore it as they choose; furthermore, if a certain user spams them with requests, they can block that person. (They can also turn off notifications for these invitations in their settings if they so choose.)
And, of course, on the topic of notifications, the creator and any collaborators would receive a notification anytime someone posted a suggestion. Though you may think this could cause spam, it's not that different from the normal T&T.
Lastly, any collaborations would appear in your profile under the normal programming section; however, you could add on another section (just like there are the two already there, "Recent" and "Top") that filters out all programs except for collaborations.
All of this would greatly benefit members of the community who find themselves "incapable" of completing certain programming tasks. They could even use it like the Help Request section, teaming themselves with an experienced programmer for suggestions and other help!
Thank you for considering this. I am eagerly awaiting your reply!
EDIT: I am now aware of another problem -- live editing. If two people were on a collaborative program simultaneously, both editing, some problems could occur due to the fact that they cannot see each other's edits! Thus, I have a solution to that as well:
The program could act almost like Google Docs does, but without the auto-save. When someone goes to edit the program, other collaborators can see it in "real-time" (updates every five seconds, though that can be changed in your profile to accommodate different connection speeds or needs); however, these edits of the collaborators are not automatically saved; unless the programmer clicks the save button, none of the code they just wrote, changed, or deleted will remain so on their next visit.
On the same token, the collaborators viewing that code cannot change it until it has been saved. However, they can offer suggestions and the like, noting mistakes or inefficiencies in the code.
Lastly, if you save the program, it only saves your work; thus, you must work together with your collaborator if your code affects theirs, to make certain nothing goes wrong.
And, of course, the program should show whether or not collaborators are on it (maybe go so far as to show what line they're on), and especially whether or not their internet connection is stable enough for them or you to see real-time edits. (I believe, for safety reasons, that it should be possible for collaborators to turn off these "visibility" settings, just in case.)