Hi Branan, this is a good list, and all are essential. Let me offer my perspective on items here, but perhaps not in the order you listed.
Lets start with this one, which really impacts an architecture of the community resources that may be hard to change once in place:
3) Decide on a method for feature-branches, for long running projects that eventually should be merged. Things like cross-platform porting efforts. These sorts of branches need to be first-class citizens within the project IMO, as such eventual-merge projects will hopefully be the main development focuses. If bitbucket is chosen for (2) this is mostly redundant.
I agree we'll have to expect to have forks or branches with subgoals in mind, and a hierarchy of cloned repositories is the way to go. Using Bitbucket does make seeing the relationship between repositories more visible than an arbitrary repository graph. That happens because all the repos are on the same host; Mercurial itself doesn't really let the source repo used to clone a repository know much about the clone.
I am, however, motivated to keep a local repository representative of each of these subprojects on the Foundry, independent of whether or not it's the one used by most users to clone from. The reason being that it will be much more efficient for automated tools on the Foundry to retrieve artifacts from a local repo than one far away. Many of the tools poll the repository (i.e. are not event driven) so the closer the better. As an aside for your benefit, none of the tools on the foundry are limited to operating on a local repository (at least the current set of tools). They all can, if need be, use remote repositories. So Fisheye/Crucible can be configured to provide review services on a project's staging repo on Bitbucket. As can the automated build or documentation tools (we we can create Doxygen documentation from one of those Bitbucket repositories).
I'd like to hear the specific benefits you believe will come from using the Bitbucket review system. I havn't used it myself, and I do know the Fisheye and Crucible interfaces are not obvious (nor efficient, on a client's browser, as we've found out). I know you listed ease of use/low barrier as one benefit. Others? Something I'm looking for which steers me toward the Fisheye solution, is to keep as complete a history of design and review decisions as is possible. If we split lower level reviews off to Bitbucket, and then final level reviews to Fisheye/Crucible, don't we lose a record of the refinements that happened during the early stages? And isn't that sort of information useful to both newcomers to see how things happen, and long timers to go back and rediscover why something ended up being implemented as it currently is? I don't know if BB's review data can be imported to Fisheye, I'll start looking if you don't know.
Related to this is asking: What if anything can we do to our Atlassian installation and configuration to make it as approachable as possible? On unspoken goal we've had is to try to keep tool installation as vanilla as possible while making it serve it's purpose. It doesn't make sense to spend resources reconfiguring tools time and time again when they need to be updated. But if a tool is intimidating because of the complexity, and we can improve that with some slight customizations, I'm ok with that. Remember, our goal is to support Uru development, not to do system maintenance for the fun of it.
Ok, on to
2) Get a documented process for people who aren't on that list to get their code to the people who are. This could be a bitbucket repo that can be forked and have pull requests applied against it, or it could be something local where patches can be pushed. Attaching the results of 'hg export' to a ticket is always an option, though kind of clunky.
Some of this I think I addressed in the first item, but again, let's see where you're coming from. How has the PlasmaClient community been handling this situation? I think Zrax is hosting it, right? Do you folks do any reviewing before developers push? Is it formalized somewhere? We obviously opened the top level CWE repo for read only access to get the code out as quickly as possible. My initial instinct is to have people pull from any CWE repo (the one at OpenUru, or a direct Bitbucket clone) to start their projects. They can work directly there, or encourage individual contributors to work in their own clone. When it comes time to start consolidating contributions to the "project" a "review" clone from the project repo is either created or synced with the project repo. The contributer is granted (or already has) write access to the review repo, and pushes his change there (coordinated with other changes as needed). The review tool can look at the changeset in the review repo, record review comments and eventually a decision about the changeset. At which time the review repo is pushed back up the path to the top level project repo.
I like the additional level of category for "CWE-current", "CWE-nextgen", etc. That makes it easier to keep track of different build and execution environments expected as CWE (or others) get modernized or augmented.
Now for the hard ones (at least needing a little tact):
1) Get a list of people who should have commit access, and get it to them ASAP
...
And most importantly, whatever processes that are decided upon need to be documented. OU has a bit of a reputation for being hard to navigate and hard to figure out. Hopefully with the CWE project that can be sorted out.
Here is where we need to tread lightly. We've tenatively asked A'moaca' and cjkelly1 to act as the referees to the top level repositories, since they either wrote it (MOSS) or worked on it enough to get it running (CWE). There are no more experienced developers outside Cyan.
But we run the risk in the case of CWE of OpenUru "dictating policy" by putting something in place unilaterally. What method would you use to (at first) solicit a field of reviewers to do reviews (maybe partitioned into topical areas), and (eventually) identify the qualified individuals to fill the final roles as Gatekeepers? Would that method be acceptable to the breadth of contributors (or at least the ones you're familiar with)?
Same issue with defining processes. Shall we just post one, try it out, and refine it? Process is easier to change and refine than moving repositories around, so I'm not so concerned with getting it perfect out of the box. But I would like something that involves reviewing code, meeting some minimal requirements to preserve things like compatibility and documentation standards. That sort of thing which is needed to improve the code base. So I'm less inclined to start in complete trusting mode.
(Personal impressions: I think Cyan is letting us manage the derivatives of CWE as we see beneficial, they'll decide on their own what to pick up and feed back into their internal development. I'm going to be deferential to A'moaca' and cjkelly1 with regards to MOSS. They'll need to be consulted in planning process for MOSS unless or until they give their blessing to a community process. And the same for other new or derived projects, I look at my OU role as that of a trustee providing services to others, rather than an owner myself.)
Lets start there... reactions? Refinements?
_R