LDD Creation Process¶
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.
Create
PDS Namespace Requestissue in PDS4 Information Model repo with info from and reference to the ticket in PDSEN Operations repo.Once namespace request has been completed, Create LDD Stewardship Team.
Once team has been created, Creating New LDD Repository
Create LDD Stewardship Team¶
Create a new team here :
Team name:
[namespace_id] LDD Stewardship TeamTeam visibility:
Visible
Add the users noted in the LDD Initialization Ticket.
Next step: 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
- Set the following parameters:
Owner:pds-data-dictionariesRepository Name: should follow the naming schemeldd-<namespace_id>.Description: enter description sent by LDD StewardSet visibility to
Public
Update Repo Settings
We need to setup the teams and main branch protections.
Go to
SettingsDisable issues being created on this repo (they will be created in the PDS4 LDD Issue Repo).
- Add appropriate teams with access to repo
Go to
Manage AccessClick on
Invite teams or peopleAdd the
<namespace_id> LDD Stewardship Teamwith Admin accessAdd the
@pdsen-operations-teamwith Admin accessIf this is a Discipline LDD Repo, add the
@dldd-data-modeling-teamwith Write access
- Set branches protections
Go to
BranchesUnder Branch protection rules, click
Add ruleEnter Branch name pattern:
mainSelect
Require pull request reviews before mergingSelect
Require review from Code Owners- Select
Require status checks to pass before merging Search and select the
Tag and Release LDD (x.x.x.x)action.
- Select
Select
Restrict who can push to matching branches
- Set GitHub Pages Deployment
Go to
Settings->PagesUnder
Build and Deployment->Source, selectGitHub Actions
Create new issue template in PDS4 LDD Issue Repo
Create a new label in the PDS4 LDD Issue Repo for the new repo (ldd-<namespace_id>)
Clone the PDS4 LDD Issue Repo
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 <namespace_id> '<namespace_name>' <ldd_steward_username> 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
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.:
@<stewardship_team_member_0>, @<stewardship_team_member_1>, and @<stewardship_team_member_n> your LDD repo is now ready for use at https://github.com/pds-data-dictionaries/ldd-<namespace_id>. Read through Getting to Know Your LDD Repo to get started.
Retrofit Existing LDD Repository (Admin / Stewards Only)¶
Clone the ldd-template repo and the LDD repo to be retrofitted. For this example, we will be retrofitting the
ldd-imgrepo:git clone git@github.com:pds-data-dictionaries/ldd-template.git git clone git@github.com:pds-data-dictionaries/ldd-img.git
From the
ldd-imgrepo, rsync the various files from theldd-templaterepo:cd ldd-img rsync -av ../ldd-template/.gitignore ../ldd-template/.github ../ldd-template/build ../ldd-template/src ../ldd-template/test ./
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
Re-arrange directories to match that of the
ldd-templaterepo. Specifically note thebuild/developmentandbuild/releasedirectories.Create a branch and pull request, and verify the Github Action executes successfully. e.g. https://github.com/pds-data-dictionaries/ldd-img/actions/
Remove local repo github issues, update permissions on the repository, and add branch protections per Update Repo Settings above
Update README as appropriate to direct people to Contribute and Get Support. See the ldd-template README for more details.