-
Notifications
You must be signed in to change notification settings - Fork 293
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
Number of bikes and docks available during non service hours or out of service stations #94
Comments
During non-service hours num_bikes_available would be "0". This probably wouldn't be true of num_docks_available since most systems allow returns outside of business hours. |
Thanks for your response Mitch. Doo you think that the "num_bikes_available" on the feed should change when there is a "is_renting" flag?, if a developer of an end user tool based on the GBFS decides that it should work the way you propose it still possible by using this flag. On the other hand, if there is a purpose of analysis of the distribution of the bikes, having the numbers of bikes at the stations at all time is something indispensable, in fact is a number that tends to be more accurate when the system is not in service for the end users. The value always available can reflect the work of the operators at night, either for the community interested on bikeshare systems or for the regulators of the service like in some cases the goverment. |
IMHO
While being able to analyze service would be nice, IMHO this needs to be in separate fields dedicated to this concept, if they should be in GBFS at all. |
Doesn't the consumer always have to check is_renting - otherwise, what's the point of it? The explanation of that field is:
"is the station currently renting bikes (even if the station is empty, if it is set to allow rentals this value should be 1)"
The implication of the example being that if the station is allowing rentals, it's true, even if it's empty. It seems like the opposite would also be true - if this field is 0 then it doesn't matter how many bikes are available - the station should be marked as not allowing rentals.
It seems like num_bikes_available might be misnamed a little, but my impression was always that this number was "how many physical non-broken bikes are there at the station that I could take out, *if the station is allowing rentals*"
|
I always interpreted It is different from the case of having 0 bikes alone, as that might be a transient value because rebalancing hasn't taken place yet, or a bike is about to be returned by a user. For me, if As @barbeau mentions, GBFS is intended for bikeshare users, not operators. |
In my opinion, Moreover, a user may want to know how many bikes there are at a station at any moment in time. For example, if the system opens at 6am, the user may want to know how many bikes there are at 5:30am before starting his commute. This is not possible if I believe it would be more useful for the user to have something like this: During working hours:
During non-working hours:
@dsgermain, you mention that
By overlapping the meaning of two different fields in the data feed, the specification becomes less flexible and more complicated because implementations need to ensure that this condition is met. I believe each of the fields in the GBFS data feed should be completely independent from each other. This way, it is more flexible as it can cover more situations and edge cases. In summary, as a user, there are several questions I need to have answers to from the feed:
|
Yes, this is what I was trying to communicate. My point was that we shouldn't overload the |
@albloptor If you want to change the spec, I have no trouble with that, but current systems are implemented with this meaning in mind and this is a breaking change. |
@dsgermain I completely understand that there are clients implementing the spec in that way and we don't want to break them. If the spec cannot be changed because of this reason, then what if two new fields were added to the feed?
This way we don't break anyone and we gain the extra functionality. |
@dsgermain, about the systems that are using the GBFS I´m not sure if this porposal to standarize the way these values perform will be a breaking change. There are 38 systems of the 78 that are working with Bcycle and as far as I see Bcycle is reporting the number of bikes that by itself are available for rent (because are not broken or blocked) at stations that are not allowing rents (is_renting: 0), even citibike in NY is showing the number of bikes available when a station is not renting. |
@Noe-Santana Would you or others be willing to do a survey of all systems in https://github.com/NABSA/gbfs/blob/master/systems.csv to see how many follow the rule |
I would also like to know how many GBFS producers implement Regardless of what we decide, the spec needs to be clarified, since I don't think either scenario is obvious (I had always intended |
@albloptor I like the idea of adding
|
Hi guys, I've created a pull request with the changes proposed in the conversation above. Maybe we can further discuss the changes there: #95 |
@Noe-Santana - you opened this because you said there was a lack of clarity around how 'is_renting' and 'num_bikes_available' were defined and not all systems were using them in the same way. Adding two additional fields may enable you to do your analysis but it makes the defining the now 6 fields in question that much more of a challenge. If we're adding complexity through additional fields, we've got to refine the definitions in order to solve the lack of clarity problem. As it's currently written in #95 'num_bikes_available' and 'num_usable_bikes' are indistinguishable if you haven't read this thread. It seems to me that this whole thing could be handled by changing the definition of 'num_bikes_available' Supposing we added the two additional fields, here are a couple of questions - It's common to have a station out of service due to technical issues, road construction or other reasons. Often there are bikes in the station when this happens. When the station will return to service may be unknown but it could be days or weeks. Currently we would set 'is_renting' = 0 and 'num_bikes_available' = 0. How would the proposed fields work in this scenario? My system operates seasonally from April to November. During the period of November to April when we're not in service, how would the proposed fields work in relation to what's contained in system_calendar.json? |
@mplsmitch I completely agree with you that these two new fields I propose are unnecessary if My opinion, for the two scenarios you propose, is that I am also interested to see what @Noe-Santana 's opinion is. |
Hello everyone. sorry for my delayed response. I would suggest not to add more fields, as Mitch rightly propose, it can be solved by taking advantage of the present fields and giving them extended functionality trough a precise definition. "num_bikes_available" = Number of functional bikes at the station, to know if these can be used, refer to "is_renting" value. |
True, but again, this is breaking functionality for anyone who has built a GBFS consumer that assumes |
@barbeau, you´re also right, it will represent a need of adjustment for the current developments that use the GBFS, but it will happen in any of the cases, the purpose is to guide these efforts to a standar that represents more versatility and can meet the needs of more approaches. 38 systems are working with BCYCLE technologies, we found that 14 of these systems are mantaining the num of bikes and docks even when the renting and returning flags are "0", we are not sure about the other 24 but we can asume that are following the same logic. 11 systems are working with the PBSC technology, at the non service hours the "num_bikes_available" on all the stations changes to "0" but when a station is setted as "not in service" the "is_renting" flag changes to "0" while the field "numb_bikes_available" mantain with the amount of functional bikes at the station. Other systems that we found that are mantaining the values of bikes and docks available are Citibike NewYork, Divvybikes Chicago and Socialbicycles Phoenix. Right away, developments like the OpenTripPlanner (OTP) project should consult the "is_renting" and "is_returning" flags for these 28 to 52 systems, otherwise it will not recognize that a station is not able to give bikes even when the num_bikes_available is diferent to "0". |
@Noe-Santana Thanks for putting together some numbers! You're right, OTP will currently incorrectly show bikes available on those systems when there aren't any. So this is a bit of a mess, then. Are other vendors monitoring this issue that aren't reflected in the above numbers? If so, could you say how you use the |
I'd like to make an attempt at a pragmatic proposal to moving forward. It seems like there are two issues at play here:
On the matter of issue 1, it seems that since Which then brings us to issue 2, how to actually move forward. My proposal here would be to give consumers some period of time (perhaps 1 month) to first implement the consumption of I know this is not the most graceful or ideal situation, but I'm hoping we can collectively come up with a way forward that keeps the spec as concise as possible, while solving this particular problem. What do you all think? |
I totally agree with @jcn. I believe that we should adjust the definition of the existing fields and communicate the change to the clients implementing it, allowing them a reasonable amount of time as a transition. We should probably refer to this issue for reference. |
@jcn Generally I think that's a reasonable plan, although I'm concerned about producers actually rolling out timely changes to ensure conformity. From an outsiders perspective, it doesn't seem like a large percentage of producers are actually engaged here on Github. How would we:
|
If we all agree on the change and that we don't mind some consumers breaking for a while (as they won't be notified because we don't know who they all are), I have not problem implementing this in an upcoming version. |
I've been thinking more on this, and the proposed v1.1 in #92, in context of knowing which producers have updated their systems. I think GBFS would benefit from explicit This would allow consumers to easily know which systems have been updated and which have not (assuming we keep good documentation of version history). We did something similar with GTFS-realtime v2.0 - the semantics of required and optional fields changed, so producers can bump Any thoughts on this? |
@barbeau I would propose that this discussion about versioning be continued in #15 (a very old issue!) and that we use this thread to finalize the mechanics of how this change will be made. Unfortunately, I don't even think that versioning will help this particular issue since different producers already implement the fields differently, thus the version wouldn't actually indicate any consistency anyway. |
I disagree - the presence of the version (assuming it's introduced with this change) would indicate consistency among the feeds that have the version number. It means the producer has adopted the new consistent field definition. Otherwise, without some analysis of the data coming out of each feed (i.e., does the feed zero out availability when not renting bikes? And does the
That's fine, although I think if we adopt this without some method to track adoption we'll be left wondering how many producers have actually implemented it. |
Hey all! Now that we're actually moving toward a versioning scheme and then likely making use of it right away with #147, I'd like to suggest we bundle up a few other small breaking changes, including this one. Is the general consensus that @Noe-Santana's solution is the way we want to go here? |
@heidiguenin Yes, I'm good with the solution proposed by @Noe-Santana in this comment: We just need to be sure that the text clearly explains the dependency of these counts on |
In my mind, this is the kind of "bug fix" to the spec that should be codified in a minor version change. To the point made in #94 (comment) (which I agree with), the presence of the minor version in a published feed would mean that the clarified spec is being conformed to. And just to be clear, the clarification is that the |
👍 |
Breaking change: will be part of v2.0-RC * Update gbfs.md Addressing issue #94 * Update gbfs.md * num_docks_available update Changed to conditionally required to reflect feedback about virtual stations * formatting fix - field names in fixed width text * station_status.json: Description add back in the description that was removed * formatting - spacing -- free_bike_status table Eliminate new spaces that were showing up in the diff Co-authored-by: Aaron Antrim <aaron@mobilitydata.org>
Hello everyone.
There are a some systems that doesn't work the whole day, in these cases, What should be the behaviour of the num_bikes_available during the non service hours?
There are two values that indicate if a station is renting or receiving bikes, additionally, The number of bikes and docks should change to "0" on each case?, I can see that not all the systems are managing these values the same way so I would like to find a standarization.
In our experience, mantain the value of bikes and docks available at the station as an independent value from the renting and returning flags can be much more valuable for analisys and developing purposes, also, as an end user is very functional to know where the bikes are, it allows the user to plan where to go and take a bike at the very first hours of service, ultimately, there are a lot of options like color, size, shape, symbols, legends, etc. to represent the functional status and the occupation of a station at the same time.
The text was updated successfully, but these errors were encountered: