Thanks for restarting this thread, Melinda.
Licensing is certainly a hairy problem! Let me summarize a few potential additions to the GTFS spec to capture license information. In increasing order of use and complexity:
1. add a free-form column called "license" to feed_info.txt
- When it's a common license, the producer would set the column value to a
SPDX identifier.
- When the producer hosts their own license terms online, the column value would be set to a URL.
2. add a free-form column called "license" to feed_info.txt AND allow a LICENSE.txt file
- When it's a common license, the producer would set the "license" value to a
SPDX identifier.
- When it's a custom license, the producer would include the full contents of their license as a LICENSE.txt file. They could optionally give the license a name by specifying it as the "license" value in feed_info.txt
3. one of the above, along with additional columns in feed_info.txt that provide a concise interpretation of what the license allows
- "license_create_derived_product" can be set to "yes", "no, or "unknown"
- "license_redistribute" can be set to "yes", "no", or "unknown"
- "license_use_without_attribution" can be set to "yes", "no", or "unknown"
- "license_attribution_text" can optionally be set to a string when "license_use_without_attribution" == "no". This is the text that consumers would be required to display in their apps.
These are all of the fields that Transitland allows and stores. This scheme, of course, can't capture all possible licenses, but it does capture most of the important variation. (It's based on our own lawyers' review of ~30 major transit agencies in North America and the various terms they attach to their GTFS feeds.) More information is at
https://transit.land/an-open-project/
Re multiple licenses per feed: Note that Transitland has assumed to date that an entire feed is under one license. While this is an important situation to capture, I suspect the majority of feeds have one clear license. Feeds that need to specify multiple licenses could list them out in a "license" column in feed_info.txt or concatenate their licenses' contents in a single LICENSE.txt. It may not be possible to parse automatically, but would still be useful.
Do any of the above 3 options appeal to you all?
Drew