From bab4dab3a14cd924e36a202de973c70f2416c0eb Mon Sep 17 00:00:00 2001 From: Aaron Antrim Date: Fri, 24 Jan 2020 19:16:10 -0800 Subject: [PATCH] Require license_url, add attribution fields (#182) (v2.0-RC) v2.0-RC - contains breaking changes: * license_url "Required" Make license_url "Required", add attribution fields and add inventory of common data licenses. * add license_id SPDX License List * If the license_id or license_url fields are blank or omitted, Creative Commons Universal Public Domain Dedication (added text for 'license_url') * Update data-licenses.md update column name and link * Update data-licenses.md clarify identifiers and names * Update data-licenses.md expand the full names of licenses * Added "Beta" Note: I think we should change the markdown style so that there are not extra spaces in the tables. When we change the column widths it makes it harder to do line-by-line comparisons in GitHub. * formatting updates for "beta" * formatting - add line break makes it easier to read Co-authored-by: christrillium --- data-licenses.md | 15 +++++++++++++++ gbfs.md | 48 ++++++++++++++++++++++++++---------------------- 2 files changed, 41 insertions(+), 22 deletions(-) create mode 100644 data-licenses.md diff --git a/data-licenses.md b/data-licenses.md new file mode 100644 index 00000000..cfba45b1 --- /dev/null +++ b/data-licenses.md @@ -0,0 +1,15 @@ +### Common Data Licenses + +Below is a table of common licenses under which datasets can be made available. A permissive license will likely permit more apps and developers to ingest GBFS data. No recommendation for any particular license is offered here. + +Definitions of terms: +- Requires attribution: Data users must give credit (attribution) to the data publisher and provide a link to the license. +- Share-alike (viral): Derivative works (remixed, transformed, or built upon the material) must be distributed under the same license as the original. + +| *[SPDX License Identifier](https://spdx.org/licenses/)* | *Full name* | *Human-readable license summary* | *License text* | *Requires attribution* | *Share-alike (viral)* | +|-------------------|-----------------------------------------------------|--------------------------------------------------------------|-------------------------------------------------------------|----------------------|---------------------| +| CC0-1.0 | Creative Commons Universal Public Domain Dedication 1.0 | [Summary @ creativecommons.org](https://creativecommons.org/publicdomain/zero/1.0/) | [Text @ creativecommons.org](https://creativecommons.org/publicdomain/zero/1.0/legalcode) | No | No | +| CC-BY-4.0 | Creative Commons Attribution 4.0 International | [Summary @ creativecommons.org](https://creativecommons.org/licenses/by/4.0/) | [Text @ creativecommons.org](https://creativecommons.org/licenses/by/4.0/legalcode) | Yes | No | +| CDLA-Permissive-1.0 | Community Data License Agreement Permissive 1.0 | [Summary @ cdla.io](https://cdla.io/) | [Text @ cdla.io](https://cdla.io/permissive-1-0/) | Yes | No | +| ODbL-1.0 | Open Data Commons Open Database License 1.0 | [Summary @ opendatacommons.org](https://opendatacommons.org/licenses/odbl/summary/index.html) | [Text @ opendatacommons.org](https://www.opendatacommons.org/licenses/odbl/1.0/) | Yes | Yes | +| ODC-By-1.0 | Open Data Commons Attribution License 1.0 | [Summary @ opendatacommons.org](https://opendatacommons.org/licenses/by/summary/index.html) | [Text @ opendatacommons.org](https://www.opendatacommons.org/licenses/by/1.0/) | Yes | No | \ No newline at end of file diff --git a/gbfs.md b/gbfs.md index a17b7075..c77a3fda 100644 --- a/gbfs.md +++ b/gbfs.md @@ -234,28 +234,32 @@ Field Name | Required | Type | Defines ### system_information.json The following fields are all attributes within the main "data" object for this feed. -Field Name | Required | Type | Defines --------------------------------- | --------------------- | ---------- | ----------------------- -`system_id` | Yes | ID | Identifier for this bike share system. This should be globally unique (even between different systems) - for example, `bcycle_austin` or `biketown_pdx`. It is up to the publisher of the feed to guarantee uniqueness. This value is intended to remain the same over the life of the system. -`language` | Yes | Language | The language that will be used throughout the rest of the files. It must match the value in the [gbfs.json](#gbfsjson) file. -`name` | Yes | String | Name of the system to be displayed to customers. -`short_name` | Optional | String | Optional abbreviation for a system. -`operator` | Optional | String | Name of the operator. -`url` | Optional | URL | The URL of the bike share system. -`purchase_url` | Optional | URL | URL where a customer can purchase a membership. -`start_date` | Optional | Date | Date that the system began operations. -`phone_number` | Optional | Phone Number | A single voice telephone number for the specified system that presents the telephone number as typical for the system's service area. It can and should contain punctuation marks to group the digits of the number. Dialable text (for example, Capital Bikeshare’s "877-430-BIKE") is permitted, but the field must not contain any other descriptive text. -`email` | Optional | Email | Email address actively monitored by the operator’s customer service department. This email address should be a direct contact point where riders can reach a customer service representative. -`feed_contact_email` *(beta)* | Optional | Email | A single contact email address for consumers of this feed to report technical issues. -`timezone` | Yes | Timezone | The time zone where the system is located. -`license_url` | Optional | URL | URL of a page that defines the license terms for the GBFS data for this system. -_`rental_apps`_ *(beta)* | Optional | Object | Contains rental app information in the android and ios JSON objects. -\- _`android`_ *(beta)* | Optional | Object | Contains rental app download and app discovery information for the Android platform in the `store_uri` and `discovery_uri` fields. See [examples](#Examples) of how to use these fields and [supported analytics](#Analytics). - - `store_uri` *(beta)* | Conditionally Required | URI | URI where the rental Android app can be downloaded from. Typically this will be a URI to an app store such as Google Play. If the URI points to an app store such as Google Play, the URI should follow Android best practices so the viewing app can directly open the URI to the native app store app instead of a website.

If a `rental_uris`.`android` field is populated then this field is required, otherwise it is optional.

See the [Analytics](#Analytics) section for how viewing apps can report the origin of the deep link to rental apps.

Example value: `https://play.google.com/store/apps/details?id=com.abcrental.android` - - `discovery_uri` *(beta)* | Conditionally Required | URI | URI that can be used to discover if the rental Android app is installed on the device (e.g., using [`PackageManager.queryIntentActivities()`](https://developer.android.com/reference/android/content/pm/PackageManager.html#queryIntentActivities)). This intent is used by viewing apps prioritize rental apps for a particular user based on whether they already have a particular rental app installed.

This field is required if a `rental_uris`.`android` field is populated, otherwise it is optional.

Example value: `com.abcrental.android://` -\- _`ios`_ *(beta)* | Optional | Object | Contains rental information for the iOS platform in the `store_uri` and `discovery_uri` fields. See [examples](#Examples) of how to use these fields and [supported analytics](#Analytics). - - `store_uri` *(beta)* | Conditionally Required | URI | URI where the rental iOS app can be downloaded from. Typically this will be a URI to an app store such as the Apple App Store. If the URI points to an app store such as the Apple App Store, the URI should follow iOS best practices so the viewing app can directly open the URI to the native app store app instead of a website.

If a `rental_uris`.`ios` field is populated then this field is required, otherwise it is optional.

See the [Analytics](#Analytics) section for how viewing apps can report the origin of the deep link to rental apps.

Example value: `https://apps.apple.com/app/apple-store/id123456789` - - `discovery_uri` *(beta)* | Conditionally Required | URI | URI that can be used to discover if the rental iOS app is installed on the device (e.g., using [`UIApplication canOpenURL:`](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl?language=objc)). This intent is used by viewing apps prioritize rental apps for a particular user based on whether they already have a particular rental app installed.

This field is required if a `rental_uris`.`ios` field is populated, otherwise it is optional.

Example value: `com.abcrental.ios://` +| Field Name | Required | Type | Defines | +|------------------------------------------|----------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------| +| `system_id` | Yes | ID | Identifier for this bike share system. This should be globally unique (even between different systems) - for example, `bcycle_austin` or `biketown_pdx`. It is up to the publisher of the feed to guarantee uniqueness. This value is intended to remain the same over the life of the system. | +| `language` | Yes | Language | The language that will be used throughout the rest of the files. It must match the value in the [gbfs.json](#gbfsjson) file. | +| `name` | Yes | String | Name of the system to be displayed to customers. | +| `short_name` | Optional | String | Optional abbreviation for a system. | +| `operator` | Optional | String | Name of the operator. | +| `url` | Optional | URL | The URL of the bike share system. | +| `purchase_url` | Optional | URL | URL where a customer can purchase a membership. | +| `start_date` | Optional | Date | Date that the system began operations. | +| `phone_number` | Optional | Phone Number | A single voice telephone number for the specified system that presents the telephone number as typical for the system's service area. It can and should contain punctuation marks to group the digits of the number. Dialable text (for example, Capital Bikeshare’s "877-430-BIKE") is permitted, but the field must not contain any other descriptive text. | +| `email` | Optional | Email | Email address actively monitored by the operator’s customer service department. This email address should be a direct contact point where riders can reach a customer service representative. | +| `feed_contact_email` *(beta)* | Optional | Email | A single contact email address for consumers of this feed to report technical issues. | +| `timezone` | Yes | Timezone | The time zone where the system is located. | +| `license_id` *(beta)* | Conditionally required | String | Required if the dataset is provided under a standard license. An identifier for a standard license from the [SPDX License List](https://spdx.org/licenses/). Provide `license_id` rather than `license_url` if the license is included in the SPDX License List. See the GBFS wiki for a [comparison of a subset of standard licenses](data-licenses.md). If the license_id or license_url fields are blank or omitted, this indicates that the feed is provided under the [Creative Commons Universal Public Domain Dedication](https://creativecommons.org/publicdomain/zero/1.0/legalcode). | +| `license_url` | *Current version:* Optional
*beta (v2.0-RC):* Conditionally required | URL | *Current version:* A fully qualified URL of a page that defines the license terms for the GBFS data for this system, as well as any other license terms the system would like to define (including the use of corporate trademarks, etc).

*Beta (v2.0-RC):* Required if the dataset is provided under a customized license. A fully qualified URL of a page that defines the license terms for the GBFS data for this system. Do not specify a `license_url` if `license_id` is specified. If the license_id or license_url fields are blank or omitted, this indicates that the feed is provided under the [Creative Commons Universal Public Domain Dedication](https://creativecommons.org/publicdomain/zero/1.0/legalcode). | +| `attribution_organization_name` *(beta)* | Optional | If the feed license requires attribution, name of the organization to which attribution should be provided. | | +| `attribution_url` *(beta)* | Optional | URL of the organization to which attribution should be provided. | | +| _`rental_apps`_ *(beta)* | Optional | Object | Contains rental app information in the android and ios JSON objects. | +| \- _`android`_ *(beta)* | Optional | Object | Contains rental app download and app discovery information for the Android platform in the `store_uri` and `discovery_uri` fields. See [examples](#Examples) of how to use these fields and [supported analytics](#Analytics). | +|  - `store_uri` *(beta)* | Conditionally Required | URI | URI where the rental Android app can be downloaded from. Typically this will be a URI to an app store such as Google Play. If the URI points to an app store such as Google Play, the URI should follow Android best practices so the viewing app can directly open the URI to the native app store app instead of a website.

If a `rental_uris`.`android` field is populated then this field is required, otherwise it is optional.

See the [Analytics](#Analytics) section for how viewing apps can report the origin of the deep link to rental apps.

Example value: `https://play.google.com/store/apps/details?id=com.abcrental.android` | +|  - `discovery_uri` *(beta)* | Conditionally Required | URI | URI that can be used to discover if the rental Android app is installed on the device (e.g., using [`PackageManager.queryIntentActivities()`](https://developer.android.com/reference/android/content/pm/PackageManager.html#queryIntentActivities)). This intent is used by viewing apps prioritize rental apps for a particular user based on whether they already have a particular rental app installed.

This field is required if a `rental_uris`.`android` field is populated, otherwise it is optional.

Example value: `com.abcrental.android://` | +| \- _`ios`_ *(beta)* | Optional | Object | Contains rental information for the iOS platform in the `store_uri` and `discovery_uri` fields. See [examples](#Examples) of how to use these fields and [supported analytics](#Analytics). | +|  - `store_uri` *(beta)* | Conditionally Required | URI | URI where the rental iOS app can be downloaded from. Typically this will be a URI to an app store such as the Apple App Store. If the URI points to an app store such as the Apple App Store, the URI should follow iOS best practices so the viewing app can directly open the URI to the native app store app instead of a website.

If a `rental_uris`.`ios` field is populated then this field is required, otherwise it is optional.

See the [Analytics](#Analytics) section for how viewing apps can report the origin of the deep link to rental apps.

Example value: `https://apps.apple.com/app/apple-store/id123456789` | +|  - `discovery_uri` *(beta)* | Conditionally Required | URI | URI that can be used to discover if the rental iOS app is installed on the device (e.g., using [`UIApplication canOpenURL:`](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl?language=objc)). This intent is used by viewing apps prioritize rental apps for a particular user based on whether they already have a particular rental app installed.

This field is required if a `rental_uris`.`ios` field is populated, otherwise it is optional.

Example value: `com.abcrental.ios://` | + ### station_information.json