
Designing GitHub for Windows - bpierre
https://github.com/blog/1151-designing-github-for-windows
======
aggronn
This is the first time I've heard raving reviews about XAML from people
familiar with HTML.

XAML has just been total let down since I've had to learn it for an ongoing
Silverlight project.

edit: Some people have asked why I didn't like XAML. My pragmatic concern has
to do with the workflow and design of UI elements. You shouldn't need blend to
edit validation styles efficiently. I know you don't _need_ blend, but you
can't just go in and add a single line to change the color of an invalid
toolbox border--the alternative to blend is to (afaik) copy the entire style
resource that the element uses from MSDN, dig into it to find the appropriate
10 lines of useless markup that surround one word property.

CSS is infinitely more simple than XAML style resources.

I'm also very partial to the pseudo separation of concerns where HTML is for
semantics, and CSS is for style, and JS is for effects. Tying all of those
things into one XML based language just doesn't make sense.

That said, the whole MS C# stack has really been great to work with outside of
XAML and its default elements.

~~~
powertower
The majority of people that I've heard criticize XAML are people who are just
starting out with it (and hence are clueless, literally).

Everyone else, including myself, see it for what it is, one of the best ways
to build up, iterate/change, and maintain a UI.

Nothing else even comes close.

edit: I write XAML mostly manually, not via a designer. I also don't subscribe
to any particular rule-set about using or not-using code-behind, particular
ways of databinding, etc.

~~~
jinushaun
I've been working with XAML for years on a regular basis. It sucked in 2009,
and it still sucks now.

It quickly progresses past hand editing on any project of any significant
complexity. (Read: a real app) So Blend is required, especially if you're
doing animations. VS is only slightly better than notepad for XAML.

XAML parsing is consistently broken in Blend and VS, so bad markup breaks the
entire file without any meaningful error message. On a related note, it is
very difficult to make "Blendable" XAML files. Wiring up data-binding kills
blendability. You end up opening a lot of "blank" files in the designer.

MVVM is a pattern to avoid having to deal with XAML.

XAML is more of a human-readable file format than a presentation markup
language. You have a lot of information about the app/state mixed in with the
UI markup. You need to have a solid understanding of the C# underneath to use
XAML properly.

Designers should NEVER be allowed to produce their own XAML, especially in
Blend. It's worse than Frontpage. The cake is a lie. Designers still live in
Photoshop and Illustrator. Programmers are actually the main users of Blend.
The root problem is that you can't produce usable XAML without also knowing C#
and the .NET Framework. In other words, you have to be a programmer to
generate XAML in Blend. Fail.

~~~
MartinCron
_The root problem is that you can't produce usable XAML without also knowing
C# and the .NET Framework. In other words, you have to be a programmer to
generate XAML in Blend. Fail._

That's like complaining about gravity or friction or taxes. Give me an example
of a software tool that non-programmers can use to generate working software
and I'll eat my hat.

~~~
SideburnsOfDoom
> Give me an example of a software tool that non-programmers can use to
> generate working software

XAML isn't working software. It's markup. UI.

For an example, I've seen designers generate great HTML+CSS (and then leave
the data queries and ajax post to coders who don't have the same design
sense).

Designers use tools, _and_ they edit the resulting textual markup by hand.
Because understanding that markup and having an aesthetic sense about when it
"looks good", has low repetition etc is part of their skillset.

------
kennu
I wonder if I'm the only one who doesn't really like the GitHub Windows user
experience?

The most confusing thing is what you see when you select a repository. It
shows you the commit details and diffs of the latest commit. That makes you
feel like something is wrong or pending so you need to respond to it. The
latest commit and its diffs are really not the main point of interest in that
situation.

I would much prefer to see a tree view of the current files in the repo (and
maybe the README), just like on GitHub. That would be the most natural way of
browsing the files, opening them by clicking, and seeing what has been
modified.

That would make you feel that you are in control and understand what's going
on right from the beginning. Even if you're a newbie or non-tech guy.

~~~
citricsquid
That annoys me too. Also the cryptic error messages, the Windows client is (I
assume) for people that aren't all that familiar with git and would prefer a
UI so when my commit fails and I get an error message that a) when googled
produces 0 results b) doesn't link to a help doc and c) has "open shell" as
the solution it's very frustrating.

------
noselasd
Scott Hanselman also got Tim Clem and Phil Haack talking about this on the
recent podcast, [http://hanselminutes.com/320/developing-github-for-
windows-w...](http://hanselminutes.com/320/developing-github-for-windows-with-
phil-haack-and-tim-clem)

------
lucidquiet
I kind of wonder if Spotify for Windows would have benefited from these design
decisions. I'm happy to see that Github embraced the OS/platform rather than
treat it as an ugly inconvenience. I'm very much platform agnostic, but when
something works well on one platform and then terribly, or sub-optimal, on
another, I feel like the programmers are making some statement about their
preferred OS/platform rather than making solid software.

~~~
ConstantineXVI
AFAIK, Spotify's "app" is mostly a Chromium shell on all platforms.

~~~
Ineffable
Indeed. It feels surprisingly native despite this, though.

------
jcromartie
It's nice to see Github building apps for each platform, without taking
shortcuts. It's so much more pleasant to build AND use native apps with things
like XAML and the Metro UI vs. making kludgy HTML shell apps.

~~~
pjmlp
Spot on, it about time people realize that HTML apps are a kludge.

HTML is for documents.

------
EToS
I really like the native development approach for UI, too often the design of
ported apps feel like an after thought, unless your on the OS it was
originally developed on

------
gagabity
A beautiful piece of software and a great help for those of us that loathe the
command line. I was just looking through GitHub today trying to figure out how
the look was achieved since I couldn't find any Metro controls in VS.

------
nwienert
Anyone else find the font, especially the bold, grating? I don't think it's
just the rendering but also the size and actual font (feels so big and
cluttered in that merge request page).

------
gbog
Genuine question, did Github consider doing a local web app? If I want to
browse my local code I may be more familiar with the HTML interface.

------
damian2000
Good to see a bit of love for XAML and WPF on HN. I've been developing with it
for the past 2 years - don't know how I worked without it.

------
DigitalSea
Now if only they can fix the constant crashing and then I'll be happy. No
point in having a nice design if the application crashes so much that people
can't see it.

~~~
tclem
Send us an email at support@github.com if you are having trouble and we'd love
to sort it out.

------
pacomerh
Great design. I wish windows in general looked like that, a complete redesign
that would get rid those ugly thick transparent borders.

~~~
gouranga
Windows 8 fixes that.

