Wednesday, May 2, 2012

What could Github do next?


What is Github?  Github is a place for people to come together around code.  Programmers host code repositories on github.  Github then lets other people look at that code, and to add to it.  They make money by selling a premium features to a subset of their users.
I suspect Github has two different types of users with very different use cases.  Users who contribute code and those who don't.  The non-contributors are most likely developers themselves, but aren't actively contributing code to Github at that moment.
Contributors use Github as a place for storing code, and a way to coordinate developer effort around a project.  Non-contributors may use Github just as a reference source.  Looking at other people's code is extremely helpful when trying to write your own code.
What are the big things they could do next?  The two different users need very different features.  For now we'll just focus on the contributors.
Contributors want to work together with other developers.  What tools could make a distributed online team of developers live's easier?  Code reviews on Github are an awesome start!  They are a great way to have a discussion around a new bunch of code.
Moving in this same direction, Github could make it easier to ask a question to a project's contributors.  Imagine you are part way through a feature on a project, but you get stuck.  Today your options are to mail a mailing list, or submit 1/2 finished code for a code review.  Neither sounds very good.  The solution could be something simple like adding a chat room to projects, or more complex like adding some hard ties between Github and Stackoverflow.
A different problem / feature : At times pair programming is really awesome, but it is hard to do over the internet.  It is especially hard to pair program over the internet when you don't closely know the person you want to pair with.  Here is how you fix it - project centeric pairing.  Github could play matchmaker to contributors of the same projects that both want to pair up.  These contributors don't have to know each other, and if Github does it right, it won't be uncomfortable to pair with someone yo don't know.  Github wouldn't have to build a whole stack of software for pairing either, they could probably leverage something like G+ hangouts to do 99% of the work.