From 61248f6b80febbf20d4f148d01fa65cef8034d7a Mon Sep 17 00:00:00 2001 From: Ian Chan Date: Wed, 10 Dec 2025 11:50:05 -0500 Subject: [PATCH 1/3] chore: add feed submission PR template --- .../FEED_SUBMISSION_TEMPLATE.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE/FEED_SUBMISSION_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE/FEED_SUBMISSION_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE/FEED_SUBMISSION_TEMPLATE.md new file mode 100644 index 000000000..fff6ea0ed --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/FEED_SUBMISSION_TEMPLATE.md @@ -0,0 +1,20 @@ +**Summary:** + +Summarize the changes in the pull request including how it relates to any issues (include the #number, or link them). + +**Expected behavior:** + +Explain and/or show screenshots for how you expect the pull request to work in your testing (in case other devices exhibit different behavior). + +**Testing tips:** + +Provide tips, procedures and sample files on how to test the feature. +Testers are invited to follow the tips AND to try anything they deem relevant outside the bounds of the testing tips. + +Please make sure these boxes are checked before submitting your pull request - thanks! + +- [ ] Run the unit tests with `./scripts/api-tests.sh` to make sure you didn't break anything +- [ ] Add or update any needed documentation to the repo +- [ ] Format the title like "feat: [new feature short description]". Title must follow the Conventional Commit Specification(https://www.conventionalcommits.org/en/v1.0.0/). +- [ ] Linked all relevant issues +- [ ] Include screenshot(s) showing how this pull request works and fixes the issue(s) From 941c3c087d51f13150d0bc7a6ae94acac97b3940 Mon Sep 17 00:00:00 2001 From: Ian Chan Date: Wed, 10 Dec 2025 12:22:03 -0500 Subject: [PATCH 2/3] fix rebase conflicts --- .../FEED_SUBMISSION_TEMPLATE.md | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE/FEED_SUBMISSION_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE/FEED_SUBMISSION_TEMPLATE.md index fff6ea0ed..5345ea786 100644 --- a/.github/PULL_REQUEST_TEMPLATE/FEED_SUBMISSION_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE/FEED_SUBMISSION_TEMPLATE.md @@ -1,20 +1,33 @@ -**Summary:** +## Feed Submission Checklist -Summarize the changes in the pull request including how it relates to any issues (include the #number, or link them). +- [ ] **_Valid Direct Download URL:_** Does the URL produce a zip file and is it valid gtfs? If realtime, is it a protobuf? +- [ ] **_Official Status:_** Is the feed official? Check contact email, direct download URL, website etc. +- [ ] **_Authentication:_** Is there any authentication required? -**Expected behavior:** +### Is Your Feed New? -Explain and/or show screenshots for how you expect the pull request to work in your testing (in case other devices exhibit different behavior). +- [ ] **_MDB Stable ID:_** Correct stable id in the file name? And the “latest url” field? (if schedule feed) +- [ ] **_Sequential Ordering:_** Does the stable id increment from latest stable id? Do they increase in sequential order? -**Testing tips:** +### Is Your Feed an Update? -Provide tips, procedures and sample files on how to test the feature. -Testers are invited to follow the tips AND to try anything they deem relevant outside the bounds of the testing tips. +- [ ] **_Official Status:_** If unofficial, do not deprecate and redirect the old feed, but import this new feed as unofficial so both feeds are available in the database +- [ ] **_Deprecate and Redirect:_** If official, deprecate and redirect the old feed to this updated feed -Please make sure these boxes are checked before submitting your pull request - thanks! +### Is it a Schedule Feed? -- [ ] Run the unit tests with `./scripts/api-tests.sh` to make sure you didn't break anything -- [ ] Add or update any needed documentation to the repo -- [ ] Format the title like "feat: [new feature short description]". Title must follow the Conventional Commit Specification(https://www.conventionalcommits.org/en/v1.0.0/). -- [ ] Linked all relevant issues -- [ ] Include screenshot(s) showing how this pull request works and fixes the issue(s) +- [ ] **_Service Status:_** Is the status active? Check feed_info file for service window + +### Is it a Realtime Feed? + +- [ ] **_Reference:_** Does it have a reference to the schedule feed? + +### Pre-existing Feed Existence [internal] + +- [ ] Perform a check on the mobility database website to check for pre-existing unpublished (wip) feeds from other sources +- [ ] Sometimes the "old" feed is not included in the feed submission form, perform a check for fuzzy matches on Provider and Direct Download URL. In the case of probably matches, check with the validator for entity count, agency and feed info matches as well. + +### Other Considerations [internal] + +- [ ] **_Flex:_** Flex feeds are sometimes produced separately from schedule feeds. Import the flex feed as a brand new feed instead of a redirect of the schedule feed. +- [ ] **_Schedule Feed_**: Sometimes you will encounter two **active** schedule feeds. This may occur when one schedule feed is used as the schedule, while the other is used for a reference to the realtime feed. Look for feeds produced by Passio (or other vehicle tracking software). From b4a2e2be6f8dec29b56bd0cfae98e93d06d18307 Mon Sep 17 00:00:00 2001 From: Ian Chan Date: Wed, 10 Dec 2025 14:41:35 -0500 Subject: [PATCH 3/3] chore: update the template to include schema links --- .../FEED_SUBMISSION_TEMPLATE.md | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE/FEED_SUBMISSION_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE/FEED_SUBMISSION_TEMPLATE.md index 5345ea786..e390f2f8e 100644 --- a/.github/PULL_REQUEST_TEMPLATE/FEED_SUBMISSION_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE/FEED_SUBMISSION_TEMPLATE.md @@ -1,33 +1,38 @@ ## Feed Submission Checklist -- [ ] **_Valid Direct Download URL:_** Does the URL produce a zip file and is it valid gtfs? If realtime, is it a protobuf? -- [ ] **_Official Status:_** Is the feed official? Check contact email, direct download URL, website etc. -- [ ] **_Authentication:_** Is there any authentication required? +Thanks for contributing to the MobilityDatabase! + +This is a comprehensive checklist detailing the things to consider before submitting a feed to the database. The schema links in this checklist will follow the convention of [[1]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_schedule_source_schema.json) for schedule feed schema and [[2]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_realtime_source_schema.json) for realtime feeds. You will find the schema definitions for schedule and realtime feeds are often the same, but both references are always included for completeness. If you have any questions, reach out to @ianktc. + +### General Checks + +- [ ] **_Valid Direct Download URL:_** Does the URL produce a zip file and is it valid gtfs? [[1]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_schedule_source_schema.json#L117-L121) If realtime, is it a protobuf? [[2]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_realtime_source_schema.json#L62-L66) +- [ ] **_Official Status:_** Is the feed official? Check contact email, direct download URL, website etc. [[1]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_schedule_source_schema.json#L205-L209) or [[2]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_realtime_source_schema.json#L175-L179) +- [ ] **_Service Status:_** Is the status active? Check feed_info file for service window. [[1]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_schedule_source_schema.json#L109-L113) or [[2]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_realtime_source_schema.json#L50-L54) +- [ ] **_Authentication:_** Is there any authentication required? [[1]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_schedule_source_schema.json#L122-L139) or [[2]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_realtime_source_schema.json#L67-L85) Enum values are described [[1]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/README.md?plain=1#L76) and [[2]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/README.md?plain=1#L102) (they are the same) ### Is Your Feed New? -- [ ] **_MDB Stable ID:_** Correct stable id in the file name? And the “latest url” field? (if schedule feed) -- [ ] **_Sequential Ordering:_** Does the stable id increment from latest stable id? Do they increase in sequential order? +- [ ] **_MDB Stable ID:_** Correct stable id in the file name? Does it match the mdb_source_id field? [[1]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_schedule_source_schema.json#L6-L9) or [[2]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_realtime_source_schema.json#L6-L9). And stable id in the “latest url” field? [[1]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_schedule_source_schema.json#L140-L144) +- [ ] **_Sequential Ordering:_** Does the stable id increment from latest stable id? Do they increase in sequential order? Refer to this [spreadsheet](https://files.mobilitydatabase.org/feeds_v2.csv) for the latest mdb stable id. ### Is Your Feed an Update? - [ ] **_Official Status:_** If unofficial, do not deprecate and redirect the old feed, but import this new feed as unofficial so both feeds are available in the database -- [ ] **_Deprecate and Redirect:_** If official, deprecate and redirect the old feed to this updated feed - -### Is it a Schedule Feed? - -- [ ] **_Service Status:_** Is the status active? Check feed_info file for service window +- [ ] **_Deprecate and Redirect:_** If official, deprecate and redirect the old feed to this updated feed. [[1]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_schedule_source_schema.json#L188-L204) or [[2]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_realtime_source_schema.json#L158-L174) ### Is it a Realtime Feed? -- [ ] **_Reference:_** Does it have a reference to the schedule feed? +- [ ] **_Reference:_** Does it have a reference to the schedule feed? [[2]](https://github.com/MobilityData/mobility-database-catalogs/blob/f01d27ed5f350fbff0d77038d362a3543915b289/schemas/gtfs_realtime_source_schema.json#L35-L41) ### Pre-existing Feed Existence [internal] - [ ] Perform a check on the mobility database website to check for pre-existing unpublished (wip) feeds from other sources -- [ ] Sometimes the "old" feed is not included in the feed submission form, perform a check for fuzzy matches on Provider and Direct Download URL. In the case of probably matches, check with the validator for entity count, agency and feed info matches as well. +- [ ] Sometimes the "old" feed is not included in the feed submission form, perform a check for fuzzy matches on Provider and Direct Download URL. In the case of probable matches, check with the validator for entity count, agency and feed info matches as well. ### Other Considerations [internal] -- [ ] **_Flex:_** Flex feeds are sometimes produced separately from schedule feeds. Import the flex feed as a brand new feed instead of a redirect of the schedule feed. -- [ ] **_Schedule Feed_**: Sometimes you will encounter two **active** schedule feeds. This may occur when one schedule feed is used as the schedule, while the other is used for a reference to the realtime feed. Look for feeds produced by Passio (or other vehicle tracking software). +Sometimes you will encounter two **active** schedule feeds. There are some possible reasons this may occur: + +- [ ] **_Flex:_** Flex feeds are sometimes produced separately from schedule feeds. Import the flex feed as a brand new feed instead of a redirect of the schedule feed. [[definition]](https://gtfs.org/community/extensions/flex/) +- [ ] **_Reference Schedule Feed_**: One schedule feed may be used as the schedule, while the other is used as a reference to the realtime feed. Look for feeds produced by Passio (or other vehicle tracking software). [[example]](https://mobilitydatabase.org/feeds?q=toronto+transit+commission>fs=true) \ No newline at end of file