GitHub setup is proceeding apace, although honestly, GitHub is a bit toyish in my opinion, but that is probably just my grumpiness :) As a result, it can't quite set up things the way I would prefer they were set up, and I would like some suggestions on what would be most useful to people in lieu of what I would do if GitHub was actually an industrial-strength tool.
Current set-up. I have done the work of making a GitHub repository which has all of the days of Handmade Hero as commits, labeled with the title of the video to which they correspond. I have also tested granting access to a language port maintainer to set up a separate repository, and that works fine, too.
What I would have liked to do, but can't. What I would have liked to do was keep the main repository such that only I have push rights, and I would just push to it every night after the episode is done. I would then create a fork of this repository that was the community's version of the code, and I would grant admin access to a number of Handmade Hero community members so that they can organize push rights for people doing ports to other platforms, etc.
This way I would never pull, so I don't need to be aware of any community work that is going on to make good merge decisions, etc. But the community can collaborate on a forked tree where they can build in the standard Mac, Linux, etc. ports and merge with my changes easily. Seems like the obvious way to set this up.
Unfortunately, GitHub can't do this. GitHub doesn't allow an organization (ie., HandmadeHero) to own both the original repository and the fork. Any Git fork on GitHub has to be owned by a different organization or individual from the original. This is kind of absurd, but I contacted support and they assured me it really was a limitation of GitHub.
What should we do? So, this limitation will not cause problems for people who want to maintain their own forks - that is fine. It's only a problem for having an official community fork with a team of admins, etc.
My current thinking is that the best strategy might be to just forgo the forking, and make merges happen manually. Ie., I will just maintain a repository called "casey" under Handmade Hero, which is my branch, and everyone has pull rights but nobody has push rights except for me. Then, there would be a community repository called "cpp" for the C/C++ port where people just manually merge in my changes as they wish.
But I don't know if that is the most logical thing to do. I am open to suggestions.
One suggestion might be that GitHub sucks (obviously true) and we should use something else. Another might be that it is not important to have a community repository, and that everyone will just make their own forks and then invite people onto the forks. I don't know. How that works out when you want to make something that is "the community version of Handmade Hero that has both the Mac OS X code and the Linux code" I don't know, but maybe it's fine.