Skip to content

Instantly share code, notes, and snippets.

@djspiewak
Last active August 29, 2015 14:16
Show Gist options
  • Save djspiewak/e5df1776e61bc41bc412 to your computer and use it in GitHub Desktop.
Save djspiewak/e5df1776e61bc41bc412 to your computer and use it in GitHub Desktop.

Stash Shortcomings (relative to GitHub)

Doesn't work on mobile ANYTHING!!! This item should be on a giant, 2 meter poster in the Atlassian office. It should be in all caps, red text, with images of blood droplets dripping from the lettering. There should be a pager alert sent to a random project manager every night at 2am containing this text until such time as the issue is resolved. There are no words for how much of a problem this is.

General

  • Did I mention that it doesn't work on mobile?
  • Performance. Across the board. In everything. Rendering reflow. Server-side latency due to reading out repository data. Everything. It's all very very slow compared to the same operations in GitHub.
  • Doesn't support syntax highlighting in Markdown. GitHub flavored Markdown is the standard for this sort of thing.
  • Why does the "Overview" tab exist at all? It shows nothing that the "Source" view doesn't show, and what it does show is of tremendously limited usefulness.
  • The distinction between users (requiring the ~ prefix) and organizations (prefix-less) is extremely weird. Why was this necessary? Among other things, it makes the third-party tooling a lot more complicated, since you need to always check to see if you're dealing with a user or an org. This also makes it quite difficult to navigate to an arbtrary user's fork. In GitHub, I know I can always get to a fork by loading https://github.com/name/repo, where "name" is either the user name or the org name (it doesn't matter!). I actually have no idea how to do this with Stash, and the fact that it isn't blindingly obvious is in and of itself a problem with the UX.
  • General UI inconsistencies and lack of polish. For example, load the "Source" view and look carefully at the text of the branch drop-down (e.g. "master"). Now, open a file in the source view and look at the text again. Go back and forth a few times if it's hard to see. You'll notice that the font weight is different.

Source View

  • Lacks the T keyboard shortcut from GitHub's main view. This is a massively, massively useful feature. Yes, I know "Search" exists, but if I can't access something with the keyboard, it practically doesn't exist.
  • Navigation allows h/j/l/k, which is at least something.
  • The "singleton directory drill-down" (e.g. opening src/ which contains only main/java/ resulting in opening src/main/java/) is at least something, but the implementation is far worse than GitHub's and much slower. Again, rip-off GitHub's experience whole-sale in this area.
  • Syntax highlighting seems very limited. Doesn't understand certain common file types (e.g. .sbt) or even certain significant elements of languages. Obviously not using Pygments or GitHub's highlighter, and I sort of wonder why neither of those are employed. Not that it matters too much in the current state of things, since syntax highlighting is basically only available in the source view, and the source view itself is of very limited usefulness without the T keyboard shortcut.

Pull Requests

  • It's incredibly hard to create a pull request. I'm not even 100% sure I know how to do it properly. When I first started using Stash, I had to develop a complex git alias that uses the Stash API to do the work for me, simply out of self-defense! GitHub's pull request user experience is excellent; you could do far worse than copying it straight-up.
    • Finding the "create pull request" button is always difficult, which is dumb because it's one of the most important things a developer can ever do with a repository.
    • The defaults for source and destination in the PR creation are confusing and often wrong. Before my alias, I created so many incorrectly-targeted PRs it makes me sad.
    • It's a multi-step process requiring two full page reloads. Really? Really?!?!
  • Notifications are awful. I want to be able to watch a project so that I get notified of any pull requests filed against it. At present, approvals are the best way to get this sort of notification mechanism (see below for the problems with this).

List

  • No indication of build status in the "Pull Requests" list (HUGE issue)
  • Approvals are a good idea in theory, but in practice, teams have a problem with the ambiguity of the mechanism. Are they supposed to get a sign-off from every approver before merge? What if someone is out of town? How do you flag a PR for an interested party but from whom you don't need approval? GitHub doesn't have any notion of approvals, and thus it forces teams to develop conventions for all of these things. Stash's mechanism subverts the development of these conventions in practice, and thus impairs usability.

Individual PRs

  • Overview
    • Non-configurable top-posting of comments and actions
    • Inconsistent comment threading (GitHub doesn't even try to thread individual replies, which is easier to work with). Also, new comments and actions are top-posted, but replies to comments and actions are bottom-posted? I have to keep mentally reversing gears in order to read a coherant timeline.
  • Diff
    • Extremely slow in every browser. Faster than it used to be, but still an order of magnitude slower and less responsive than GitHub's diff view
    • No syntax highlighting
    • Comments are absurdly slow, even to the point of sometimes slowing down text entry in the browser and preventing normal typing speeds.
    • Huge swaths of screen space are wasted on floating HTML elements that you can't scroll away from (e.g. the tree view). There's a shortcut to hide the tree view, but why is it even a thing? Clean up the floating elements and just list the files one after another, as in GitHub's diff views. I'm almost always reading diffs sequentially anyway, and so the non-linear navigation offered by the tree view is a spurious advantage.
  • Commits
    • I don't see a way to comment on an individual commit

Integration

  • Bamboo integration is almost non-existent. We had to write extensive custom code using undocumented APIs in both Stash and Bamboo to get pull requests to automatically build in Bamboo, which is an Atlassian product! Granted, we did this a year and a half ago, so maybe things are better now. Things are definitely better in GitHub though, even when building with Bamboo.
  • JIRA integration seems to work (at least, it does now). That's good, at least.
@kpmeen
Copy link

kpmeen commented Apr 23, 2015

I have a couple of more items for your list:

  • There's no built-in support for code snippets (Gists). It is possible to get a 3rd party plugin that adds the feature if you pay up.
  • There's no built-in support for online editing of files. Unless you install a premium 3rd party plugin.
  • Plugins for Stash tend to be very unstable (indeed that goes for the entire Atlassian suite). They also tend to be very slow.
  • The search box on the page header only allows searching for repositories! WAT? And even that doesn't work very well. If you want to search for a file, you need to know the project and repository this file is in. Then you need to select "search" instead of "browse" and use a completely different search box entirely.

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