-
Notifications
You must be signed in to change notification settings - Fork 187
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
Proposal: Add MODIFIED and pickup and drop-off types to GTFS-RT; experimentally deprecate SKIPPED #265
Proposal: Add MODIFIED and pickup and drop-off types to GTFS-RT; experimentally deprecate SKIPPED #265
Conversation
This is a disaster waiting to happen. Either we allow for the exchange of fully replaceable routes including the network, or we disallow network changes, but this balance on what sort of could work for some "big players" does not make any sense. |
Also note that the proposed |
@skinkie - Could you elaborate a bit more in terms of the risks you're seeing with a piecemeal approach? While I definitely agree that it would be great to implement more of the proposal in GTFS-ServiceChanges V3.1 to support complex route changes, I believe that there's still value in tackling it piece-by-piece (like in the scenario described above). This PR follows the precedent set by #219 and #221. |
@barbeau - Good question! Since one is describing the vehicle in real-time vs. the other describing a trips' relationship with upcoming stops, I view them as distinct but related. I could see value in terms of adding an inline clarification about how they can be used together, such as:
There's also the issue of determining how many stops to set On a practical level, I also wonder how often |
Because this is a moving target from a software architecture perspective. If the target is replacing full trips: standardize that. It is impossible to keep up to date with partial implementations, unless you you already support all that, and are waiting for a full implementation that is being stopped by incremental implementations.
Does not mean that the precedent has resulted in global support for it. |
@skinkie Thanks for your thoughtful response. At this time, our target is not replacing full trips or being able to create arbitrary ad-hoc trips on the fly (DUPLICATED, as previously adopted, is in scope). As noted in the original description, our intent at this time is to support on-the-fly changes to partially cancel service, such as to have a vehicle go drop-off only. The spec change process explicitly discourages "speculative" features and this particular change, as noted, is based on real-world customer needs.
It may be worth keeping in mind the full scope of GTFS-ServiceChanges V3.1 as support is developed for parts of it. I understand the frustration of a moving target and I encourage you (and others) to propose more holistic changes to the spec, if those are in-fact being implemented. |
-1 (OpenGeo) |
I've called for a vote for adoption of this experimental future on the Google Group (https://groups.google.com/g/gtfs-realtime/c/YWY9IoMQF7g). Please vote with a +1 (in favor) or -1 (against) before Thursday, April 8th at 23:59:59 UTC. Thanks! |
Since we didn't get much feedback last time, I've called for a revote for adoption of this experimental future on the Google Group (https://groups.google.com/g/gtfs-realtime/c/YWY9IoMQF7g?pli=1). Please vote with a +1 (in favor) or -1 (against) before Wednesday, Aug 25th at 23:59:59 UTC. Thanks! |
I think the version problem (can you really have experimental versions?) at the very least needs to be addressed before an other vote. I would personally not increase the version considering it has a bigger meaning and the proposal is only experimental. You can still maintain two versions side by side with other means like different URLs. |
I agree with @gcamp. Experimental versions isn't something in the current CHANGES doc and specifying how that works is probably it's own proposal.
I think this could be handled via a migration guide like we did for DUPLICATED? These conditions should be clarified somewhere so it's clear to producers and consumers how the data will be interpreted. |
This reverts commit 898c1a3.
Co-authored-by: Paul Swartz <[email protected]>
We found a Contributor License Agreement for you (the sender of this pull request), but were unable to find agreements for all the commit author(s) or Co-authors. If you authored these, maybe you used a different email address in the git commits than was used to sign the CLA (login here to double check)? If these were authored by someone else, then they will need to sign a CLA as well, and confirm that they're okay with these being contributed to Google. ℹ️ Googlers: Go here for more info. |
+1 @mbta |
@googlebot I fixed it. |
I would still prefer to keep SKIPPED (implying both drop-off is false) for the situation that the stop is not passed through. |
@skinkie Doesn't this approach have backwards compatibility issues though? If producers are currently using |
I agree with this - we should probably add an explicit note on that in the .proto comments on SKIPPED. There shouldn't be an issue with this in terms of protobuf compatibility of existing producers/consumers.
So I know removing an enum value from the .proto will break new consumers of existing feeds that are producing the value (this happened with REPLACEMENT in the past). However, I believe using Unfortunately the exact mechanics and backwards compatibility issues with |
Functionally the effect for the traveler is the same. The only difference may be that the vehicle location may follow the expected path, while the Skipped-message suggest it may follow unexpected path. |
Definitely have a concern as a producer (via Trapeze/Swiftly/others) over That being said, the granularity of explaining what's happening with service in travel can be powerful and important. But it's a bit unclear how this would get reflected for riders IMO. One example - train service that will skip stops to make up time due to would go from Another example that could make this a little more difficult. Consider bus service with stops potentially every 1-2 minutes (inefficient, but humor me). How should this change be reflected by producers when vehicles go in and out of a Thus a question to the group - how should this info by communicated to riders and how should feed consumers utilize it? |
@skinkie - I respectfully disagree about this and share @barbeau's concern around backwards compatibility. Upon a re-read of the documentation for If you think it's a valuable distinction between vehicles that pass through a stop vs. ones that do not, I would suggest that the best way to do that is introducing another enum (such as |
@barbeau, @SteveGladstone - Regarding |
@SteveGladstone - We totally share the same sentiment and, as a feed producer, intend to allow for agencies to decide if and when they'd like to exercise the migration notification process documented in Regarding With respect to how this appears to the passenger, I'd love to get any insights from @gcamp with how
Our intended use for these new properties is for an agency-triggered intervention to help restore service, such as when there is bunching, rather than one that's automated based on any signals from a bus (so very different than setting |
@ericouyang Thanks for addressing our comments! The “experimentally deprecated” language added in a few places looks nice. We still have a concern about marking
This is in conflict with the "experimentally deprecated" language that says, for example, "In this interim period, users may continue to use this value for compatability." Our preference is to not mark the Also, we share the concern noted by others of changing |
In my mind, since the spec defines
I absolutely agree - here's another scenario. Having driven in a college town, there were many nights where something... stinky... happened on a bus, and agency policy stated that vehicles must switch their destination sign to "Drop Off Only" until empty, when they could then return to the bus yard and be cleaned by someone with the appropriate equipment. This is yet another distinct scenario, completely independent of a vehicle's occupancy status, where an agency might want to define (individual and downstream) stop pickup and drop-off behavior, without necessarily purging all passenger-facing real time data for a vehicle (for example, in the above scenario, persons with disabilities using applications that utilize agency real-time feeds that are still sitting on the bus - the data can still assist them in when to request their drop-off). The ability to do this, and do it in a way that mirrors the (already understood) static pickup and drop-off types is really exciting. If experimental deprecation is a valid way to achieve this for the spec, without forcing (or even encouraging) agencies to stop using |
I concur. Having the flexibility to handle these scenarios would be awesome. I think the sticky point right now is Also curious if @gcamp can provide any insight on how Transit might reflect this. |
The voting period for this proposal has ended, with one +1 and one -1 in this most recent iteration. So far, a total of 3 members have voted a +1 for some version of this proposal and 1 member has voted a -1. As a next step, I'll continue to make further refinements to this proposal and, once it appears that there's some consensus, call for another vote. @sam-hickey-ibigroup - That perspective totally makes sense! I've gone ahead and removed the formal deprecation tag and left the "experimentally deprecated" language for a future vote.
To clarify, while there was prior discussion around changing the definition, this proposal does not propose any changes to the definitions of any existing enums. As previously shared, if such a notion were helpful (I do not personally think so), I think that should be a completely separate proposal to, say, add a new enum with a new meaning. From the discussion so far, it is only @skinkie who is seeking such a change.
@colemccarren - I like this idea a lot and will add some language reflecting this guidance! |
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Keep open. |
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
This pull request has been closed due to inactivity. Pull requests can always be reopened after they have been closed. See the Specification Amendment Process. |
Background
To remedy operational challenges, transit providers dynamically change the level of service provided by a vehicle for a given trip. For example, for a vehicle that is running late, a dispatcher may instruct a vehicle to go to "Drop Off Only" to regain time when running late or address a gap in service.
Today, in GTFS-RT, there is only the ability to indicate a stop as entirely SKIPPED. However, there is not a way to indicate that a stop is going to be partially served, such as stopping there upon request to let a passenger disembark and not picking up additional passengers in the scenario above.
Proposal
This proposal adds support for a more detailed relationship of a vehicle to a scheduled stop beyond skipping it completely and brings GTFS-realtime into consistency with GTFS-static's stop_times.txt. It builds on a recent addition (#219) to support real-time changes using
StopTimeProperties
and addspickup_type
anddrop_off_type
as experimental fields. GTFS static already supports specifyingpickup_type
anddrop_off_type
as a part of stop_times.txt. Those existing definitions are leveraged and referenced as a part of this change.To avoid an ambiguous state where the currently supported
SKIPPED
scenario could also be alternatively represented asdrop_off_type=NO_DROP_OFF
andpickup_type=NO_PICKUP
usingStopTimeProperties
, this proposal experimentally deprecatesSKIPPED
in favor of that more explicit representation. WhenStopTimeProperties
are modified in a way that impacts the rider experience, now a new enumeration,MODIFIED
, will be used instead.Both the gtfs-realtime.proto file and documentation have been updated accordingly. Additionally, like for
DUPLICATED
, a migration guide has been provided to detail a plan for a smooth transition for existing producers and consumers.This pull request is a subset of and based on the GTFS-ServiceChanges v3.1 spec:
https://bit.ly/gtfs-service-changes-v3_1
This proposal builds on prior art from @lionel-nj and @barbeau (see MobilityData#47)