What we did wrong:
- No anonymous access.
- No clone tracking.
- No obvious way to use our repositories.
- Repo structure was too clever and complicated.
- Use of Bitbucket as a familiar and easy social repository hosting site - provides anonymous access, clone tracking and pull requests.
- Bitbucket synchronized mirrors of CWE, MOULSCRIPT and MOSS (pending) - provides flexible use of either Foundry or Bitbucket.
- Discrete compatible forks instead of one repo with multiple branches (CWE, CWE-ou, MOULSCRIPT, MOULSCRIPT-ou) - provides workflow agreeable to the GoW.
I hope that one of the first words that comes to mind is forward. A lot of us have been giving this question thought, as has been evident from the numerous and passionate topic threads both here and in other venues. I hope with this posting we can do just that. We are presenting here a proposed restructuring of the OpenUru code repository to solve interoperability problems primarily raised by Guild of Writers members, but also to address some of the issues raised by other individual contributors.
I'd like to limit the discussion in this thread to just one element of the OpenUru environment, the Cyan Worlds Engine code repository (CWE). We'll try to stay on topic, be as concise as possible, and make decisions as quickly as we can. For an easier overview of our proposal I'll start with a summary of our current status, a proposed new repository organization, and a roadmap for implementation. A later posting will contain more detail on these summary items including background, alternatives, and yet to be implemented functionality. Anyone with concerns are encouraged to voice those concerns, as long as they are accompanied by alternative approaches.
Problems present in the current OpenUru code repository
- No description on how to submit changes back to the project
This may require some additional structure to the current repository - Anonymous access not currently enabled on the CWE repository
This is different than the usual accepted convention for open source projects, leaving a perception of exclusivity and needless hurdles for getting involved. - It is hard to determine what version of CWE the repository(s) contain and what each should be used for
This became evident as we tried to keep part of the repository synchronized with changes Cyan had incorporated from the open source community - There was no easy way to explore or locate projects based upon CWE
This functionality is present in several public code hosting sites such as BitBucket or GitHub, and many find it useful. Also sometimes referred to as "clone tracking". - A repository workflow that appeared foreign and clumsy to those familiar with the Guild of Writers processes
From the repository viewpoint, we were planning to use a Mercurial "push" paradigm to propagate changes. The Guild of Writers is more comfortable with the "pull" paradigm supported by the common public hosting sites for merging changes. - Early changes to the Guild of Writers CWE fork made it difficult to integrate their modifications back to the OpenUru repository
Restructuring and other global changes introduced into the GoW repository, while desirable to move forward on their work, produced incompatibilities between the GoW repository and the OpenUru repository that make exchanging modifications difficult.
Proposed alterations to the OpenUru repository organization
- Changes to the original OpenUru CWE repository on the OpenUru Foundry
- Split the CWE repository into two separate repositories: CWE, and CWE-ou, and eliminate the CWE-dev repository.
Follows the "fork" paradigm rather than "named branching" as proposed by Hoikas
Addresses issue #3
We have accepted Hoikas' user-simplicity argument, and are therefore moving to the multi-repository paradigm instead of using named branches. The CWE repository will contain original CWE code, and only track changes that Cyan has accepted back from the community and incorporated into the MOULa servers. The CWE-ou repository will contain the OpenUru collection of CWE, with additions from the community.
At one time we offered to instantiate a read-only mirror of the H'uru (GoW) repository on the OpenUru Foundry. One reason was to make it available in the Mercurial format (the H'uru repository is managed by Git). At the time, Branan declined the offer, but while we are reorganizing is a good time to verify that still is your preference.
- Split the CWE repository into two separate repositories: CWE, and CWE-ou, and eliminate the CWE-dev repository.
- Addition of BitBucket as an OpenUru CWE repository hosting site
- All variations of the CWE repositories present on the Foundry will be made available as BitBucket repositories
Addresses issues #4 and #5 - BitBucket repositories will have full anonymous read access
Issue raised by Paradox, this relieves the wait to implement on the Foundry.
Addresses issue #2 - The BitBucket repositories and Foundry repositories will be kept in synchronization automatically
A consequence of using BitBucket - Use BitBucket forks for individual projects and use the BitBucket "pull request" paradigm for integration back to CWE-ou
Feature requested by Hoikas.
Also
Addresses issues #1 and #4
BitBucket (and GitHub) both use a procedure called a pull request for performing an integration of the changes present in a fork into another repository. We will start using this for integrating changes into the communal CWE-ou repository. This will eliminate the need for the CWE-dev staging repository, and reduce the confusion when several changes are pending for integration. We still will provide a way to handle integration for those with repositories directly cloned from the Foundry repositories, but that process may appear more cumbersome to those familiar with BitBucket or GitHub. Using the BitBucket pull request will lower barriers both technical and procedural for integrating changes into CWE-ou.
We'd like to discuss how best to handle pull requests in our workflow.
- All variations of the CWE repositories present on the Foundry will be made available as BitBucket repositories
[While some of these tasks are already underway, they will be adjusted if the proposed changes need to be revised]
- Creation of the BitBucket OpenUru CWE and CWE-ou repositories
The CWE-ou BitBucket repository has already been created and populated. The creation of the CWE repository is underway, some manipulation of the original repository is being performed to make the CWE repository compatible with forks taken from the CWE or CWE-ou repositories present on either the Foundry or BitBucket - Renaming the original CWE Foundry repository to CWE-ou and creation of the CWE repository on the Foundry.
Pending. All named branching will be removed from CWE-ou and the Cyan changes replicated in the new CWE Foundry repository, which will then be synchronized with the BitBucket CWE repository. Once that happens, existing clone repositories will need to take care to reference the new CWE-ou repository explicitly on pull and push requests, or change their repositories configuration to refer to the new CWE-ou repository as the clone's parent by default - Documenting how to continue using an existing clone taken from the original Foundry repositories, with the new OpenUru repository organization
Those clones that were obtained from the Foundry will continue to be usable with either the new Foundry organization, or to populate BitBucket forks of the CWE-ou repository by changing the default configuration of the parent repository in those clones. We'll include brief instructions in the detail posting, as well as information on the OpenUru website. - Decommission and remove the Foundry CWE-dev repository
I don't see any pending changes that have been pushed into CWE-dev, so it can be removed at any time. - Reconfigure JIRA and Fisheye to refer to the new repositories
- Set up automated synchronization between the Foundry and BitBucket
_Rarified