LDD Creation Process ==================== .. toctree:: :maxdepth: 3 /development/ldd-create Proposing a New Discipline LDD ++++++++++++++++++++++++++++++ Creation of a new Discipline LDDs should be discussed and approved by the PDS LDD Change Control Board (TBD Email list or google group). During this process the following must be determined: 1. Is this LDD needed? ---------------------- Does a similar dictionary exist? If so, what is the rationale for creating a new one instead of adding to an existing one? 2. Who is the LDD Stewardship Team? ------------------------------------ * Responsible for design, implementation, and review LDD development. * Membership includes **one lead LDD steward** and one or more stakeholders who are identified either by the lead LDD steward and/or dLDD Approval Board. 3. Who is the dLDD Modeling Team? --------------------------------- * Responsible for reviewing and approving changes to the dLDDs to be released. * Membership includes one or more PDS Engineering Node data engineers who have in depth experience in information modeling and ontology. ---- Proposing a New Mission LDD +++++++++++++++++++++++++++ Contact your Discipline Node to help you along this process. Many of the best practices and review rigor described below may not be necessary for Mission LDD development. ---- Submit Request For New LDD Creation +++++++++++++++++++++++++++++++++++ Upon receiving approval to begin development on your new LDD, it must be initialized by reserving a namespace ID and creating a new repo. Create a new ``[ldd-request] Initialize New PDS LDD`` issue within the `PDSEN Operations repo `_ and fill out the issue template with the applicable information. Part of the initialization procedure will include a new namespace added to the PDS4 Information Model and `PDS4 Namespace Registry `_ and a new repo will be created. The EN Operations Team will notify you once the repo is ready to use. ---- Initializing New LDD ++++++++++++++++++++ .. note:: Responsible Party: Member of `PDSEN Operations `_ .. note:: This can probably be scripted someday using GithubAPI or within a Github Action. 1. Create ``PDS Namespace Request`` issue in `PDS4 Information Model repo `_ with info from and reference to the ticket in PDSEN Operations repo. 2. Once namespace request has been completed, :ref:`Create LDD Stewardship Team`. 3. Once team has been created, :ref:`Creating New LDD Repository` Create LDD Stewardship Team --------------------------- Create a new team `here `_ : * **Team name:** ``[namespace_id] LDD Stewardship Team`` * **Team visibility:** ``Visible`` Add the users noted in the LDD Initialization Ticket. Next step: :ref:`Creating New LDD Repository` Creating New LDD Repository --------------------------- .. note:: Responsible Party: Member of `PDSEN Operations `_ .. note:: This can probably be scripted someday using GithubAPI or within a Github Action. Once the namespace request has been completed. We can create the repo from the ldd-template **Create new repo from ldd-template** a. `Create new repo `_ b. Set the following parameters: * ``Owner``: ``pds-data-dictionaries`` * ``Repository Name``: should follow the naming scheme ``ldd-``. * ``Description``: enter description sent by LDD Steward * Set visibility to ``Public`` * Check the box ``Include all branches`` **Update Repo Settings** We need to setup the teams and ``main`` branch protections. a. Go to ``Settings`` b. Disable issues being created on this repo (they will be created in the PDS4 LDD Issue Repo). c. Add appropriate teams with access to repo * Go to ``Manage Access`` * Click on ``Invite teams or people`` * Add the ``LDD Stewardship Team`` with Admin access * Add the ``@pdsen-operations-team`` with Admin access * If this is a Discipline LDD Repo, add the ``@dldd-data-modeling-team`` with Write access d. Set branches protections * Go to ``Branches`` * Under **Branch protection rules**, click ``Add rule`` * Enter **Branch name pattern:** ``main`` * Select ``Require pull request reviews before merging`` * Select ``Require review from Code Owners`` * Select ``Require status checks to pass before merging`` * Search and select the ``LDD Generation Check`` action. * Select ``Restrict who can push to matching branches`` e. Set GitHub Pages Deployment * Go to ``Settings`` -> ``Pages`` * Under ``Build and Deployment`` -> ``Source``, select ``GitHub Actions`` **Create new issue template in PDS4 LDD Issue Repo** a. `Create a new label `_ in the PDS4 LDD Issue Repo for the new repo (ldd-) b. Clone the `PDS4 LDD Issue Repo `_ c. Execute the `generate-issue-template.sh bash script `_. This will automatically generate an issue template from the `LDD Issue Template `_ and push to the repo:: $ bin/generate-issue-template.sh '' New issue template created: /Users/jpadams/Documents/proj/pds/pdsen/workspace/pds4-ldd-issue-repo/bin/../.github/ISSUE_TEMPLATE/-ldd-cart--ldd-update-request.md [main 950bedb] Add cart issue template 1 file changed, 33 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/-ldd-cart--ldd-update-request.md Enumerating objects: 8, done. Counting objects: 100% (8/8), done. Delta compression using up to 16 threads Compressing objects: 100% (4/4), done. Writing objects: 100% (5/5), 1.07 KiB | 1.07 MiB/s, done. Total 5 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 2 local objects. remote: This repository moved. Please use the new location: remote: git@github.com:pds-data-dictionaries/PDS4-LDD-Issue-Repo.git To github.com:pds-data-dictionaries/pds4-ldd-issue-repo.git b0abee5..950bedb main -> main d. You should now see a `new issue template created `_ **Notify LDD Stewardship Team** Notify the LDD Stewardship Team the new repo is ready in the PDSEN Operations issue, e.g.: .. @, @, and @ your LDD repo is now ready for use at https://github.com/pds-data-dictionaries/ldd-. Read through `Getting to Know Your LDD Repo `_ to get started. ---- Retrofit Existing LDD Repository (Admin / Stewards Only) +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1. Clone the ldd-template repo and the LDD repo to be retrofitted. For this example, we will be retrofitting the ``ldd-img`` repo:: git clone git@github.com:pds-data-dictionaries/ldd-template.git git clone git@github.com:pds-data-dictionaries/ldd-img.git 2. From the ``ldd-img`` repo, rsync the various files from the ``ldd-template`` repo:: cd ldd-img rsync -av ../ldd-template/.gitignore ../ldd-template/.github ../ldd-template/build ../ldd-template/src ../ldd-template/test ./ 3. Rename or remove test files and example IngestLDD so they don't get picked up in the regression tests (files can't end in .xml):: mv test/test1_FAIL.xml test/test1_FAIL.xml_example mv test/test1_VALID.xml test/test1_VALID.xml_example rm src/PDS4_EXAMPLE_IngestLDD.xml 4. Re-arrange directories to match that of the ``ldd-template`` repo. Specifically note the ``build/development`` and ``build/release`` directories. 5. Create a branch and pull request, and verify the Github Action executes successfully. e.g. https://github.com/pds-data-dictionaries/ldd-img/actions/ 6. Remove local repo github issues, update permissions on the repository, and add branch protections per :doc:`Update Repo Settings above ` 7. Update README as appropriate to direct people to Contribute and Get Support. See the `ldd-template README `_ for more details.