Skip to content
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

Add vehicle type definitions #136

Merged
merged 37 commits into from
May 22, 2020
Merged

Add vehicle type definitions #136

merged 37 commits into from
May 22, 2020

Conversation

evansiroky
Copy link
Contributor

@evansiroky evansiroky commented Feb 19, 2019

Hello there, I am Evan Siroky and I have been working on improving OpenTripPlanner to be able to plan multi-modal trips with one-way car rentals (Car2Go and ReachNow). In this process, I copy-pasted a lot of the code for the bikeshare stuff and realized that it would be great if all this common code could be generalized to accomodate any kind of vehicle rental system.

This spec is a great standard in use by many bikeshare systems, but it can kind of be generalized to other modes. This repository already has a ticket about adding scooters (#105) and there's also some discussion about bike types (#81). It also looks like there are 2 other places where people have began work on proposing a change to add e-bikes (see @sven4all's changes here and @dsgermain's changes here).

I've done a lot of thinking about this and am going to go ahead and throw this PR out there with proposed changes that will hopefully allow this specification to accomodate basically any vehicle that someone could rent. My approach to adding these fields comes from a trip planning software development perspective, so some of the highly technical bits of information like the cruising speed, weight, power output and energy potential are things that I'm asking for in order to be able to calculate how far a vehicle could travel before running out of juice and how well the vehicle could climb inclined roads.

High level changes

  • Renames GBFS (General Bikeshare Feed Specification) to GVFS (General Vehicleshare Feed Specification) to reflect the specification's possibility of defining a vehicle share system with any type of vehicle. 🤣 Not sure how far I'm going to get with this suggestion, so I'm totally fine with changing things back to GBFS.
  • Renames file gbfs.json to gvfs.json. 🤣
  • Renames file free_bike_status.json to free_vehicle_status.json

Changes to system_information.json

Adds a required field vehicle_types. This value of this key would contain an array of objects with the following keys: vehicle_type_id, name, description, vehicle_url, image_small, image_large, propulsion_type, cruising_speed, range_with_full_energy_potential, vehicle_weight, power_output, passenger_capacity and enclosed.

Changes to station_information.json

Adds a required field allowed_vehicle_types which would contain a list of strings that are vehicle_type_ids that are allowed to use the station.

Changes to station_status.json

  • Renames field num_bikes_available to num_vehicles_available
  • Renames field num_bikes_disabled to num_vehicles_disabled
  • The fields num_vehicles_available, num_vehicles_disabled, num_docks_available and num_docks_disabled are all changed to have an object with a key representing the vehicle_type_id and a numeric value indicating the number for that vehicle type.

Changes to free_bike_status.json

  • File is renamed to free_vehicle_status.json
  • root key name bikes is renamed to vehicles
  • subfield bike_id is renamed to vehicle_id
  • fields vehicle_type_id and range_with_current_energy_potential are added

Changes to system_alerts.json

  • field vehicle_type_ids is added

2019-09-19 Update

After discussions occurring as a part of ongoing work related to #137, I am significantly revising and simplifying this PR in hopes of coming to a consensus on a minimum viable product. Furthermore, I have reimplemented this PR in a non-breaking way. See below for a list of proposed changes:

Addition of vehicle_types.json file

This optional file can be used to desribe different vehicle types that an operator is renting out. The current fields allowed are vehicle_type_id, form_factor, propulsion_types, description and max_range.

Changes to station_information.json file

The field vehicle_type_capacity can now be added to specify capacity by vehicle type at a station. A note of clarification has been added to the existing capacity field in such a way that existing feeds won't break.

Changes to station_status.json file

The fields vehicle_docks_available, vehicle_docks_disabled, vehicles_available and vehicles_disabled have all been added. Clarification notes and changes in requirements have been added to the num_bikes_available and num_docks_available in such a way that existing feeds won't break with these changes.

Changes to free_bike_status.json file

The fields vehicle_type_id and range have been added in such a way that existing feeds won't break.

2019-10-07 Update

After discussions occurring at the GBFS developer workshop, I have made two small changes that should now make this PR non-breaking. See below for a list of all proposed changes for this PR:

Addition of vehicle_types.json file

This optional file can be used to describe different vehicle types that an operator has available for rent. The current fields allowed are vehicle_type_id, form_factor, propulsion_types, max_range_meters and name.

Changes to station_information.json file

The field vehicle_type_capacity can now be added to specify capacity by vehicle type at a station. A note of clarification has been added to the existing capacity field in such a way that existing feeds won't break.

Changes to station_status.json file

The fields vehicle_docks_available, vehicle_docks_disabled, vehicles_available and vehicles_disabled have all been added. Clarification notes and changes in requirements have been added to the num_bikes_available and num_docks_available in such a way that existing feeds won't break with these changes.

Changes to free_bike_status.json file

The fields vehicle_type_id, last_reported and current_range_meters have been added in such a way that existing feeds won't break.

2019-11-23 Update

See below for a list of all proposed changes for this PR:

Addition of vehicle_types.json file

This optional file can be used to describe different vehicle types that an operator has available for rent. The current fields allowed are vehicle_type_id, form_factor, propulsion_type, is_carryable, max_range_meters and name.

Changes to station_information.json file

The field vehicle_type_capacity can now be added to specify capacity by vehicle type at a station. A note of clarification has been added to the existing capacity field in such a way that existing feeds won't break.

Changes to station_status.json file

The fields vehicle_docks_available, vehicle_docks_disabled and vehicles have all been added. Clarification notes and changes in requirements have been added to the num_bikes_available, num_bikes_disabled, num_docks_available and last_reported in such a way that existing feeds won't break with these changes.

Changes to free_bike_status.json file

The fields vehicle_type_id, last_reported and current_range_meters have been added in such a way that existing feeds won't break.

@sven4all
Copy link
Contributor

Interesting proposal, maybe it's time for a bigger update for GBFS/GVFS to include all the developments that have been going on over the past 4 years (The proposal that you are doing now is breaking existing api's, that requires a 2.0 update).

This is a wish list I created last year https://github.com/openbikeshare/gbfsplus. It would be nice if as much business rules as possible can be generalised in a standard. That's the only way accurate planning algorithms can be build.

Copy link
Contributor

@sven4all sven4all left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Already some comments.

gvfs.md Outdated
"vehicle_weight": 15.88,
"power_output": 350,
"passenger_capacity": 1,
"enclosed": 0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add a field for if and what kind of driver license is needed according to local rules.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there some data standard that we can reference to add this data?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Within the European Union we do have a standardised classification https://en.wikipedia.org/wiki/European_driving_licence, I don't know if there is any data standard for this.

gvfs.md Outdated
"short_name": "ib",
"url": "https://www.inboardtechnology.com/",
"timezone": "America/Los_Angeles",
"vehicle_types": [
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason you prefer this information within system.json?

A separate file for vehicle_types is more in the spirit of the standard until now in my opinion. But it doesn't really matter to me.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I put it in here because I thought it made sense for the vehicles to be associated with a certain system or operator.

gvfs.md Outdated
"vehicle_url": "https://www.inboardtechnology.com/products/m1-electric-skateboard",
"image_small": "http://cdn.shopify.com/s/files/1/1136/4406/files/Skateboard_x150.png?11016692238788873189",
"image_large": "http://cdn.shopify.com/s/files/1/1136/4406/products/m1_pdp_fullBleed_6_9e6614b5-c3e4-4dd1-b18b-fd51451d0c17_1600x.jpg?v=1535665708",
"propulsion_type": "ELECTRIC",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe add a field voor vehicle_type as well?

bike/scooter/car/motor

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I intentionally avoided this kind of field because there are already so many kinds of micromobility vehicles being made that may not be classifiable in a commonly understood way. In the example json in this PR, I included an electric skateboard which already falls outside the proposed types you have listed. This kind of classification of the vehicle type I believe is best left for interpretation by the gvfs-consuming application. In OpenTripPlanner I forsee adding updaters that would parse each vehicle type and assign it a various operational characteristics that would determine how the vehicle would be able to travel through the street network in the routing algorithms.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it doesn't hurt to add a vehicle_type for all mainstream modes. If new mainstream modes appear they can be added as well to the specification without breaking previous api's. We could also specify 'other' for all other modes that should be derived.

@yocontra
Copy link
Contributor

yocontra commented Feb 19, 2019

IMO with scooters entering the mix this is a solid move to start thinking about this. We work with all of the GBFS feeds daily and noticed everyone is starting to deviate from the spec to accommodate dockless bikes, custom fields for scooter battery levels, vehicle type fields all named differently, etc. - and once everyone starts to deviate from the spec for their own use cases the spec doesn't mean much anymore.

To pull off a big change like this I think it needs to have an accompanying JSONSchema + a CLI or web tool to validate a URL against the spec. This will make it much easier for people to migrate to this next iteration. I can assist anywhere needed for this, so let me know if you need a hand with it.

As one point of feedback though - I think it would be nice to use objects instead of arrays of objects with key/value pairs (vehicle_types). Much simpler to reason about and work with.

@evansiroky
Copy link
Contributor Author

I very much like the idea of a CLI and/or validation tool, but do not have the capacity for contributing towards building one at this time. Looks like someone may already be doing this in https://github.com/PierrickP/gbfs-validator?

@afischer
Copy link
Contributor

afischer commented Feb 19, 2019

@evansiroky it seems like simple JSON schema validation would be perfect for validation across languages/implementations. #37 was opened for that a while back.

@efel85
Copy link

efel85 commented Feb 20, 2019

@evansiroky good idea! I've been working the past few months on generalizing the GBFS specs to fit any transport mode. We have a large Mobility as a Service (also called mobility on demand) deployment in the Netherlands at the moment, I'm trying to facilitate a number of transport operators (bike & scooter sharing, car sharing and public transport) into creating a common API.

We have a working group for standardisation set up within the MaaS-alliance, a global public-private collaboration of stakeholders. We are aiming to set up our work on https://github.com/maas-alliance/apis. I've been working from Swaggerhub until now (https://app.swaggerhub.com/apis/efel85/GTOAS/1.0.4), but will be merging everything on there to the maas-alliance github. I would be very interested in hearing what you think and if we can collaborate!

@mfp22
Copy link

mfp22 commented Feb 21, 2019

Today I have to start creating TypeScript interfaces to use for both bikes and scooters. This PR is very interesting to me, but like @contra says, we will have to deviate from the GBFS standard because this isn't ready yet. But I think we will look into following this PR unless anybody knows of a better approach.

@mplsmitch
Copy link
Collaborator

This is a great discussion which highlights some much needed updates to the specification. I'm working with NABSA on a proposal to hire a consultant to help manage this project. If approved, NABSA will issue an RFP to develop a governance model and versioning scheme that will help keep things moving forward. In addition to better governance, GBFS needs to better reflect changes in the mobility industry. NABSA has now broadened it's scope to include micro-mobility services beyond shared bicycles and the specification should support those services. What else should go into a scope of work for this RFP? I'll also post this on the Issues page.

- revert most renamings of bike -> vehicle
- rename gvfs.json file back to gbfs.json
- move vehicle definitions to vehicle_types.json file
- add vehicle information data in a non-breaking manner
@evansiroky
Copy link
Contributor Author

I have significantly refactored this PR. Please see the updated PR description.

gbfs.md Outdated
\- vehicle_type_id | Yes | Unique identifier of a vehicle type. See [Field Definitions](#field-definitions) above for ID field requirements
\- form_factor | Yes | An enumerable describing the vehicle's general form factor. <br /><br />Current valid values are:<br /><ul><li>`bicycle`</li><li>`scooter`</li><li>`car`</li></ul>
\- propulsion_types | Yes | An array consisting of enumerables that describe the propulsion type of the vehicle. <br /><br />A device may have one or more values from the propulsion_type, depending on the number of modes of operation. For example, a scooter that can be powered by foot or by electric motor would have the propulsion_type represented by the array ['human', 'electric']. A bicycle with pedal-assist would have the propulsion_type represented by the array ['human', 'electric_assist'] if it can also be operated as a traditional bicycle. A car with an internal combustion engine would be represented by the array ['combustion']<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 copied from [City of Los Angeles Mobility Data Specification](https://github.com/CityOfLosAngeles/mobility-data-specification/blob/73995a151f0a1d67aab3d617a4693f8f81967936/provider/README.md#propulsion-types)
\- description | Optional | A free text description of the vehicle
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add what is description meant to be used for?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea. I added more detail.

gbfs.md Outdated
### vehicle_types.json
The following fields are all attributes within the main "data" object for this feed.

ield Name | Required | Defines
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: missing 'F'

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops.

@@ -218,6 +325,38 @@ bikes | Yes | Array that contains one object per bike that is
\- lon | Yes | Longitude of the bike. The field value must be a valid WGS 84 latitude in decimal degrees format. See: http://en.wikipedia.org/wiki/World_Geodetic_System, https://en.wikipedia.org/wiki/Decimal_degrees
\- is_reserved | Yes | 1/0 value - is the bike currently reserved for someone else
\- is_disabled | Yes | 1/0 value - is the bike currently disabled (broken)
\- vehicle_type_id | Conditionally Required | The vehicle_type_id of this vehicle as described in [vehicle_types.json](#vehicle_typesjson). This field is required if the [vehicle_types.json](#vehicle_typesjson) is defined.
\- range | Optional | If the vehicle has a motor, this value represents the furthest distance in meters that the vehicle can travel without recharging or refueling with the vehicle's current charge or fuel.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add a last_reported field here, which would optionally specify the timestamp when the bike was last reported (defaulting to feed last_updated)? It would be consistent with station_status.json, which already has last_reported.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added this field and marked it as required. I believe this might introduce a breaking change, so if I need to mark it as optional in order to be backwards-compatible, I will do so.

gbfs.md Outdated
@@ -218,6 +325,38 @@ bikes | Yes | Array that contains one object per bike that is
\- lon | Yes | Longitude of the bike. The field value must be a valid WGS 84 latitude in decimal degrees format. See: http://en.wikipedia.org/wiki/World_Geodetic_System, https://en.wikipedia.org/wiki/Decimal_degrees
\- is_reserved | Yes | 1/0 value - is the bike currently reserved for someone else
\- is_disabled | Yes | 1/0 value - is the bike currently disabled (broken)
\- vehicle_type_id | Conditionally Required | The vehicle_type_id of this vehicle as described in [vehicle_types.json](#vehicle_typesjson). This field is required if the [vehicle_types.json](#vehicle_typesjson) is defined.
\- range | Optional | If the vehicle has a motor, this value represents the furthest distance in meters that the vehicle can travel without recharging or refueling with the vehicle's current charge or fuel.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

current_range_meters would be a more explicit name. "current" makes it clear what range is being referred to and its nice to make the units explicit. Similarly, I'd prefer if max_range was renamed to max_range_meters.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good, I implemented this as you recommended.

@heidiguenin
Copy link
Contributor

Wanted to make sure that the folks who were engaged in this conversation earlier have the chance to see the changes @evansiroky made and provide feedback.

@sven4all @contra @afischer @efel85 @mfp22 @mplsmitch

gbfs.md Outdated
------------------| --------- | ----------
vehicle_types | Yes | Array that contains one object per vehicle type in the system as defined below
\- vehicle_type_id | Yes | Unique identifier of a vehicle type. See [Field Definitions](#field-definitions) above for ID field requirements
\- form_factor | Yes | An enumerable describing the vehicle's general form factor. <br /><br />Current valid values are:<br /><ul><li>`bicycle`</li><li>`scooter`</li><li>`car`</li></ul>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there may be a missing moped value here for providers like Revel/Scoot.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I went ahead and added moped. I also added the value other in order to allow the definition of any vehicle form factor that is not able to be categorized by any of the pre-defined form factors.

gbfs.md Outdated

### station_status.json

Field Name | Required | Defines
--------------------- | ----------| ----------
stations | Yes | Array that contains one object per station in the system as defined below
\- station_id | Yes | Unique identifier of a station (see station_information.json)
\- num_bikes_available | Yes | Number of bikes available for rental
\- num_bikes_available | Conditionally required | Number of vehicles of all types available for rental. This field is not required if the `vehicles_available` field has been defined.
Copy link
Contributor

@yocontra yocontra Sep 24, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thoughts on deprecating this + num_docks_available since it is bike specific? Not sure if making breaking changes are out of scope here, since versioning is still up for discussion. Seems like a lot to have two ways of specifying the same thing, but one is clearly better than the other.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do like the idea of versioning and would change this and rename everything that says "bike" to "vehicle", but will await guidance from the community.

@yocontra
Copy link
Contributor

@HeidiMG Left a few minor comments, overall looks great and a solid improvement.

gbfs.md Outdated
@@ -190,22 +229,90 @@ stations | Yes | Array that contains one object per station in th
\- region_id | Optional | ID of the region where station is located (see [system_regions.json](#system_regionsjson))
\- post_code | Optional | Postal code where station is located
\- rental_methods | Optional | Array of enumerables containing the payment methods accepted at this station. <br />Current valid values (in CAPS) are:<br /><ul><li>KEY _(i.e. operator issued bike key / fob / card)_</li> <li>CREDITCARD</li> <li>PAYPASS</li> <li>APPLEPAY</li> <li>ANDROIDPAY</li> <li>TRANSITCARD</li> <li>ACCOUNTNUMBER</li> <li>PHONE</li> </ul> This list is intended to be as comprehensive at the time of publication as possible but is subject to change, as defined in [File Requirements](#file-requirements) above
\- capacity | Optional | Number of total docking points installed at this station, both available and unavailable
\- capacity | Optional | Number of total docking points installed at this station, both available and unavailable, regardless of what vehicle types are allowed at each dock. This field should only be used if every dock at the station is able to accept every vehicle type used in the system.
\- vehicle_type_capacity | Optional | An object where each key is a vehicle_type_id as described in [vehicle_types.json](#vehicle_typesjson) and the value is a number representing the total docking points installed at this station, both available and unavailable for the specified vehicle type.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to enable a hierarchy or groups of vehicle types? e.g. are there cases where there are various defined electric bikes with different amenities, and we just need to specify capacity for electric bikes in general?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is necessary as it is possible to determine the form factor and additional information about a vehicle type by looking up the data associated with a particular vehicle type ID.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Recently and number of cities ( DC, Bay Area, Portland etc.) have taken steps to introduce various types of adaptive cycles to their bike share fleets. Additionally there are a number of examples of shared cargo bikes now in Europe. How would these types of vehicles be differentiated within the form factor and vehicle type? Existing examples are:

  • Upright handcycle
  • Recumbent handcycle
  • Recumbent leg trike
  • Recumbent trike tandem
  • Side-by-side tandem bicycle
  • Cargo bicycle
  • Cargo tricycle

Copy link
Contributor Author

@evansiroky evansiroky Sep 26, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the intent of the form_factor field is to have a very general classification and avoid making up a potentially endless hyper-specific list of enumerations of what a vehicle's "type" is. Therefore, all of those vehicles @mplsmitch listed would each have a form_factor value of bicycle. For now, the place to further explain details about the vehicle would be in the description field of a vehicle type object in the vehicle_types.json file. In my initial PR, I didn't include this field, but instead proposed to add many more fields with additional places to differentiate vehicles (such as adding pictures which @sven4all brought up again). However, after a discussion with @antrim and @kanagy, I removed those other fields and added the form_factor field in order to try to make a minimum viable pull request to merge in.

@sven4all
Copy link
Contributor

Good improvements, I would like to support this PR.

gbfs.md Outdated
"vehicle_type_id": "abc123",
"form_factor": "bicycle",
"propulsion_types": ["human"],
"description": "a bicycle without a motor"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be really nice if it's possible to add a link to a photo/graphic of the vehicle type. Is that something we can specify as optional field as well well?

If we add it, I think it's a good idea to specify the resolution and format of the image.

@heidiguenin
Copy link
Contributor

This was one issue discussed during an in-person GBFS developers workshop held before the NABSA 2019 conference (workshop agenda and notes).

Participants discussed fields that we’d like to see included in the spec in the future, but there was general agreement that this proposal is a valuable addition that makes the spec better able to represent options available without foreclosing on future additions to the spec. Other issues that came up for future work include the creation and maintenance of a centralized vehicle type definition repository and traveler privacy implications of increasingly specific vehicle attributes.

A couple of changes proposed during the workshop include: making free_bike_status.json last_reported optional and changing "description" to "name." The intention is for last_reported to become required in the future, but we want to get the non-breaking changes in motion as soon as possible.

@heidiguenin heidiguenin mentioned this pull request Oct 7, 2019
Copy link

@Empty2k12 Empty2k12 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good to me now 🚀

@evansiroky
Copy link
Contributor Author

Seeing no further feedback, I think it is a good time to call a vote again to try to see if this proposal is can be accepted.

I hereby call a vote on this proposal. Voting will be open for 7 full days, until 11:59PM UTC on April 21st.

Please vote for or against the proposal, and include the organization for which you are voting in your comment.

@yocontra
Copy link
Contributor

Voting +1 for Stae - great work @evansiroky 👍

@Empty2k12
Copy link

I vote in favor of this proposal for MIA map intelligence agency.

@kanagy
Copy link

kanagy commented Apr 15, 2020

Voting +1 for Google Maps. Thanks for the work Evan.

@madupras
Copy link
Contributor

+1 from PBSC

@cmonagle
Copy link
Contributor

Voting +1 on behalf of Transit

@bhandzo
Copy link

bhandzo commented Apr 15, 2020

Voting +1 on behalf of Bird. Thanks @evansiroky for pushing this across the line.

gbfs.md Outdated
`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 Definitions](#field-definitions) 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 insipred by, but differs from the propulsion types field described in the [City of Los Angeles Mobility Data Specification](https://github.com/CityOfLosAngeles/mobility-data-specification/blob/73995a151f0a1d67aab3d617a4693f8f81967936/provider/README.md#propulsion-types)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please update this description from City of Los Angeles Mobility Data Specification --> Open Mobility Foundation and the URL updated to https://github.com/openmobilityfoundation/mobility-data-specification

@charlesjump
Copy link

Wouldn't this be the time to change from bike_id to vehicle_id?

@heidiguenin
Copy link
Contributor

heidiguenin commented Apr 18, 2020

@charlesjump I agree that it's time to vote on changing bike_id to vehicle_id, but right now this PR represents a non-breaking change. Is it worth making this whole PR a breaking change to make the transition to vehicle_id now, or could we open a separate PR for that breaking change and go ahead and get this one in process?

@charlesjump
Copy link

@heidiguenin which version of GBFS will this change be included?

@heidiguenin
Copy link
Contributor

@charlesjump - Both #219 (Geofencing, virtual station, and dockless support) and vehicle type definitions, if passed, would be included in v2.1. I believe that they're mostly already implemented out in the field, too, so they should be able to move from release candidate to official fairly quickly.

Changing bike_id to vehicle_id, once passed in a vote, would be added to the v3.0 release candidate that currently includes #182 - requiring license_url.

@heidiguenin
Copy link
Contributor

The vote on this is now closed, and it passes!

Votes in favor:
Stae
MIA
Google Maps
PBSC
Transit
Bird

No votes against.

We'll be merging and creating v2.1RC in the coming days. If you're implementing this currently or planning on it in the future, please let us know. Thanks all!

correcting spelling error
@heidiguenin
Copy link
Contributor

As we're getting ready to tag the new release - is there anyone who is implementing this PR yet?

@kanagy
Copy link

kanagy commented May 14, 2020

As we're getting ready to tag the new release - is there anyone who is implementing this PR yet?

Google is starting implementation with Lime. We plan to migrate our custom fields to use the official vehicle_types.json for free floating bikes and scooters.

@barbeau barbeau changed the title Allow vehicle type definitions Add vehicle type definitions May 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.