Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Start-up Behavior #872

Closed
Closed

Description

@smashwilson

The problem

There are three competing factors we need to balance in our start-up behavior:

  1. Discoverability. Users who launch the next stable version of Atom should be presented with a clear reminder that this package exists. They shouldn't need to hunt around online to discover how to access it.
  2. Screen real estate. Especially for users who are downloading Atom for the first time and being presented with the Welcome panes, screen real estate is at a premium. Launching with the right dock expanded and the tree-view open by default squashes the Welcome panes and is visually overwhelming: screen shot 2017-05-25 at 9 21 49 am
  3. Likelihood of use. When first launching Atom, users are more likely to need to interact with the tree-view right away to explore the current project than they are to perform a git operation. In the general case, they're likely to close the panel right away most of the time.

Our current behavior, introduced in #685, is to activate the git and GitHub tabs on the first run of any project. That achieves (1) but I think we all agree is a bit aggressive for (2) and (3).

Use cases

I believe we have two categories of users to consider:

  • Existing Atom users who are upgraded to 1.18.0.
  • Users downloading Atom 1.18.0 as their first Atom version.

We can probe atom.config.get('welcome.showOnStartup') as a proxy for detecting this.

Proposed solution

Here's what I'd like to implement:

If the Welcome panes are active default the git and GitHub tabs to off to account for (2). Record that the first launch has occurred in the package config. Rely on the Welcome guide section proposed below to account for (1).

If the Welcome panes are not active and auto-launch hasn't happened yet in this Atom install, default the tabs to "on" to aid (1), then record that the first launch has occurred.

If the Welcome panes are not active and auto-launch has already happened in this Atom install, default the tabs to "off" to account for (3).

🗒️ Note that this behavior only applies if deserialized project state is not present. If there is project state, the git and GitHub tabs will continue to respect their last serialized state.

🗒️ Detecting whether or not auto-launch has already happened requires a place to store project-independent, global state that's "owned" by the package. I've opened atom/settings-view#954 to address this. To accomplish this, I'm using a flag file in the Atom config directory.

Alternatives

A much simpler approach would be to introduce an explicit github.showOnLaunch setting to control whether or not the panels are displayed. This has the added advantage of consistency with the way the Welcome guide works. The downside is that it isn't as obvious as it is the Welcome guide - the Welcome panes include a checkbox to disable the setting directly in line, while users would need to hunt for ours. Also, I have a few questions with this:

  • Do we default to "true" for (1)? If so, what do we do about (2)? First impressions are valuable.
  • How do we interact with saved project state? Do we replace it entirely with the explicit option? Or do we only respect showOnLaunch when no state is present?
  • Can we do both - use the behavior proposed above if showOnLaunch is undefined, but respect it as always-true or always-false if explicitly set? Maybe we can make showOnLaunch an enum setting with three values: "always", "never", "only once"?

Other discoverability aids

We can aid package discoverability and user learning in a few other places within Atom:

/cc @kuychaco @BinaryMuse @simurai @nathansobo @lee-dohm @damieng for comments, feels, and feedback.

Activity

  1. self-assigned this
    on May 25, 2017
  2. damieng commented on May 25, 2017

    @damieng
    Contributor

    One thing to bear in mind is that the very first launch there won't be a current project so problem 3 might not be as bad as you think. (Getting to it is covered by the first block in the welcome - open a project)

  3. smashwilson commented on May 25, 2017

    @smashwilson
    ContributorAuthor

    One thing to bear in mind is that the very first launch there won't be a current project so problem 3 might not be as bad as you think. (Getting to it is covered by the first block in the welcome - open a project)

    Oh, is the tree-view hidden on first launch? What if the first launch is from the command-line with a project path?

  4. damieng commented on May 25, 2017

    @damieng
    Contributor
  5. simurai commented on May 27, 2017

    @simurai
    Contributor

    Saw this tweet the other day and yeah, having the Git panel open makes things pretty crowded.

    screen shot 2017-05-27 at 11 12 48 am

    But I think your proposal should never show Welcome and Git panel at the same time, so it should be fine. 👍

    Some more random thoughts:

    1. Is 800x600 the initial size when opening Atom for the first time? We could increase that maybe to 1000x600 or even more. I assume if your screen is smaller, it will just open at max width.
    2. The current "create repository" view doesn't feel that welcoming. A bit like "things are not ready and still need to be setup", which is true 😉. So for the first run we could show a welcome view for the Git panel too. Maybe the GitHub logo and then some intro text and most common keybindings. That welcome view would disappear as soon as you open a project, either showing "create repository" or the "commit view".
    3. Some apps when updating to a new version show some kind of "what's new" notification. We wouldn't have to use it for every release, but for new features like the docks and GitHub package, might be nice to inform people. Can just be 1-2 sentences and then a link to the blog post or button to open the panels. That would be an alternative to "Proposed solution 2".
  6. smashwilson commented on May 30, 2017

    @smashwilson
    ContributorAuthor

    Is 800x600 the initial size when opening Atom for the first time? We could increase that maybe to 1000x600 or even more. I assume if your screen is smaller, it will just open at max width.

    Huh, it certainly looks like it is.

    The current "create repository" view doesn't feel that welcoming. A bit like "things are not ready and still need to be setup", which is true 😉. So for the first run we could show a welcome view for the Git panel too. Maybe the GitHub logo and then some intro text and most common keybindings. That welcome view would disappear as soon as you open a project, either showing "create repository" or the "commit view".

    I'm 👎 on putting a welcome state into the GitHub package itself... it feels too redundant with the actual Welcome pane to me. I prefer to present users with a single, as-unoverwhelming-as-possible, guided introduction to the things that they can do. The more we need to split user attention on that crucial first launch the less effective each will be.

    The general "create repository" and "initialize repository" views could definitely stand to be more inviting, though. 🤔

    Random associated thought: maybe we could add some controls to the tree view when no projects are present, some of which could relate to git operations? "Open existing project," "create new project," "clone project from a git repository."

    Some apps when updating to a new version show some kind of "what's new" notification. We wouldn't have to use it for every release, but for new features like the docks and GitHub package, might be nice to inform people. Can just be 1-2 sentences and then a link to the blog post or button to open the panels. That would be an alternative to "Proposed solution 2".

    Oh, I like this. I know @BinaryMuse has Thoughts ™️ on an overhaul for Atom's notifications system. Maybe this could be a part of that?

  7. smashwilson commented on May 30, 2017

    @smashwilson
    ContributorAuthor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions