
Things I would build if I worked at GitHub - holic
https://kevin.is/committed-to-github/
======
felixgallo
These are great, but they're bugfixes. You'd finish them in the first few
months. Then what are you going to do? Stare at an aquarium all day? Here's
what I would build if I worked at github:

* Github CI - simple CI for every language, integrating with:

* Github Artifacts - repository for versioned deployable build packages (binaries, tar.gz files, ios builds, android builds...), integrating with:

* Github Deploy - deploy tooling for deploying runnable artifacts or artifact combinations to either your own infrastructure, or to aws/azure/google, or:

* Github Cloud - instances/containers as a service

and the 'fork' button would be a pulldown that would include the options
'fork', 'fork and test', 'fork, test and deploy'. Now that's a nice little 3-4
year career.

~~~
kelukelugames
What is CI and why do people want it? I looked up the acronym on wikipedia but
couldn't figure it out.

~~~
davidcelis
Continuous Integration. A good example of that service would be something like
[http://travis-ci.org](http://travis-ci.org) or [https://jenkins-
ci.org](https://jenkins-ci.org). Basically it's a service that runs some
predefined task (usually your test suites) at important points: when something
is pushed to or merged into master, when a Pull Request is opened, etc...

~~~
pimlottc
It also, um, builds your code. Some of us still use compiled languages :P

------
danielsamuels
I've gotta say, I strongly disagree with this:

> GitHub already has a great code search

At some point in the last year or so Github rolled out a new search engine
which drastically reduced it's usefulness. Any moderately complex search query
now has all of the modifiers and key bits stripped out making your search
results unnecessarily cluttered and somewhat useless. I consider it to be one
of the worst parts of the site these days.

~~~
justinhj
Git grep is really fantastic, if github search came close I'd be delighted

~~~
p8952
Could you please elaborate on what parts of git-grep you find most useful?

------
Buetol
Just see the top requested features:
[https://github.com/isaacs/github/issues?q=is%3Aissue+is%3Aop...](https://github.com/isaacs/github/issues?q=is%3Aissue+is%3Aopen+sort%3Acomments-
desc)

* Change the target branch of a pull request pull-requests

* Delete / remove an issue completely.

* Gist comments and mentions don't trigger notifications

* Add HTTPS support to Github Pages

* Add ability to follow organizations like a user

* Insert automatically generated table of contents TOC on rendered markdown files like README.md.

* pre { tab-size: 4 }

~~~
beltex
> _Add HTTPS support to Github Pages_

This is technically already available, though not officially documented
anywhere [1]. Example [2]

[1]
[https://github.com/isaacs/github/issues/156#issuecomment-377...](https://github.com/isaacs/github/issues/156#issuecomment-37747957)

[2] [https://beltex.github.io](https://beltex.github.io)

~~~
holic
While that's true, I think the discussion in that issue has gone more towards
HTTPS support for custom domains.

~~~
tracker1
You could always use CloudFlare directly for that... I would presume that
their underlying connection to Github is very close and reliable in terms of
risk for MITM.

~~~
kirushik
Even better, you could CNAME your custom domain into the *.github.io domain,
which is protected by a wildcard https.

So you traffic between CloudFlare and GitHub will also be secured.

~~~
holic
Last I checked, this doesn't actually work with the way *.github.io is set up.

------
geofft
It seems like some of these (perhaps all of them other than fixing the "+1"
problem) can be done via API clients instead of via GitHub itself implementing
it. A third-party website can do wiki searches. A separate service can send
you email notifications, and you can turn off built-in emails.

Even the +1 thing might be solvable with a bot that edits each bug report to
add a clickable +1 badge (a la the CI build-passing badges) at the top; all
you need is to give the bot ownership of your repository. The badge can
display the current +n count, and the service can give you a sorted list of
open issues by +n. For bonus points, have the bot also harvest and remove
comments that consist of just "+1" or ":+1".

This is _Git_ Hub after all; why don't we build stuff ourselves instead of
waiting for a centralized closed-source company to decide they care about our
features?

~~~
Nadya
The +1 thing is solved by ZenHub - which I'm _amazed_ they've been unable to
gather a large amount of traction!

[https://www.zenhub.io/](https://www.zenhub.io/)

Not affiliated, used it, but without _others_ using it it's largely...well..
useless. :)

E:

Hmm... seems it has become $5/mo to use. I remember it being free. Wonder when
that happened?

E2:

 _> ZenHub is free for the open source community._

Oh.

~~~
geofft
ZenHub was the name I was trying to think of, thanks, but it seems like a
thing everyone needs to opt into to make good use of (I think? in that it's a
browser extension?). The idea I had is more along the lines of the CI badges,
which don't require any action on the end-user's part. It's just an image
inside a link, so it works in every browser already.

If ZenHub supports making its features available to OSS projects without
needing every contributor to install the extension, that's much more
compelling, and also totally not obvious from their website.

~~~
Nadya
_> it seems like a thing everyone needs to opt into to make good use of_

Yep! Which is why I gave up on trying to use it. I thought it would gain major
traction given how useful it is - but I felt like the _only_ person using it.
So I eventually removed the extension.

 _> Not affiliated, used it, but without others using it it's largely...well..
useless. :)_

------
Jemaclus
The only thing I really, really want is paginated diffs for pull requests.
C'mon. If I have 300 files, don't show me the first 15 and then say "well,
this is too big, you'll just have to imagine what the rest of the diff looks
like." Does Google return the first page and then say "the rest of the
internet isn't available to you because we don't want to paginate things"? No,
of course not. Just freaking paginate long diffs.

Gah.

------
fiatjaf
A better way to browse forks.

If today you see that a major repository has a fork with a lot of commits, you
cannot know without looking through THEM ALL if they are just typo fixes or if
the fork is really changing/improving things over the main repo.

~~~
danieltillett
This. The amount of time I have wasted looking in forks is staggering.

~~~
knappe
100% agree. I wish there was some way to also promote a fork, other than
changing the readme to point to the new fork, which also means mucking up the
history of the project.

------
simonw
The biggest thing I want from GitHub is the ability to search commits. GitHub
are pretty good at search (their issue search is fantastic, and their code
search is decent enough) - but the data I most want to search are the commit
messages in my repo.

I understand this will be a huge amount of data (they must have hundreds of
millions if not billions of commits by now). I'd be perfectly happy if this
was only available for paid repositories.

The ability to then further facet and filter searches by author, file,
directory etc would be unbelievably useful.

~~~
simonw
Oh, and while we're talking pony requests... I'd dearly love to be able to use
gists within the scope of an organization. It would be fantastic to be able to
share code snippets that were only visible to other organization members (and
searchable and so on).

~~~
iancarroll
I know this isn't exactly what you want, but GitHub Enterprise comes with
Gist.

------
andrewbinstock
By far the biggest thing I wish github would do is change the text entry
beside the file names. Right now, it shows the comment of the last push of
edits to that file. That's great for members of the project.

However, for non-members it would be far more useful to know what the file is.
Here, enabling a one-line description would be hugely helpful.

Since GH knows if you're a member of the project it can show you the right
text--description or latest update. And presumably, a button would allow you
to see the other text if you needed it.

~~~
hyperion2010
If you don't know where to look it can take a surprisingly long time to find
things like:
[https://github.com/torvalds/linux/blob/master/Documentation/...](https://github.com/torvalds/linux/blob/master/Documentation/HOWTO).
It is obvious once you know, but unless you know are in the habit of checking
all the 'likely places' such a doc would be you are going to be lost. While
one could allow annotations on top of files in github it would completely
fragment real and important documentation efforts and leave information
scattered in 10 different locations that no one could pull back together.

------
kzhahou
They'll need another $100 million to get these done!

(Yes, by which I am saying their website has not improved much given their
massive funding)

~~~
bqe
It's actually very surprising how little visible improvement GitHub has had in
the past few years.

What are they working on?

~~~
danieltillett
Marketing by the looks of it. I have to say I like what Gitlab is doing these
days much more than GitHub.

~~~
sytse
Glad to hear that, our company and community tries to keep shipping!

------
stevekemp
I see people here posting issues of their own, but I'm amazed nobody has yet
mentioned the lack of IPv6.

I've setup a few machines with IPv6-only network connections, and it makes
pulling my dotfiles from github a pain since I need an IPv4-proxy/tunnel to
access github.com

~~~
justincormack
Given up complaining for now. They just don't seem to get it.

------
sytse
Great list, we're working on making something that makes +1's less noisey. If
you want the possibility to contribute to the tools you use daily consider
using our GitLab. It is open source and more than 800 people have contributed
already.

~~~
qmr
Why is there no IPv6 support?

~~~
sytse
I think GitLab supports it [https://gitlab.com/gitlab-org/omnibus-
gitlab/issues/412](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/412)
but we have not had the time to set it up for GitLab.com yet. We'll be moving
our infrastructure to Azure soon so it is not a priority for us now.

------
foolfoolz
git hubs worst problem: FIXED WIDTH CODE READING

code is read way more often than written. and on github website all you can do
is read it. why the viewports don't take up the entire screen width i will
never understand.

~~~
baddox
Yeah, that's a puzzling one. I've been using a browser script for a long time
now to make the code view full width.

~~~
gknoy
I don't use it often, but I have a Javascript bookmark [0] that I use in
Chrome when the 100-character width is excessively abused. Over time, I found
I dislike using it enough that I now try to limit my lines to 100 characters
in my editor, so that my github diff presentation is easier to read.

I'm sure there's an easier way to do this. I'm pretty certain I cribbed the
method of setting a style from a StackOverflow article or other thing found
online, but that was three years ago so I do not recall where it was. (Sorry.)
I think all I did was poke around the Chrome debugger until I found the styles
I needed.

0:
[https://gist.github.com/gknoy/0cc03a6401103bf41daf](https://gist.github.com/gknoy/0cc03a6401103bf41daf)

------
jarjoura
My biggest pet-peeve about GitHub is its issue tracker system. It's great for
one-off issues or tracking a pull-request, but beyond that its design is super
unwieldy. Such a missed opportunity to crush JIRA, et. al.

~~~
anton_gogolev
What do you miss the most or find cumbersome or unusable?

~~~
bqe
\- Issues that span multiple projects

\- Searching all issues for an organization

\- Voting on issues (not just :+1:)

\- Public issues for private repos

\- Attaching files (repros, necessary files, etc.)

\- Dependencies/links

\- Priority (you can label priority but not sort by it)

\- Metrics of any kind

~~~
ma138
Check out ZenHub -

[https://www.zenhub.io/](https://www.zenhub.io/)

It adds these features to improve the GitHub Issue tracker directly into
GitHub.com, allowing you to:

\- Display issues on a task board by priority and progress \- Attach any file
type to an issue \- Add estimates and view burndown charts / metrics attached
to them \- +1 issues to avoid excess comments \- Improved search functionality
\- Link repos together to view issues that span multiple projects

Without having to context switch out to a separate issue tracker or UI

\----

Disclosure - I work at ZenHub, and use it with GitHub all day :D

------
nickbauman
Absolutely fix the pull request interface. It currently reads like a ransom
note. Go over to bitbucket.org and copy theirs. It's 100x better.

~~~
anton_gogolev
What don't you like in current PRs?

~~~
nickbauman
Generally the UI is just poorly designed and unfocused. One specific thing:
You can't mark them as _approved_ in any way and doing something like +1 in a
comment somewhere doesn't count.

------
lhnz
Personally, I'd like a nice GUI to pick and squash commits with new commit
messages against them on creating a pull request. I don't enjoy using the CLI
for this, and it would be nice to thread thoughts on the solution into the
commits themselves rather than explaining solely in the PR description.

~~~
dlib
I second this, also I'd like to see an overview of the (files with) merge
conflicts if any instead of a message saying the PR can't be merged. Fixing
the merge conflicts might be another thing in the web interface would be cool
but I guess I'll stick to the CLI for this.

------
hlfcoding
An unordered list of missing features from me:

\- No ability to store the tab size setting. While appending '?ts=2' to the
url is ok, it's not convenient and usable on a daily basis. The same for
omitting whitespace changes in a diff / pr ('?ws=1').

\- No ability to step through history on a single file while in blob view, or
blame view. In blame view, the commit link goes to the commit, not the blame
of the file at that commit.

\- Agree with OP that notifications need to be grouped / summarized better.
Perhaps expandable summary items per repo per type. This is mostly useful for
private, work-related repos. Pulse and notifications are basically the same
thing.

\- Stars cannot be tagged. This makes managing hundreds of stars difficult.
There's apps like Astral, but even those are lacking.

------
jasode
Those are interesting suggestions, but my guess is that they are probably
focusing on features to make github more enterprise friendly. If a16z invests
$100 million in github, it doesn't seem like streamlining emails will have the
ROI that investors expect.

Maybe github is focusing on creating a full software development lifecycle
management (ALM) in the cloud. (Like Microsoft Team Foundation Server and
JIRA.) A dashboard for sprints, defect fixes, issues tracking, etc. That's the
type of "enterprisey" thing that attracts more business subscriptions. They
use the storage of sourcecode repositories to open doors to other sw
development related business.

These are just my guesses. I haven't seen any explicit roadmap from github.

~~~
tracker1
I'm actually hoping they bring something into GH for business/enterprise that
is better, or as good as TFS or JIRA... I like TFS, but non-VS projects are a
pain... and JIRA is just well, not pleasant at all.

Once they have some sort of better issue tracking system, then migration
tooling will become another big issue in that space.. getting from SVN+JIRA or
TFS itself would be really useful to a lot of orgs, willing to pay. Something
between TFS and Axosoft's OnTime would be pretty nice as an addition to GH.

Another area with a lot of potential would be a CI/CD toolset that uses your
own cloud.. EX: you use api keys for Azure, GCE, AWS, DO etc, and then you can
setup testing/limits and Github could just manage the provisioning of the test
servers, and ease setup/deployment of test/stage/prod classes of servers for
multiple languages.

GH wouldn't have to manage a huge infrastructure itself, just build/sell
tooling that extends it's current product line.

------
epberry
Wiki search is #1 on my wish list for Github. I see others talking about
cloning the wiki repo locally and searching it but for big projects this would
be the equivalent of downloading something like the Python docs and searching
them. It could be done but it would be a massive pain in the ass.

I have written most of the documentation for the project I contribute to the
most and I organized the wiki like a two level tree where a top level page has
links to category pages and each page on the wiki is linked to from one of
those category pages. Then there are links interspersed among the pages like a
normal wiki. This structure works okay but I know it can be better because
sometimes I cannot even find information that I produced!

~~~
lochlan
If you use Chrome you have an option here:
[https://chrome.google.com/webstore/detail/github-wiki-
search...](https://chrome.google.com/webstore/detail/github-wiki-
search/gdifdhnjmjaidbajhapmbcbnoocoeooc?hl=en)

~~~
epberry
Awesome, already used this twice. Thanks!

------
andrewchambers
One thing that has bitten me is the code review submitting each line of
feedback instantly, before you have finished reviewing the whole pull request.

~~~
piotrkaminski
Check out [https://reviewable.io](https://reviewable.io) to fix this
(disclosure: I built it).

------
arikrak
I feel one could have more ambitious goals. E.g. Could Github build a powerful
developers careers site based on all the data they have? Could they provide
more tools to help people program? (Could they automatically create programs?
[https://news.ycombinator.com/item?id=9973088](https://news.ycombinator.com/item?id=9973088))

------
kranzky
Things I would build:

* Push conflicted branches so developers in a distributed team can work together to resolve conflicts.

* A git-powered version of Rake, which runs only those tests that need to be run based on the git history since the last run.

* A tool to identify what code changes caused a particular test to fail, based on the above.

* Language syntax detection for smarter diffs, improving the display when blocks of code are moved around or indented/outdented.

* Language linters built in, to detect when a change is introducing a syntax error. Same for coding style.

I'd also move the "Close Pull Request" button a little farther away from the
"Comment" button, and make it possible to add comments to a diff when you've
hidden whitespace differences (with `&w=1`... I'd also make it a bit more
obvious that you could do that).

~~~
pbiggar
> * A git-powered version of Rake, which runs only those tests that need to be
> run based on the git history since the last run.

I think you mean "magic".

That is, this is not possible :) Not that I wouldn't like it to be.

~~~
kranzky
Well, it is kind-of possible for Ruby/Rails. I half-built such a system once.
Here's what you do:

* Gather coverage information when running tests or compiling assets.

* Use that to generate Rakefiles for running tests / compiling assets that have dependencies on the source files they would touch.

* Run the tests once, recording information about the git status of each dependency.

* When the git status of a file changes (i.e. you've just fetched some changes), mark the dependency as dirty

Even better, it you're gathering coverage data and know the test status for
each commit, then not only can you show the commit that broke the build, you
can show the particular part of the diff that broke the build.

Here's a guy who was trying to do some of this:
[https://github.com/Genki-S/ttnt](https://github.com/Genki-S/ttnt)

------
masklinn
> The suggested alternative is to "Subscribe" to an issue for updates, which
> is what I've started doing to issues that I want to show my support for. My
> support, however, isn't visible to anyone else.

Though following the resolution of an issue usually means I'd like for it to
be resolved, the converse isn't true: I've hit thousands of issues over the
years but most of the time I've been able to work around them and haven't hit
it since, resolving the issue would be nice for people coming after me, but I
don't really care to be spammed by its status updates.

So yes, "subscribe" could count as a +1, but no "subscribe" should not be the
only way to "+1" an issue.

------
kevinSuttle
I started this as well:
[https://github.com/kevinSuttle/github/issues](https://github.com/kevinSuttle/github/issues)
(not the same Kevin as link author)

------
TheRealWatson
I always wished GitHub had a chat room per repo. Fully integrated with github
features, like mentions, issues, pull requests. Maybe even hubot builtin.

~~~
hyperion2010
gitter?

------
davidcelis
For the "voting on issues" feature I'd really just love to see them clone
Slack's recent "Emoji Reactions" feature.

------
bronson
How about making pull requests less centralized? Right now, if I file a PR,
only the project admins or I can modify/rebase it. I'd like to give other
(non-admin) collaborators permission to work on it too.

Or, maybe it could use a forking model? Let anyone fork their own PR from
mine, make those forks prominently visible in my base PR, and make it easy for
me to merge their edits back in.

~~~
teddyh
If you want anything _less_ centralized, then why are you using Github, a
centralized interface to and storage of a previously inherently _de_
-centralized system, git?

Github is for people who accept centralization.

~~~
bronson
That's not true. Why do you think github promotes forking and pull requests?

Some centralization is necessary, true, but you seem to be confusing GitHub
with Google Code and SourceForge.

------
eam
Getting notifications/emails when a new release is released of a repo I'm
watching or have starred would be awesome!

~~~
jellekralt
For the time being you could use Sibbell:
[https://sibbell.com/](https://sibbell.com/)

------
web007
I reported this a while back, so it's in their backlog somewhere but obviously
not super-important:

I'd like to see an option to turn off fork notifications for org projects
without turning off all org notifications. As-is, I get an email for every dev
forking every project, sometimes more than once due to lack of git knowledge.

------
jpdlla
* Search code in a branch other than master. * Advanced code search inside a repo(match searches with symbols, etc.)

------
rocky1138
Search can be easily worked around by using Google with the site: parameter,
e.g., search on Google with this query:

wireless
site:[https://github.com/esp8266/esp8266-wiki/wiki](https://github.com/esp8266/esp8266-wiki/wiki)

~~~
holic
Great tip, but unfortunately that doesn't work for private repos.

------
adamnemecek
I would make the search results deduplicated. It happens to me a lot that I
search for something and the first 10 pages of search results are from the
same 5 projects, but from different locations within the single projects. I
usually lose patience sometime around page 5.

------
electic
I would also like to see GitHub Chat. Complete Slack killer with the same
heart and spirit of Atom.

------
mpdehaan2
This is a really good list.

As for sorting things by file, here's a pretty cool project to do that using
GitHub API - [https://github.com/sivel/pr-triage](https://github.com/sivel/pr-
triage)

------
TheRealWatson
It's very common, at least on my team, to create pull requests for the wrong
target branch. I don't see why GitHub doesn't allow you to fix it before any
comments are posted. This would save some useful time.

------
thinkbohemian
Better filters for emails. Would love to subscribe to only new issues on a
repo or random issues on a repo. Basically
[http://codetriage.com](http://codetriage.com)

~~~
tracker1
For that matter, on the issues page, and labels/markers for new issues vs. old
ones with a "me too" comment. or for that matter issues that you've commented
on.

I follow a couple dozen projects and after a couple days, my GH notifications
page gets insane. Making issues more usable would be a big win imho.

Also, a "priority" follows would be nice too.. so your org/project issues can
be viewed separately from your follows. Seeing adoption of something closer to
ontime/tfs/jira would be nice too.

------
pietherr
Things @teabass would build if he quit GitHub:
[https://libraries.io](https://libraries.io)

Really useful to get updates on new releases of libraries you use.

------
tacone
To be frank, it is pretty much ok for the +1 to be annoying: it's often what
they are meant to. Thus, if a vote button were to be implemented, it would not
be used all the time.

------
fogonthedowns
I would really like to have the ability to Edit commit messages using the web
interface. I'm often stuck with a poorly crafted message and an edit function
would help that.

------
jkmcf
Better blame history navigation, functionally the same as how Textmate does
it.

1\. git blame file 2\. click on a hash for the change 3\. show the file for
that change

Right now, (3) shows you the diff for the hash

------
qntmfred
[https://github.com/isaacs/github](https://github.com/isaacs/github) has a ton
of these missing features

------
choward
> These are great, but they're bugfixes.

I agree with every you said but that first sentence. How are these bugs? They
are features that never existed.

------
artur_roszczyk
+1

I would also implement a button for reverting pull requests already merged in
master. Reverting merges may be not trivial for less experienced users

------
Linell
I'd also love for commit messages to be parsed as markdown. I can't really
think of a downside to it.

~~~
geofft
Ugh, that should be an opt-in thing. I've had trouble with Trac parsing commit
messages as trac-wiki syntax, which is generally a great idea. The problem is
occasionally you'll use markup characters in a semantically meaningful way,
e.g. "Switch from `foo` to $(foo)", and rendering the markup will make the
commit message confusing to read.

I'd be much more enthusiastic if there was some magical way for the local git
command line to also support Markdown rendering/preview.

~~~
tracker1
You could set something like markdownpad as your git editor.

------
tsuresh
GitHub wiki is a repo and can be cloned locally. Searching through a local
files is trivial.

~~~
mellett68
I'd argue that's still a bit of a pain compared to a fulltext search in the
browser. I can already search the rest of the repo and issues that way, so why
not the wiki?

Good tip though.

------
sandGorgon
I would build a Slack alternative + Jira alternative that is deeply integrated
into Github.

QED.

------
ocdtrekkie
I'd kill for merge conflict resolution in the web UI.

------
fred2133
Github Firehose if it was me.

Something to build tools on top of.

------
jafingi
+1

;-)

------
brobdingnagian
The ability to search your own gists!

------
OedipusRex
I hope all of his post on this blog are like this one
([https://kevin.is/committed-to-github/](https://kevin.is/committed-to-
github/), Kevin is committed to GitHub)

