-
Notifications
You must be signed in to change notification settings - Fork 206
Add images.txt + agency logo #585
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
base: master
Are you sure you want to change the base?
Conversation
Added optional field for agency brand image URL with requirements as requested by @etienne0101. This is only a first draft. More requirements like transparent background, size, etc. or an additional URL for 16x16 rasterized images can be added based as well.
Added new fields for brand asset management and updated requirements.
|
Open to thoughts from other consumers here, but isn't this possible already? There's an Are there cases you're seeing where the agency website doesn't provide what you need? |
|
Nice idea. I haven't thought about this. I did some quick random tests: What I would've expected (just in a circle/square shape): Trenitalia's og:image: Warszawski Transport Publiczny provides only a Portland Streetcar has the favicon commented out in their HTML (and also my browser doesn't show any favicon when visiting their website):
So overall this is probably a good fallback solution (with unclear a licensing situation). The solution proposed in this PR would give agencies more control to show a different icon that's specifically designed to be shown to app users. The |
|
Thanks for the PR, this would be a great addition. As you point out, lots of apps are having to invent their own versions of this, so there's clearly need. I think it's really important to define more requirements for using these fields:
|
Updated the descriptions for agency_brand_image_url and agency_brand_image_url_dark to recommend using a transparent background.
|
Thank you for your quick feedback! I just forgot to add
I think if we find a wording that 99% of the agencies and app developers would be fine with, that would be very strong. Otherwise, I'd go with your proposal to add a recommendation of what terms should look like. Any ideas what to write there? Otherwise, we could maybe leave it for a later addition as this change won't break anything (it's just a recommendation). For caching, I just thought that GBFS might've had a reason to design it this way but I'm also completely fine to state that standard HTTP I added a recommendation for the background to be transparent. Maybe you can check again?
I'm open to drop this requirement. From a developer and app designer view it would definitely help to know that
This is what I meant with an additional field for 16x16 icons. My idea was to put this into another PR but I am open to add it here if there's a consensus that this is a good idea. Any opinions?
I think that's an existing problem that most agencies probably have solved in some way. So they probably already have their logo in different formats and can select one that fits. |
Updated agency brand fields to include caching headers requirements.
|
I removed the last modified column and stated that consumers should respect standard HTTP caching headers. I think that makes it clear that files should not be downloaded before Thank's again for your feedback. Let me know if there's anything else! |
This is not perfect, but to start the conversation: "It is recommended that the terms permit feed consumers, without taking additional actions, to use the logo in reference to the agency's services broadly throughout their products, provided an attribution citing these terms is visible to users somewhere in these products." We might also want guidance on what the lack of terms enables a developer to do. I'm not sure what the right answer is on this.
Agreed, there are many contexts in my own app I'd use a 1:1 icon, but a variable aspect ratio would be very tricky to get right. However, there are also contexts where this variability is less impactful, and further still there are contexts where this variability is actually useful (such as presenting a "full" or "normal" version of the logo, rather than an alternate optimized for 1:1 use). Transit App uses variable aspect ratios all over the place, for example, I'm sure they'll be weighing in soon enough. Seeing as GBFS went with a 1:1 requirement, it's probably fine to leave it for consistency, but IMO it would be ideal to have it as a separate field since a brand image in and of itself isn't inherently 1:1.
I would support including this now but don't have a strong opinion. But, I do think we need to include some guidance to feed producers that specifies the Perhaps, considering both this and the aspect ratio item, the answer is to have e.g.
Sure, I just think we should state specifically that the best practice in this case is to use whatever version has been tailored for a 1:1 format. One would hope this is obvious, but I've seen plenty of logo crimes out there, which is why I want to make sure the spec is clear. I think, taking all of the above together (less the three fields option) and making more consistent use of RFC 2119, I'm thinking of a complete description something along the lines of:
An additional question having thought on this some more:
|
Updated the definitions for agency brand URLs in the reference documentation to clarify usage and requirements.
Updated the recommendation for consumers to respect HTTP caching headers when fetching the agency brand terms URL.
|
|
-1 Introduce a branding.txt, have a branding_id, give that all the properties that you propose, refer branding_id from agency.txt, routes.txt, trips.txt Make it clear what branding is, it is rider facing, signatures, colours, names, etc. That will make agency.txt a true operator thing again. |
agency.id should not be an operator thing. For example, London Buses are operated by a large number of operators but it is clearly one agency. |
|
@miklcct nope, if they are operated by a large number of operators, all these operators could operate their own CAD-AVL system, therefore produce their own GTFS-RT. Passenger facing they might look the same thing, hence they share the same branding_id. |
In your comment #76 (comment) you suggested to put it into
I would like to point you to the Guiding Principles where it says
Therefore arguing about it being a operator thing is not relevant for GTFS. However, I see value in being able to use brands for routes as well as different routes could then have their own logos. So I am not opposed to introduce a new file for branding information to not have to duplicate branding information across files. |
I did because you were suggesting a general feed branding, that would never work for multi agency feeds.
The operator thing is not relevant, but given that a single operator is operating with different brands that operator is a single agency with a single system. That artificially must splits it operation over multiple agencies because GTFS does not support branding. The opposite is also true. I would argue @miklcct just made that case. |
Your point of introducing a new file is valid but can you please don't confuse the matter by mentioning operators? London Buses have a different brand for its SL and BL prefixed routes compared to ordinary routes, and it is completely irrelevant to which operator runs any of its routes. |
The problem is GTFS combining distinct concepts. When we discuss these concepts we must make a distinction. Currently agency.txt is used as a way to differentiate on branding. For example FlixTech is an operator, their GTFS consists of FlixBus and FlixTrain. That is something artificial to facilitate branding on Google Maps.
Who do you call for lost and found? |
Added field definitions for brands.txt and updated agency.txt to include brand_id references.
|
I changed it to
More ideas? |
I think the original reason for the stop_icon proposal was Google Maps doing some localized cartography. For example metro stops commonly have pretty distinguished way finding. So here the optical appearance is more important than meta descriptions. |
Updated brand_id field to be required and added new fields for brand_name, brand_url, and brand_phone with their descriptions.
|
I added
This is not really fitting anymore if we add Edit: Maybe we should state that
? |
In this case, the agency is supposed to be "Flix" as all of FlixBus and FlixTrain have the same passenger-facing portal. They are booked and contacted in the same way.
TfL
Brand name is clearly needed, brand URL as well as there are real-world uses. I am not sure if brand phone has real-world uses at this moment.
I would describe an agency as an entity which serves as the primary contact for a transit system. Depending on the locale, it may be an authority, an operator, a local partnership or something else.
No. The route short name should still be something like S6 or RB75 since these are the string which is shown on the train itself. The RB75 will have the brand "RegioBahn", the S6 will have the brand "S-Bahn", etc. I interpret the brand name would be for use in, for example, the "Superloop" routes in London, so the SL1 route will have brand=Superloop and route_short_name=SL1. When this route is encountered in client apps, the Superloop brand is applied to it but the route_short_name is still displayed verbatim. |
Only showing route name does not work for the other examples I made (which you seem to have missed):
Therefore, the "only showing We introduced a |
If it is not in customer information it should not be part of the GTFS. GTFS is only for customer information. If the board shows ICE 1034 then ICE 1034 should be the route_short_name. |
|
@miklcct "ICE 1034" is trip name, not a route name. Most of trains do not have any route but it is not supported by GTFS. It requires every trip as part of (named) route. So you get many artifical routes from rail |
|
What do you mean by a trip not having a route (line in Transmodel)? How do you convey to your passengers the equivalent of "Take line A towards Eatonville" for your services? How do your passengers identify other trips which run to the same places? |
|
I'm sorry, I led the discussion a bit off topic with my examples. Maybe we should have that discussion in another, separate issue. I think there are different ways to solve this and it's only partly a GTFS problem since the data quality is also not always good. On topic: I would really like to hear from those who already went through adding branding information such as logos to their apps like @gcamp and @bdferris-v2: how we can further improve this proposal? Is there anything missing? Should we change/add/reformulate it? Do you see value in adding this information to GTFS? |
By default, train has number, first and last stop, and that's it. You may have trains in numbered sequence running in certain interval between the same O/D but they can be not assigned any line. So you announce "train 123 to XYZ". That's how rail was working for last 150+ years. Lines were added in last decades and aren't common in every country. |
In this case the 123 is the route number. The same as announcing "bus 52 to Willesden", where 52 is a route number. |
And in The Netherlands we don't have routes (lines) at all for trains. So it is only IC Amsterdam. |
In GB the information is shown in form as, for example, "a Mildmay line service", on the departure boards and announcements, where "Mildmay line" is the route name. However, the line name can be as generic as the whole operator called the same line, such as "South Western Railway". |
|
I'm not sure there's much to learn from the previous iteration of the same ideas, but I'm still putting it here GTFS-ModesAndNetworks. It was generally based on what we were doing at Transit. I think what is proposed here makes sense to me except for the size ratio of the images, I don't think we can enforce a square or circle image. I understand this makes implementation way easier, but a lot of logos are actually logo type and would be simply illegible in a boxed-in format. At Transit we have 3 variants of images : light mode and dark mode as proposed here but also mono (no colour). Depending on the context it might be useful. We use it internally for route images however and not brand images. |
|
@gcamp thank you for your feedback! @kona314 proposed this:
Do you think that would help? Should we add a mono URL? Then it would be:
|
|
I'm thinking we should refactor this a bit (again). The brand vs. agency distinction is a worthwhile discussion for another context. I believe the intent of this PR is simply to be able to show images and iconography that riders are familiar with in contexts that appropriate--an agency icon, a route symbol, etc.. To this end, I'm wondering if we should simplify this down to an The base of the file would look something like the below. Each row represents an asset and variants of each are in the columns. I didn't add a mono column but we could throw that in too, though we'd probably have to rework the presence fields to require at least one of image_assets.txtFile: Conditionally Required Primary key (
|
|
I think having a dedicated images file is a good idea, because images aren't limited to agency/brands, they can also apply to routes, stops, vehicles, etc. |
|
I think this PR should focus on the images, and leave the brand specific metadata to a different issue/PR. If a separate branding file is required to split the agency contact / URL information into a brand specific metadata, that file can include a foreign key for brand specific images if that use case needs to be addressed. +1 to a dedicated image file. |
|
@gcamp said
Our agency recently settled on a new naming and signage standard for light rail stations that would be difficult to reproduce in a square logo, and possibly confusing in a text-only format. Having a URL for this icon as an SVG would help our passengers to identify the stations on a map. Offered as a use-case for a single agency. |
|
How would you reference those images? Directly from the agency or via a brand? |
|
Yes, If a future iteration of GTFS includes a separate notion of brand vs. agency, it should include these fields as well, and would be deconflicted the same way as |
|
Ok, then let's split this from I changed it to:
Questions:
Edit: I was thinking to maybe even remove the terms completely. For consumers of large amounts of feeds it's a lot of effort to read all those legalese to check if you can really use it in your app. Maybe we should just enforce @kona314's fall-back terms. What is a logo worth in GTFS if those minimum conditions (i.e. I am allowed to used the logo in my app in reference to their services given I credit the source) are not met?! If a organization (brand/agency/feed producer/etc.) doesn't want their logos in any app they should just not reference it in a GTFS feed. I would like that a consumer can expect to be able to use any reference image (within reasonable default terms). Maybe we need even stricter default terms for this but having to check basically every feed update for every feed for new terms (or even without a feed update - just change the content behind the terms URL) is not feasible. |
|
On raster images On additional variants On terms There might be a middle ground with the use of a required Other |
To be honest, I don't see value of having this in GTFS if then I still need to go through a manual negotiation / signing process. Then it still requires an external process to know which logos I can use and I need to have a manual book keeping. I still need another book keeping for contracts - storing the logo URLs somewhere is the least problem in this process. I can do this already now (without this extension), if I wanted, and this extension would not really help. GTFS as a standard is only valuable if also the licenses are standardised. I like the enum idea and using standard licenses like the CC family of licenses (or anything else we can come up with as additional options). Licensing the image to be used in conjunction with an agencies' services (without the licensee gaining any other rights) should be the bare minimum. If an external step to request a license is needed anyway, this side channel can also be used to exchange the logo URLs. I would hope that most agencies want their logos in apps, at least once all their competitors show up with a logo. It's a way to promote a company - basically free marketing. If their lawyers want to give developers a hard time by requiring extra terms, they can already do this without the help of GTFS.
In the end it's just a file you download and integrate show in your app. For instance in HTML you can just use
I tried to copy from your post by using quote-reply but it removed the table formatting, so I had to manually copy. Seems like I missed this. You're right. Of course we want at least one URL to be set. |
Updated image fields to clarify requirements and add new fields.
|
I agree with everything you've said on licensing. My feeling, though, is we need to be cognizant of the realities of how agencies will approach this. As far as I'm aware, agencies in the US typically require some kind of agreement to terms to use their logos (though something written may not always be required?). The MBTA developer license agreement, which covers their GTFS and GTFS-realtime feeds, explicitly does not permit the use of the logo in section 4.1. The NY MTA requires applying for a license. I think the tension here is fundamentally one between the ideal state and current reality. If the spec requires granting certain use privileges under terms written into the spec, are agencies really going to license their logo with these terms? Or will they simply ignore this and maintain the current status quo? My feeling is the latter, but I would love to be wrong about this. I'd be interested in hearing from @gcamp or others at Transit what their experience has been on this with agencies around the world. Managing permissions will likely (IMO) be a reality of using a logo for consumers, just as it is today for those that support it, and as a consumer, I don't see tracking approval statuses as an unreasonable burden. What we can do, and the benefit this file would offer, is give agencies the option to make it easier for us by opting in to permissive use right in this file with the Another option might be additional fields indicating whether the terms permit specific presentations within an app while maintaining an agency's custom terms. It would still be incumbent on the developer to understand and accept the full terms, but if the terms say "you may use the logo in [specific context X] as long as there's a link to these terms somewhere," that could be flagged to improve headless operation. However, this might kind of defeat the purpose of either option.
Sure, if any consumer cares about filetype, they can easily discern this. I guess complexity was the wrong word, it's more that it muddies the waters. Logos and photographs have different needs—it'd be weird to have columns for dark and mono versions of a bus stop photo. Do we want that to be allowed? If not, how would we prevent that in the spec? If so, what's the guidance for producers here? There are photo attributes, like the date it was taken, that we might want but don't apply to brand images, how would we handle that? I think there's value in keeping this narrowed to brand assets/images that communicate visual identity. DAM systems usually treat logos and icons differently from photos for this reason. Thinking on it more, I think the word "glyphs" captures what I'm thinking about here, so the file would be |
|
Does it make sense to re-use Also, I dug up what our agency's terms are for the logos we would be putting into our feed. I'm not sure if that would help in this conversation, but I'll throw this out there anyways. |


Summary
It would be nice to show brand logos for transit agencies in apps. Many apps already show logos but have to use a side channel because GTFS does not support logos yet. This proposal is based on the way it's modeled in GBFS (except that I propose to make it optional in GTFS). Since it works well there, it should work for GTFS as well.
For Transitous we are planning to add logos for agencies and my idea was to not build yet another side channel to do this (like probably all existing apps) but rather support the ecosystem by proposing a standard way.
Usually, the discussion happens in an issue, but new guidelines state that
Since the scope is well-defined, I decided to follow @etienne0101's request.
This is only a first draft. More requirements like transparent background (which is basically the default for SVG, that's why I think this requirement might not be needed here), etc. or an additional URL for 16x16 rasterized images can be added as well (but this could also be done in a separate PR to keep discussion + scope small for this). Just let me know.
Describe the Problem
Currently, apps can't show brand logos for transit agencies based on the GTFS feed and have to work around this via side channels.
Use Cases
Apps showing brand logos to customers
Proposed Solution
Based on how GBFS handles it. Add a new
agency_brand_image_urlcolumn toagency.txt.Type of change
GTFS Schedule
GTFS Realtime
Additional Information
Proposed Discussion Period
Since the issue #76 didn't come to a consensus, discussion should take as long as we don't have consensus.
Testing Details
Proposal Update Tracker