Skip to content
This repository was archived by the owner on Mar 3, 2023. It is now read-only.

Atomicons#14657

Merged
simurai merged 6 commits into
masterfrom
sm-atomicons
Jun 2, 2017
Merged

Atomicons#14657
simurai merged 6 commits into
masterfrom
sm-atomicons

Conversation

@simurai

@simurai simurai commented May 27, 2017

Copy link
Copy Markdown
Contributor

Description of the Change

This adds an Atomicons icon set. Similar to the Octicons, but has custom icons created for Atom only. Initially includes icons for the Outline view:

screen shot 2017-06-01 at 2 23 25 pm

Usage

Just like the Octicons icon icon-xxx classes, but grouped with an icon-entity prefix. Example:

<span class="icon icon-entity-array">array</span>
<span class="icon icon-entity-boolean">boolean</span>

Alternate Designs

A better approach would be to use SVG for the icons, instead of a font. Then the icons could be multi colored, be animated, easier to position without sub-pixel blurryness and easier to update/maintain.

Downside: You can't just use a class to add an icon. The SVG needs to be added to the DOM. Atom would need some sort of <atomicon name="array" /> to <svg class="atomicon atomicon--array"><path d=....</svg> injector. Like etch-octicon.

Maybe still worth to try that before making these part of the official style guide. This PR is mostly to add icons to the Outline view package.

Why Should This Be In Core?

The Octicons are also in core.

Benefits

More relevant icons.

Possible Drawbacks

Maintenance cost.

Credits

"Atomicon" name: @Alhadis (somewhere in one of those issues).

@Alhadis

Alhadis commented May 27, 2017

Copy link
Copy Markdown

Nice start, but I'm already seeing a lot of geometry that can be culled to produce the same curvature. You did say it was a WIP, though.

Please remember to avoid including margins, too. I've ranted about this topic so many times, but nobody listens...

@alexandernst

Copy link
Copy Markdown

Not really sure why 'function' has a 'filter' icon. 🤔

@YurySolovyov

Copy link
Copy Markdown

Maybe it is a matter of taste, but I'd say that function icon should have lambda on it

@YurySolovyov

Copy link
Copy Markdown

Also, module one looks too much like package. For modules I think the common metaphor is a piece of puzzle, or some object that has some connection points to it.

@simurai

simurai commented May 30, 2017

Copy link
Copy Markdown
Contributor Author

@alexandernst Not really sure why 'function' has a 'filter' icon.

I probably got @damieng's guidance wrong:

image

I thought => is meant as a "funnel".

@YurySolovyov Maybe it is a matter of taste, but I'd say that function icon should have lambda on it

Is "lambda" this λ, from the greek alphabet? Heh.. that looks like an upside down funnel. 🙃

@YurySolovyov

Copy link
Copy Markdown

Yeah, but it is a familiar metaphor for many

@thomasjo

Copy link
Copy Markdown
Contributor

@alexandernst

Copy link
Copy Markdown

@simurai a lambda is usually a 1 liner function in many languages, this is why the lambda symbol (λ) is usually used as "function".

@thomasjo

Copy link
Copy Markdown
Contributor

@simurai a lambda is usually a 1 liner function in many languages, this is why the lambda symbol (λ) is usually used as "function".

Have any examples of that? Several languages I use daily use the term "lambda", but never the symbol. E.g. Python and C++. The context isn't really a traditional function though — the context is usually always an anonymous, inline function. Not saying it's necessarily a bad choice, but it's hardly common. I've never seen an IDE use the lambda symbol to indicate a function.

@YurySolovyov

Copy link
Copy Markdown

Well, Eclipse's "dot" and VS's "box" are not super-descriptive to me, though one can say these will be more familiar for people who used these IDEs.

Should Atom set up a precedent of showing functions as lambdas?

@alexandernst

Copy link
Copy Markdown

@thomasjo The symbol lambda (λ) is not used in any language (that I'm aware of). But the fact that it's called lambda allows us to link it to lambda the symbol (λ), the same way we mentally link a diskette to "Save", even if computers nowadays don't have a diskette (nor we're actually saving to an external drive).

@alexandernst

Copy link
Copy Markdown

Another option would be to create an icon with the text f()

@simurai

simurai commented May 30, 2017

Copy link
Copy Markdown
Contributor Author

Here a version with the lambda symbol for function. Then wrapped in a circle for method. And for module it's more like "blocks" that you can use to build something:

image
image
image

And in context:

image

@Alhadis

Alhadis commented May 30, 2017

Copy link
Copy Markdown

Could we get some context on where/how/when these icons will be used?

@damieng

damieng commented May 30, 2017

Copy link
Copy Markdown
Contributor

The icons will be used on Outline View and AutoComplete as part of the atom-languageclient work.

@damieng

damieng commented May 30, 2017

Copy link
Copy Markdown
Contributor

As an aside using the Lambda symbol is problematic as soon as you put it in a circle (class) as you end up with something confusingly similar to the Half-Life logo
image

@YurySolovyov

Copy link
Copy Markdown

I think Valve is smart enough not to complain about it :)

@Alhadis

Alhadis commented May 30, 2017

Copy link
Copy Markdown

@damieng I believe simple geometry is ineligible for copyright; and theoretically, this isn't that far removed from copyrighting a capital L... at least if you're a Greek-speaker. =)

@damieng

damieng commented May 30, 2017

Copy link
Copy Markdown
Contributor

I'm okay with merging this for now so we can start on getting it implemented in the right places. If we need to tweak icons later we can.

It should be quite easy for people to create themes that mimic their favorite ide icons later.

@Alhadis

Alhadis commented May 30, 2017

Copy link
Copy Markdown

Speaking as a graphic designer, I feel the choice of icons is too literal.

If I weren't so tired, I'd draw some examples of how abstracted geometry helps, but yeah...:(

@damieng

damieng commented May 30, 2017

Copy link
Copy Markdown
Contributor

I don't think we want to go abstract. A lot of the other IDE's already do that and I think we'll just get into "I got confused because X does Y for this please change it"

@Alhadis

Alhadis commented May 30, 2017

Copy link
Copy Markdown

Thing is, if you're relying on an icon to convey the exact meaning of a function, that's pretty bad UX. Not to mention the cross-culturally insensitive. Different cultures are inclined to associate different meaning to certain imagery.

Anyway, doesn't matter. If you're happy, go for it. =) I won't even be seeing the icons, since I don't use outline view and have autocomplete turned off.

... I must sound so backwards to other Atom users, LOL.

@damieng

damieng commented May 30, 2017

Copy link
Copy Markdown
Contributor

Cross-culture is always a problem and some other IDEs are using letters (much worse, rely on English) and colors (also culturally sensitive). Additionally using f for function only makes sense in certain programming languages - would we then use 'm' for method? What about languages like VB.NET where it might be a Sub or a Function?

Really there is no silver bullet here and Atom doesn't even support localization today.

I think the icons we have above are good representations. There's a little bit of cultural stuff with numbers/letters/package/key however these are all heavily-used ideograms most users will be familiar with.

@Alhadis

Alhadis commented May 30, 2017

Copy link
Copy Markdown

I suppose. IMHO, I feel types are better distinguished using different background colours (which autocomplete-plus uses anyway, right?)

Still, good points all around. And yeah, if any symbol should represent a function, it probably shouldn't be an 𝑓.

@damieng damieng left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ooops, only just noticed WIP. Ignore me :)

Now they should snap to whole pixels
@simurai

simurai commented Jun 1, 2017

Copy link
Copy Markdown
Contributor Author

@damieng confusingly similar to the Half-Life logo

Damn.. now that you mentioned it, can't be unseen. 🙈

Well, here the refined version. All icons should now snap to whole pixels and look sharp also on non-retina screens (unless they get resized/realigned):

screen shot 2017-06-01 at 2 23 25 pm

Since the next release is getting closer, I'll merge this once it goes green. Then the Outline view has at least "something" and doesn't have to wait another month.

@simurai simurai changed the title [WIP] Atomicons Atomicons Jun 1, 2017
@simurai

simurai commented Jun 1, 2017

Copy link
Copy Markdown
Contributor Author

How do you call these "variable, function, etc"? Is "entity" ok? Found it here.

Because rather than adding a new atomicon class, the new icons use the same icon icon-xxx convention, but grouped with icon-entity like:

<span class="icon icon-entity-array">array</span>
<span class="icon icon-entity-boolean">boolean</span>

@thomasjo

thomasjo commented Jun 1, 2017

Copy link
Copy Markdown
Contributor

@simurai Immediate response is that they are types. If that's a bit too specific, I'd probably use the term construct as opposed to entity.

Naming Stuff is Hard

@simurai

simurai commented Jun 1, 2017

Copy link
Copy Markdown
Contributor Author

Thanks. 🙇 Changed it to type.

<span class="icon icon-type-array">array</span>
<span class="icon icon-type-boolean">boolean</span>

@simurai simurai merged commit 84d07e3 into master Jun 2, 2017
@simurai simurai deleted the sm-atomicons branch June 2, 2017 02:47
facebook-github-bot pushed a commit to facebookarchive/nuclide that referenced this pull request Sep 16, 2017
Summary:
Atom has a new icon set: atom/atom#14657

This diff adopts that icon set everywhere it can - for OutlineView, SymbolSearch and Autocomplete.

Reviewed By: hansonw

Differential Revision: D5847997

fbshipit-source-id: 6647d20b40b098cea178e4e4a92d1c68770efb8b
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants