Current State
We now support changing the Phabricator logo (that is, the image with the text "Phabricator" in the upper left on every page) via the config option ui.custom-header
→ User Interface → ui.custom-header
This should probably get nicer with a nice file upload control right there that resizes and some stuff. We also need to fix a caching issue so the logo won't flicker; see T4214#98401 for a temporary workaround. Here's a screenshot of the current user interface with a customized logo.
Discussion
We once supported custom logos, but I removed support in D3101 before doing a bunch of iterations on the header, since it would have broken them anyway.
We've received some user requests for brand skinning ("I want Phabricator to look like my company's tools") and see some use of this in the wild (e.g., Blender). Users also used the custom logo support when it existed, although there wasn't much pushback when it was removed. I don't think this feature is hugely important, but it comes up every so often.
The major concerns I have with implementing it are:
- (Product) Although I don't feel very strongly about this, it is nice to have branding in the UI. I think @btrahan feels a bit more strongly than I do. Installs are obviously free to change this locally, but conceptually this feels a little mushy to me.
- (Technical) Originally, these images were served in a pretty hacky way. We should serve them properly. I think the new Files "builtin" support gives us most of what we need to do that (e.g., get them shipped over a CDN (T2382) with the right headers once we have support), although dirtying caches may be a little bit involved. We also can't reasonably sprite these today, and it would be very complex to develop the required infrastructure. Another possible approach is to use data: URLs (T3300). We could also do this via file uploads, which might be cleaner, but we don't currently have Config support for it.
- (UI/UX) The header has separate desktop and mobile states. We need to plan around this if we offer customization.
- (Ease of Use) The old logo required a small sprite with active and inactive states, and had an unusual (non-rectangular) shape. (The current logo doesn't have these issues.) It would be nice if users could just hand us any file of the right size (or any file, period, at some point) and we'd do the right thing. This is probably a given with the less-messy modern header.
One thought here is that maybe we can let users add a logo, rather than replacing the Phabricator logo? So, with a custom logo, you'd get:
MyCompany > Phabricator
...in the header. I'm not sure how practical this is (we're limited on space on mobile), or how acceptable it would be to installs that want to do company branding, but it might generally be cleaner and fix some of the constraint problems. This would also fix the issue that a bunch of company blogs have, where you click "CompanyName" in the header and get sent to the blog's root, not to the company's homepage. That said, I don't know if this is really an issue with Phabricator, and it would mean the "Phabricator Home" link target is no longer in the top left.
I think the pathway to getting this built is:
- @chad: Come up with a desktop/mobile look for "Phabricator + Brand" which fixes as many of the concerns above as possible (e.g., ideally a single rectangular image without a required hoverstate and with as few alpha channel concerns as possible, where the same image can always be used on desktop and mobile, and ideally ideally fitting it into crumbs if that seems like a good idea).
- I can drive all the technical stuff once we have a mock, it's not a super huge mess but not completely trivial either.