-
Notifications
You must be signed in to change notification settings - Fork 291
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
Support for carsharing #255
Conversation
|
Hello! Looks like the GBFS should become the silver bullet for all mobility services regarding information. My concerns so far are of general nature. I think it's perfectly ok to think about opening up a standard in order to incorporate similar products, services or processes. So in the case of the GBFS it looks like the data needs for Apps informing about bike-sharing systems are very similar to scooter-sharing systems. So killing two birds with just one stone and having just one standard API sounds like a good option. And changing the name for the standard to e.g. MMFS (micro mobility feed specification) in order to reflect that change of focus should be taken for granted. But carsharing includes products with different processes and services. At least in Europe the long standing and mature type of carsharing is the station based carsharing. It's booking functionality where booking targets are reserved for a specific time frame in the future comes with completely different requirements regarding information. Not only the current availability status is of importance but rather the availability in the next weeks or months is important. I don't know what the situation looks like in Asia or America. So I wonder if it's wise to bloat the specification in order to just incorporate a specific type of carsharing: free floating carsharing. For carsharing software systems that would mean to support at least two different standards just for information - unless they only offer free floating carsharing. Having in mind that there are already standards available covering all types of carsharing like e.g. IXSI. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lots of great additions. I am reviewing as a provider of GBFS feeds for E-Scooters and station-based e-bikes.
I think some fields are too car-specific and can easily be remodelled, so they can be used by every GBFS feed, not just car-rental fields.
\- `seating_capacity` | Optional | Non-negative integer | The number of riders the vehicle can legally accommodate. | ||
\- `share_type` | Optional | Enum | The sharing model of the vehicle.<br /><br />Current valid values are:<br /><br /><ul><li>`roundtrip` _(vehicle must be returned to pickup location)_</li><li>`one-way` _(vehicle can be returned to any station in the service area)_</li><li>`free_floating` _(vehicle can be returned anywhere in the service area)_ | ||
\- `propulsion_type` | Yes | Enum | The primary propulsion type of the vehicle. <br /><br />Current valid values are:<br /><ul><li>`human` _(Pedal or foot propulsion)_</li><li>`electric_assist` _(Provides power only alongside human propulsion)_</li><li>`electric` _(Contains throttle mode with a battery-powered motor)_</li><li>`combustion` _(Contains throttle mode with a gas engine-powered motor)_</li></li>`combustion_diesel` _(Contains throttle mode with a diesel engine-powered motor)_</li><li>`hyrbid` _(Contains throttle mode with a mixed gas engine-powered and battery-powered motor)_</li><li>`hybrid_diesel` _(Contains throttle mode with a mixed diesel engine-powered and battery-powered motor)_<br /><br />This field was inspired by, but differs from the propulsion types field described in the [Open Mobility Foundation Mobility Data Specification](https://github.com/openmobilityfoundation/mobility-data-specification/blob/master/provider/README.md#propulsion-types). | ||
\- `min_fuel_level` | Optional | Enum | Minimum amount of fuel that must be left in the vehicle at the end of a trip.<br /><br />Current valid values are:<br /><br /><ul><li>`quarter_full`</li><li>`half_full`</li><li>`three_quarters_full`</li><li>`full`</li><li>`pickup_level` _(Same amount of fuel as at start of trip)_ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this might better be min_range_meters
. Together with max_range_meters
these values can be calculated by consumers, just like battery / tank percentage can be calculated with max_range_meters
and current_range_meters
.
gbfs.md
Outdated
\- `car_type` | Optional | Enum | The type of car. <br /><br />Current valid issues are: <br /><ul><li>`microcar` _(smallest size of car, engine smaller than 700cc, e.g Smart Fortwo)_ </li><li>`subcompact` _(sedan with interior volume index no larger than 99 cu ft, e.g. Kia Rio)_</li><li>`compact` _(sedan with interior volume index no larger than 109 cu ft, e.g. Hyundai Elantra)_ </li><li>`mid-size` _(sedan with interior volume index no larger than 119 u ft, e.g. Toyota Camry)_</li><li>`full_size` _(sedan with interior volume index larger than 120 cu ft, e.g. Tesla Model S)_</li><li>`station-wagon` _(large cargo area with rear hinged tailgate, e.g. Subaru Outback)_ </li><li>`suv` _(similar to station-wagon with a light truck frame, e.g. Honda Pilot)_ </li><li>`minivan` _(also known as multi-purpose vehicle or people mover, e.g. Dodge Grand Caravan)_ </li><li>`pickup truck` _(enclosed cab with open cargo area and tailgate, e.g. Chevrolet Ram)_</li><li>`other` | ||
\- `seating_capacity` | Optional | Non-negative integer | The number of riders the vehicle can legally accommodate. | ||
\- `share_type` | Optional | Enum | The sharing model of the vehicle.<br /><br />Current valid values are:<br /><br /><ul><li>`roundtrip` _(vehicle must be returned to pickup location)_</li><li>`one-way` _(vehicle can be returned to any station in the service area)_</li><li>`free_floating` _(vehicle can be returned anywhere in the service area)_ | ||
\- `propulsion_type` | Yes | Enum | The primary propulsion type of the vehicle. <br /><br />Current valid values are:<br /><ul><li>`human` _(Pedal or foot propulsion)_</li><li>`electric_assist` _(Provides power only alongside human propulsion)_</li><li>`electric` _(Contains throttle mode with a battery-powered motor)_</li><li>`combustion` _(Contains throttle mode with a gas engine-powered motor)_</li></li>`combustion_diesel` _(Contains throttle mode with a diesel engine-powered motor)_</li><li>`hyrbid` _(Contains throttle mode with a mixed gas engine-powered and battery-powered motor)_</li><li>`hybrid_diesel` _(Contains throttle mode with a mixed diesel engine-powered and battery-powered motor)_<br /><br />This field was inspired by, but differs from the propulsion types field described in the [Open Mobility Foundation Mobility Data Specification](https://github.com/openmobilityfoundation/mobility-data-specification/blob/master/provider/README.md#propulsion-types). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if we're too specific about cars here, again. To future-proof, I think it would be ideal to have just hybrid
and combustion
here and then create a fuel-type enum (diesel
, electric
, gasoline
, LPT
, E10
, ...)?
gbfs.md
Outdated
\- `max_range_meters` | Conditionally Required | Non-negative float | If the vehicle has a motor (as indicated by having a value other than `human` in the `propulsion_type` field), this field is required. This represents the furthest distance in meters that the vehicle can travel without recharging or refueling when it has the maximum amount of energy potential (for example, a full battery or full tank of gas). | ||
\- `name` | Optional | String | The public name of this vehicle type. | ||
\- `vehicle_accessories` | Optional | Array | Descriptions of accessories available in the vehicle. <br /><br />Current valid values are:<br /><br /><ul><li>`baby_seat`</li><li>`child_seat`</li><li>`winter_tires` | ||
\- `vehicle_desc` | Optional | String | Description of the vehicle that provides useful, quality information. Do not simply duplicate the information already specified. | ||
\- `vehicle_image` | Optional | URL | URL to image that would assist the user in identifying the vehicle (e.g. company logo, image of vehicle). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is useful, but should include some more restrictions like
- must be served over https
- CORS * header should be set
- etc
gbfs.md
Outdated
\- `max_range_meters` | Conditionally Required | Non-negative float | If the vehicle has a motor (as indicated by having a value other than `human` in the `propulsion_type` field), this field is required. This represents the furthest distance in meters that the vehicle can travel without recharging or refueling when it has the maximum amount of energy potential (for example, a full battery or full tank of gas). | ||
\- `name` | Optional | String | The public name of this vehicle type. | ||
\- `vehicle_accessories` | Optional | Array | Descriptions of accessories available in the vehicle. <br /><br />Current valid values are:<br /><br /><ul><li>`baby_seat`</li><li>`child_seat`</li><li>`winter_tires` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not to sure if this is too specific about cars again, I could image extending our own scooter and bike feeds with this field, specifying for example if the vehicle has a bell, how many brakes, bicycle basket, etc. Maybe this should just be part of the vehicle_desc
field instead?
gbfs.md
Outdated
@@ -273,9 +273,17 @@ Field Name | Required | Type | Defines | |||
`vehicle_types` | Yes | Array | Array that contains one object per vehicle type in the system as defined below. | |||
\- `vehicle_type_id` | Yes | ID | Unique identifier of a vehicle type. See [Field Types](#field-types) above for ID field requirements. | |||
\- `form_factor` | Yes | Enum | The vehicle's general form factor. <br /><br />Current valid values are:<br /><ul><li>`bicycle`</li><li>`car`</li><li>`moped`</li><li>`other`</li><li>`scooter`</li></ul> | |||
\- `propulsion_type` | Yes | Enum | The primary propulsion type of the vehicle. <br /><br />Current valid values are:<br /><ul><li>`human` _(Pedal or foot propulsion)_</li><li>`electric_assist` _(Provides power only alongside human propulsion)_</li><li>`electric` _(Contains throttle mode with a battery-powered motor)_</li><li>`combustion` _(Contains throttle mode with a gas engine-powered motor)_</li></ul> This field was inspired by, but differs from the propulsion types field described in the [Open Mobility Foundation Mobility Data Specification](https://github.com/openmobilityfoundation/mobility-data-specification/blob/master/provider/README.md#propulsion-types). | |||
\- `car_type` | Optional | Enum | The type of car. <br /><br />Current valid issues are: <br /><ul><li>`microcar` _(smallest size of car, engine smaller than 700cc, e.g Smart Fortwo)_ </li><li>`subcompact` _(sedan with interior volume index no larger than 99 cu ft, e.g. Kia Rio)_</li><li>`compact` _(sedan with interior volume index no larger than 109 cu ft, e.g. Hyundai Elantra)_ </li><li>`mid-size` _(sedan with interior volume index no larger than 119 u ft, e.g. Toyota Camry)_</li><li>`full_size` _(sedan with interior volume index larger than 120 cu ft, e.g. Tesla Model S)_</li><li>`station-wagon` _(large cargo area with rear hinged tailgate, e.g. Subaru Outback)_ </li><li>`suv` _(similar to station-wagon with a light truck frame, e.g. Honda Pilot)_ </li><li>`minivan` _(also known as multi-purpose vehicle or people mover, e.g. Dodge Grand Caravan)_ </li><li>`pickup truck` _(enclosed cab with open cargo area and tailgate, e.g. Chevrolet Ram)_</li><li>`other` | |||
\- `seating_capacity` | Optional | Non-negative integer | The number of riders the vehicle can legally accommodate. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be renamed to rider_capacity
, so other feed types (scooters / bikes / vespas) can take advantage of the field.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the suggestion! I made this change in 76097c!
gbfs.md
Outdated
@@ -273,9 +273,17 @@ Field Name | Required | Type | Defines | |||
`vehicle_types` | Yes | Array | Array that contains one object per vehicle type in the system as defined below. | |||
\- `vehicle_type_id` | Yes | ID | Unique identifier of a vehicle type. See [Field Types](#field-types) above for ID field requirements. | |||
\- `form_factor` | Yes | Enum | The vehicle's general form factor. <br /><br />Current valid values are:<br /><ul><li>`bicycle`</li><li>`car`</li><li>`moped`</li><li>`other`</li><li>`scooter`</li></ul> | |||
\- `propulsion_type` | Yes | Enum | The primary propulsion type of the vehicle. <br /><br />Current valid values are:<br /><ul><li>`human` _(Pedal or foot propulsion)_</li><li>`electric_assist` _(Provides power only alongside human propulsion)_</li><li>`electric` _(Contains throttle mode with a battery-powered motor)_</li><li>`combustion` _(Contains throttle mode with a gas engine-powered motor)_</li></ul> This field was inspired by, but differs from the propulsion types field described in the [Open Mobility Foundation Mobility Data Specification](https://github.com/openmobilityfoundation/mobility-data-specification/blob/master/provider/README.md#propulsion-types). | |||
\- `car_type` | Optional | Enum | The type of car. <br /><br />Current valid issues are: <br /><ul><li>`microcar` _(smallest size of car, engine smaller than 700cc, e.g Smart Fortwo)_ </li><li>`subcompact` _(sedan with interior volume index no larger than 99 cu ft, e.g. Kia Rio)_</li><li>`compact` _(sedan with interior volume index no larger than 109 cu ft, e.g. Hyundai Elantra)_ </li><li>`mid-size` _(sedan with interior volume index no larger than 119 u ft, e.g. Toyota Camry)_</li><li>`full_size` _(sedan with interior volume index larger than 120 cu ft, e.g. Tesla Model S)_</li><li>`station-wagon` _(large cargo area with rear hinged tailgate, e.g. Subaru Outback)_ </li><li>`suv` _(similar to station-wagon with a light truck frame, e.g. Honda Pilot)_ </li><li>`minivan` _(also known as multi-purpose vehicle or people mover, e.g. Dodge Grand Caravan)_ </li><li>`pickup truck` _(enclosed cab with open cargo area and tailgate, e.g. Chevrolet Ram)_</li><li>`other` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can this be merged with form_factor
? I feel setting form_factor: "car"
and car_type: "full_size"
a bit duplicated. The fields could be renamed to car_*
and then be used like this: form_factor: "car_full_size"
or form_factor: "car_suv"
.
Hi all! With the input and support of the French CarSharing Association (AAA). Some changes have been made to the PR, notably the added modification of free_bike_status.json in addition to the files mentioned above. Please let us now what you think! If you are a carsharing provider : is this proposal able to model your system? |
Comment de Vincent SZALENIEC, île-de-France Mobilités: Changer en obligatoire les champs suivants qui sont importants pour l’utilisateur · Seating capacity · Wheelchair accesibility (peut être même réglementaire de l’afficher, à vérifier) · Step free access · Service type · Charging capacity · Station_type · Current range · Vehicle plate |
From the carsharing point of view (as a producer), and based on comments on the Google Doc, I suggest : vehicle_type.json
station_information.json
free_bike_status.json
|
This discussion has been automatically marked as stale because it has not had recent activity. It will be closed in 60 days if no further activity occurs. Thank you for your contributions. |
To keep this discussion open, I'm adding a quick FYI comment. MDS is also looking at formalizing our Carshare Support into the next release after feedback from some cities who have been using MDS for carshare. The linked Issue by Ride Report is more about regulations, but some of the regulations connect to vehicle form factor, propulsion type, etc, so we'll be tracking to ensure alignment. I will also open a new issue on our end to align our |
@@ -273,9 +273,14 @@ Field Name | Required | Type | Defines | |||
`vehicle_types` | Yes | Array | Array that contains one object per vehicle type in the system as defined below. | |||
\- `vehicle_type_id` | Yes | ID | Unique identifier of a vehicle type. See [Field Types](#field-types) above for ID field requirements. | |||
\- `form_factor` | Yes | Enum | The vehicle's general form factor. <br /><br />Current valid values are:<br /><ul><li>`bicycle`</li><li>`car`</li><li>`moped`</li><li>`other`</li><li>`scooter`</li></ul> | |||
\- `propulsion_type` | Yes | Enum | The primary propulsion type of the vehicle. <br /><br />Current valid values are:<br /><ul><li>`human` _(Pedal or foot propulsion)_</li><li>`electric_assist` _(Provides power only alongside human propulsion)_</li><li>`electric` _(Contains throttle mode with a battery-powered motor)_</li><li>`combustion` _(Contains throttle mode with a gas engine-powered motor)_</li></ul> This field was inspired by, but differs from the propulsion types field described in the [Open Mobility Foundation Mobility Data Specification](https://github.com/openmobilityfoundation/mobility-data-specification/blob/master/provider/README.md#propulsion-types). | |||
\- `car_type` | Optional | Enum | The type of car. <br /><br />Current valid issues are: <br /><ul><li>`microcar` _(smallest size of car, engine smaller than 700cc, e.g Smart Fortwo)_ </li><li>`subcompact` _(sedan with interior volume index no larger than 99 cu ft, e.g. Kia Rio)_</li><li>`compact` _(sedan with interior volume index no larger than 109 cu ft, e.g. Hyundai Elantra)_ </li><li>`mid_size` _(sedan with interior volume index no larger than 119 u ft, e.g. Toyota Camry)_</li><li>`full_size` _(sedan with interior volume index larger than 120 cu ft, e.g. Tesla Model S)_</li><li>`station_wagon` _(large cargo area with rear hinged tailgate, e.g. Subaru Outback)_ </li><li>`suv` _(similar to station-wagon with a light truck frame, e.g. Honda Pilot)_ </li><li>`minivan` _(also known as multi-purpose vehicle or people mover, e.g. Dodge Grand Caravan)_ </li><li>`pickup_truck` _(enclosed cab with open cargo area and tailgate, e.g. Ford F-150)_</li><li>`other` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this say "Current valid values are:" instead of "Current valid issues are:"?
Hi everyone, transport.data.gouv and AAA have opened an issue with a more fleshed out proposal and a few alternate approaches in #338, I would suggest moving the conversation there since this PR is now out of date. |
Carsharing has become increasingly popular, especially in Europe. With the adoption of dockless bikes and scooters into GBFS, the specification is now able to handle free floating micro mobility services. The fields that exist for dockless micro mobility offer a solid foundation to model carsharing, however they lack the added specificity that a carsharing service would need. This PR aims to model carsharing services by extending
vehicle_types.json
,station_information.json
andsystem_pricing_plans.json
(in addition to already proposed extension ofsystem_pricing_plans.json
on PR #252. A google doc of the proposal can be found here.Some open questions we'd like feedback on (in addition to feedback on the proposal in general):
car_type
are representative of the car typology everywhere? If not, how can we make these more all-encompassingshare_type
be invehicle_types.json
orsystem_information.json
? The larger question here would be are there services that have more than just oneshare_type
?access_methods
field instation_information.json
that describes how to access a vehicle in instances where payment (i.e.rental_methods
) and access are completed separately?Please let us know what you think! We are very excited about the prospect of expanding to support carshare, however as you can see we still have a lot of questions and we would love to hear from you!