-
Notifications
You must be signed in to change notification settings - Fork 182
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Change stops.txt presence because of demand responsive services #472
Change stops.txt presence because of demand responsive services #472
Conversation
@LeoFrachet would you like to share the reason you are leaning toward making it optional? (issue#452) |
LGTM, I think stops.txt should be conditionally required for the reasons @tzujenchanmbd provided. |
I agree. It should be conditionally required. |
Is anymore discussion needed for this PR? Can a vote be called? |
This PR has been open for at least 7 calendar days. As per the Spec Amendment Process, I am opening a vote for this presence change. Voting ends on 2024-08-05 at 23:59:59 UTC. |
+1 Trillium Thanks @tzujenchanmbd! |
This is (and in essence #433) a breaking change, because we cannot determine what kind of feed cannot be processed. Having an empty stops.txt also does not make sense for a flexible feed. In this specific example #433 also does not introduce anything that suggest this would be a GTFS feed with 'flexible properties'. This pull request is therefore incomplete, my suggestion here is to include an explicit mechanism that announces which files should be expected based on a specific GTFS feature set, and only then speak of something being conditionally required. Because the current wording would basically allow to specify a locations.geojson as being a replacement of stops.txt, which is something we do not have agreement on. Similar to #393 -1 OpenGeo |
Thanks Stefan for your message. As always alas, answering in a structure way to a dissenting view takes more time than expressing the dissenting view. So here we go. About the definition of "breaking change" in the GTFS Guiding Principles, and therefore the question of backward compatibilityOne of the official Guiding Principles of GTFS extension is indeed that "Changes to the spec should be backwards-compatible", which is define as the following in
Therefore it distinguishes two different types of backward compatibility:
The balance here is between:
=> Therefore, I personally don't see backward compatibility issue here, and I don't see any "breaking change" as defined in the Guiding Principles. About "includ[ing] an explicit mechanism that announces which files should be expected"What would be the need (or the benefit) of such feature?
The main feature that it would add is the same than a checksum. It confirms that the data that you have is "valid", because you can test consistency. But checksum are usually provided when there is a risk of data loss or corruption in the pipeline, which is not the need here. Furthermore, some could argue it's creating redundancy of data, since having a GTFS-Flex feature already states that this is, well, a dataset containing GTFS-Flex features. And adding a flag can create inconsistency:
=> Therefore, from my perspective, this would complexify the specification and its validation without bringing any benefits. I personally do not see any need nor value for such new field. About the -1 votesI can only thank you Stefan for his long lasting implication the GTFS community, and all the feedback you have provided throughout the years. -1 votes are fundamental for the healthiness of the conversations around the community, and diversity of point of view is what allow GTFS to grow slowly and steadily. -1 votes, since they are veto-ing any proposal, are also requiring a lot of work from the community to go through each point put forth by the person who voted -1, and are extremely time consuming. It's a pleasure for me to go through each of the points that you have provided (1. concern about breaking changes, 2. the idea to put a flag), but it's a lengthy process for me to write, and an even more costly process for the others to read. Therefore, some possible suggestion of improvement for the future could be:
Finally, whoever you are, if you have read that whole message, please react with some 👀. That will let me know if writing those details answers are useful or if I should change their format. Thanks! 🙏 |
Please read carefully what the change is that is proposed: Stops where vehicles pick up or drop off riders. Also defines stations and station entrances. I can read above as: if as producer I would provide locations.geojson, and place my regular stops in locations.geojson they can suggest to have a valid feed. This breaks existing consumers/parsers, hence is a breaking change. This must be reworded better. "If you don't provide regular public transport stops, but only flexible transport stops, than stops.txt is not required, but locations.json is." p.s. someone broke gtfs.org. |
I understand how someone with less familiarity with the spec could interpret the requirement the way @skinkie describes when they first read it. But for the sake of the exercise, let's say someone does and thinks to use locations.geojson to represent their stops. Their next step then would be to review the section on locations.geojson. Well, fortunately, the first sentence of that section says "Defines zones where riders can request either pickup or drop off by on-demand services." That should be enough to dissuade someone from using that file in any way other than for zones from the start. :) That said, I am still open to changing the wording, but we should to be careful not to word it in a way that prevents easy validation: Required if demand-responsive zones, which are defined in locations.geojson, do not exist. |
@skinkie I agree that when producers see the description of
In the current spec, stops can also be used by demand responsive services, for instance, by grouping them using location groups. Depending on the actual use case, demand responsive services might only include location groups without areas defined by locations.geojson. This is why the proposed change uses the condition "if...do not exist." Would @westontrillium 's suggestion here change your vote? |
If we can improve the wording my vote change absolutely. I only want to make sure more clarity is added. But I also think that wording is still written down in a suboptimal way, I hope native speakers can improve upon. Is there a reason we don't write: Optional if and only if demand-responsive zones exists and are defined in locations.geojson. |
I almost always prefer a positive statement over a negative one for clarity's sake but had assumed the use of "required" in the description was necessary. If that is not the case, then I would support the following (tweaked @skinkie's sentence just a little): Optional if demand-responsive zones are defined in locations.geojson. Required otherwise [do we need this too?]. |
I think conveying the correct message is more important than stylistic consistency (e.g. "required if..."). Revised wording based on the above suggestion - 85f6d08 Thanks @skinkie @westontrillium for the suggested wording! |
+1 OpenGeo |
+1 OpenTripPlanner |
+1 Transit |
+1 Spare |
The vote passed on 2024-08-05 at 23:59:59 UTC. 4(+1) votes in favour and no votes against. Votes came from: Thank you to everyone who participated! |
This change has been incorporated into the Canonical GTFS Validator V6.0.0. Please refer to the release page: https://github.com/MobilityData/gtfs-validator/releases/tag/v6.0.0. |
Context
Before the adoption of GTFS-Flex in PR#433,
stops.txt
was the sole file in GTFS defining the geographic locations (geometry: points) where riders board and alight. However, after its adoption, producers can define riders boarding and alighting geographic areas throughlocations.geojson
(geometry: polygons) as well. In theory, an agency may exclusively offer zone-based demand-responsive services, in which case the feed may only containlocations.geojson
withoutstops.txt
.Proposed change in this PR
Therefore, suggest changing the presence of
stops.txt
fromRequired
toConditionally required
(required iflocations.geojson
doesn't exist, optional otherwise).GTFS validator behavior
Once the spec is modified, the GTFS validator can make corresponding adjustments, such as:
stops.txt
andlocations.geojson
exist - no errorstops.txt
orlocations.geojson
exists - no errorstops.txt
norlocations.geojson
exists - error (missing required file stops.txt)Conditionally required vs Optional
If both
stops.txt
andlocations.geojson
are optional, the GTFS validator won't show an error when neitherstops.txt
norlocations.geojson
exists. If there is no geographic information defining where riders boarding and alighting in the feed, the feed seems invalid to me.Since
stops.txt
is one of the fundamental file in GTFS, we plan to open a vote on this change.cc: @westontrillium @leonardehrenfried @tsherlockcraig @gcamp