From c23876594559bf6ec106f17572c185e6794dc685 Mon Sep 17 00:00:00 2001 From: Kelvin Date: Tue, 26 Feb 2019 17:05:10 -0700 Subject: [PATCH 1/6] Merged multisegment DSKs for Bullet --- .../objs/BulletDskShape/BulletDskShape.cpp | 190 ++++++++++-------- 1 file changed, 102 insertions(+), 88 deletions(-) diff --git a/isis/src/base/objs/BulletDskShape/BulletDskShape.cpp b/isis/src/base/objs/BulletDskShape/BulletDskShape.cpp index d950a138cc..3959eef40b 100644 --- a/isis/src/base/objs/BulletDskShape/BulletDskShape.cpp +++ b/isis/src/base/objs/BulletDskShape/BulletDskShape.cpp @@ -1,25 +1,25 @@ -/** - * @file +/** + * @file * $Revision$ * $Date$ * $Id$ - * - * Unless noted otherwise, the portions of Isis written by the USGS are - * public domain. See individual third-party library and package descriptions - * for intellectual property information, user agreements, and related - * information. - * - * Although Isis has been used by the USGS, no warranty, expressed or - * implied, is made by the USGS as to the accuracy and functioning of such - * software and related material nor shall the fact of distribution + * + * Unless noted otherwise, the portions of Isis written by the USGS are + * public domain. See individual third-party library and package descriptions + * for intellectual property information, user agreements, and related + * information. + * + * Although Isis has been used by the USGS, no warranty, expressed or + * implied, is made by the USGS as to the accuracy and functioning of such + * software and related material nor shall the fact of distribution * constitute any such warranty, and no responsibility is assumed by the - * USGS in connection therewith. - * - * For additional information, launch - * $ISISROOT/doc//documents/Disclaimers/Disclaimers.html + * USGS in connection therewith. + * + * For additional information, launch + * $ISISROOT/doc//documents/Disclaimers/Disclaimers.html * in a browser or see the Privacy & Disclaimers page on the Isis website, * http://isis.astrogeology.usgs.gov, and the USGS privacy and disclaimers on - * http://www.usgs.gov/privacy.html. + * http://www.usgs.gov/privacy.html. */ #include "BulletDskShape.h" @@ -53,7 +53,7 @@ namespace Isis { /** * Construct a BulletDskShape from a DSK file. - * + * * @param dskfile The DSK file to load into a Bullet target shape. */ BulletDskShape::BulletDskShape(const QString &dskfile) : m_mesh() { @@ -70,7 +70,7 @@ namespace Isis { /** * Return the number of triangles in the shape - * + * * @return @b int The number of triangles. If nothing has been loaded, then 0 is returned. */ int BulletDskShape::getNumTriangles() const { @@ -82,9 +82,9 @@ namespace Isis { } - /** + /** * Return the number of verticies in the shape - * + * * @return @b int The number of verticies. If nothing has been loaded, then 0 is returned. */ int BulletDskShape::getNumVertices() const { @@ -98,14 +98,14 @@ namespace Isis { /** * @brief Return normal for a given triangle index - * - * This method is particularly useful to return the normal of a triangle plate - * in a mesh-based target body. - * - * @author 2017-03-28 Kris Becker - * + * + * This method is particularly useful to return the normal of a triangle plate + * in a mesh-based target body. + * + * @author 2017-03-28 Kris Becker + * * @param indexId The index of the triangle in the mesh. - * + * * @return @b btVector3 The local normal for the triangle. */ btVector3 BulletDskShape::getNormal(const int indexId) const { @@ -118,9 +118,9 @@ namespace Isis { /** * Get the vertices of a triangle in the mesh. - * + * * @param index The index of the triangle in the mesh. - * + * * @return @b btMatrix3x3 Matrix with each row containing the coordinate of a * vertex. The vertices are ordered counter-clockwise * around the surface normal of the triangle. @@ -140,7 +140,7 @@ namespace Isis { const btScalar *t_vertex = static_cast ((void *) v_mesh.m_vertexBase); - btMatrix3x3 triangle(t_vertex[vndx0+0], t_vertex[vndx0+1], t_vertex[vndx0+2], + btMatrix3x3 triangle(t_vertex[vndx0+0], t_vertex[vndx0+1], t_vertex[vndx0+2], t_vertex[vndx1+0], t_vertex[vndx1+1], t_vertex[vndx1+2], t_vertex[vndx2+0], t_vertex[vndx2+1], t_vertex[vndx2+2]); return ( triangle ); @@ -148,21 +148,16 @@ namespace Isis { /** - * @brief Load the contents of a NAIF DSK and create a Bullet triangle mesh - * - * @author 2017-03-28 Kris Becker - * + * @brief Load the contents of a NAIF DSK and create a Bullet triangle mesh + * + * @author 2017-03-28 Kris Becker + * * @param dskfile The DSK file to load. */ void BulletDskShape::loadFromDsk(const QString &dskfile) { /** NAIF DSK parameter setup */ - SpiceInt v_handle; //!< The DAS file handle of the DSK file. - SpiceDLADescr v_dladsc; /**< The DLA descriptor of the DSK segment representing the - target surface.*/ - SpiceDSKDescr v_dskdsc; //!< The DSK descriptor. - SpiceInt v_plates; //!< Number of Plates in the model. - SpiceInt v_vertices; //!< Number of vertices defining the plate. + SpiceInt handle; //!< The DAS file handle of the DSK file. // Sanity check FileName dskFile(dskfile); @@ -170,71 +165,90 @@ namespace Isis { QString mess = "NAIF DSK file [" + dskfile + "] does not exist."; throw IException(IException::User, mess, _FILEINFO_); } - + // Open the NAIF Digital Shape Kernel (DSK) - dasopr_c( dskFile.expanded().toLatin1().data(), &v_handle ); + dasopr_c( dskFile.expanded().toLatin1().data(), &handle ); NaifStatus::CheckErrors(); - + // Search to the first DLA segment - SpiceBoolean found; - dlabfs_c( v_handle, &v_dladsc, &found ); + SpiceBoolean found; + SpiceDLADescr segment; + dlabfs_c( handle, &segment, &found ); NaifStatus::CheckErrors(); if ( !found ) { - QString mess = "No segments found in DSK file " + dskfile ; + QString mess = "No segments found in DSK file " + dskfile ; throw IException(IException::User, mess, _FILEINFO_); } - dskgd_c( v_handle, &v_dladsc, &v_dskdsc ); - NaifStatus::CheckErrors(); - - // Get size/counts - dskz02_c( v_handle, &v_dladsc, &v_vertices, &v_plates ); - NaifStatus::CheckErrors(); - - // Now allocate a new indexed mesh to contain all the DSK data - btIndexedMesh i_mesh; - m_mesh.reset( new btTriangleIndexVertexArray()); - m_mesh->addIndexedMesh(i_mesh, PHY_INTEGER); - - // Get internal mesh reference and set parameters appropriately - btIndexedMesh &v_mesh = m_mesh->getIndexedMeshArray()[0]; - v_mesh.m_vertexType = PHY_DOUBLE; + std::vector segments; + segments.push_back(segment); - // Set and allocate data for triangle indexes - v_mesh.m_numTriangles = v_plates; - v_mesh.m_triangleIndexBase = new unsigned char[v_plates * 3 * sizeof(int)]; - v_mesh.m_triangleIndexStride = (sizeof(int) * 3); + // Iterate until you find no more segments. + while(found) { + dlafns_c(handle, &segments.back(), &segment, &found); + NaifStatus::CheckErrors(); - // Set and allocate vertex data - v_mesh.m_numVertices = v_vertices; - v_mesh.m_vertexBase = new unsigned char[v_vertices * 3 * sizeof(double)]; - v_mesh.m_vertexStride = (sizeof(double) * 3); + segments.push_back(segment); + } - SpiceInt n; - (void) dskv02_c(v_handle, &v_dladsc, 1, v_vertices, &n, - ( SpiceDouble(*)[3] ) (v_mesh.m_vertexBase)); - NaifStatus::CheckErrors(); + // dskgd_c( v_handle, &v_dladsc, &v_dskdsc ); + // NaifStatus::CheckErrors(); - // Read the indexes from the DSK - (void) dskp02_c(v_handle, &v_dladsc, 1, v_plates, &n, - ( SpiceInt(*)[3] ) (v_mesh.m_triangleIndexBase)); - NaifStatus::CheckErrors(); - - // Ok, close the DSK... - dascls_c(v_handle); + // Now allocate a new indexed mesh to contain all the DSK data + m_mesh.reset( new btTriangleIndexVertexArray()); - // Got to reset the vertex indexes to 0-based - int *pindex = static_cast ((void *) v_mesh.m_triangleIndexBase); - int nverts = v_plates * 3; - for (int i = 0 ; i < nverts ; i++) { - pindex[i] -= 1; - btAssert ( pindex[i] >= 0 ); - btAssert ( pindex[i] < v_vertices ); + for (size_t i = 0; i < segments.size(); i++) { + SpiceInt nplates; + SpiceInt nvertices; + + btIndexedMesh i_mesh; + + // Get size/counts + dskz02_c( handle, &segments[i], &nvertices, &nplates); + NaifStatus::CheckErrors(); + + m_mesh->addIndexedMesh(i_mesh, PHY_INTEGER); + + // Get internal mesh reference and set parameters appropriately + btIndexedMesh &v_mesh = m_mesh->getIndexedMeshArray()[i]; + v_mesh.m_vertexType = PHY_DOUBLE; + + // Set and allocate data for triangle indexes + v_mesh.m_numTriangles = nplates; + v_mesh.m_triangleIndexBase = new unsigned char[nplates * 3 * sizeof(int)]; + v_mesh.m_triangleIndexStride = (sizeof(int) * 3); + + // Set and allocate vertex data + v_mesh.m_numVertices = nvertices; + v_mesh.m_vertexBase = new unsigned char[nvertices * 3 * sizeof(double)]; + v_mesh.m_vertexStride = (sizeof(double) * 3); + + SpiceInt n; + (void) dskv02_c(handle, &segments[i], 1, nvertices, &n, + ( SpiceDouble(*)[3] ) (v_mesh.m_vertexBase)); + NaifStatus::CheckErrors(); + + // Read the indexes from the DSK + (void) dskp02_c(handle, &segments[i], 1, nplates, &n, + ( SpiceInt(*)[3] ) (v_mesh.m_triangleIndexBase)); + NaifStatus::CheckErrors(); + + // Got to reset the vertex indexes to 0-based + int *pindex = static_cast ((void *) v_mesh.m_triangleIndexBase); + int nverts = nplates * 3; + for (int i = 0 ; i < nverts ; i++) { + pindex[i] -= 1; + btAssert ( pindex[i] >= 0 ); + btAssert ( pindex[i] < nvertices ); + } } + // Close DSK + dascls_c(handle); + bool useQuantizedAabbCompression = true; // bool useQuantizedAabbCompression = false; - btBvhTriangleMeshShape *v_triShape = new btBvhTriangleMeshShape(m_mesh.data(), + btBvhTriangleMeshShape *v_triShape = new btBvhTriangleMeshShape(m_mesh.data(), useQuantizedAabbCompression); v_triShape->setUserPointer(this); btCollisionObject *vbody = new btCollisionObject(); From e7eab1f1b1b28139ddca1fdc8b407251bdacf0e5 Mon Sep 17 00:00:00 2001 From: Kelvin Date: Mon, 25 Mar 2019 11:00:34 -0700 Subject: [PATCH 2/6] updated with update instructions --- README.md | 71 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index c6c6248644..8b13d366d1 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ This installation guide is for ISIS3 users interested in installing ISIS3 (3.6.0 chmod +x Anaconda3-5.2.0-Linux-x86_64.sh ./Anaconda3-5.2.0-Linux-x86_64.sh - + This will start the Anaconda installer which will guide you through the installation process. @@ -51,12 +51,12 @@ This installation guide is for ISIS3 users interested in installing ISIS3 (3.6.0 #The order is important. If conda-forge is before usgs-astrogeology, you will need to run: conda config --env --add channels usgs-astrogeology - + 6. The environment is now ready to download ISIS3 and its dependencies: conda install -c usgs-astrogeology isis3 - + 7. Finally, setup the environment variables: @@ -64,18 +64,19 @@ This installation guide is for ISIS3 users interested in installing ISIS3 (3.6.0 #This script prepares default values for: $ISISROOT/$ISIS3DATA/$ISIS3TESTDATA python $CONDA_PREFIX/scripts/isis3VarInit.py - + Executing this script with no arguments will result in $ISIS3DATA=$CONDA\_PREFIX/data, and $ISIS3TESTDATA=$CONDA\_PREFIX/testdata. The user can specify different directories for both of these optional values: python $CONDA_PREFIX/scripts/isis3VarInit.py --data-dir=[path to data directory] --test-dir=[path to test data directory] - + Directions for running rsync to download ISIS3 data can be found [here.](#ISIS3DataDownload) Now everytime the isis3 environment is activated, $ISISROOT, $ISIS3DATA, and $ISIS3TESTDATA will be set to the values passed to isis3VarInit.py. This does not happen retroactively, re-activate the isis3 envionment with one of the following commands: for Anaconda 3.4 and up - conda activate isis3 prior to Anaconda 3.4 - source activate isis3 - + +> Updating: To update to a new version of ISIS, simply run `conda update isis` ### Operating System Requirements @@ -128,7 +129,7 @@ To download all ISIS3 data (approximately 520 GB), enter the following commands cd $ISIS3DATA rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data . - + > Note: The above command downloads all ISIS data including the required base data area and all of the optional mission data areas. @@ -151,56 +152,56 @@ ISIS can now use a service to retrieve the SPICE data for all instruments ISIS s For example: `rsync -azv **--exclude='kernels'** --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/cassini data/` - WARNING: Some instruments require mission data to be present for radiometric calibration, which may not be supported by the SPICE Web Server exclusively, and some programs that are designed to run an image from ingestion through the mapping phase do not have an option to use the SPICE Web Service. For information specific to an instrument, see the documentation for radiometric callobration programs. + WARNING: Some instruments require mission data to be present for radiometric calibration, which may not be supported by the SPICE Web Server exclusively, and some programs that are designed to run an image from ingestion through the mapping phase do not have an option to use the SPICE Web Service. For information specific to an instrument, see the documentation for radiometric callobration programs. #### Apollo Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/apollo15 data/ rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/apollo16 data/ rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/apollo17 data/ - + Cassini Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/cassini data/ - + Chandrayaan Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/chandrayaan1 data/ - + Clementine Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/clementine1 data/ - + Dawn Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/dawn data/ - + ExoMars Trace Gas Orbiter Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/tgo data/ - + Galileo Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/galileo data/ - + Hayabusa Mission (kernels can be excluded): @@ -208,124 +209,124 @@ Hayabusa Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/hayabusa data/ rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/hayabusa2 data/ - + Juno Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/juno data/ - + Kaguya Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/kaguya data/ - + Lunar Orbiter Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/lo data/ - + Lunar Reconnaissance Orbiter Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/lro data/ - + Mars Exploration Rover Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/mer data/ - + Mariner10 Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/mariner10 data/ - + Messenger Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/messenger data/ - + Mars Express Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/mex data/ - + Mars Global Surveyor Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/mgs data/ - + Mars Reconnaissance Orbiter Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/mro data/ - + Mars Odyssey Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/odyssey data/ - + Near Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/near data/ - + New Horizons Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/newhorizons data/ - + Odyssey Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/odyssey data/ - + Rolo Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/rolo data/ - + Rosetta Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/rosetta data/ - + Smart1 Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/smart1 data/ - + Viking Mission (kernels can be excluded): @@ -333,7 +334,7 @@ Viking Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/viking1 data/ rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/viking2 data/ - + Voyager Mission (kernels can be excluded): @@ -341,7 +342,7 @@ Voyager Mission (kernels can be excluded): rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/voyager1 data/ rsync -azv --delete --partial isisdist.astrogeology.usgs.gov::isis3data/data/voyager2 data/ - + Installing older versions of ISIS --------------------------------- From 5a2ca3e2f24ec6bb338a09cf3d460bf99060b2cd Mon Sep 17 00:00:00 2001 From: Kelvin Date: Mon, 25 Mar 2019 11:02:02 -0700 Subject: [PATCH 3/6] isis->isis3 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8b13d366d1..2d3dd6603a 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ This installation guide is for ISIS3 users interested in installing ISIS3 (3.6.0 for Anaconda 3.4 and up - conda activate isis3 prior to Anaconda 3.4 - source activate isis3 -> Updating: To update to a new version of ISIS, simply run `conda update isis` +> Updating: To update to a new version of ISIS, simply run `conda update isis3` ### Operating System Requirements From fea8ab4e92d203ede710ea93514e0c329f7d6c62 Mon Sep 17 00:00:00 2001 From: Kelvin Date: Mon, 25 Mar 2019 13:39:44 -0700 Subject: [PATCH 4/6] added header --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2d3dd6603a..addd39f85d 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,9 @@ This installation guide is for ISIS3 users interested in installing ISIS3 (3.6.0 for Anaconda 3.4 and up - conda activate isis3 prior to Anaconda 3.4 - source activate isis3 -> Updating: To update to a new version of ISIS, simply run `conda update isis3` +### Updating + + To update to a new version of ISIS, simply run `conda update isis3` ### Operating System Requirements From 9d1009880b0798a8b5d97b4183ad7cfe389b8c8e Mon Sep 17 00:00:00 2001 From: Kelvin Date: Tue, 26 Mar 2019 10:53:31 -0700 Subject: [PATCH 5/6] updated contributing guidelines --- CONTRIBUTING.md | 134 +++++++++++++++++++++--------------------------- 1 file changed, 59 insertions(+), 75 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 70035ab9a9..f400d644ca 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,76 +1,60 @@ -# Contributing to ISIS3 -# Under Construction - -#### Table of Contents -[I have a question or a problem!](#i-have-a-question-or-a-problem) - -[How can I contribute?](#how-can-i-contribute) - * [Suggesting enhancements](#redmine-issues) - * [Working on an existing issue or enhancement](#working-on-an-existing-issue-or-enhancement) - * [Working on a new issue or enhancement](#working-on-a-new-issue) - -[Code Base Contribution Guidelines](#code-base-contribution-guidelines) - -[What can I expect from the ISIS3 development team](#What-can-I-expect-from-the-ISIS3-development-team) - * [Response time](#Response-time) - * [Feedback](#feedback) - -[Development Process Checklists](https://github.com/USGS-Astrogeology/ISIS3/wiki/Developer-Checklists) - -[References](#references) - -## I have a question or a problem! -If you have a question about or a problem with ISIS3, please see the [Redmine Issues](#redmine-issues) section. - -If you have a question or a problem with contributing to our software please contact mshepherd@usgs.gov - -## How can I contribute? - -### Redmine Issues -Redmine is our ticket tracking tool. If you have a question about, a problem with, or a suggestion for ISIS3, please read our [Guidelines for reporting Redmine issues](https://isis.astrogeology.usgs.gov/fixit/projects/isis/wiki/Guidelines_for_Reporting_Issues). Once you have read that please [submit](https://isis.astrogeology.usgs.gov/fixit/projects/isis/issues/new) a Redmine issue. - -### Working on an issue or enhancement -1. Find a issue or enhancement that you want to work on. Check Redmine [issues](https://isis.astrogeology.usgs.gov/fixit/projects/isis/issues) to see if there has been a ticket reported about it. If one does not exist that addresses what you want to work on, make a ticket. -2. Assign the Redmine issue to yourself. If you don't have the permission to do this, please make a note on the issue indicating that you would like to work on it. -3. Propose a solution on the redmine issue. -4. Work with an ISIS3 developer, the issue reporter, and any other interested parties to get feedback on your solution. This may be an iterative process. -5. Add an [impact statement](https://isis.astrogeology.usgs.gov/fixit/projects/isis/wiki/Impact_Statement) to the redmine issue. If you don't have the permission to do this, please make a note on the issue with the impact statement. -6. Make the changes on your fork of the ISIS3 main GitHub repo. Follow the [Code Base Contribution Guidelines](#code-base-contribution-guidelines). -7. Follow the Developer's Checklist to ensure your changes are ready for review. -8. Make a pull request. Include the redmine issue number in the title of the pull request. Use the "Fixes #0000" format. -9. Work with your code reviewer, tester, and reporter to improve your changes. Your pull request will not be merged in until all parties approve the changes. -10. Check in your test data. If you are an outside contributer, work with your code reviewer to ensure your tests and test data get checked in. - -### Working on a new issue or enhancement -1. Please create a [Redmine issue](#redmine-issues). -2. Indicate in the comments of your issue that you would like to work on the issue or enhancement. -3. Follow the [Working on an existing issue or enhancement](#working-on-an-existing-issue-or-enhancement) steps. - -## Code Base Contribution Guidelines -The following is a set of guidelines for contributing to ISIS3. -* Personal style changes will not be accepted. -* Changes to bring code closer to our [Coding Standards and Style Guide](https://isis.astrogeology.usgs.gov/documents/CodingStandards/CodingStandards.html) are encouraged. -* Please be professional, even in comments. -* Variable names must be meaningful. -* All modified code is required to pass our [Coding Standards and Style Guide](https://isis.astrogeology.usgs.gov/documents/CodingStandards/CodingStandards.html). -* You must write or update tests to exercise any modified code. -* You must provide test data for any new or modified tests. -* You must have a Redmine issue assigned to you before submitting a pull request. -* You must complete the Developer Checklist before submitting your pull request. -* When submitting a pull request, you must include the Redmine issue number in the title of the pull request. Use the "Fixes #0000" format (#0000 being the Redmine ticket number). - -## What can I expect from the ISIS3 development team? -### Response Time -Our response time will depend on availability and scheduling. -### Feedback -Our feedback will address any discrepancies related to the contribution guidelines, our coding standards and style guide, and our code review checklist. - -## References - * [ISIS3 API Reference](https://isis.astrogeology.usgs.gov/Object/Developer/index.html) - * [Tutorials](https://isis.astrogeology.usgs.gov/fixit/projects/isis/wiki/ISIS_Online_Workshops) - * [Application Documentation](https://isis.astrogeology.usgs.gov/Application/index.html) - * [Coding Standards and Style Guide](https://isis.astrogeology.usgs.gov/documents/CodingStandards/CodingStandards.html) - * [Documentation](https://isis.astrogeology.usgs.gov/documents/CodingStandards/CodingStandards.html#documentation) - * [Redmine Issue Lifecycle](https://isis.astrogeology.usgs.gov/fixit/projects/isis/wiki/Life_Cycle_of_an_ISIS_Issue) - +# ISIS Contributing Guide +The goal of this document is to create a contribution process that: + +* Encourages new contributions. +* Encourages contributors to remain involved. +* Avoids unnecessary processes and bureaucracy whenever possible. +* Creates a transparent decision making process which makes it clear how +contributors can be involved in decision making. + + +## Vocabulary + +* A **Contributor** is any individual creating or commenting on an issue or pull request. +* A **Committer** is a subset of contributors who have been given write access to the repository. +* A **TC (Technical Committee)** is a group of committers representing the required technical +expertise to resolve rare disputes. + +# Logging Issues + +Log an issue for any question or problem you might have. When in doubt, log an issue, +any additional policies about what to include will be provided in the responses. The only +exception is security disclosures which should be sent privately. + +Committers may direct you to another repository, ask for additional clarifications, and +add appropriate metadata before the issue is addressed. + +Please be courteous, respectful, and every participant is expected to follow the +project's Code of Conduct. + +# Contributions + +Any change to resources in this repository must be through pull requests. This applies to all changes +to documentation, code, binary files, etc. + +No pull request can be merged without being reviewed. + +The default for each contribution is that it is accepted once no committer has an objection. +During review committers may also request that a specific contributor who is most versed in a +particular area gives a "LGTM" before the PR can be merged. There is no additional "sign off" +process for contributions to land. Once all issues brought by committers are addressed it can +be landed by any committer. + +In the case of an objection being raised in a pull request by another committer, all involved +committers should seek to arrive at a consensus by way of addressing concerns being expressed +by discussion, compromise on the proposed change, or withdrawal of the proposed change. + +If a contribution is controversial and committers cannot agree about how to get it to land +or if it should land then it should be escalated to the TC. TC members should regularly +discuss pending contributions in order to find a resolution. It is expected that only a +small minority of issues be brought to the TC for resolution and that discussion and +compromise among committers be the default resolution mechanism. + +# Becoming a Committer + +All contributors who land a non-trivial contribution should be on-boarded in a timely manner, +and added as a committer, and be given write access to the repository. + +Committers are expected to follow this policy and continue to send pull requests, go through +proper review, and have other committers merge their pull requests. From ae09dd23ca29d12d30150854caaa006a5881e1f7 Mon Sep 17 00:00:00 2001 From: Kelvin Date: Tue, 26 Mar 2019 11:11:18 -0700 Subject: [PATCH 6/6] removed mentions of TC --- CONTRIBUTING.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f400d644ca..28d3e9a52a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,8 +13,6 @@ contributors can be involved in decision making. * A **Contributor** is any individual creating or commenting on an issue or pull request. * A **Committer** is a subset of contributors who have been given write access to the repository. -* A **TC (Technical Committee)** is a group of committers representing the required technical -expertise to resolve rare disputes. # Logging Issues @@ -45,11 +43,6 @@ In the case of an objection being raised in a pull request by another committer, committers should seek to arrive at a consensus by way of addressing concerns being expressed by discussion, compromise on the proposed change, or withdrawal of the proposed change. -If a contribution is controversial and committers cannot agree about how to get it to land -or if it should land then it should be escalated to the TC. TC members should regularly -discuss pending contributions in order to find a resolution. It is expected that only a -small minority of issues be brought to the TC for resolution and that discussion and -compromise among committers be the default resolution mechanism. # Becoming a Committer