Skip to content

Commit 1016824

Browse files
committed
Add new governance files
1 parent 6ace734 commit 1016824

File tree

7 files changed

+979
-0
lines changed

7 files changed

+979
-0
lines changed

docs/en/community/governance/schedule/change-process.md

Lines changed: 396 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Change Types
2+
3+
Proposed changes to the specification are categorized based on their impact on its functionality and interpretation. Each category follows a specific process before being officially adopted into GTFS.
4+
5+
<img class="center" width="100%" height="100%" src="../../../../assets/governance-change-types.png" alt="GTFS Governance Change Types">
6+
7+
## 1. Functional changes
8+
9+
Functional changes refers to modifications that significantly affect specification functionalities. These changes typically require testing and include adding new elements (files, fields, enums) or modifying existing ones. Such changes have to follow the complete specification change process in order to be officially adopted.
10+
11+
Past Examples:
12+
13+
* [PR #405](https://github.com/google/transit/pull/405) adds two new files networks.txt and route_networks.txt.
14+
* [PR #385](https://github.com/google/transit/pull/385) adds a new option for the field fare_media_type in fare_media.txt.
15+
16+
## 2. Non-Functional changes
17+
18+
Non-functional changes refer to important updates to the specification that do not significantly affect functionalities. These changes typically do not require testing and they include the update of requirements, the addition or modification of best practices and any non-editorial modification to the governance framework.
19+
20+
### Requirement updates
21+
22+
Modifications that do not introduce substantial changes to existing functionalities but affect the implementation and compliance of current elements within the specification. This includes, updates to presence types for files and fields, and adjustments to file requirements.
23+
24+
* Past Examples:
25+
* [PR #472](https://github.com/google/transit/pull/472) changes stops.txt presence from Required to Conditionally Required.
26+
* [PR #379](https://github.com/google/transit/pull/379) adds a new requirement for all GTFS datasets.
27+
28+
### Governance
29+
30+
Changes to the processes and guidelines governing the management of the specification include updates to the amendment process, modifications to roles and responsibilities, revisions to contribution guidelines, and adjustments to any document related to the governance framework. These updates ensure clear and effective management practices.
31+
32+
* Past Examples:
33+
* [PR #387](https://github.com/google/transit/pull/387) updates the specification change process to switch from Swiss business days to calendar days only.
34+
35+
### Best practices
36+
37+
Changes enhancing specific parts of the specification by incorporating recommendations through the use of "should" statements. These updates provide guidance on preferred approaches or methods, encouraging users to follow best practices while maintaining flexibility in the specification's application.
38+
39+
* Past Examples:
40+
* [PR #485](https://github.com/google/transit/pull/485) creates a new best practice to add that headsigns are recommended.
41+
* [PR #406](https://github.com/google/transit/pull/406) introduces the Dataset Publishing guidelines and Practice Recommendations for all files into the specification
42+
43+
## 3. Documentation maintenance
44+
45+
Specification changes that focus on maintaining the documentation are made to improve the specification's clarity, accuracy, and presentation without altering its semantics or functionality. These updates may involve expanding existing content to provide clearer descriptions while preserving the specification’s current interpretation. These changes require a review, but they can be adopted without the need of a vote.
46+
47+
### Editorial
48+
49+
These involve correcting grammar, spelling, punctuation, typographical errors, and outdated links. They also include documenting adopted changes in the revision history and making formatting adjustments. Editorial updates for Governance-related files are included in this category.
50+
51+
* Past Examples:
52+
* [PR #506](https://github.com/google/transit/pull/505) Updates the revision history for the month of September 2024
53+
* [PR #361](https://github.com/google/transit/pull/361) Fixes a broken link in fare\_rules.txt
54+
* [PR #412](https://github.com/google/transit/pull/412) Changes the location of an existing misplaced requirement.
55+
56+
### Clarifications & Examples
57+
58+
Clarifications expand on specific points to improve understanding, add necessary context, and provide examples that demonstrate how to apply the specification. These updates ensure users can interpret and follow it correctly without altering its intended functionality.
59+
60+
* Past Examples:
61+
* [PR #443](https://github.com/google/transit/pull/443) adds links to example pages that supplement the information in the reference document
62+
* [PR #426](https://github.com/google/transit/pull/426) modifies the definition of fare products to reflect its intended use.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Guiding principles
2+
3+
In order to preserve the original vision of GTFS, a number of guiding principles have been established to take into consideration when changing the specification:
4+
5+
**Feeds should be easy to create and edit**
6+
We chose CSV as the basis for the specification because it's easy to view and edit using spreadsheet programs and text editors, which is helpful for smaller agencies. It's also straightforward to generate from most programming languages and databases, which is good for publishers of larger feeds.
7+
8+
**Feeds should be easy to parse**
9+
Feed readers should be able to extract the information they're looking for with as little work as possible. Changes and additions to the feed should be as broadly useful as possible, to minimize the number of code paths that readers of the feed need to implement. (However, making creation easier should be given precedence, since there will ultimately be more feed publishers than feed readers.)
10+
11+
**The spec is about passenger information**
12+
GTFS is primarily concerned with passenger information. That is, the spec should include information that can help power tools for riders, first and foremost. There is potentially a large amount of operations-oriented information that transit agencies might want to transmit internally between systems. GTFS is not intended for that purpose and there are potentially other operations-oriented data-standards that may be more appropriate.
13+
14+
**Changes to the spec should be backwards-compatible**
15+
When adding features to the specification, we want to avoid making changes that will make existing feeds invalid. We don't want to create more work for existing feed publishers until they want to add capabilities to their feeds. Also, whenever possible, we want existing parsers to be able to continue to read the older parts of newer feeds.
16+
17+
**Speculative features are discouraged**
18+
Every new feature adds complexity to the creation and reading of feeds. Therefore, we want to take care to only add features that we know to be useful. Ideally, any proposal will have been tested by generating data for a real transit system that uses the new feature and writing software to read and display it. Note that the GTFS readily allows for extensions to the format through the addition of extra columns and files that are ignored by the official parsers & validators, so proposals can be easily prototyped and tested on existing feeds.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Introduction
2+
3+
The GTFS standard is not set in stone; it is an open specification developed and maintained by a community of transit agencies, developers, and other stakeholders who actively use it. As this community of GTFS data producers and consumers continues to evolve, proposals for extending the specification to support new capabilities are expected. To manage this process, a GTFS governance framework has been established.
4+
5+
GTFS governance refers to the framework that guides how the GTFS is maintained, updated, and developed. It encompasses the rules and processes that the community has established to guide decision-making, ensuring that GTFS remains an open and collaborative data standard.
6+
7+
The governance framework for GTFS is composed of the following elements:
8+
9+
<img class="center" width="560" height="100%" src="../../../../assets/governance-intro-pillars.png" alt="Main elements of GTFS Governance">
10+
11+
* Guiding principles
12+
* Roles and responsibilities
13+
* Change types
14+
* Change process
15+
16+
The GTFS Change Process is the procedure by which modifications or additions to GTFS are proposed, discussed, and approved by the community. This process ensures that the specification evolves in a stable, predictable and collaborative way.
17+
18+
## What is a specification change?
19+
20+
A change refers to any proposed modification to the GTFS documentation hosted in the [Google/transit repository](https://github.com/google/transit). Such changes may include adding new functionalities, updating existing files or fields, clarifying guidelines, or improving examples. **In essence, proposing a change means proposing to change the content of any file associated with the documentation, most notably the Reference.md file, to enhance or expand the specification.**
21+
22+
## How can I start participating?
23+
24+
Anyone can contribute to the development of GTFS. Typically, anyone with a suggestion or idea for improving the specification follows the steps outlined in the GTFS Change Process to refine and advance their proposal.
25+
26+
To navigate the process effectively, it's important to understand the different types of changes which determine the specific steps that need to be taken. Thus, it’s recommended that contributors familiarize themselves with these change categories, as well as the roles and responsibilities, to better understand their participation and involvement.
27+
28+
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Roles and Responsibilities
2+
3+
The community is composed of two main stakeholder categories: Contributors and the Maintainer.
4+
5+
<img class="center" width="800" height="100%" src="../../../../assets/governance-roles-1.png" alt="GTFS Governance Roles">
6+
7+
## Contributors
8+
9+
Anyone can become a Contributor by participating in discussions within the official GTFS repository, regardless of their technical skills or experience with GTFS.
10+
11+
**Responsibilities**
12+
13+
* Track development progress, participate in discussions, and review Issues and Pull Requests.
14+
* Express their views with respect and understanding, adhering to the GTFS Guiding Principles.
15+
16+
### Contributor Types
17+
18+
#### Producers
19+
20+
A GTFS Producer is an individual or organization responsible for generating GTFS data. This may include transit agencies, data vendors, aggregators, or planners.
21+
22+
* If an individual or organization assigns GTFS feed production to another party, only one of them can be recognized as the Producer.
23+
* To vote, Producers must reference the GTFS feed they represent to confirm their role as Producer.
24+
* In the case where a contributor is both a Consumer and Producer, they can only count as one, thus they must select a single role to represent during testing and voting.
25+
26+
#### Consumers
27+
28+
A GTFS Consumer is an individual or organization that ingests GTFS data, typically to provide and distribute rider-facing transit information through platforms such as software applications.
29+
30+
* In some cases, contributors may consume GTFS data for research, data analysis, operations, planning, etc. However, they are considered Consumers only if their work is publicly accessible or shared in a public-facing context.
31+
* To vote, consumers must reference the GTFS consuming application they represent to confirm their role as Consumer.
32+
* In the case where a contributor is both a Consumer and Producer, they can only count as one, thus they must select a single role to represent during testing and voting.
33+
34+
#### General Contributors
35+
36+
Individuals or organizations that do not qualify as either Producers or Consumers are considered as General Contributors or simply referred to as Contributors.
37+
38+
## Maintainer
39+
40+
The Maintainer supports and facilitates the specification change process, and their role as an impartial facilitator is to guide the community toward making consensus-driven decisions. MobilityData currently serves as the Maintainer of GTFS.
41+
42+
**Responsibilities**:
43+
44+
* Assist Advocates in facilitating discussions when needed.
45+
* Provide constructive feedback and recommendations to help refine proposals.
46+
* Check that the terminology used in specification proposals aligns with the one used in the official specification.
47+
* Ensure all GTFS Contributors follow the governance framework by monitoring and moderating community interactions.
48+
* Can act as the Advocate for proposals.
49+
* Assume the role of the Advocate if they become unresponsive at any point.
50+
* Cannot participate in any voting process.
51+
52+
## Special roles
53+
54+
General Contributors, Producers, Consumers and the Maintainer can take on special roles to support the development of specification changes. The Advocate and First Adopter roles are particularly critical for the Change Process to function effectively.
55+
56+
57+
<img class="center" width="100%" height="100%" src="../../../../assets/governance-roles-2.png" alt="GTFS Governance Special Roles">
58+
59+
### Advocate
60+
61+
An Advocate proposes a change to the official specification by publishing a Pull Request. Anyone can be an Advocate.
62+
63+
**Responsibilities**
64+
65+
* Follows the appropriate Change Process for the proposed change.
66+
* Request assistance from the Maintainer if necessary.
67+
68+
### First Adopter
69+
70+
First Adopters are Producers and Consumers who implement and test proposed changes as agreed upon in discussions.
71+
72+
**Responsibilities**:
73+
74+
* Communicate any modifications or challenges that arise during testing.
75+
* Publicly publish proof of implementation in the Pull Request.
76+
* A consumer acting as a first adopter must guarantee that the GTFS data is tested using a rider-facing application.
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# Change Process Overview
2+
3+
The specification change process guides how the community proposes, reviews, and adopts changes to the specification in the [GTFS Repository](https://github.com/google/transit/pulls).
4+
5+
The specification change process is categorized into 3 tracks according to the three change types: functional changes, non-functional changes, and documentation maintenance. The change process is separated into 2 stages:
6+
7+
* Issue Stage: New ideas are introduced, needs are identified, and the feasibility of changes is discussed.
8+
* Pull Request Stage: Ideas from the Issue Stage are developed, tested, and approved for adoption.
9+
10+
<img class="center" width="100%" height="100%" src="../../../../assets/governance-process-overview.png" alt="GTFS Governance Change Process overview">
11+
12+
The issue stage is the same for all 3 tracks. The Pull Request stage differs in each of the 3 tracks.
13+
14+
## Stage 1: Issue
15+
16+
The Issue Stage is meant for discussing new ideas, identifying needs, and proposing improvements to the specification. Issues help evaluate the necessity and support for a change, while organizing the resources required to proceed to the Pull Request Stage.
17+
18+
It’s recommended to start at the Issue stage to build consensus around new ideas. However, if the proposal’s scope is already well-defined, beginning directly at the Pull Request stage is appropriate.
19+
20+
## Stage 2: Pull Request
21+
22+
The Pull Request Stage is where ideas from the Issue Stage are developed and implemented into the specification. This stage is divided into 3 tracks depending on the change type.
23+
24+
The entire process happens within the [GitHub google/transit repository](https://github.com/google/transit/pulls) and ensures that all changes are thoroughly evaluated before being adopted.
25+
26+
### Track A: Functional Changes
27+
28+
<img class="center" width="100%" height="100%" src="../../../../assets/governance-process-functional.png" alt="GTFS Governance Change Process Track A">
29+
30+
This process guides how the community proposes, reviews, and adopts Functional changes to the specification in the [GTFS Repository](https://github.com/google/transit/pulls).
31+
32+
* A proposal is submitted by opening a Pull Request in the GTFS Repository.
33+
* The community engages in discussions to refine the proposal and reviews it before testing.
34+
* After a preliminary vote, First Adopters test the proposed changes.
35+
* The community votes to decide whether the changes should be officially adopted.
36+
* Finally, changes are implemented into the specification.
37+
38+
### Track B: Non-Functional Changes
39+
40+
<img class="center" width="100%" height="100%" src="../../../../assets/governance-process-non-functional.png" alt="GTFS Governance Change Process Track B">
41+
42+
This process guides how the community proposes, reviews, and adopts Non-Functional changes to the specification in the [GTFS Repository](https://github.com/google/transit/pulls).
43+
44+
* A proposal is submitted by opening a Pull Request in the GTFS Repository.
45+
* The community engages in discussions to refine the proposal.
46+
* The community votes to decide whether the changes should be officially adopted.
47+
* Finally, changes are implemented into the specification.
48+
49+
### Track C: Documentation Maintenance
50+
51+
<img class="center" width="100%" height="100%" src="../../../../assets/governance-process-documentation.png" alt="GTFS Governance Change Process Track C">
52+
53+
This process guides how the community proposes, reviews, and adopts changes to maintain the documentation in the [GTFS Repository](https://github.com/google/transit/pulls).
54+
55+
* A proposal is submitted by opening a Pull Request in the GTFS Repository.
56+
* The community engages in discussions to refine the proposal
57+
* Finally, changes are implemented into the specification.
58+
59+
### Pull Request Stage Steps
60+
61+
All of the steps in the Pull Request Stage are highlighted below. Consider that only Track A: Functional changes utilizes all the steps. Track B: Non-Functional changes and Track C: Documentation Maintenance utilize a shortened version of the process:
62+
63+
* Track A: Functional Changes utilizes steps:
64+
* 2.1 Pull Request Publication
65+
* 2.2 Pull Request Discussion
66+
* 2.3 Pull Request Review
67+
* 2.4 Vote to test
68+
* 2.5 Testing
69+
* 2.6 Vote to Adopt
70+
* 2.7 Adoption
71+
* Track B: Non-Functional Changes utilizes steps:
72+
* 2.1 Pull Request Publication
73+
* 2.2 Pull Request Discussion
74+
* 2.3 Pull Request Review
75+
* 2.6 Vote to Adopt
76+
* 2.7 Adoption
77+
* Track C: Documentation Maintenance utilizes steps:
78+
* 2.1 Pull Request Publication
79+
* 2.2 Pull Request Discussion
80+
* 2.3 Pull Request Review
81+
* 2.7 Adoption

0 commit comments

Comments
 (0)