
GitHub for Windows - sant0sk1
https://github.com/blog/1127-github-for-windows
======
jasonkester
Great news.

I got flamed a month ago [1] for noting how difficult it is to get up and
running on GitHub in the Windows world, where things like generating SSH keys
aren't exactly part of the daily routine. Glad to hear that they were
listening.

[1] <http://news.ycombinator.com/item?id=3871699>

~~~
drivebyacct2
"Scary crypto stuff"? So you don't understand how PKI works and you're trying
to use distributed source control? (I say this not to be a jerk, but because
there aren't exactly a wealth of good alternatives given it is a _distributed
source control_ mechanism. PKI comes with the territory and an SSH key
generation is part of that)

GitHub doesn't take any more setup than a standard Git setup takes (well,
outside of signing up, a very short process anyhow). Install the Git client
via the Windows installer, (point and click, a minute, tops). Generate an SSH
key. Upload the id_rsa.pub. Done. I mean, it would be one thing if they left
users in the dark about this, but I'm fairly sure that the "Thanks for signing
up page" links directly to the OS-specific meticulous step-by-step
instructions of generating the key.

I'm not sure you understand what it means to be flamed. Every one of the
comments is specific about your misconceptions and why signing up for a GitHub
account is as trivially easy as signing up for a Twitter account. (Using
GitHub as an oAuth account does _not_ require actually uploading a public key)

~~~
andybak
I get really sick of this attitude.

None of us want to understand every single domain of knowledge from set theory
or quantum physics up to cosmology or social psychology.

I personally have been forced to learn more low-level Unixy things than I ever
wanted to. I want to write simple and elegant front and back end code quickly
so I can spend my spare time honing UX and other human-facing aspects of my
work.

I resent being flamed because I don't fully understand the subtleties of zsh
or nginx or or whatever other shiny toy someone else happens to find essential
knowledge. Your world might not necessarily be mine.

~~~
wnoise
> None of us want to understand every single domain of knowledge from set
> theory or quantum physics up to cosmology or social psychology.

Speak for yourself. All of those are fascinating.

~~~
extesy
Speak for yourself. They are fascinating for you, but not for me or many other
people.

------
ConstantineXVI
Very well done. ClickOnce installer; solid UI (rare on Windows, I've found),
and even installs git hooks into PowerShell so there's no need to dump the
user into bash (unless they want it).

One downside, not entirely obvious how one's supposed to clone a repo with
this?

~~~
ineedtosleep
To be fair, the GitHub for Windows UI looks a lot like the Zune UI, which has
been around for a while now. I've not been able to try it yet on my Windows
machines, but the screens I've seen look like they borrowed heavily from what
Zune had.

~~~
generalk
GitHub for Mac borrows from a lot of good Mac UIs, and it looks like GitHub
for Windows does the same from good Windows UIs. Frankly I find this
refreshing. I'm tired of applications that build their own interaction layer
and then implement that across every platform regardless of that platform's
idioms. Or, even worse: Air apps.

~~~
elitrium
I don't think this is always such a good thing.

<http://artificialized.com/2012/05/github-for-windows/>

------
statictype
I'd be interested in learning how they implemented the UI - it looks like it's
native to Windows 8 but runs just as well on Windows 7. Would be interested to
hear what toolkit they used. So far, the UX has been impressive for a tool
that has historically not run very well on Windows.

 _Edit_ : They've mentioned the toolkits used at the bottom of the page.
Apparently this is written in C#.

~~~
xpaulbettsx
The UI was implemented using WPF4 and Blend. We also use a framework called
Caliburn Micro as well as a framework I wrote called ReactiveUI which
orchestrates connecting the UI to data via binding.

~~~
statictype
Thanks for the info. It looks like you chose to embed Chromium for rendering
markdown? What was the reason for not using an embedded IE instance (which is
already part of every Windows installation).

~~~
xpaulbettsx
IE doesn't participate in the WPF rendering system, so it would have all kinds
of glitches like it sitting above all other controls (referred to in the docs
as "Airspace Issues"), as well as unthemed controls (specifically the scroll
bar - stuck out like a sore thumb). The markup that READMEs use is _really_
simple, IE would've been fine for it.

~~~
erode
Airspace issues have been the bane of my existence until WPF3.5sp1. D3DImage!
Side note -- I also advocate Caliburn.Micro, it's great!

------
debacle
Please, please don't name your installer 'setup.exe'

When I browse to my downloads folder, the most frustrating thing in the world
is trying to figure out where 'setup.exe' came from.

~~~
1880
I think it's called that way because of some kind of naming convention that
Windows expects from installers?

~~~
skeletonjelly
Nope. But I think it's a part of ClickOnce, the technology they use to bundle
up an app into a setup.exe that fetches the latest source from a web server.

~~~
pseale
Nope. At work we have a similar setup.exe file. The setup.exe is a
bootstrapper that installs prerequisites first, then runs the ClickOnce
installer which is separate.

------
statictype
This is actually very cool.

I expect this will drive up the adoption of GitHub by a measurable amount.

------
RandallBrown
I really like the Mac app. Yes, it can be a little buggy and get in to some
weird states, but when it works, I think it is one of the best ways to use
source control.

I've been doing a lot of Windows development lately and I've missed a good git
tool. I'm very happy about this.

------
martinaglv
For those of you looking for a nice Git client for Windows, I suggest checking
out TortoiseGit[1]. I can't recommend it enough. It is such a powerful peace
of software and I am surprised it is not brought up in discussions more often.

<http://code.google.com/p/tortoisegit/>

~~~
trun
I use TortoiseGit (and was a long time user of TortoiseSVN before that), but I
find it to be a poor substitute for the command line. I feel like they tried
to make the names of git commands more user friendly, but having already grown
accustomed to misnomers like "git checkout" it often takes me a little while
to find the right action in TortoiseGit.

~~~
lancefisher
Checkout in SVN does not mean the same as it does in git. SVN Checkout is more
like Git Clone. Checkout in git means change to a different branch. You
"checkout a branch" in git.

I think it is better for TortoiseGit to match the semantics of git rather than
match the semantics of TortoiseSVN. It causes some confusion coming from SVN
for sure, but once you start using git, you should learn its dialect. It would
be worse if TortoiseGit did not match git's vocabulary.

~~~
trun
That was my point. For example, TortoiseGit presents "revert" instead of
"checkout" (e.g. on a file, not a branch). "revert" in git actually means
something else entirely.

~~~
lancefisher
Oh really? I used TortoiseSVN for a long time, and switched to the command
line when I switched to git. I can see why TortoiseGit kept the "revert"
naming, but I disagree about the choice.

------
tallowen
I find it interesting that both native apps (for Windows and Mac) try hard to
emulate the look and feel of their respective operating system.

One thing that is great about github.com and other websites is that it feels
the same across multiple environments. Furthermore web browsers try to emulate
their own style not that of the host operating system. If I use chrome or
firefox in mac or windows they feel basically the same.

I wonder if more applications will go in the direction of trying to match the
feel of the host operating system over the feel of there application as a
whole.

~~~
FuzzyDunlop
I would hope so. Being a good OS citizen is nothing but a good thing. Fewer
surprises, fewer quirks, more intuitive to the user (if done right), etc.

It's nice to know GitHub made the effort.

~~~
estel
Precisely. Making the effort is half the game. It's a similar scenario with
mobile apps: far too many Android apps are ported across from iOS without
consideration for the different platform (usually by using a tab bar). And it
really shows.

------
skeletonjelly
I'm sorry if this has been asked,

but since this is using your framework, xpaulbettsx, is the source for this
going to be available? I always love seeing open source functional
applications that use a certain framework or toolkit I'm considering. Makes
the divide between reading code/documentation and the end product just seem
that whole much closer.

------
jstepien
Finally an application with a UI which really nicely blends with the Windows 8
look and feel. Microsoft should be pleased.

~~~
Pewpewarrows
MetroTwit is the only other app with a great new Metro UI that I've found.

~~~
erode
There are several, they just don't get much attention these days.

~~~
revolutions
Do you have a list or such? I'd love to use these. I've only seen MetroTwit,
Zune, and this.

~~~
byproxy
<http://code52.org/DownmarkerWPF/>

That's one I stumbled upon a while back.

------
cool-RR
I've been expecting this for months, and as I guessed, it's pretty
disappointing. I think that SmartGit is a much better GUI for Git on Windows.

Just the fact that it doesn't have keyboard shortcuts is a dealbreaker.

~~~
tylermenezes
Really? I don't like SmartGit at all? It's so flexible that it's unreasonably
difficult to do even simple tasks.

I'm glad Github decided on a core feature set, and made those very easy to
access.

~~~
masnick
Agreed, SmartGit is a pain.

Like the Mac app, GitHub for Win doesn't support every single git feature but
it makes the ones it does support intuitive and accessible. Props.

------
guelo
Seems nice except for how it keeps pushing you to login to github, that would
probaby get annoying after a while if working with non-github repos. Also the
diffs weren't working with the java files I tried it with, it just minuses and
plusses the whole file, hopefully just a bug they can fix. This is my first
look at a Windows 8 UI and if this is representative of the fufure I am
worried, but it does looks pretty. Overall though this is a good effort.

------
shanemhansen
This is awesome. Personally I'm a linux user so git is one of those rare tools
that caters to me, but I've been in a few backwards development shops where
git was looked down upon because of inferior tool support on windows when
compared to subversion. I'm in favor of anything that helps bring windows
users into the git-using fold ;-)

------
debacle
This is very interesting.

Will this tool be able to work with non-github git repositories?

~~~
coolowencool
It picked up on my non-GitHub repos and initially, it seems like I can do all
the things I would expect a git repo to do.

------
edandersen

      "GitHub for Windows is a 100% native application"
    
      "The application is written in C#"
    

Is managed code the new native?

~~~
johns
"Native" now pretty much means not-web-based or using a cross-platform
framework (like Air).

------
harrylove
I hope this is the beginning of the end of TFS.

~~~
zokier
Not without VS integration.

~~~
MichaelGG
VS integration is only the start. Easily/automatically integrated build, test,
and work item integration is also pretty attractive.

------
eibrahim
I am interested in knowing how you integrated chromium in your .net app???
Could you share that info or blog about it?

~~~
ataranto
Chromium Embedded Framework: <http://code.google.com/p/chromiumembedded/>

CefSharp (.NET Bindings): <https://github.com/ataranto/CefSharp>

~~~
xpaulbettsx
Yep, use ataranto's fork, ours is hacked up and out-of-date.

------
eibrahim
Will this work with git repos on bitbucket? I use bitbucket because I can have
unlimited private repos for free.

~~~
facorreia
Yes, it works with any local git repository. I have a git repo linked to
bitbucket and I could use this tool to open it and work on it.

~~~
artursapek
Good on Github for not closing it off.

------
evanw
I'm interested to see how the community responds to their choice of ClickOnce
as the deployment method.

I use ClickOnce for several of my applications, and I'd say the users who
dislike it the most have the highest technical aptitude (which, I'd guess, is
a large part of GitHub's user base).

~~~
Splines
Interesting. What's the usual cause for complaint?

~~~
evanw
The most common questions/complaints I get are:

\- Why can't I find the installation directory? (ClickOnce doesn't use the
standard C:/Program Files/ location, it stores program files in C:/Users/<your
username>/AppData/Local/Apps/2.0 for security reasons.)

\- Why does the installer need a network connection? (ClickOnce downloads the
required setup files from the internet.)

The lack of a standard Program Files/.exe deployment also makes it difficult
to map filetype associations, which is also a frequent complaint.

I'll likely be going with non-ClickOnce deployments for the future. ClickOnce
is great for deploying production software at work, but for a consumer
audience, it isn't quite perfect.

(Personally, I really like ClickOnce.)

~~~
HarshaThota
Don't know if it's mature enough but have you looked at NSync
(<https://github.com/xpaulbettsx/NSync>)?

Considering that Paul has been working on it and yet choose to go with
ClickOnce, I am guessing it's not ready for prime time but it might be worth
looking into anyway.

~~~
xpaulbettsx
NSync isn't finished yet - ClickOnce is 95% of what we want but has some
pretty damning flaws (tells people randomly that an app is "Unknown
Publisher", certs expire after one year and now people _have_ to
uninstall/reinstall, proxy server problems, etc).

NSync is my ongoing (not finished yet!) project to recreate ClickOnce

~~~
HarshaThota
I figured that was the case.

How much of an overlap do NSync and NAppUpdate
(<https://github.com/synhershko/NAppUpdate>) share? Would love to see some
type of collaboration between the two.

BTW is there a way to submit tickets other than email for GitHub for Windows?
Maybe a GitHub repo? Would make it rather easy to submit and track issues
while also limiting the number of duplicates.

~~~
xpaulbettsx
NSync has a somewhat novel mechanism of delivering updates (via repurposed
NuGet packages) that would be difficult to shoehorn into NAppUpdate or other
frameworks

------
pjmlp
Great!

For someone that has one foot in both Worlds (UNIX & Windows) this is a
welcome addition to my toolset.

------
mkopinsky
Is there a standalone installer? I am behind a proxy and the installer doesn't
seem to get along with Tunnelier.

14:32:19.309 (unrecognized proxy protocol) connection from 127.0.0.1:3743
failed: Unsupported client protocol; the client may be expecting a regular
HTTP proxy.

------
dstroot
New to GIT - been using it only about four months. Using Windows 7 as my dev
machine. I found learning the command line to not be too bad and haven't even
really used the GUI toosl bundled with Msysgit. But I think I'm going to LOVE
using this.

------
jamesgeck0
Is there any particular reason that it leaves ssh-agent.exe running after it
closes?

------
toyg
Awesome tool, but I think it shows once more the terrible state of SSH in the
Windows world. It's scandalous how MS refuses to make it a first-class citizen
on the platform -- it should come pre-installed and pre-configured, or at
least with a config wizard, and have simple APIs for third-party apps.

Considering how MS are not really pushing a competitor, I don't understand why
they refuse to add such a simple thing. RDP is a completely different tool,
and anyway it's not really something you'd expose on the internet, so I don't
understand why they can't just integrate OpenSSH -- it's not even GPL!

------
protolif
I'm strangely reminded of when people said that Android support would kill
Instagram, because of their inferior cameras. (Don't shoot me. I'm an Android
user of Instagram.)

------
cocoflunchy
It's great - one downside though: it has added a Github folder in "My
Documents" that I can't seem to delete. I hate when unwanted folders pop in
like that.

~~~
LocalPCGuy
It was pretty easy to go into the Options and change the default folder, for
instance, I have a /git/ folder at the root of my drive with my repos in it.

------
novalis
Nice to see this happen. Though Git Bash running on mingw32 actually is very
handy, TortoiseGit also does a great job. But it is also good to have options.

------
ChrisAnn
Does it allow you to format your commit messages?

<https://github.com/torvalds/linux/pull/17>

~~~
eblackburn
You're brave sending pull requests to Linus on github for the Linux Kernel
from a Windows machine ;)

------
mkuhn
Really cool. Looking forward when it will also will allow me to track Issues
there.

One problem that is rendering it unusable for me atm though is that it tells
me that files contain changes that have not been touched and if I try to
discard those changes it actually has no effect. Wanted to report it but found
no way to do so on the GitHub for Windows page.

~~~
robertszkutak
I also have this problem. I let it commit and push the commit just to see what
would happen and the commit seems to have deleted and then re-added my files.
Even after cloning a repository it wants me to make a commit like this.
Afterwards it seems to work as expected though.

~~~
mkuhn
Yeah, seems to be an odd bug. Behavior for me is exactly the same as for you.

------
gadders
Slightly off-topic, but the name for the Powershell git scripts - posh git -
did make me laugh.

------
christianbryant
A part of me wants to cry, yet I was an early user of WinCVS back in the day,
due to workplace requirements. I know I will reluctantly be an early adopter
of this, as well, since GitHub is the cat's meow :)

------
veneratio
This is good to see some better abstraction for non-experts. While I much
prefer the command line interface, guis are a phenomenal way to introduce
someone to the "better way". Now we just need good guis!

------
mohsen
not sure about anyone else around here but this fella
<http://i.imgur.com/Q3d6N.png> has popped up twice for me in the first 5
minutes of setting up.

~~~
debacle
I'm having the same issues. Having trouble adding local repos, pinning repos,
and checking out branches.

I already had msys installed, so I'm concerned that GitHub may have tried to
install it again, causing conflicts.

------
gte910h
This is great, windows has a paucity of great git clients (unlike Mac).

------
base698
Was this developed on raw hardware or in a VM running on Linux/Mac?

~~~
TazeTSchnitzel
Would it make much difference? Hardware virtualisation is pretty fast, no?

------
dysoco
Now we just need GitHub for Linux. Though Linux might not like it.

------
gulbrandr
I really dislike this ClickOne installer. Where is it installed?

~~~
gulbrandr
I found github.exe:

    
    
      C:\Users\<username>\AppData\Local\Apps\2.0\51DBXE19.R1Z\RGNBRRL3.Q0Q\gith..tion_8f45a2159c87c850_0001.0000_c87fd0df5204df40\github.exe

------
urza
Is the app opensource? Looks really nice and I thing it would be great
learning app for the c# libraries you used, e.g. to see how you use the
reactive extensions..

------
ttrashh
Nice work xpaulbettsx! Great to see a Caliburn.Micro getting some props. We're
using it on a large WPF app now.

How many people were on the team? Did you let Phil write any Xaml?

------
wildc4rd
Finally! I've spent many hours scratching my head trying to get connected to
github through windows. I'm pleased to see this tool out.

------
mountaineer
Two attempts, two crashes. Still a little rough.

------
kjajula
A nice addition would be _Settings/Preferences_ where I can add or point to
internal company github.

~~~
LocalPCGuy
I would like the ability to add multiple folders to the path where it looks
for local git repositories. For various reasons, I have repositories clustered
in a few different spots on my drive. I tried to use the Windows Libraries,
but as expected, it wanted a directory.

~~~
jamesgeck0
You can drag and drop local repos onto the window and it'll pick them up. Not
the same as Library support, but it's something.

------
FreshCode
Wow, really beautiful Metro application. Thanks GitHub!

------
detay
Am I the only one having problems on 64-bit windows?

------
SonicSoul
great! i've been waiting for a long time for this.

------
lucassouza1
Great job!

------
santa_boy
is there a way to create a portable version of the windows app?

------
shpoonj
Very very very confused about why they chose to use an outdated logo for the
property.

------
pthread
Funny how most git users out there (at least according to the git user's
survery 2011 [1]) use Linux, yet github seems to go out of its way not to
build a tool for its majority of users. I would also go as far as to
extrapolate and state that most github users are Linux users (which is true
for every programmer I know on github).

Would it have been that hard to just use Qt and build a cross platform tool?
Or is that not hipster-friendly enough?

I guess it's cool to profit, not that cool to give back. I wouldn't use their
tool anyway but I think they're assholes on this one.

[1] <https://www.survs.com/results/Q5CA9SKQ/P7DE07F0PL>

~~~
Wilya
Instead of building for the existing community, they are trying to expand the
toolset to "seduce" other communities. Both are perfectly worthy goals. Just
different.

------
voxx
As a developer, I feel obligated to disagree with anything Windows. I'd
_honestly_ rather force people to use Linux or OSX than windows. I'd go so far
as to say I would totally exclude Windows users entirely and that I support
attempts to make it more difficult for a Windows user to use something.

~~~
recursive
That is why github will beat your social code management site.

~~~
voxx
in popularity, but not in functionality or in intelligence of user.

~~~
recursive
Mensa has a lot of intelligent members, but that doesn't mean it's good for
anything.

~~~
voxx
Try to stay relevant please, Mensa has nothing to do with writing code.

~~~
recursive
Thanks for the reminder. I was responding to your comment about "intelligence
of the user". My point is that, while it is a metric you can compete on, it's
not a particularly meaningful one.

