From 0c2f99017a2a064380755aad66e828bdaee7ec5e Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Mon, 9 Mar 2015 10:18:31 +1300 Subject: [PATCH 01/20] Using MAP Client process as starting point. As agreed at CellML meeting a few weeks ago, we will restart the documentation of the LibCellML process using the MAP client dev process docs as a starting point. This is one of the docs from a family of related docs. Some of the others will probably also be used. --- .../MAP-development-contribution.rst | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 docs/developmentProcess/MAP-development-contribution.rst diff --git a/docs/developmentProcess/MAP-development-contribution.rst b/docs/developmentProcess/MAP-development-contribution.rst new file mode 100644 index 0000000..26511a5 --- /dev/null +++ b/docs/developmentProcess/MAP-development-contribution.rst @@ -0,0 +1,74 @@ +.. _Developer Contribution for MAP Client: + +================= +Contributing Code +================= + +This section describes how a developer can contribute code to the MAP Client project. Before reading this section make sure you have read through :doc:`Setup ` as some of what follows may not make sense without this prior context. + +.. contents: + +Overview +======== + +To contribute code to the MAP Client project you should select an issue from the list of open issues to work on. You can let others know that you are working on an issue by leaving a comment on the issue to that effect. Once you have started work on the issue and added either some implementation, tests or documentation open a pull request to share your progress with other developers. + +Add a reference from the main pull request to the src, tests and docs pull requests for a reviewer to follow. + +Make use of Buildbot to test your changes, any changes (i.e. new commits) to an open pull request on MusculoskeletalAtlasProject/mapclient will trigger the test procedure. Buildbot will report back to the pull request the status of the tests. A reviewer will first look at the status of the main pull request before looking at anything else so having the tests pass is a priority. + +When the changes you have completed resolves the issue a reviewer will give your work a final review before merging into the **prime** codebase. + +Fixing a bug follows a similar path the only difference being that we need to write a test that triggers the bug in question. + +Finally check out :doc:`Git Submodules ` for help on working with git submodules. + +Take Ownership +============== + +Because every feature must have an associated issue leave a comment on the issue letting others know that you are intending to start work on this issue. If an issue has not been created for the functionality that you require simply create a new one and leave a comment stating that you are working on it. + +Share Progress +============== + +We are following a test driven approach for the MAP Client project so the first thing to do is write a test that at least covers some part of the functionality required for the feature you are working on. Once this first test is written commit your changes and push them to Github so that your work can be shared with others. + +When the first new test is pushed to Github create a pull request from your feature/develop branch against the MusculoskeletalAtlasProject/mapclient repositories develop branch. We do this so that other developers can comment and make suggestions on your changes. We want to have an environment of friendly social coding where developers can offer guidance and help minimise wasted effort. Link this pull request to the main pull request by adding a comment on the main pull request with the following markup:: + + MusculoskeletalAtlasProject/mapclient-tests#4 + +or:: + + MusculoskeletalAtlasProject/mapclient-tests/pull/4 + +Github will interpret this markup and create a link between the pull requests. Obviously replace the numeral '4' with the actual value of the related pull request for your own work. + +With the tests written and any comments from the community resolved write the implementation code, the implementation code is written into your copy of the mapclient-src repository. Again commit your code and push the changes to Github. With the new code on Github create another pull request from your repository to the develop branch in the MusculoskeletalAtlasProject/mapclient-src repository. Link this pull request to the main pull request again by adding a comment on the main pull request with the following markup:: + + MusculoskeletalAtlasProject/mapclient-src#4 + +or:: + + MusculoskeletalAtlasProject/mapclient-src/pull/4 + +Again, obviously replace the numeral '4' with the actual value of the related pull request for your own work. + +Simarlarly to writing the implementation code you also need to write documentation for your changes and create a pull request from your mapclient-docs repository to MusculoskeletalAtlasProject/mapclient-docs develop branch. Also link the pull request to the pull request already added for the tests by adding a comment on the main pull request with the following markup:: + + MusculoskeletalAtlasProject/mapclient-docs#4 + +or:: + + MusculoskeletalAtlasProject/mapclient-docs/pull/4 + +Again, replace the numeral '4' with the actual value of the related pull request for your own work. + +To have your progress tested push a commit to the main pull request with the correct submodule references set making sure that the dependent pull requests (tests, src, docs) have the commits you are referencing. When the commit is received by Github Buildbot will be notified and check for any changes, clone and run the tests across the Buildslaves. When the tests have completed the status will be reported back to the main pull request and the commit status will be made visible on Github. + +Final Review +============ + +When you have finished working on an issue, mark it as closed. This will indicate to a reviewer that your work is ready for merging. A reviewer will give your work a final review and when any queries are satisfactorily resolved they will merge and close the three open pull requests across mapclient-{tests, src, docs} and then close the main pull request. All that is left to do now is to thank you for your contribution. + +Thank you. + From 4847bc05cf4ce5fc8b30af0a826d4cfcf7a6e454 Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Mon, 9 Mar 2015 11:00:05 +1300 Subject: [PATCH 02/20] Changed "MAP ___" --> LibCellML. Mostly just done by search and replace. --- ...=> libcellml-development-contribution.rst} | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) rename docs/developmentProcess/{MAP-development-contribution.rst => libcellml-development-contribution.rst} (52%) diff --git a/docs/developmentProcess/MAP-development-contribution.rst b/docs/developmentProcess/libcellml-development-contribution.rst similarity index 52% rename from docs/developmentProcess/MAP-development-contribution.rst rename to docs/developmentProcess/libcellml-development-contribution.rst index 26511a5..af08e9b 100644 --- a/docs/developmentProcess/MAP-development-contribution.rst +++ b/docs/developmentProcess/libcellml-development-contribution.rst @@ -1,27 +1,27 @@ -.. _Developer Contribution for MAP Client: +.. _Developer Contribution for LibCellML: ================= Contributing Code ================= -This section describes how a developer can contribute code to the MAP Client project. Before reading this section make sure you have read through :doc:`Setup ` as some of what follows may not make sense without this prior context. +This section describes how a developer can contribute code to the LibCellML project. Before reading this section make sure you have read through :doc:`Setup ` as some of what follows may not make sense without this prior context. .. contents: Overview ======== -To contribute code to the MAP Client project you should select an issue from the list of open issues to work on. You can let others know that you are working on an issue by leaving a comment on the issue to that effect. Once you have started work on the issue and added either some implementation, tests or documentation open a pull request to share your progress with other developers. +To contribute code to the LibCellML project you should select an issue from the list of open issues to work on. You can let others know that you are working on an issue by leaving a comment on the issue to that effect. Once you have started work on the issue and added either some implementation, tests or documentation open a pull request to share your progress with other developers. Add a reference from the main pull request to the src, tests and docs pull requests for a reviewer to follow. -Make use of Buildbot to test your changes, any changes (i.e. new commits) to an open pull request on MusculoskeletalAtlasProject/mapclient will trigger the test procedure. Buildbot will report back to the pull request the status of the tests. A reviewer will first look at the status of the main pull request before looking at anything else so having the tests pass is a priority. +Make use of Buildbot to test your changes, any changes (i.e. new commits) to an open pull request on cellml/libcellml will trigger the test procedure. Buildbot will report back to the pull request the status of the tests. A reviewer will first look at the status of the main pull request before looking at anything else so having the tests pass is a priority. When the changes you have completed resolves the issue a reviewer will give your work a final review before merging into the **prime** codebase. Fixing a bug follows a similar path the only difference being that we need to write a test that triggers the bug in question. -Finally check out :doc:`Git Submodules ` for help on working with git submodules. +Finally check out :doc:`Git Submodules ` for help on working with git submodules. Take Ownership ============== @@ -31,35 +31,35 @@ Because every feature must have an associated issue leave a comment on the issue Share Progress ============== -We are following a test driven approach for the MAP Client project so the first thing to do is write a test that at least covers some part of the functionality required for the feature you are working on. Once this first test is written commit your changes and push them to Github so that your work can be shared with others. +We are following a test driven approach for the LibCellML project so the first thing to do is write a test that at least covers some part of the functionality required for the feature you are working on. Once this first test is written commit your changes and push them to Github so that your work can be shared with others. -When the first new test is pushed to Github create a pull request from your feature/develop branch against the MusculoskeletalAtlasProject/mapclient repositories develop branch. We do this so that other developers can comment and make suggestions on your changes. We want to have an environment of friendly social coding where developers can offer guidance and help minimise wasted effort. Link this pull request to the main pull request by adding a comment on the main pull request with the following markup:: +When the first new test is pushed to Github create a pull request from your feature/develop branch against the cellml/libcellml repositories develop branch. We do this so that other developers can comment and make suggestions on your changes. We want to have an environment of friendly social coding where developers can offer guidance and help minimise wasted effort. Link this pull request to the main pull request by adding a comment on the main pull request with the following markup:: - MusculoskeletalAtlasProject/mapclient-tests#4 + cellml/libcellml-tests#4 or:: - MusculoskeletalAtlasProject/mapclient-tests/pull/4 + cellml/libcellml-tests/pull/4 Github will interpret this markup and create a link between the pull requests. Obviously replace the numeral '4' with the actual value of the related pull request for your own work. -With the tests written and any comments from the community resolved write the implementation code, the implementation code is written into your copy of the mapclient-src repository. Again commit your code and push the changes to Github. With the new code on Github create another pull request from your repository to the develop branch in the MusculoskeletalAtlasProject/mapclient-src repository. Link this pull request to the main pull request again by adding a comment on the main pull request with the following markup:: +With the tests written and any comments from the community resolved write the implementation code, the implementation code is written into your copy of the mapclient-src repository. Again commit your code and push the changes to Github. With the new code on Github create another pull request from your repository to the develop branch in the cellml/libcellml-src repository. Link this pull request to the main pull request again by adding a comment on the main pull request with the following markup:: - MusculoskeletalAtlasProject/mapclient-src#4 + cellml/libcellml-src#4 or:: - MusculoskeletalAtlasProject/mapclient-src/pull/4 + cellml/libcellml-src/pull/4 Again, obviously replace the numeral '4' with the actual value of the related pull request for your own work. -Simarlarly to writing the implementation code you also need to write documentation for your changes and create a pull request from your mapclient-docs repository to MusculoskeletalAtlasProject/mapclient-docs develop branch. Also link the pull request to the pull request already added for the tests by adding a comment on the main pull request with the following markup:: +Simarlarly to writing the implementation code you also need to write documentation for your changes and create a pull request from your mapclient-docs repository to cellml/libcellml-docs develop branch. Also link the pull request to the pull request already added for the tests by adding a comment on the main pull request with the following markup:: - MusculoskeletalAtlasProject/mapclient-docs#4 + cellml/libcellml-docs#4 or:: - MusculoskeletalAtlasProject/mapclient-docs/pull/4 + cellml/libcellml-docs/pull/4 Again, replace the numeral '4' with the actual value of the related pull request for your own work. From b86d07afeeca6dbf7fcb9d6110376fd10635bb79 Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Mon, 9 Mar 2015 11:10:32 +1300 Subject: [PATCH 03/20] Reworded opening paragraph to cover non-code contributions. --- docs/developmentProcess/libcellml-development-contribution.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/developmentProcess/libcellml-development-contribution.rst b/docs/developmentProcess/libcellml-development-contribution.rst index af08e9b..bc5c880 100644 --- a/docs/developmentProcess/libcellml-development-contribution.rst +++ b/docs/developmentProcess/libcellml-development-contribution.rst @@ -4,7 +4,7 @@ Contributing Code ================= -This section describes how a developer can contribute code to the LibCellML project. Before reading this section make sure you have read through :doc:`Setup ` as some of what follows may not make sense without this prior context. +This section describes how to contribute to the LibCellML project. While there are many types of contribution, this section focuses on code and documentation contributions (and contributions of any other digital assets that are managed using the version control system). We recommend that you have first read :doc:`Setup `. .. contents: From 384884cabfe6197b5f77db87480120f164f3bd1c Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Mon, 9 Mar 2015 12:04:49 +1300 Subject: [PATCH 04/20] Reworked overview, due to no sub-repos etc. Etc = - Captured that contribution can be work other than coding - BuildBot triggered on push --- .../libcellml-development-contribution.rst | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/docs/developmentProcess/libcellml-development-contribution.rst b/docs/developmentProcess/libcellml-development-contribution.rst index bc5c880..fd3c830 100644 --- a/docs/developmentProcess/libcellml-development-contribution.rst +++ b/docs/developmentProcess/libcellml-development-contribution.rst @@ -11,17 +11,13 @@ This section describes how to contribute to the LibCellML project. While there Overview ======== -To contribute code to the LibCellML project you should select an issue from the list of open issues to work on. You can let others know that you are working on an issue by leaving a comment on the issue to that effect. Once you have started work on the issue and added either some implementation, tests or documentation open a pull request to share your progress with other developers. +An issue (either an existing one, or a newly created one) is used to initiate work. Once work has started, a pull request takes over as the way to capture both the discussion, as well as the commits of the changes that are made as the work progresses. The pull request is from the topic branch of the contributor's fork, and targets the develop branch of the prime repository. -Add a reference from the main pull request to the src, tests and docs pull requests for a reviewer to follow. +Reviewers provide feedback on the changes by adding comments to the pull request or associated commits. The BuildBot build/test procedure will run each time changes are pushed to the pull request's branch, and the results are displayed in the pull request view. -Make use of Buildbot to test your changes, any changes (i.e. new commits) to an open pull request on cellml/libcellml will trigger the test procedure. Buildbot will report back to the pull request the status of the tests. A reviewer will first look at the status of the main pull request before looking at anything else so having the tests pass is a priority. +Once all the changes and reviews are complete, one of the prime repository owners will merge the pull request into the prime repository, onto the develop branch. -When the changes you have completed resolves the issue a reviewer will give your work a final review before merging into the **prime** codebase. - -Fixing a bug follows a similar path the only difference being that we need to write a test that triggers the bug in question. - -Finally check out :doc:`Git Submodules ` for help on working with git submodules. +Note that a bug is just a type of issue, and that resolving the bug requires both a test that triggers the bug, as well as the implementation of the fix. Take Ownership ============== From 8b2a1be8f8139a4650f319a2a97081a03fbd3b4a Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Mon, 9 Mar 2015 14:23:23 +1300 Subject: [PATCH 05/20] Reworded paragraph on assignment. --- .../libcellml-development-contribution.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/developmentProcess/libcellml-development-contribution.rst b/docs/developmentProcess/libcellml-development-contribution.rst index fd3c830..9c7aef4 100644 --- a/docs/developmentProcess/libcellml-development-contribution.rst +++ b/docs/developmentProcess/libcellml-development-contribution.rst @@ -11,7 +11,7 @@ This section describes how to contribute to the LibCellML project. While there Overview ======== -An issue (either an existing one, or a newly created one) is used to initiate work. Once work has started, a pull request takes over as the way to capture both the discussion, as well as the commits of the changes that are made as the work progresses. The pull request is from the topic branch of the contributor's fork, and targets the develop branch of the prime repository. +An issue is used to initiate work. Once work has started, a pull request takes over as the way to capture both the discussion, as well as the commits of the changes that are made as the work progresses. The pull request is from the topic branch of the contributor's fork, and targets the develop branch of the prime repository. Reviewers provide feedback on the changes by adding comments to the pull request or associated commits. The BuildBot build/test procedure will run each time changes are pushed to the pull request's branch, and the results are displayed in the pull request view. @@ -19,10 +19,11 @@ Once all the changes and reviews are complete, one of the prime repository owner Note that a bug is just a type of issue, and that resolving the bug requires both a test that triggers the bug, as well as the implementation of the fix. -Take Ownership -============== +Issue Assignment +================ + +If an issue has not been created for the required work (e.g. implementation of a feature, fixing of a bug), then create a new one. To assign yourself to the issue, leave a comment on the issue to that effect. -Because every feature must have an associated issue leave a comment on the issue letting others know that you are intending to start work on this issue. If an issue has not been created for the functionality that you require simply create a new one and leave a comment stating that you are working on it. Share Progress ============== From a72ef86a1d9f441dbe16d9ad1c78631a0f2d4637 Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Mon, 9 Mar 2015 15:19:57 +1300 Subject: [PATCH 06/20] Updated pull request and collaboration section. Main difference: no sub repos. Also: separated out test driven discussion (since not all work is coding (e.g. docs). --- .../libcellml-development-contribution.rst | 39 ++++++------------- 1 file changed, 12 insertions(+), 27 deletions(-) diff --git a/docs/developmentProcess/libcellml-development-contribution.rst b/docs/developmentProcess/libcellml-development-contribution.rst index 9c7aef4..e0ec80a 100644 --- a/docs/developmentProcess/libcellml-development-contribution.rst +++ b/docs/developmentProcess/libcellml-development-contribution.rst @@ -25,42 +25,27 @@ Issue Assignment If an issue has not been created for the required work (e.g. implementation of a feature, fixing of a bug), then create a new one. To assign yourself to the issue, leave a comment on the issue to that effect. -Share Progress -============== +Pull Request Collaboration +========================== -We are following a test driven approach for the LibCellML project so the first thing to do is write a test that at least covers some part of the functionality required for the feature you are working on. Once this first test is written commit your changes and push them to Github so that your work can be shared with others. +Pull the latest changes from the develop branch. Create a branch with a name that briefly describes the work, based off the head of develop. This will be referred to as the topic branch. -When the first new test is pushed to Github create a pull request from your feature/develop branch against the cellml/libcellml repositories develop branch. We do this so that other developers can comment and make suggestions on your changes. We want to have an environment of friendly social coding where developers can offer guidance and help minimise wasted effort. Link this pull request to the main pull request by adding a comment on the main pull request with the following markup:: +For code changes, an automated test should be the first code written and committed. - cellml/libcellml-tests#4 - -or:: - - cellml/libcellml-tests/pull/4 - -Github will interpret this markup and create a link between the pull requests. Obviously replace the numeral '4' with the actual value of the related pull request for your own work. - -With the tests written and any comments from the community resolved write the implementation code, the implementation code is written into your copy of the mapclient-src repository. Again commit your code and push the changes to Github. With the new code on Github create another pull request from your repository to the develop branch in the cellml/libcellml-src repository. Link this pull request to the main pull request again by adding a comment on the main pull request with the following markup:: +After the first commit, push to GitHub so that your work can be shared with others. - cellml/libcellml-src#4 +Next, create a pull request from your topic branch targeting the prime repository's develop branch. This allows other developers to comment and make suggestions on your work. Link this pull request to the issue by adding a comment on the pull request that references the issue. This causes GitHub to automatically create the corresponding reference in the other direction, i.e. from the issue to the pull request. -or:: - - cellml/libcellml-src/pull/4 +To reference the issue from the pull request in the GitHub comment area, type a hash, "#". A list will appear, from which you can select the issue. The mark-up for creating the reference will then be automatically added. -Again, obviously replace the numeral '4' with the actual value of the related pull request for your own work. +We want to have an environment of friendly social coding where developers can offer guidance and help. Other developers will have been notified via GitHub of the work on the pull request, and will review the work, posting feedback on the commits within the pull request, or on the pull request itself. Respond to this feedback as appropriate, e.g. making coding changes, posting a reply, etc. -Simarlarly to writing the implementation code you also need to write documentation for your changes and create a pull request from your mapclient-docs repository to cellml/libcellml-docs develop branch. Also link the pull request to the pull request already added for the tests by adding a comment on the main pull request with the following markup:: - - cellml/libcellml-docs#4 - -or:: - - cellml/libcellml-docs/pull/4 +Test Driven Development +======================= -Again, replace the numeral '4' with the actual value of the related pull request for your own work. +Test driven development entails writing code that automatically tests the implementation before writing the implementation itself. Running the tests prior to writing the implementation should cause the tests to fail, and running them after the implementation has been written should cause them to then pass. This helps validate that the tests cover the required behaviour. It is common to find that the initial implementation was incomplete (e.g. didn't cover all cases), but nevertheless, the tests didn't detect this. This is addressed by improving the tests first, and then improving the implementation. It can often take multiple cycles of modifying tests and implementation to complete the work. Commit the code changes each time the tests are incrementally improved, and each time the implementation code passes the tests, or more often if necessary. -To have your progress tested push a commit to the main pull request with the correct submodule references set making sure that the dependent pull requests (tests, src, docs) have the commits you are referencing. When the commit is received by Github Buildbot will be notified and check for any changes, clone and run the tests across the Buildslaves. When the tests have completed the status will be reported back to the main pull request and the commit status will be made visible on Github. +Refactoring means improving the code without adding features, and the automated tests enable the refactored code to be validated. Final Review ============ From 6730b289068ee6a577fdbfde3f8e083e578fb23d Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Mon, 9 Mar 2015 15:26:38 +1300 Subject: [PATCH 07/20] Adjusted final section for LibCellML case. Again, main difference: no sub-repos at this stage. --- .../libcellml-development-contribution.rst | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/docs/developmentProcess/libcellml-development-contribution.rst b/docs/developmentProcess/libcellml-development-contribution.rst index e0ec80a..a49c0fb 100644 --- a/docs/developmentProcess/libcellml-development-contribution.rst +++ b/docs/developmentProcess/libcellml-development-contribution.rst @@ -47,10 +47,7 @@ Test driven development entails writing code that automatically tests the implem Refactoring means improving the code without adding features, and the automated tests enable the refactored code to be validated. -Final Review -============ - -When you have finished working on an issue, mark it as closed. This will indicate to a reviewer that your work is ready for merging. A reviewer will give your work a final review and when any queries are satisfactorily resolved they will merge and close the three open pull requests across mapclient-{tests, src, docs} and then close the main pull request. All that is left to do now is to thank you for your contribution. - -Thank you. +Completion of Workflow +====================== +Once the owners of the prime repository are satisfied that the work on the issue is complete and that the feedback has been addressed, one of the owners will merge and close the pull request, marking the completion of the workflow. From 4a71abeb6a6fc184b80a3fc437315d3f9a2e4ca7 Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Mon, 9 Mar 2015 16:20:19 +1300 Subject: [PATCH 08/20] Corrected LibCellML --> libCellML (lowercase l) --- .../developmentProcess/libcellml-development-contribution.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/developmentProcess/libcellml-development-contribution.rst b/docs/developmentProcess/libcellml-development-contribution.rst index a49c0fb..0db2fd8 100644 --- a/docs/developmentProcess/libcellml-development-contribution.rst +++ b/docs/developmentProcess/libcellml-development-contribution.rst @@ -1,10 +1,10 @@ -.. _Developer Contribution for LibCellML: +.. _Developer Contribution for libCellML: ================= Contributing Code ================= -This section describes how to contribute to the LibCellML project. While there are many types of contribution, this section focuses on code and documentation contributions (and contributions of any other digital assets that are managed using the version control system). We recommend that you have first read :doc:`Setup `. +This section describes how to contribute to the libCellML project. While there are many types of contribution, this section focuses on code and documentation contributions (and contributions of any other digital assets that are managed using the version control system). We recommend that you have first read :doc:`Setup `. .. contents: From c8a4f4dec270bc6d93acd7d31b0d6ea5e289fd76 Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Wed, 11 Mar 2015 16:16:22 +1300 Subject: [PATCH 09/20] Setup doc will be based on MAP doc. --- .../MAP-development-setup.rst | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 docs/developmentProcess/MAP-development-setup.rst diff --git a/docs/developmentProcess/MAP-development-setup.rst b/docs/developmentProcess/MAP-development-setup.rst new file mode 100644 index 0000000..9e68718 --- /dev/null +++ b/docs/developmentProcess/MAP-development-setup.rst @@ -0,0 +1,128 @@ +.. _Developer Setup for MAP Client: + +================= +Development Setup +================= + +Authors: Hugh Sorby + +This section describes how someone wanting to contribute to the MAP Client project should set up their *working copy* for developing MAP Client. + +.. contents:: + +Overview +======== + +MAP Client makes use of Git submodules to modularise the source code, tests and documentation. For this reason the development setup requires a small amount of work before development can begin. Please follow the steps below to setup up your development environment. Before you begin you will need to have a few prerequisites satisfied: + +#. Github user account (for the rest of this document we will call our user *andre*) +#. Git installed and available from the command line + +This document doesn't cover the process of satisfying these prerequisites, it is left as an exercise for you (Google is your friend). The remainder of this document assumes that these prerequisites have been met. + +The goal here is to get a working copy of source code, tests, and documentation onto your PC so that you can begin development. To make this happen you will need to fork the prime MAP Client repository, make a clone onto your PC, initialise the submodules, and set up the Git remotes. In **Figure 1** you can see a pictorial representation of what you are aiming to achieve. + +.. figure:: images/githubrepos.png + :align: center + :width: 600px + :alt: Setup of Git repositories + + **Figure 1**: Setup of repositories for development + +The four steps to getting set up are detailed below. + +Forking your own copy +===================== + +For contributors there are four git repositories that need to be forked: + +#. mapclient, the meta repository that contains our submodules; +#. mapclient-src, the source code repository; +#. mapclient-tests, the test repository; and +#. mapclient-docs, the documentation. + +Login to Github with your username and go to:: + + https://github.com/MusculoskeletalAtlasProject + +and for the four repositories given above fork them into your own Github user account. + +Clone +===== + +You now need to clone the mapclient repository to your PC. You do this by going to your fork (in this example user andre's fork) at: + + https://github.com/andre/mapclient + +**Note**: Don't try and clone this location substitute your Github username for *andre*. + +On the right hand side of the webpage on your fork of the repository you can get the link for cloning the repository to your PC, in our example:: + + git@github.com:andre/mapclient.git + +Now clone the repository:: + + cd /somewhere/you/keep/development/code + git clone git@github.com:andre/mapclient.git + +Note: Again, don't and clone this location substitute your username for *andre*. + +Initialise submodules +===================== + +You need to initialise the submodules as all you have at this point is the submodule framework. Assuming you are still in the directory where you ran the *git clone* command above, do the following:: + + cd mapclient + git submodule update --init + +You have now recursively initialised the submodules, next you need to set the submodule location to point to your users Github repositories. To do this open the file .gitmodules in your favourite text editor and change the url location of each module from the prime repository url to your username based url. In our example, you would start with the following:: + + [submodule "src"] + path = src + url = git@github.com:MusculoskeletalAtlasProject/mapclient-src.git + [submodule "tests"] + path = tests + url = git@github.com:MusculoskeletalAtlasProject/mapclient-tests.git + [submodule "docs"] + path = docs + url = git@github.com:MusculoskeletalAtlasProject/mapclient-docs.git + +and end up with:: + + [submodule "src"] + path = src + url = git@github.com:andre/mapclient-src.git + [submodule "tests"] + path = tests + url = git@github.com:andre/mapclient-tests.git + [submodule "docs"] + path = docs + url = git@github.com:andre/mapclient-docs.git + +Save the changes back to the .gitmodules file and then synchronise these changes by executing the command:: + + git submodule sync + +You will now commit and push these changes to your own repository at Github, this is done so that Buildbot can test your future changes:: + + git add .gitmodules + git commit -m "Updating submodule url references" + git push + +all that remains is to setup the git remotes. + +Set Git remotes +=============== + +You now need to setup a read-only remote connection to the prime repository. Given that you are still in the *mapclient* directory where you initialised the submodules, do the following:: + + git submodule foreach git checkout master + git submodule foreach 'git remote add prime git@github.com:MusculoskeletalAtlasProject/mapclient-$name.git' + git submodule foreach git config remote.prime.pushurl "you really didn't want to do that" + +You have now added a new remote to all the submodules named **prime** and set origin as the default fetch and push location to point at repositories under your control on Github. Here **prime** is a reference to the main definitive repositories where releases are made from for the MAP Client project. You have also set the **prime** repository as read-only by setting an invalid push url. + +Finally +======= + +You are all done and ready to start development, read :doc:`Contributing ` on how to get your changes into MusculoskeletalAtlasProject's repositories From 2e0a3ae1a7c0f5026fadabff70a1e51f8ddf1627 Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Wed, 11 Mar 2015 18:04:31 +1300 Subject: [PATCH 10/20] Reworked setup, mainly: no sub-repos. The diagram can be edited using Google Drive - Drawing, make a copy of the drawing that is at this URL: http://goo.gl/cJFBGf --- .../MAP-development-setup.rst | 128 ------------------ .../images/libcellml-github.png | Bin 0 -> 37527 bytes .../libcellml-development-setup.rst | 77 +++++++++++ 3 files changed, 77 insertions(+), 128 deletions(-) delete mode 100644 docs/developmentProcess/MAP-development-setup.rst create mode 100644 docs/developmentProcess/images/libcellml-github.png create mode 100644 docs/developmentProcess/libcellml-development-setup.rst diff --git a/docs/developmentProcess/MAP-development-setup.rst b/docs/developmentProcess/MAP-development-setup.rst deleted file mode 100644 index 9e68718..0000000 --- a/docs/developmentProcess/MAP-development-setup.rst +++ /dev/null @@ -1,128 +0,0 @@ -.. _Developer Setup for MAP Client: - -================= -Development Setup -================= - -Authors: Hugh Sorby - -This section describes how someone wanting to contribute to the MAP Client project should set up their *working copy* for developing MAP Client. - -.. contents:: - -Overview -======== - -MAP Client makes use of Git submodules to modularise the source code, tests and documentation. For this reason the development setup requires a small amount of work before development can begin. Please follow the steps below to setup up your development environment. Before you begin you will need to have a few prerequisites satisfied: - -#. Github user account (for the rest of this document we will call our user *andre*) -#. Git installed and available from the command line - -This document doesn't cover the process of satisfying these prerequisites, it is left as an exercise for you (Google is your friend). The remainder of this document assumes that these prerequisites have been met. - -The goal here is to get a working copy of source code, tests, and documentation onto your PC so that you can begin development. To make this happen you will need to fork the prime MAP Client repository, make a clone onto your PC, initialise the submodules, and set up the Git remotes. In **Figure 1** you can see a pictorial representation of what you are aiming to achieve. - -.. figure:: images/githubrepos.png - :align: center - :width: 600px - :alt: Setup of Git repositories - - **Figure 1**: Setup of repositories for development - -The four steps to getting set up are detailed below. - -Forking your own copy -===================== - -For contributors there are four git repositories that need to be forked: - -#. mapclient, the meta repository that contains our submodules; -#. mapclient-src, the source code repository; -#. mapclient-tests, the test repository; and -#. mapclient-docs, the documentation. - -Login to Github with your username and go to:: - - https://github.com/MusculoskeletalAtlasProject - -and for the four repositories given above fork them into your own Github user account. - -Clone -===== - -You now need to clone the mapclient repository to your PC. You do this by going to your fork (in this example user andre's fork) at: - - https://github.com/andre/mapclient - -**Note**: Don't try and clone this location substitute your Github username for *andre*. - -On the right hand side of the webpage on your fork of the repository you can get the link for cloning the repository to your PC, in our example:: - - git@github.com:andre/mapclient.git - -Now clone the repository:: - - cd /somewhere/you/keep/development/code - git clone git@github.com:andre/mapclient.git - -Note: Again, don't and clone this location substitute your username for *andre*. - -Initialise submodules -===================== - -You need to initialise the submodules as all you have at this point is the submodule framework. Assuming you are still in the directory where you ran the *git clone* command above, do the following:: - - cd mapclient - git submodule update --init - -You have now recursively initialised the submodules, next you need to set the submodule location to point to your users Github repositories. To do this open the file .gitmodules in your favourite text editor and change the url location of each module from the prime repository url to your username based url. In our example, you would start with the following:: - - [submodule "src"] - path = src - url = git@github.com:MusculoskeletalAtlasProject/mapclient-src.git - [submodule "tests"] - path = tests - url = git@github.com:MusculoskeletalAtlasProject/mapclient-tests.git - [submodule "docs"] - path = docs - url = git@github.com:MusculoskeletalAtlasProject/mapclient-docs.git - -and end up with:: - - [submodule "src"] - path = src - url = git@github.com:andre/mapclient-src.git - [submodule "tests"] - path = tests - url = git@github.com:andre/mapclient-tests.git - [submodule "docs"] - path = docs - url = git@github.com:andre/mapclient-docs.git - -Save the changes back to the .gitmodules file and then synchronise these changes by executing the command:: - - git submodule sync - -You will now commit and push these changes to your own repository at Github, this is done so that Buildbot can test your future changes:: - - git add .gitmodules - git commit -m "Updating submodule url references" - git push - -all that remains is to setup the git remotes. - -Set Git remotes -=============== - -You now need to setup a read-only remote connection to the prime repository. Given that you are still in the *mapclient* directory where you initialised the submodules, do the following:: - - git submodule foreach git checkout master - git submodule foreach 'git remote add prime git@github.com:MusculoskeletalAtlasProject/mapclient-$name.git' - git submodule foreach git config remote.prime.pushurl "you really didn't want to do that" - -You have now added a new remote to all the submodules named **prime** and set origin as the default fetch and push location to point at repositories under your control on Github. Here **prime** is a reference to the main definitive repositories where releases are made from for the MAP Client project. You have also set the **prime** repository as read-only by setting an invalid push url. - -Finally -======= - -You are all done and ready to start development, read :doc:`Contributing ` on how to get your changes into MusculoskeletalAtlasProject's repositories diff --git a/docs/developmentProcess/images/libcellml-github.png b/docs/developmentProcess/images/libcellml-github.png new file mode 100644 index 0000000000000000000000000000000000000000..58c471304a932dced5595bb81a921c5c78e743b6 GIT binary patch literal 37527 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�uhX8DH|IHL+{3T)YY8tw?p^%-vjwA(c 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 T6?Yi||6S71I#-}>cJKcHuxeBY literal 0 HcmV?d00001 diff --git a/docs/developmentProcess/libcellml-development-setup.rst b/docs/developmentProcess/libcellml-development-setup.rst new file mode 100644 index 0000000..2cf8d81 --- /dev/null +++ b/docs/developmentProcess/libcellml-development-setup.rst @@ -0,0 +1,77 @@ +.. _Contributor Setup for libCellML: + +================= +Contributor Setup +================= + +This section describes how someone wanting to contribute to the libCellML project should set up their *working copy*. + +.. contents:: + +Overview +======== + +Before you begin you will need to have a few prerequisites satisfied: + +#. GitHub user account (if necessary, create one using this link https://github.com/join ) (for the rest of this document we will call our user *bob*) +#. A Git client installed (see http://git-scm.com/downloads and http://git-scm.com/downloads/guis ) + +This document doesn't cover the process of satisfying these prerequisites in any further detail. The remainder of this document assumes that these prerequisites have been met. + +The goal here is to get a working copy of the project's files (i.e. source code, tests, and documentation, etc.) onto your computer so that you can begin working. Firstly, you need to fork the prime libCellML repository, make a clone onto your computer, and set up the Git remotes. **Figure 1** shows some of these setup actions and the resulting setup. It also shows the information flow for making contributions (steps 1 to 4). + +.. figure:: images/libcellml-github.png + :align: center + :width: 600px + :alt: Setup of Git repository fork and clone + + **Figure 1**: Setup of repository fork and clone + +The three steps to getting set up are detailed below. + +Forking your own copy +===================== + +Login to GitHub with your user name and go to:: + + https://github.com/cellml/libcellml + +and fork this repository into your own GitHub user account. This is done by clicking on fork. + +Clone +===== + +You now need to clone the libcellml repository to your computer. You do this by going to your fork (in this example, user bob's fork) at: + + https://github.com/bob/libcellml + +**Note**: Don't clone this location. Substitute your own GitHub user name in place of *bob*. + +On the right hand side of the web page on your fork of the repository you can get the link for cloning the repository to your computer, in our example:: + + https://github.com/bob/libcellml.git + +Now clone the repository. If using git from the command line on a Unix-like system, this is done as follows:: + + cd /somewhere/you/keep/project/files + git clone https://github.com/bob/libcellml.git + +Note: Again, don't clone this location. Substitute your own user name in place of *bob*. + +Set Git remotes +=============== + +You now need to setup a read-only remote connection to the prime repository. To do this from the command line:: + + cd libcellml + git remote add prime https://github.com/cellml/libcellml + git config remote.prime.pushurl "you really didn't want to do that" #This is optional + +(Note: The third command is optional, and only recommended if you have sufficient permission to push directly to the prime repository.) + +You have now added a new remote named **prime** and set origin as the default fetch and push location to point at your fork on GitHub. Here **prime** is a reference to the main definitive repository where releases are made for the libCellML project. You have also optionally also set the **prime** repository as read-only by setting an invalid push URL. + +Finally +======= + +This completes the set up. Next, read :doc:`Contributing `, which explains how to get your changes accepted into libCellML's prime repository. From 6207a16327057b9d6be976b50c5560435c30c42a Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Thu, 12 Mar 2015 10:42:15 +1300 Subject: [PATCH 11/20] Updated process: keep issue open after pull created. As discussed at today's meeting, we all agreed that it makes more sense to keep the issue open, since sometimes the first pull request does not get merged, and multiple pull requests constitute the work done to resolve an issue. Also, the posting of comments requesting reviews was added. Also, some other rewording. --- .../libcellml-development-contribution.rst | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/developmentProcess/libcellml-development-contribution.rst b/docs/developmentProcess/libcellml-development-contribution.rst index 0db2fd8..acca598 100644 --- a/docs/developmentProcess/libcellml-development-contribution.rst +++ b/docs/developmentProcess/libcellml-development-contribution.rst @@ -11,7 +11,7 @@ This section describes how to contribute to the libCellML project. While there Overview ======== -An issue is used to initiate work. Once work has started, a pull request takes over as the way to capture both the discussion, as well as the commits of the changes that are made as the work progresses. The pull request is from the topic branch of the contributor's fork, and targets the develop branch of the prime repository. +An issue is used to initiate work and for overall discussion. A pull request is created and referenced from the issue. Reviewers provide feedback on the changes by adding comments to the pull request or associated commits. The BuildBot build/test procedure will run each time changes are pushed to the pull request's branch, and the results are displayed in the pull request view. @@ -34,20 +34,21 @@ For code changes, an automated test should be the first code written and committ After the first commit, push to GitHub so that your work can be shared with others. -Next, create a pull request from your topic branch targeting the prime repository's develop branch. This allows other developers to comment and make suggestions on your work. Link this pull request to the issue by adding a comment on the pull request that references the issue. This causes GitHub to automatically create the corresponding reference in the other direction, i.e. from the issue to the pull request. - -To reference the issue from the pull request in the GitHub comment area, type a hash, "#". A list will appear, from which you can select the issue. The mark-up for creating the reference will then be automatically added. +Next, create a pull request from your topic branch targeting the prime repository's develop branch. On the issue, post a comment with a reference to the pull request. To reference the pull request from the issue in the GitHub comment area, type a hash, "#". A list will appear, from which you can select the pull request. The mark-up for creating the reference will then be automatically added. -We want to have an environment of friendly social coding where developers can offer guidance and help. Other developers will have been notified via GitHub of the work on the pull request, and will review the work, posting feedback on the commits within the pull request, or on the pull request itself. Respond to this feedback as appropriate, e.g. making coding changes, posting a reply, etc. +Once the work is ready for review, post a comment to the original issue requesting a review, including a reference to the pull request. +GitHub sends notification to those subscribed to the issue and they will review the work, posting feedback on the commits within the pull request, or on the pull request itself. Respond to this feedback as appropriate, e.g. making coding changes, posting a reply, etc. Comments are also welcome earlier, since reviewers can see the work on the pull request from the start. We are striving for a friendly atmosphere of social coding where developers can offer each other guidance and help. + +Sometimes it can take more than one pull request to resolve an issue, and not all pull requests will be merged, some my be closed without being merged. Test Driven Development ======================= Test driven development entails writing code that automatically tests the implementation before writing the implementation itself. Running the tests prior to writing the implementation should cause the tests to fail, and running them after the implementation has been written should cause them to then pass. This helps validate that the tests cover the required behaviour. It is common to find that the initial implementation was incomplete (e.g. didn't cover all cases), but nevertheless, the tests didn't detect this. This is addressed by improving the tests first, and then improving the implementation. It can often take multiple cycles of modifying tests and implementation to complete the work. Commit the code changes each time the tests are incrementally improved, and each time the implementation code passes the tests, or more often if necessary. -Refactoring means improving the code without adding features, and the automated tests enable the refactored code to be validated. +Refactoring means improving the code without adding features, and the automated tests provide validation that the refactored code performs as well as before. Completion of Workflow ====================== -Once the owners of the prime repository are satisfied that the work on the issue is complete and that the feedback has been addressed, one of the owners will merge and close the pull request, marking the completion of the workflow. +Once the owners of the prime repository are satisfied that the work on the issue is complete and that the feedback has been addressed, one of the owners will post a comment on the issue notifying subscribers that they intend to merge the pull request. After allowing a suitable amount of time for any objections to be raised, and if none are raised, the owner will merge and close the pull request, and if no further work is required to resolve the issue, they will close the issue, stating that it has been resolved. From 3c164a520399ceb81b785b08721bebe833ac6df8 Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Fri, 13 Mar 2015 11:02:43 +1300 Subject: [PATCH 12/20] Used standard sphinx "note" directive. As suggested by @nickerso. --- docs/developmentProcess/libcellml-development-setup.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/developmentProcess/libcellml-development-setup.rst b/docs/developmentProcess/libcellml-development-setup.rst index 2cf8d81..8896b47 100644 --- a/docs/developmentProcess/libcellml-development-setup.rst +++ b/docs/developmentProcess/libcellml-development-setup.rst @@ -45,7 +45,7 @@ You now need to clone the libcellml repository to your computer. You do this by https://github.com/bob/libcellml -**Note**: Don't clone this location. Substitute your own GitHub user name in place of *bob*. +.. note:: Don't clone this location. Substitute your own GitHub user name in place of *bob*. On the right hand side of the web page on your fork of the repository you can get the link for cloning the repository to your computer, in our example:: @@ -56,7 +56,7 @@ Now clone the repository. If using git from the command line on a Unix-like syst cd /somewhere/you/keep/project/files git clone https://github.com/bob/libcellml.git -Note: Again, don't clone this location. Substitute your own user name in place of *bob*. +.. note:: Again, don't clone this location. Substitute your own user name in place of *bob*. Set Git remotes =============== @@ -67,7 +67,7 @@ You now need to setup a read-only remote connection to the prime repository. To git remote add prime https://github.com/cellml/libcellml git config remote.prime.pushurl "you really didn't want to do that" #This is optional -(Note: The third command is optional, and only recommended if you have sufficient permission to push directly to the prime repository.) +.. note:: The third command is optional, and only recommended if you have sufficient permission to push directly to the prime repository. You have now added a new remote named **prime** and set origin as the default fetch and push location to point at your fork on GitHub. Here **prime** is a reference to the main definitive repository where releases are made for the libCellML project. You have also optionally also set the **prime** repository as read-only by setting an invalid push URL. From 072232684bf4b9919ecd9a21c2a4460ca3215c69 Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Fri, 13 Mar 2015 12:58:55 +1300 Subject: [PATCH 13/20] Changed demo username from bob to libCellML-developer As suggested by @nickerso. --- .../libcellml-development-setup.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/developmentProcess/libcellml-development-setup.rst b/docs/developmentProcess/libcellml-development-setup.rst index 8896b47..dcf3f4b 100644 --- a/docs/developmentProcess/libcellml-development-setup.rst +++ b/docs/developmentProcess/libcellml-development-setup.rst @@ -13,7 +13,7 @@ Overview Before you begin you will need to have a few prerequisites satisfied: -#. GitHub user account (if necessary, create one using this link https://github.com/join ) (for the rest of this document we will call our user *bob*) +#. GitHub user account (if necessary, create one using this link https://github.com/join ) (for the rest of this document we will call our user *libCellML-developer*) #. A Git client installed (see http://git-scm.com/downloads and http://git-scm.com/downloads/guis ) This document doesn't cover the process of satisfying these prerequisites in any further detail. The remainder of this document assumes that these prerequisites have been met. @@ -41,22 +41,22 @@ and fork this repository into your own GitHub user account. This is done by cli Clone ===== -You now need to clone the libcellml repository to your computer. You do this by going to your fork (in this example, user bob's fork) at: +You now need to clone the libcellml repository to your computer. You do this by going to your fork (in this example, user libCellML-developer's fork) at: - https://github.com/bob/libcellml + https://github.com/libCellML-developer/libcellml -.. note:: Don't clone this location. Substitute your own GitHub user name in place of *bob*. +.. note:: Don't clone this location. Substitute your own GitHub user name in place of *libCellML-developer*. On the right hand side of the web page on your fork of the repository you can get the link for cloning the repository to your computer, in our example:: - https://github.com/bob/libcellml.git + https://github.com/libCellML-developer/libcellml.git Now clone the repository. If using git from the command line on a Unix-like system, this is done as follows:: cd /somewhere/you/keep/project/files - git clone https://github.com/bob/libcellml.git + git clone https://github.com/libCellML-developer/libcellml.git -.. note:: Again, don't clone this location. Substitute your own user name in place of *bob*. +.. note:: Again, don't clone this location. Substitute your own user name in place of *libCellML-developer*. Set Git remotes =============== From cade5ba2ac5334b5989c6d927b340c5f5db41b12 Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Wed, 18 Mar 2015 11:36:26 +1300 Subject: [PATCH 14/20] Included contributor guidance docs. --- docs/index.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/index.rst b/docs/index.rst index 4015f38..563a1ff 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -15,7 +15,8 @@ Contents: roadmap usecases - + developmentProcess/libcellml-development-contribution + developmentProcess/libcellml-development-setup Indices and tables From 52f9da34440b7ec145f52735e845eaf104a7dc20 Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Wed, 18 Mar 2015 11:40:40 +1300 Subject: [PATCH 15/20] Cross referenced figure 1. This requires Sphinx v1.3 or later. --- docs/conf.py | 2 ++ docs/developmentProcess/libcellml-development-setup.rst | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index ab43a89..77222fb 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -97,6 +97,8 @@ # If true, keep warnings as "system message" paragraphs in the built documents. #keep_warnings = False +# If true, enable figure numbering +numfig = True # -- Options for HTML output ---------------------------------------------- diff --git a/docs/developmentProcess/libcellml-development-setup.rst b/docs/developmentProcess/libcellml-development-setup.rst index dcf3f4b..00da159 100644 --- a/docs/developmentProcess/libcellml-development-setup.rst +++ b/docs/developmentProcess/libcellml-development-setup.rst @@ -18,14 +18,18 @@ Before you begin you will need to have a few prerequisites satisfied: This document doesn't cover the process of satisfying these prerequisites in any further detail. The remainder of this document assumes that these prerequisites have been met. -The goal here is to get a working copy of the project's files (i.e. source code, tests, and documentation, etc.) onto your computer so that you can begin working. Firstly, you need to fork the prime libCellML repository, make a clone onto your computer, and set up the Git remotes. **Figure 1** shows some of these setup actions and the resulting setup. It also shows the information flow for making contributions (steps 1 to 4). +The goal here is to get a working copy of the project's files (i.e. source code, tests, and documentation, etc.) onto your + computer so that you can begin working. Firstly, you need to fork the prime libCellML repository, make a clone onto your + computer, and set up the Git remotes. :numref:`Figure %s ` shows some of these setup actions and the + resulting setup. It also shows the information flow for making contributions (steps 1 to 4). +.. _libcellml-github-figure: .. figure:: images/libcellml-github.png :align: center :width: 600px :alt: Setup of Git repository fork and clone - **Figure 1**: Setup of repository fork and clone + Setup of repository fork and clone The three steps to getting set up are detailed below. From abb19158ea2547f1b434fe0a24d5d5edb931806a Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Fri, 27 Mar 2015 17:46:06 +1300 Subject: [PATCH 16/20] Use MAP client section intro as starting point. This was written by @hsorby. --- docs/developmentProcess/index.rst | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 docs/developmentProcess/index.rst diff --git a/docs/developmentProcess/index.rst b/docs/developmentProcess/index.rst new file mode 100644 index 0000000..23b0710 --- /dev/null +++ b/docs/developmentProcess/index.rst @@ -0,0 +1,26 @@ +.. Developer Documentation for MAP Client + +================================== +MAP Client Developer Documentation +================================== + +This section of documentation is intended for developers. It covers a range of topics from getting setup through to how code reviews are done. MAP Client uses Git for source code management (SCM), Buildbot for continuous integration testing and Github to host the software on the web. The way in which these elements are brought together and how a developer is expected to use them forms the development process which is defined here. + +The repository at https://github.com/MusculoskeletalAtlasProject/mapclient is the definitive repository for the software and used for creating software releases. We will refer to this repository as the **prime** repository. The developer documentation describes the Git branching model in use on the **prime** repository and the process to follow for getting new code added to this repository. The **prime** repository makes use of Git submodules to enable modularisation of the codebase for use in other environments. Using Git submodules creates a divergence from the standard way people are currently using Github. For this reason it is recommended that you read this documentation to understand how to develop code for the MAP Client project. The process is designed to be as standard as possible with modifications to handle the awkwardness imposed by using submodules. We also make use of Buildbot to automate some of the process to make development easier for new developers and reviewers. + +Contents: + +.. toctree:: + :maxdepth: 2 + :titlesonly: + + MAP-development-setup + MAP-development-gitbranching + MAP-development-contribution + MAP-development-review + MAP-development-codingstandard + MAP-development-release + MAP-development-submodules + MAP-development-buildbotaccess + + appendix \ No newline at end of file From 05327babf25e46821031288d33f5966f0225895a Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Fri, 27 Mar 2015 17:46:54 +1300 Subject: [PATCH 17/20] Modified document to make it applicable to libCellML Main change is due to not using submodules on libCellML. --- docs/developmentProcess/index.rst | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/docs/developmentProcess/index.rst b/docs/developmentProcess/index.rst index 23b0710..a2e1139 100644 --- a/docs/developmentProcess/index.rst +++ b/docs/developmentProcess/index.rst @@ -1,12 +1,12 @@ -.. Developer Documentation for MAP Client +.. Developer Documentation for libCellML -================================== -MAP Client Developer Documentation -================================== +================================= +libCellML Developer Documentation +================================= -This section of documentation is intended for developers. It covers a range of topics from getting setup through to how code reviews are done. MAP Client uses Git for source code management (SCM), Buildbot for continuous integration testing and Github to host the software on the web. The way in which these elements are brought together and how a developer is expected to use them forms the development process which is defined here. +This section of documentation is intended for developers. libCellML uses Git for source code management (SCM), Buildbot for continuous integration testing and Github to host the software on the web. The way in which these elements are brought together and how a developer is expected to use them forms the development process which is defined here. -The repository at https://github.com/MusculoskeletalAtlasProject/mapclient is the definitive repository for the software and used for creating software releases. We will refer to this repository as the **prime** repository. The developer documentation describes the Git branching model in use on the **prime** repository and the process to follow for getting new code added to this repository. The **prime** repository makes use of Git submodules to enable modularisation of the codebase for use in other environments. Using Git submodules creates a divergence from the standard way people are currently using Github. For this reason it is recommended that you read this documentation to understand how to develop code for the MAP Client project. The process is designed to be as standard as possible with modifications to handle the awkwardness imposed by using submodules. We also make use of Buildbot to automate some of the process to make development easier for new developers and reviewers. +The repository at https://github.com/cellml/libcellml is the definitive repository for the software and used for creating software releases. We will refer to this repository as the **prime** repository. The developer documentation describes the Git branching model in use on the **prime** repository and the process to follow for getting new code added to this repository. The process is designed to be as standard as possible. Contents: @@ -14,13 +14,5 @@ Contents: :maxdepth: 2 :titlesonly: - MAP-development-setup - MAP-development-gitbranching - MAP-development-contribution - MAP-development-review - MAP-development-codingstandard - MAP-development-release - MAP-development-submodules - MAP-development-buildbotaccess - - appendix \ No newline at end of file + libcellml-development-setup + libcellml-development-contribution From 0af85a038df222008e5037a0b22d2af190790dc4 Mon Sep 17 00:00:00 2001 From: Randall Britten Date: Wed, 1 Apr 2015 16:13:49 +1300 Subject: [PATCH 18/20] Clarified that the test first must run and fail. Thus, noted that the interface of the implementation can be included in the test commit in order for compilation to succeed. --- .../libcellml-development-contribution.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/developmentProcess/libcellml-development-contribution.rst b/docs/developmentProcess/libcellml-development-contribution.rst index acca598..8d7acea 100644 --- a/docs/developmentProcess/libcellml-development-contribution.rst +++ b/docs/developmentProcess/libcellml-development-contribution.rst @@ -30,7 +30,10 @@ Pull Request Collaboration Pull the latest changes from the develop branch. Create a branch with a name that briefly describes the work, based off the head of develop. This will be referred to as the topic branch. -For code changes, an automated test should be the first code written and committed. +For code changes, an automated test should be the first code written and committed. +Since it is expected that the test should compile and run, then, if this requires that the interface to the implementation is coded, +this must be done too, and included in the commit. One of the reasons requiring that a failing test +is committed first is that it validates the test, since the test then only passes when the implementation is completed. After the first commit, push to GitHub so that your work can be shared with others. From 2b7bc393379785eb553ab2cccc48360d3cf08123 Mon Sep 17 00:00:00 2001 From: David Nickerson Date: Wed, 1 Apr 2015 14:50:59 -0400 Subject: [PATCH 19/20] correctly include the development process index document --- docs/index.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index 563a1ff..1e9d7e1 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -15,8 +15,7 @@ Contents: roadmap usecases - developmentProcess/libcellml-development-contribution - developmentProcess/libcellml-development-setup + developmentProcess/index Indices and tables From 4e1b4b8775b4b9cffb0199e0dfa026d0fe7085b1 Mon Sep 17 00:00:00 2001 From: David Nickerson Date: Wed, 1 Apr 2015 14:58:48 -0400 Subject: [PATCH 20/20] adding in a glossary and using it to define the prime repository --- .../libcellml-development-contribution.rst | 6 +++--- .../libcellml-development-setup.rst | 4 ++-- docs/glossary.rst | 12 ++++++++++++ docs/index.rst | 1 + 4 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 docs/glossary.rst diff --git a/docs/developmentProcess/libcellml-development-contribution.rst b/docs/developmentProcess/libcellml-development-contribution.rst index 8d7acea..756b123 100644 --- a/docs/developmentProcess/libcellml-development-contribution.rst +++ b/docs/developmentProcess/libcellml-development-contribution.rst @@ -15,7 +15,7 @@ An issue is used to initiate work and for overall discussion. A pull request is Reviewers provide feedback on the changes by adding comments to the pull request or associated commits. The BuildBot build/test procedure will run each time changes are pushed to the pull request's branch, and the results are displayed in the pull request view. -Once all the changes and reviews are complete, one of the prime repository owners will merge the pull request into the prime repository, onto the develop branch. +Once all the changes and reviews are complete, one of the :term:`prime repository` owners will merge the pull request into the prime repository, onto the develop branch. Note that a bug is just a type of issue, and that resolving the bug requires both a test that triggers the bug, as well as the implementation of the fix. @@ -37,7 +37,7 @@ is committed first is that it validates the test, since the test then only passe After the first commit, push to GitHub so that your work can be shared with others. -Next, create a pull request from your topic branch targeting the prime repository's develop branch. On the issue, post a comment with a reference to the pull request. To reference the pull request from the issue in the GitHub comment area, type a hash, "#". A list will appear, from which you can select the pull request. The mark-up for creating the reference will then be automatically added. +Next, create a pull request from your topic branch targeting the :term:`prime repository`'s develop branch. On the issue, post a comment with a reference to the pull request. To reference the pull request from the issue in the GitHub comment area, type a hash, "#". A list will appear, from which you can select the pull request. The mark-up for creating the reference will then be automatically added. Once the work is ready for review, post a comment to the original issue requesting a review, including a reference to the pull request. GitHub sends notification to those subscribed to the issue and they will review the work, posting feedback on the commits within the pull request, or on the pull request itself. Respond to this feedback as appropriate, e.g. making coding changes, posting a reply, etc. Comments are also welcome earlier, since reviewers can see the work on the pull request from the start. We are striving for a friendly atmosphere of social coding where developers can offer each other guidance and help. @@ -54,4 +54,4 @@ Refactoring means improving the code without adding features, and the automated Completion of Workflow ====================== -Once the owners of the prime repository are satisfied that the work on the issue is complete and that the feedback has been addressed, one of the owners will post a comment on the issue notifying subscribers that they intend to merge the pull request. After allowing a suitable amount of time for any objections to be raised, and if none are raised, the owner will merge and close the pull request, and if no further work is required to resolve the issue, they will close the issue, stating that it has been resolved. +Once the owners of the :term:`prime repository` are satisfied that the work on the issue is complete and that the feedback has been addressed, one of the owners will post a comment on the issue notifying subscribers that they intend to merge the pull request. After allowing a suitable amount of time for any objections to be raised, and if none are raised, the owner will merge and close the pull request, and if no further work is required to resolve the issue, they will close the issue, stating that it has been resolved. diff --git a/docs/developmentProcess/libcellml-development-setup.rst b/docs/developmentProcess/libcellml-development-setup.rst index 00da159..a7d166e 100644 --- a/docs/developmentProcess/libcellml-development-setup.rst +++ b/docs/developmentProcess/libcellml-development-setup.rst @@ -19,7 +19,7 @@ Before you begin you will need to have a few prerequisites satisfied: This document doesn't cover the process of satisfying these prerequisites in any further detail. The remainder of this document assumes that these prerequisites have been met. The goal here is to get a working copy of the project's files (i.e. source code, tests, and documentation, etc.) onto your - computer so that you can begin working. Firstly, you need to fork the prime libCellML repository, make a clone onto your + computer so that you can begin working. Firstly, you need to fork the :term:`prime libCellML repository`, make a clone onto your computer, and set up the Git remotes. :numref:`Figure %s ` shows some of these setup actions and the resulting setup. It also shows the information flow for making contributions (steps 1 to 4). @@ -65,7 +65,7 @@ Now clone the repository. If using git from the command line on a Unix-like syst Set Git remotes =============== -You now need to setup a read-only remote connection to the prime repository. To do this from the command line:: +You now need to setup a read-only remote connection to the :term:`prime repository`. To do this from the command line:: cd libcellml git remote add prime https://github.com/cellml/libcellml diff --git a/docs/glossary.rst b/docs/glossary.rst new file mode 100644 index 0000000..07cd8c9 --- /dev/null +++ b/docs/glossary.rst @@ -0,0 +1,12 @@ +.. _glossary: + +======== +Glossary +======== + +.. glossary:: + :sorted: + + Prime repository + Prime libCellML repository + The repository at https://github.com/cellml/libcellml is the definitive repository for the software and used for creating software releases. We will refer to this repository as the **prime** repository. diff --git a/docs/index.rst b/docs/index.rst index 1e9d7e1..0850131 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -16,6 +16,7 @@ Contents: roadmap usecases developmentProcess/index + glossary Indices and tables