Looks nicer on profiles, cards. Added some additional colors.
Details
- Reviewers
epriestley - Commits
- rP44b307f28d54: Add some higher resolution default user images
change my avatar a few times
Diff Detail
- Repository
- rP Phabricator
- Branch
- not-pok-e-mand (branched from master)
- Lint
Lint Passed - Unit
Tests Passed - Build Status
Buildable 15784 Build 20868: Run Core Tests Build 20867: arc lint + arc unit
Event Timeline
How about providing a lot of different colors (yellow pikachu, red charmander, blue mudkip, pink slowbro, brown eevee, green metapod, etc) instead?
The blue/pink feel really explicitly gendered along traditional gender lines to me, and I think that can be uncomfortable for some users.
Some users will find it inconsiderate for the software to implicitly ask them "Are you a boy or a girl?" because they find the question itself insensitive, since it makes them or people they care about uncomfortable.
Women may reasonably not want to pick a pink avatar because they're worried they'll get attention they don't want, but feel like they're being asked to lie because the avatars look pretty gendered.
We could include some more feminine colors so I can still pick a pretty princess avatar if I want, but I think we don't gain much by by implicitly asking users to make a boy/girl choice, and can get all the benefits I can come up with (user choice, self-expression, avatar diversity for practical reasons so they're more identifiable, social inclusiveness) by offering 30 different avatars with 30 different colors than 10 different avatars in "boy/girl/neutral" flavors.
I think the only real downside is that you have to go photoshop a bunch more Pokemon?
We could also let you pick a silhouette and a color, but that's quite a bit more work.
I can make another 20-30 in a few minutes or do you think there is some sort of "Phabricator-esque" way of using these images/colors/username hash to create unique images per user.
The issues I can come up with with unique-per-user are:
First, we need gd to composite images, and don't currently require it to be installed, but it seems bad to prevent you from creating a user account just because we can't build you a custom psyduck. We could use it if it's available and fall back to a default static image, though. I think we aren't currently super great about handling this case (there's a task somewhere about an unexpected error if gd is missing, I think). So this is a minor concern overall.
Second, if we have 30 silhouettes and 30 colors (30 distinct colors seems like a bit of a stretch?) that's only 900 unique images possible (30 silhouettes * 30 colors). Because of the birthday paradox, we expect a collision once we reach the square root of the number of uniques, so an install with just 30 users would have a roughly even chance of having two users with the same portrait. We'd expect something like a thousand users to have the same portrait as at least one other user on this install with 30K+ users, I think, unless my math is off? These numbers all get smaller if we can't come up with 30 visually distinct colors.
We could composite in other effects, like: horizontal flip / borders / overlays / foreground color. If we have 2 orientations * 3 borders * 4 overlays * 10 foregrounds colors * 10 background colors * 30 silhouettes, that's 72,000 avatars and we don't expect a collision until an install has ~270 users. But that's a lot of different stuff to photoshop and a lot of the results will probably not be super distinguishable.
We could just drop the silhouettes (since we're probably going to get a Cease and Desist from Nintendo some day anyway) and use abstract art like identicons, but I think those avatars are kind of garbage. They're visually distinct but not visually interesting, and just look like a programmer programmed a computer to solve this problem in the most straightforward and logical way possible:
Ideally, with limitless time and resources, I'd rather try to composite a more interesting image out of elements like these: http://meta.stackexchange.com/questions/37328/my-god-its-full-of-unicorns
They're kind of ugly, but they get enough variation by having many variables (clouds, rainbows, unicorn pose, color, horizon height, expression, eye color, horn length, etc). Compositing and color-shifting is pretty easy, but I'm not sure how to get a library of assets.
The flash game "Pimp my Gun" is basically just a big library of firearm components that lets you make things like this:
...and SpaceshipGenerator, a random generator for spaceship geometry made the rounds a while ago:
I think these are much more interesting ways to get a bunch of unique random images. For many reasons, guns and spaceships are pretty bad choices for avatars, but I think we could get more interesting results by pursuing something in that general direction. Maybe we could create heraldic sigils from a library of shape templates, patterns, colors, and embelishments?
We'd need to buy/hire some assets like this, but that's probably doable:
I could also just freehand this stuff as a first pass and get the compositing engine online, and then we can get a professional to replace the assets with good assets if the results look awful but not in a hilarious way.
But, third, I don't really see a way to get results that are (a) sufficiently varied to be unique and (b) actually look good instead of looking like garbage / random noise, without a lot of work.
Or we can do a 30 silhouettes x 15 colors version and just accept that a duplicate is expected at ~20 users.
if gd is the main limitation, don't worry about generation. I can script out hundreds from photoshop, it's not a hard task.
I do like when installs overlay the first letter of my username
Anyways, I think auto-gen is separate from this, and I'm happy to just make another 20 images for "builtins" for today and we can punt for auto-gen later?
If we're going to ship a version which is "different silhouettes + different backgrounds", I think we should use the existing silhouette + background compositing logic from Projects, not manually generate and commit a large number of pre-composited images.
One mild concern with committing images is that they stay in history forever. Our .git/ is already about 150MB. At some point we'll need to switch away from git-based deploys for the cluster, which will be a pain, and dumping a bunch of binary assets into the repository hastens that day.
If we use the existing compositing logic logic, you'd have to do non-colored silhouettes anyway, so you could just generate 26 silhouettes instead (A .. Z) for now if that's the end state you want, and we could do the automatic username-based composition later without needing new assets (that is, today, users would "Choose Icon and Color" and be prompted to choose among 26 letters and ~10 colors). Technically, usernames can start with digits too, so maybe 36 silhouettes with the digits.
src/applications/people/controller/PhabricatorPeopleProfilePictureController.php | ||
---|---|---|
122–123 | Oh, toss ths? |
Well something is afoot, it no longer generates them full-res. I can't quite figure out what I did wrong.
I think you're seeing a cached file. There's no way to purge the cache without manually going into the database right now:
mysql> DELETE FROM phabricator_file.file WHERE builtinKey IS NOT NULL;
The files will automatically expire on their own and be regenerated sooner or later (72 hours?). After manually deleting the cache, I get high-res images:
Ok works, this was a clean install from yesterday, so I'm not sure how I could have generated all the old images already.