Description
@technoweenie had this idea (backed by @calavera) that we adopt the awesome work on the Go port of hub (by @jingweno) as the official GitHub thing and call it “GitHub CLI”.
I 👍 this. My Ruby implementation of context.rb
is getting unwieldy and in hub v1.11 I feel I've reached the limit of how much I can speed up hub exection. I can't make it much faster than 50 ms due to Ruby interpreter slowness. Go port can execute in under 10 ms, and it's not even specially optimized yet. Go port can also be distributed as a pre-compiled binary, skipping the need to install Ruby, which can be especially tricky and error-prone for Windows users.
I've merged jingweno/gh with hub and pushed that to the "gh" branch here. It's all still rough, but it's a good start. More than half of the Cucumber suite in features/
already passes. The plan is that the next major release of hub will be Go-powered and our Ruby implementation gone by that point.
Some open questions:
- The project is publically going to be called “GitHub CLI”, but how do we call the executable? Ideally users would alias it as
git
, so it doesn't matter. We can keep it ashub
for compatibility, or we could name itgh
for shortness. - The next release will be a major release, so we can afford breaking API changes, but how much backwards compatibility do we want to keep? I say as much as possible, sans stuff that is currently deprecated and which we'll drop. That means we should support:
- Existing commands. I'm open to breaking & improving
hub browse
, though. - YAML configuration in
~/.config/hub
, although we should save the OAuth token elsewhere. hub.protocol
&hub.host
git config options. But we could move the values to YAML config.
- Existing commands. I'm open to breaking & improving
- Version number of the next release? I suggest the obvious v2.0.0.
/cc @defunkt since hub was originally his baby